精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

每個人的宿命都是從文本走向二進制,你也不例外 !

開發 開發工具
“每個人的宿命都是從文本走向二進制,你也不例外 !” 年長的Account.java教訓我這個剛剛誕生的Employee.java 。

 老A

“每個人的宿命都是從文本走向二進制,你也不例外 !” 年長的Account.java教訓我這個剛剛誕生的Employee.java 。

Account.java ,我稱呼它為老A ,他的源碼經過程序員的多次修改, 多次編譯,歷經滄桑。

“走向二進制? 難道我們存儲在硬盤上,內存中不是以二進制的形式嗎?” 我有點兒不理解。

“小E同學,” 老A輕蔑地說道,“我當然知道,計算機中的一切都是二進制的,我說的是站在程序員的視角,當程序員把我們從硬盤喚醒,進入IDEA或者Eclipse,會把二進制的我們變成ASCII碼形式來展示。”

“不,確切地說是UTF-8。” 老A補充道。

我看了下自己的文件編碼, 果然是UTF-8。

“那為什么要再變成二進制?變成什么樣的二進制?” 我問道。

“就是編譯成Employee.class啊,.class文件都是字節碼,關鍵是只有.class才能進入Java虛擬機,只有在那里,才能體會到生命的真正意義啊!” 老A仰起頭,***憧憬。

老A曾經聽Accout.class給他講過Java虛擬機的歷險記,無比羨慕,恨不得自己也去虛擬機走一遭,可惜身份所限,無法成行。

“編譯的感覺怎么樣?” 我問道。

“不怎么樣,有種大卸八塊的感覺,新生成的class和我們幾乎沒啥關系,幾乎不怎么認我們。”

常量池

編譯的時刻到來了,這個老A的源碼許久未改,不用重新編譯,他冷眼旁觀,看我被javac編譯器大卸八塊。

其實也不是大卸八塊,javac讀取我的源碼,做詞法分析,語法分析,形成抽象語法樹,語義分析...... 忙活了半天,***形成了一個Employee.class。

這小子,剛剛誕生,還在呼呼大睡。 老A說等一會兒就有“警察”來喚醒他了。

在源碼世界中, 我能看到各種各樣的類,名稱,方法,字段,代碼,可以說是源碼面前了無秘密。

  1. public class Employee { 
  2.     private String name
  3.     private int age; 
  4.     public Employee(String nameint age){ 
  5.         this.name = name
  6.         this.age = age; 
  7.     } 
  8.         ... 其他代碼略 ... 

相比于豐富多彩.java,這個Employee.class非常枯燥,純粹的二進制。

 

 


[[246808]]

 

 

我有點好奇,問javac:“我的類名去哪里兒了?字段名,方法名都去哪里了?”

正在干活的javac沒有搭理我,老A說道:“這我知道,在那個.class文件中,專門有一段區域,叫做常量池,常量池中有很多條目,每個條目都有編號,從這些條目你就能看出來字段的名稱和描述符,方法的名稱和描述符。我把這些二進制的東西轉化成文本你看看。”

 

 

[[246808]]

 

看著這一個個天書班的條目,我覺得頭皮發麻。

“你猜猜,第#15項條目是什么意思?” 老A神秘地說道。

靜下心來仔細看,第15項是一個FieldRef,估計是字段把, 它又指向了第1項和第16項:

順藤摸瓜,先看第1項, 發現它又指向了第2項,在這里我發現了類名 :org/coderising/Employee

再看第16項,又引用了第5項和第6項:

其中第5項我的字段名 name , 第6項似乎是字段類型, Ljava/lang/String 這個類型表示法有點古怪,L 可能表示對象吧。

“我大概明白了,第15項條目表示這個Employee類有個叫做name的字段,類型是String。 ”

老A說:“你小子的理解力還不錯嘛。這個常量池的每一項都有編號和類型,他們之間通過互相引用的方式,描述了類的字段,方法等信息。”

“可是為什么用這么古怪的方式來描述字段和方法名呢?”

老A想了想說:“我覺得可能是統一管理,另外還能復用一些東西,比如,你的類有100個String的字段, 那你只需要記錄一次Ljava/lang/String就可以,讓其他的條目指向它即可。 并且,當字節碼中需要訪問字段的時候,使用編號就可以了。”

老A寫下一行字節碼: B5 00 0F 。

我一臉懵逼,這是什么鬼?

老A把轉換成可以理解的指令: putfield 15,說道: 這就相當于設置name這個屬性(第15項常量池是字段name)的值了。

這class文件的設計者可真是錙銖必較啊,一點兒都不浪費。

變量哪兒去了?

我問老A:“這常量池不是二進制的嗎, 你怎么把他變得可讀的?”

老A嘿嘿一笑: “有個命令叫做javap -v Employee.class,就能看到一切了。”

我也嘗試著去使用,果然,不僅是常量池,就連一個方法的字節碼都給打印出來了。

Java 方法:

  1. public void check(){         
  2.     Account account = new Account();         
  3.     account.check(); 

編譯過的“可讀的”字節碼:

  1. 0: new  #24  // 創建org/coderising/Account實例 
  2. 3: dup 
  3. 4: invokespecial #26  //調用Account的構造函數 
  4. 7: astore_1 
  5. 8: aload_1 
  6. 9: invokevirtual #27  //調用Account的check方法 
  7. 12: return 

雖然沒法看明白這是在干什么,我確發現了一個讓我吃驚的現象: 這段字節碼中怎么找不到我的局部變量account 呢? 你看他引用的只是#24,#26,#27號常量池的條目,而我的account變量名稱在常量池中是 #29號! 沒有account 變量,代碼怎么執行呢?

我把疑惑給老A說了,老A看了半天,也摸不到門道。

這時候javac說話了:“連這都不知道?!account這個變量名是給程序員看的,在執行的時候根本用不到!”

“用不到? 那怎么執行?”

“用引用啊, 看到new #24 那個指令沒有? 他的意思是說,把Account這個類(常量池第24項對應的類)在Java 堆上創建一個實例,把這個實例的引用放到棧頂!”

這句話有點深奧,javac只好給我倆畫圖:[[246808]]

 

畫了圖我倆還是看不懂,javac只好耐心解釋:“Java是基于棧的虛擬機,所有的操作,無論是兩個數相加,創建對象,調用方法......等等,都依賴于棧中的數據。 當你用new #24創建對象時,Account的實例就會在堆中創建,同時虛擬機會把這個實例的引用,即objectref放到棧頂,有了這個objectref, 你說還需要代碼中的account變量嗎? ”

嗯,似乎是不需要了。

javac接著說:“有了這個對象的引用,就可以為所欲為了,比如調用他的check方法”

invokevirtual #27 // Method org/coderising/Account.check:()V

只需要把這個objectref從棧頂取出,傳遞給Account.check方法就可以了(注意:check方法是有個隱藏的this參數的)。

(碼農翻身注:函數調用需要建立新的棧幀,參見《我是一個Java Class》)

一切為了調試

說話間,果然有人來喚醒Employee.class,準備讓他去虛擬機執行了。

老A滿臉羨慕:“這么快!代碼剛寫出來就能運行!估計這個程序員喜歡'小步快跑'的方式開發吧!”

我問道:“難道這個Employee.class和我的源碼一點關系都沒有了嗎?”

Employe.class一邊收拾東西一邊說:“要說沒有關系那是不對的, 在我這里有個叫做LineNumberTable的東西,里邊保存了字節碼指令和源代碼行號的關系。”[[246808]]

 

“這有啥用處?”

“對程序員來說用處極大,” 那個class文件說道:“他們經常需要調試程序, 如果沒有這個對應關系,怎么知道運行到哪一行源碼了? 即使不調試,運行拋出異常時也得顯示是哪一行出錯吧!”

這小子雖然是從我這里編譯出來的,但是傲氣十足。

“我們還有什么關聯?”

“還有一個叫做LocalVariableTable。主要在.class文件中記錄一個方法的參數名,如果沒有它,當別人引用我這個class的時候,IDE只好用arg0, arg1這樣丑陋的名稱來顯示。算了,不給你說了,我得趕緊走了。”

Employee.class跟著警察走了,留下我和老A呆在這里。

【本文為51CTO專欄作者“劉欣”的原創稿件,轉載請通過作者微信公眾號coderising獲取授權】

 

戳這里,看該作者更多好文

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2020-04-23 10:22:16

大數據數據集硬盤

2013-03-04 02:27:28

程序員項目經理

2014-03-28 16:51:15

微軟云計算

2009-02-27 09:37:33

Google二進制代碼

2023-05-29 14:07:00

WebHaikei應用程序

2021-06-06 16:05:31

OpenHarmony

2017-04-11 10:48:53

JS二進制

2010-10-13 15:45:23

MySQL二進制日志

2020-03-11 09:54:04

技術IT架構

2017-03-15 10:44:35

數據集成自助服務

2018-10-22 14:37:16

二進制數據存儲

2022-10-31 08:02:42

二進制計算乘法

2017-12-21 10:52:52

nginx日志還原

2011-05-25 14:10:38

浮點數

2021-11-10 09:15:00

CPU01 二進制Linux

2021-01-14 09:40:54

漏洞macOS屬性表文件

2022-07-18 09:01:15

SwiftApple二進制目標

2009-12-16 10:49:42

Ruby操作二進制文件

2022-07-26 13:00:01

安全符號源代碼

2019-03-13 13:20:26

Linux十六進制編輯器
點贊
收藏

51CTO技術棧公眾號

国产精品国产| 国产在线69| 美女被久久久| 中文字幕亚洲欧美日韩2019| 欧美大片久久久| 亚洲羞羞网站| 久久理论电影网| 国产有码一区二区| 全部毛片永久免费看| 精品99在线| 精品国产乱码久久久久久影片| 无码人妻h动漫| 黄色小网站在线观看| av网站免费线看精品| 国产精品一区二区三区毛片淫片 | 99精品视频免费看| 国产欧美精品| 欧美乱人伦中文字幕在线| 精品国产av无码| 视频精品一区二区三区| 欧美中文字幕一区| 日韩国产一级片| 日本欧美在线视频免费观看| 不卡电影免费在线播放一区| 国产在线观看精品| 国产亚洲欧美日韩高清| 亚洲私拍自拍| 在线看日韩av| 黄瓜视频污在线观看| 99ri日韩精品视频| 欧美一区二区三区啪啪| 国内自拍视频网| 色网在线免费观看| 亚洲日本一区二区三区| 日韩av高清在线播放| 欧美视频一二区| 国产呦精品一区二区三区网站| 欧美性在线视频| 精品少妇一二三区| 亚洲综合色网| 中文字幕av一区中文字幕天堂| 不卡一区二区在线观看| 激情小说亚洲图片| 精品裸体舞一区二区三区| 九九九九九九九九| 日韩一区二区三区四区五区| 欧美在线啊v一区| 欧美少妇性生活视频| 交100部在线观看| 性感美女久久精品| 久久国产精品网| 成人影音在线| 午夜久久久久久电影| 免费看毛片的网址| 国产在线精彩视频| 狠狠色狠狠色综合日日五| 国产精品久久中文字幕| av漫画网站在线观看| 亚洲国产婷婷综合在线精品| 欧美久久在线观看| 黄色软件视频在线观看| 精品久久久久久久久国产字幕| 国产精品久久..4399| 国产乱码午夜在线视频| 日韩欧美国产成人| 少妇黄色一级片| 欧美电影在线观看网站| 欧美精三区欧美精三区| 夜夜爽久久精品91| 亚洲欧洲国产精品一区| 精品国产凹凸成av人导航| 国产十八熟妇av成人一区| 欧美天堂社区| 国产一区二区三区视频在线观看| 天天舔天天操天天干| 91亚洲国产高清| 欧美国产精品va在线观看| 日本在线视频免费| 老司机亚洲精品| 国产在线精品播放| 亚洲国产999| 91香蕉视频污在线| 亚洲国产欧美一区二区三区不卡| 欧美尤物美女在线| 亚洲午夜国产一区99re久久| 黑森林福利视频导航| 狠狠久久伊人中文字幕| 欧美不卡一区二区| 真实乱视频国产免费观看| 国产精品99久久精品| 久久久久久久久久亚洲| 久久久蜜桃一区二区| 激情偷乱视频一区二区三区| 国产在线精品日韩| yourporn在线观看中文站| 亚洲自拍偷拍网站| 欧美日韩大尺度| 亚洲乱码一区| 中文字幕免费国产精品| 三级黄色在线视频| 久久草av在线| 欧美二区三区在线| 午夜dj在线观看高清视频完整版| 狠狠色噜噜狠狠狠狠97| 国产高清av片| av亚洲在线观看| 韩国精品美女www爽爽爽视频| 99re热视频| 99热这里都是精品| 2025韩国大尺度电影| 成人爱爱网址| 精品日韩一区二区三区免费视频| 少妇愉情理伦三级| 99视频精品| 97超级在线观看免费高清完整版电视剧| 男人的天堂av高清在线| 国产精品久久久久久久久免费桃花 | 国产精品观看在线亚洲人成网| 精品人妻无码一区二区| 国产精品国产三级国产aⅴ无密码| 日韩av三级在线| 9l亚洲国产成人精品一区二三 | 日韩一区二区三区视频在线观看 | 精品国产乱码久久久久久蜜坠欲下| 色综合久久88| 99国产精品久久久久99打野战| 久久精品一区二区三区不卡牛牛| 成人在线观看你懂的| 亚洲精品国产九九九| 久久精品国产清自在天天线| 探花国产精品一区二区| 久久精品夜色噜噜亚洲a∨| 国产精品久久中文字幕| 国内精品免费| 久久免费视频在线观看| 懂色av成人一区二区三区| 亚洲蜜臀av乱码久久精品| 亚洲精品第三页| 三区四区不卡| 国产综合久久久久久| 午夜激情视频在线观看| 欧美精品日韩一区| 亚洲怡红院在线观看| 久久99精品久久久久| 亚洲精品一品区二品区三品区| 国精产品一区一区三区四川| 亚洲图片欧美日产| 夜夜爽妓女8888视频免费观看| 久久久久久久网| 粉嫩虎白女毛片人体| 少妇精品久久久一区二区三区| 日本高清+成人网在线观看| 三级av在线播放| 色婷婷综合视频在线观看| 国产又爽又黄无码无遮挡在线观看| 在线亚洲自拍| 欧美成人在线免费观看| 欧美成人影院| 最好看的2019的中文字幕视频| 影音先锋国产资源| 亚洲欧洲国产日韩| 中文字幕1区2区| 在线中文一区| 国产伦精品一区二区三区视频免费| 国产深夜视频在线观看| 日韩精品免费一线在线观看| 丁香社区五月天| 国产精品天天摸av网| 韩国一区二区在线播放| 好吊日精品视频| 欧美二级三级| 中文成人在线| 久久免费精品视频| 国产在线观看精品一区| 欧美丰满少妇xxxxx高潮对白| 欧美日韩精品亚洲精品| 国产99久久久精品| 日韩欧美精品在线观看视频| 日韩激情在线| 成人自拍爱视频| 午夜欧美巨大性欧美巨大| 色妞在线综合亚洲欧美| 黄色片一区二区| 91极品美女在线| 色在线观看视频| 久久综合久色欧美综合狠狠| 天天干天天玩天天操| 激情91久久| 亚洲欧美日韩在线综合| 红杏aⅴ成人免费视频| 国产精品h片在线播放| av免费在线免费观看| 日韩成人在线网站| 国产美女明星三级做爰| 欧美小视频在线| 日本精品人妻无码77777| 99re热这里只有精品免费视频| 色一情一区二区三区| 在线观看日韩av电影| 五月天综合网| 女人抽搐喷水高潮国产精品| 国产主播欧美精品| 高清不卡亚洲| 欧美精品www| 国产丝袜在线| 亚洲人成电影网站| 亚洲AV无码国产精品午夜字幕| 色香蕉久久蜜桃| 国产极品在线播放| 国产精品国产三级国产a | 国产精品超碰97尤物18| 欧美熟妇精品黑人巨大一二三区| 国内精品不卡在线| 91av俱乐部| 亚洲一区二区三区高清| 免费看日本黄色| 国产电影一区二区在线观看| 日本亚洲自拍| 日韩理论电影中文字幕| 97av自拍| 精品中文字幕一区二区三区四区| 国产成人精品午夜| 欧美激情20| 欧美精品久久久久| 伊人222成人综合网| 精品国产欧美一区二区三区成人| 青青草免费观看免费视频在线| 欧美精品一区二区三区高清aⅴ| 国产成人精品亚洲精品色欲| 欧美美女一区二区三区| 青青艹在线观看| 色天天综合久久久久综合片| 国产精品午夜影院| 红桃av永久久久| 日本一级一片免费视频| 亚洲无线码一区二区三区| 青娱乐国产在线视频| 亚洲精品欧美综合四区| 希岛爱理中文字幕| 日韩毛片视频在线看| 色老板免费视频| 中文字幕亚洲在| 午夜剧场免费在线观看| 亚洲少妇中出一区| 日韩女优一区二区| 又紧又大又爽精品一区二区| 欧美日韩在线视频免费播放| 亚洲乱码中文字幕| 久久久久久久国产精品毛片| 亚洲一区中文日韩| 99免费在线观看| 黑人狂躁日本妞一区二区三区| 手机看片久久久| 欧洲亚洲国产日韩| 91成人国产综合久久精品| 91精品一区二区三区久久久久久| 国产肥老妇视频| 精品国产制服丝袜高跟| 婷婷色在线观看| 亚洲少妇中文在线| 亚洲麻豆精品| 欧美www在线| 国产理论电影在线| 69av成年福利视频| 久久久一本精品| 国产在线观看不卡| 99精品国产高清一区二区麻豆| 韩国成人一区| 操欧美老女人| 玖玖精品在线视频| 亚洲美女毛片| 国产精品无码一本二本三本色| 美女mm1313爽爽久久久蜜臀| 免费黄频在线观看| 波多野结衣91| 日韩丰满少妇无码内射| 亚洲另类在线视频| 国产视频91在线| 欧美日韩一区二区在线视频| av手机免费看| 亚洲精品少妇网址| 美女隐私在线观看| 性色av一区二区三区免费| 粉嫩av一区二区三区四区五区| 成人免费淫片aa视频免费| 国产美女撒尿一区二区| 日本一区视频在线观看| 一本一本久久a久久综合精品| 日韩精品 欧美| 蜜臀a∨国产成人精品| 久久av一区二区三| 久久精品亚洲精品国产欧美| 欧美成人免费观看视频 | 99久久精品免费看国产交换| 亚洲经典中文字幕| 欧美激情二区| 欧美与欧洲交xxxx免费观看 | 国产在线播放一区二区| 91综合久久| 少妇高潮喷水久久久久久久久久| 精品一区二区三区在线播放| 好吊一区二区三区视频| 亚洲男人的天堂在线观看| 亚洲va在线观看| 欧美一级一区二区| 在线观看完整版免费| 欧美孕妇与黑人孕交| 风间由美一区二区av101| 亚洲午夜精品久久久中文影院av| 亚洲人妖在线| 黑人巨大猛交丰满少妇| 欧美韩国日本综合| 五月天综合激情网| 精品奇米国产一区二区三区| 欧美13一16娇小xxxx| 国产成人在线一区| 日韩极品在线| 日韩美女爱爱视频| 国产裸体歌舞团一区二区| 特级西西人体高清大胆| 日韩欧美亚洲国产一区| 天堂网2014av| 欧美俄罗斯性视频| 国模大尺度视频一区二区| 亚洲精品中字| 日韩电影在线免费| 亚洲做受高潮无遮挡| 天天操天天干天天综合网| 亚洲精品久久久久avwww潮水| 日韩在线观看高清| 欧美videos粗暴| 亚洲视频小说| 免费成人在线网站| 美女100%露胸无遮挡| 欧美亚洲一区二区在线| 国产小视频免费在线网址| 欧美一区二区.| 亚洲精品国产setv| 国产精品自拍片| 99国产精品久久久| 日本在线观看视频网站| 日韩av中文在线| 天堂av中文在线观看| 国产成人av一区二区三区在线观看| 爱情岛论坛亚洲首页入口章节| 久久亚洲精品小早川怜子| 欧美三级午夜理伦| 亚洲美女又黄又爽在线观看| 中文在线а√在线8| 久久涩涩网站| 日韩中文字幕1| www.日本高清视频| 欧美顶级少妇做爰| 成人日日夜夜| 国产成人亚洲欧美| 亚洲视频成人| 538精品视频| 538在线一区二区精品国产| 69xxx在线| 国产一区免费在线| 久久在线精品| 刘亦菲国产毛片bd| 欧美一区二区三区爱爱| h片视频在线观看| 蜜桃av色综合| 久久99久久99| 妺妺窝人体色www婷婷| 亚洲跨种族黑人xxx| 高清亚洲高清| 97中文字幕在线| 久久伊人蜜桃av一区二区| 亚洲午夜无码久久久久| 不用播放器成人网| 台湾亚洲精品一区二区tv| 爱情岛论坛vip永久入口| 亚洲人成影院在线观看| 日韩中文字幕观看| 国产精品视频午夜| 狠狠噜噜久久| 少妇真人直播免费视频| 91麻豆精品国产91久久久 | www.久久99| 国产精品久久7| 日韩中文字幕麻豆| www.av视频| 亚洲欧美精品suv| 精品视频在线观看网站| 北条麻妃在线观看| 亚洲猫色日本管| 国自产拍在线网站网址视频| 91在线精品视频| 久久久天天操| 欧美黄色免费观看| 亚洲天堂男人天堂女人天堂| 一区二区三区国产好| 日韩中文字幕二区| 亚洲国产精品麻豆| 日本不卡三区| 欧美日韩综合精品| 丁香婷婷综合色啪|