成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Java編譯期優(yōu)化思維導(dǎo)圖

sorra / 2880人閱讀

摘要:本文參考自來自周志明深入理解虛擬機(jī)第版,拓展內(nèi)容建議讀者可以閱讀下這本書。和構(gòu)造方法一一對(duì)應(yīng),是同一概念在兩個(gè)級(jí)別的含義收斂的操作自動(dòng)保證執(zhí)行父類的執(zhí)行語句塊初始化類變量字符串加操作替換為或的操作

本文參考自來自周志明《深入理解Java虛擬機(jī)(第2版)》,拓展內(nèi)容建議讀者可以閱讀下這本書。

文字版如下:

編譯期優(yōu)化 javac的編譯過程 解析和填充符號(hào)表

解析 Parse

詞法分析

源代碼字符流 -> 標(biāo)記Token

源代碼字符是程序編寫的最小單位,Token是編譯過程的最小元素不可再分

語法分析

Token序列 -> 抽象語法樹AST

AST描述代碼語法結(jié)構(gòu)的樹狀結(jié)構(gòu),每個(gè)節(jié)點(diǎn)表示一個(gè)語法結(jié)構(gòu)(包、類型、修飾符、運(yùn)算符、接口、返回值、注釋等)

填充符號(hào)表 Enter

符號(hào)表 -> 待處理列表To Do list

符號(hào)表symbol table是由一組符號(hào)地址和符號(hào)信息構(gòu)成的表

包、類、方法、字段都可以抽象成一個(gè)符號(hào)(symbol),不同種類的符號(hào)之間可以有包含嵌套關(guān)系,這一階段的任務(wù)就是識(shí)別出各類符號(hào),并對(duì)不同種類的符號(hào)按照包含嵌套關(guān)系進(jìn)行歸類,并掛接到AST對(duì)應(yīng)的結(jié)點(diǎn)上。

插入式注解處理器的注解處理

使用JDK1.6后提供的插入式注解標(biāo)準(zhǔn)API來開發(fā),這些API用于讀取、修改、添加語法樹的元素,運(yùn)行時(shí)使用-processor參數(shù)來參與javac的編譯

插入式注解處理器起編譯期插件作用

在編譯期間插入式注解處理器對(duì)注解進(jìn)行處理,可以讀取、修改、添加語法樹的元素

如果處理過程中修改了語法樹將會(huì)觸發(fā)編譯期回到填充符號(hào)表階段重新處理一輪(Round),直到語法樹不再變化

實(shí)例:lombok,在設(shè)置了相關(guān)注解后lombok會(huì)在編譯期生成源代碼中沒有的方法等

分析與字節(jié)碼生成

語義分析

標(biāo)注檢查

變量使用前是否已經(jīng)被聲明

變量與賦值之間的數(shù)據(jù)類型是否能夠匹配

常量折疊

數(shù)據(jù)及控制流檢查

程序局部變量在使用前是否有賦值

方法的每條路徑是否都有返回值

是否所有的受檢異常都被正確處理

final參數(shù)、final局部變量是否被修改

局部變量是否用final修飾最終在class文件中是無差別的,因?yàn)榫植孔兞吭赾lass中是沒有訪問標(biāo)志的,這個(gè)final不變性只在編譯期檢查時(shí)保證

解語法糖

泛型:編譯后發(fā)生類型擦除,但是編譯信息會(huì)保留Signature

變長(zhǎng)參數(shù):編譯后變成數(shù)組類型的參數(shù)

自動(dòng)裝箱拆箱:編譯后裝箱通過valueOf()變成了對(duì)象,拆箱通過xxxValue()變成了原始類型值

遍歷循環(huán):編譯后變成了迭代器遍歷

條件編譯:編譯后將常量不可達(dá)條件分支直接消除掉

內(nèi)部類

枚舉類

斷言

switch處理枚舉和字符串

try定義和關(guān)閉資源

字節(jié)碼生成

處理完的語法樹和符號(hào)表 -> 字節(jié)碼

少量的代碼添加和轉(zhuǎn)換工作

添加()和()方法

()收斂的操作

調(diào)用父類的()

執(zhí)行{}語句塊

初始化實(shí)例變量

()是字節(jié)碼級(jí)別的方法,對(duì)使用者是透明的,與每個(gè)()對(duì)應(yīng)的構(gòu)造方法是源碼級(jí)別的方法,是真正被使用者開放的。()和構(gòu)造方法一一對(duì)應(yīng),是同一概念在兩個(gè)級(jí)別的含義

()收斂的操作

(JVM自動(dòng)保證執(zhí)行父類的())

執(zhí)行static{}語句塊

初始化類變量

字符串加操作替換為StringBuffer或StringBuilder的append()操作

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/76943.html

相關(guān)文章

  • ??導(dǎo)圖整理大廠面試高頻數(shù)組8: 移除元素的雙指針優(yōu)化, 力扣27??

    此專欄文章是對(duì)力扣上算法題目各種方法的總結(jié)和歸納, 整理出最重要的思路和知識(shí)重點(diǎn)并以思維導(dǎo)圖形式呈現(xiàn), 當(dāng)然也會(huì)加上我對(duì)導(dǎo)圖的詳解. 目的是為了更方便快捷的記憶和回憶算法重點(diǎn)(不用每次都重復(fù)看題解), 畢竟算法不是做了一遍就能完全記住的. 所以本文適合已經(jīng)知道解題思路和方法, 想進(jìn)一步加強(qiáng)理解和記憶的朋友, 并不適合第一次接觸此題的朋友(可以根據(jù)題號(hào)先去力扣看看官方題解, 然后再看本文內(nèi)容). 關(guān)...

    zhangyucha0 評(píng)論0 收藏0
  • Java多線程學(xué)習(xí)(三)volatile關(guān)鍵字

    摘要:三關(guān)鍵字能保證原子性嗎并發(fā)編程藝術(shù)這本書上說保證但是在自增操作非原子操作上不保證,多線程編程核心藝術(shù)這本書說不保證。多線程訪問關(guān)鍵字不會(huì)發(fā)生阻塞,而關(guān)鍵字可能會(huì)發(fā)生阻塞關(guān)鍵字能保證數(shù)據(jù)的可見性,但不能保證數(shù)據(jù)的原子性。 系列文章傳送門: Java多線程學(xué)習(xí)(一)Java多線程入門 Java多線程學(xué)習(xí)(二)synchronized關(guān)鍵字(1) java多線程學(xué)習(xí)(二)synchroniz...

    tain335 評(píng)論0 收藏0
  • ??思維導(dǎo)圖整理大廠面試高頻數(shù)組10: 3種方法徹底解決中位數(shù)問題, 力扣4??

    此專欄文章是對(duì)力扣上算法題目各種方法的總結(jié)和歸納, 整理出最重要的思路和知識(shí)重點(diǎn)并以思維導(dǎo)圖形式呈現(xiàn), 當(dāng)然也會(huì)加上我對(duì)導(dǎo)圖的詳解. 目的是為了更方便快捷的記憶和回憶算法重點(diǎn)(不用每次都重復(fù)看題解), 畢竟算法不是做了一遍就能完全記住的. 所以本文適合已經(jīng)知道解題思路和方法, 想進(jìn)一步加強(qiáng)理解和記憶的朋友, 并不適合第一次接觸此題的朋友(可以根據(jù)題號(hào)先去力扣看看官方題解, 然后再看本文內(nèi)容). 關(guān)...

    XanaHopper 評(píng)論0 收藏0
  • ??思維導(dǎo)圖整理大廠面試高頻數(shù)組19: 股票問題III的dp數(shù)組構(gòu)建/初始化和空間優(yōu)化難點(diǎn), 力扣1

    此專欄文章是對(duì)力扣上算法題目各種方法的總結(jié)和歸納, 整理出最重要的思路和知識(shí)重點(diǎn)并以思維導(dǎo)圖形式呈現(xiàn), 當(dāng)然也會(huì)加上我對(duì)導(dǎo)圖的詳解. 目的是為了更方便快捷的記憶和回憶算法重點(diǎn)(不用每次都重復(fù)看題解), 畢竟算法不是做了一遍就能完全記住的. 所以本文適合已經(jīng)知道解題思路和方法, 想進(jìn)一步加強(qiáng)理解和記憶的朋友, 并不適合第一次接觸此題的朋友(可以根據(jù)題號(hào)先去力扣看看官方題解, 然后再看本文內(nèi)容). 關(guān)...

    劉福 評(píng)論0 收藏0
  • 一張思維導(dǎo)圖輔助你深入了解 Vue | Vue-Router | Vuex 源碼架構(gòu)

    摘要:前言本文內(nèi)容講解的內(nèi)容一張思維導(dǎo)圖輔助你深入了解源碼架構(gòu)。總結(jié)以上內(nèi)容是筆者最近學(xué)習(xí)源碼時(shí)的收獲與所做的筆記,本文內(nèi)容大多是開源項(xiàng)目技術(shù)揭秘的內(nèi)容,只不過是以思維導(dǎo)圖的形式來展現(xiàn),內(nèi)容有省略,還加入了筆者的一點(diǎn)理解。1.前言 本文內(nèi)容講解的內(nèi)容:一張思維導(dǎo)圖輔助你深入了解 Vue | Vue-Router | Vuex 源碼架構(gòu)。 項(xiàng)目地址:github.com/biaochenxuy… 文...

    weij 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<