【學習筆記】深入理解Java虛擬機學習筆記——第10章 前端編譯與優化

第10章 前端編譯與優化

10.1 概述

1>前端編譯器:Javac命令。 【.java文件->.class文件】
2>即時編譯器:Hotspot.C1.C2 【.class文件->機器碼】
3>提前編譯器:JDK的Jaotc等【.java->機器碼】

10.2 Javac 編譯器

10.2.1 Javac的源碼與調試

1>初始化插入式注解處理器
2>解析與填充符號表過程
3>插入式注解處理器,注解處理過程
4>分析與字節碼生成

10.2.2 解析與填充符號表

1>詞法分析、語法分析
詞法:字符流=>標記
語法:標記=>抽象語法樹
2>填充符號表
登記信息

10.2.3 注解處理器

lombook通過注解處理器影響了編譯器的結果,在字節碼中生成了代碼

10.2.4 語義分析與字節碼生成

1>標注檢查
檢查變量使用前是否已聲明、數據類型匹配等
2>數據及控制流分析
局部變量賦值、方法路徑等檢查
3>解語法糖
方便于程序員開發的語法,如:泛型、自動裝箱等都由在編譯期還原為原始基礎語法結構

10.3 Java語法糖的味道

10.3.1 泛型

1>Java與C#的泛型
Java:擦除式,字節碼中會替換為裸類型,不可進行類型判斷、創建對象及數組
c#:具現化式
2>泛型的歷史背景
Java向后二進制兼容:JDK1.2的字節碼能運行在1.2之后的全部JVM上
3>類型擦除
缺陷:
1.強制類型轉換
2.無法使用原生類型作為泛型,不斷裝、開箱
3.無法獲得泛型類型
List< String>與List< Integer>對于JVM來說是相同的
4>值類型與未來的泛型

10.3.2 自動裝箱、拆箱、與遍歷循環

10.3.3 條件編譯

條件編譯只能在if(常量)下成立,會自動消除無法達到的語句。

10.4 實戰:插入式注解處理器

10.4.1 實戰目標

10.4.2 代碼實現

可以通過AbstractProcessor相關API,對抽象語法樹進行修改,以重新生成詞、語法并生成字節碼

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/84838.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/84838.shtml
英文地址,請注明出處:http://en.pswp.cn/web/84838.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python 區塊鏈與Web3開發指南

https://www.python.org/static/community_logos/python-logo-master-v3-TM.png 區塊鏈基礎概念 區塊鏈核心特性 python 復制 下載 class Block:def __init__(self, index, timestamp, data, previous_hash):self.index indexself.timestamp timestampself.data datas…

工業智能體調參閉環:從物料感知到智慧工藝的落地路徑

用戶定義目標&#xff1a;智能工藝的起點不是機器&#xff0c;而是人 在智能制造系統中&#xff0c;工藝調優的第一步并非直接依賴AI或自動化設備&#xff0c;而是始于用戶的明確輸入。用戶需要在系統中定義產品的工藝要求&#xff0c;包括目標尺寸與規格&#xff08;如長寬高…

【Linux學習筆記】進程間通信之共享內存

【Linux學習筆記】進程間通信之共享內存 &#x1f525;個人主頁&#xff1a;大白的編程日記 &#x1f525;專欄&#xff1a;Linux學習筆記 文章目錄 【Linux學習筆記】進程間通信之共享內存前言一. system V共享內存1.1 共享內存數據結構1.2 共享內存函數1.3 共享內存實現通信…

郭碧婷闖入女團賽道 與劉忻張予曦蔡詩蕓組成ROLLING SISTERS

近日&#xff0c;郭碧婷與劉忻、張予曦、蔡詩蕓組成的女團ROLLING SISTERS正式官宣&#xff0c;并發布《Rolling Life》《Alpha》兩首單曲&#xff01; 此次幾位姐姐的組合讓大家眼前一亮&#xff0c;尤其是郭碧婷造型顛覆以往。銀灰色挑染短發搭配棱角分明的黑色煙熏妝&#x…

2025再升級:醫療數智立體化體系V2.0架構簡介

在醫療數智立體化體系第一版基礎上,融入量子物理的第一性原理計算、人工智能(AI)、高性能云計算(HPC)和標準化機器人自動化整合成“醫療數智立體化體系2.0”,代表了醫療研發未來的重要發展方向。這個體系的核心在于深度融合物理世界規律、智能計算與自動化執行,為醫療AI…

Day40 訓練和測試的規范寫法

目錄 一、彩色和灰度圖片測試和訓練的規范寫法&#xff1a;封裝在函數中 單通道圖片的規范寫法 彩色圖片的規范寫法 二、展平操作&#xff1a;除第一個維度batchsize外全部展平 圖像任務中的張量形狀 NLP任務中的張量形狀 1. Flatten操作 2. view/reshape操作 總結 三…

Linux 文件 I/O 與標準 I/O 緩沖機制詳解

一、什么是標準 I/O&#xff1f;&#xff08;FILE* 接口&#xff09; 標準 I/O 是 C 標準庫為我們提供的一套高級文件操作接口&#xff0c;核心基于結構體 FILE&#xff0c;常見函數如&#xff1a; fopen() / fclose() fread() / fwrite() fprintf() / fscanf() fflush() /…

C++的前世今生-C++11

C98&#xff08;ISO/IEC 14882:1998&#xff09; C98 是 C 的第一個標準化版本&#xff08;ISO/IEC 14882:1998&#xff09;&#xff0c;它正式確立了 C 的核心語言特性和標準庫。以下是 C98 的主要特性總結&#xff1a; 一、核心語言特性** 模板&#xff08;Templates&…

詞編碼模型怎么進行訓練的,輸出輸入是什么,標簽是什么

詞編碼模型怎么進行訓練的,輸出輸入是什么,標簽是什么 詞編碼模型的訓練本質是通過數據驅動的方式,將離散的文本符號映射為連續的語義向量。 一、訓練機制:從符號到向量的映射邏輯 1. 核心目標 將單詞/子詞(Token)映射為低維向量,使語義相關的詞在向量空間中距離更近…

【Linux指南】文件管理高級操作(復制、移動、查找)

引言 在Linux系統管理中&#xff0c;文件的復制、移動與查找是比基礎操作更進階的核心技能&#xff0c;它們構成了高效管理文件系統的"三駕馬車"。當我們需要備份重要數據、重構目錄結構或在龐大的文件系統中定位目標文件時&#xff0c;cp、mv、find等命令將成為最得…

【棧】-----【小C的記事本】

小C的記事本 題目描述 小C最近學會了 Java 小程序的開發&#xff0c;他很開心&#xff0c;于是想做一個簡單的記事本程序練練手。 他希望他的記事本包含以下功能&#xff1a; append(str)&#xff1a;向記事本插入字符串 str&#xff08;英文字符&#xff09;。delete(k)&am…

技能系統詳解(2)——特效表現

特效會有個EffectManager用于統一管理所有特效&#xff0c;技能特效只是各類特效中的一種 EffectManager需要提供特效的創建&#xff0c;返回被封裝為EffectHandle 每類特效都有各種不同的配置參數&#xff0c;這些配置參數會傳遞給EffectManager用于生成EffectHandler 為支…

12.OpenCV—基礎入門

01讀取圖像 02創建空白圖像 03保存圖像 04更改圖像亮度 05更改圖像對比度 06灰度直方圖均衡 07彩色直方圖均衡 08五種濾波方式 09形態學操作 10仿射變換 11角度縮放仿射變換 12透視變換 13坐標映射 14模板匹配 15多模板匹配 16查找輪廓線 17輪廓線匹配 17繪制…

【Python】Python之什么是生成器?什么是迭代器?

目錄 專欄導讀前言什么是迭代器&#xff08;Iterator&#xff09;&#xff1f;迭代器的定義迭代器協議可迭代對象 vs 迭代器自定義迭代器迭代器的優勢 什么是生成器&#xff08;Generator&#xff09;&#xff1f;生成器的定義生成器函數生成器表達式復雜的生成器示例生成器的狀…

Python中實現簡單爬蟲并處理數據

在當今數據驅動的時代&#xff0c;能夠從互聯網上高效地抓取信息變得越來越重要。Python因其簡潔易學的特性&#xff0c;成為了編寫網絡爬蟲的首選語言之一。接下來&#xff0c;我將介紹如何使用Python來實現一個基礎的網絡爬蟲&#xff0c;并對收集到的數據進行初步處理。 首先…

免費wordpress主題網

免費WordPress主題網 WP模板牛 WP模板牛是一個提供免費WordPress主題的網站&#xff0c;用戶可以在這里找到大量高質量的模板&#xff0c;適用于各種網站類型。該網站致力于為用戶提供簡單、高效的建站體驗。 官網鏈接&#xff1a; https://wpniu.com 建站哥模板 建站哥模板…

為什么需要MyBatis-Plus條件構造器?

目錄 前言 一、傳統SQL編寫的痛點 二、條件構造器的核心優勢 1. 防SQL注入&#xff08;安全性&#xff09; 2. 面向對象編程&#xff08;可讀性&#xff09; 3. 動態條件構建&#xff08;靈活性&#xff09; 4. 數據庫無關性&#xff08;可移植性&#xff09; 三、典型應…

【從零學習JVM|第九篇】常見的垃圾回收算法和垃圾回收器

前言&#xff1a; 我們知道在堆內存中&#xff0c;會有自動的垃圾回收功能&#xff0c;那今天這篇文章將會向你介紹&#xff0c;這個功能實現的方式&#xff0c;還有實現的對象&#xff0c;接下來就由我來給你們詳細介紹垃圾回收的算法和實現算法的回收器。 目錄 前言&#…

品牌竄貨治理解決方案

在渠道網絡的暗潮中&#xff0c;竄貨猶如隱秘的漩渦&#xff0c;某知名白酒品牌曾因區域竄貨導致終端價格體系崩潰&#xff0c;半年內損失超3億元。竄貨行為不僅破壞市場秩序&#xff0c;更會引發信任危機。隨著電商平臺的多元化與分銷層級的復雜化&#xff0c;品牌方亟需構建一…

車載電子電器架構 --- 法律和標準對電子電氣架構的影響

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 做到欲望極簡,了解自己的真實欲望,不受外在潮流的影響,不盲從,不跟風。把自己的精力全部用在自己。一是去掉多余,凡事找規律,基礎是誠信;二是…