精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美2区3区4区| 看女生喷水的网站在线观看| 久久久久久自在自线| 中文字幕亚洲欧美在线| 香蕉视频在线观看黄| 欧美xxxhd| 中文字幕一区av| 国产亚洲情侣一区二区无| 波多野结衣激情视频| 午夜日韩视频| 国产亚洲视频在线| zjzjzjzjzj亚洲女人| 欧亚一区二区| 俺来俺也去www色在线观看| 亚洲精品.www| 欧美午夜不卡影院在线观看完整版免费| 亚洲国产精品99久久| 亚洲色图38p| 欧美xxxx视频| 国产精品久久久久久一区二区三区 | 国产综合在线观看| 国产精品羞羞答答xxdd| 国产精品久久电影观看| 日本三级片在线观看| 四虎国产精品免费观看| 亚洲精品视频播放| 亚洲成a人无码| 在线观看亚洲精品福利片| 欧美小视频在线观看| 亚洲一区 在线播放| av网在线观看| 久久久久久亚洲综合影院红桃| 丁香婷婷久久久综合精品国产| 亚洲熟女乱色一区二区三区久久久 | 中文字幕在线观看欧美| 免费看黄裸体一级大秀欧美| 久久久亚洲精选| 9999热视频| 97精品一区| 色吧影院999| 青娱乐国产视频| 在线观看欧美理论a影院| 亚洲精品在线电影| 涩视频在线观看| 色妞ww精品视频7777| 在线播放91灌醉迷j高跟美女 | 久久综合久中文字幕青草| 欧美大波大乳巨大乳| 亚洲自拍都市欧美小说| 日韩成人在线观看| 变态另类丨国产精品| 成人台湾亚洲精品一区二区| 精品少妇一区二区三区在线播放| 欧美性猛交xxxx乱大交91| 羞羞视频在线观看一区二区| 欧美日韩在线播放三区四区| 制服丝袜综合网| 精品福利在线| 欧美高清性hdvideosex| 手机免费看av网站| 成人噜噜噜噜| 欧美电视剧在线看免费| 中文字幕人妻熟女在线| 欧美91在线| 亚洲欧美国产日韩天堂区| 久久人人爽人人爽人人片| 亚洲人成精品久久久| 国产亚洲欧美日韩美女| 天天爽天天爽天天爽| 久久精品影视| 久久久中精品2020中文| 国产一级做a爱片久久毛片a| 乱码第一页成人| 国产精品一区二区电影| 国产精品无码在线播放 | 欧美亚洲一区二区在线观看| 美女网站视频黄色| 成人永久在线| 亚洲国产精品一区二区三区 | 亚洲男同1069视频| 无码人妻少妇伦在线电影| 日韩深夜视频| 欧美日韩在线亚洲一区蜜芽| 极品人妻一区二区| 一呦二呦三呦国产精品| 色av吧综合网| 日韩伦理在线视频| 久久精品国产精品青草| 国产厕所精品在线观看| 蜜芽tv福利在线视频| 中文字幕一区二区不卡| 国产在线播放观看| 成人国产一区| 精品av综合导航| 亚洲黄色小说视频| 欧美午夜在线视频| 国产精品美女主播在线观看纯欲| 国产三级视频在线播放| 久久综合久久99| eeuss中文| 韩国成人漫画| 欧美不卡一区二区| 超碰人人干人人| 国自产拍偷拍福利精品免费一| 国产98色在线| 亚洲免费成人网| 国产精品三级视频| 日韩欧美亚洲天堂| 久久久久久爱| 伊人一区二区三区久久精品| 国产在线一二区| 麻豆91精品91久久久的内涵| 久久精品日产第一区二区三区精品版 | 亚洲色图制服丝袜| 最近免费中文字幕中文高清百度| 欧美午夜在线播放| 色多多国产成人永久免费网站| 国产成人在线免费视频 | 亚洲最大成人网站| 好吊一区二区三区| 成人av.网址在线网站| 飘雪影视在线观看免费观看| 亚洲在线成人精品| 久国产精品视频| 精品美女久久| 欧美与黑人午夜性猛交久久久| 亚洲AV无码精品色毛片浪潮| 亚洲欧洲性图库| 欧美黄色性生活| 九九热爱视频精品视频| 97**国产露脸精品国产| 成人午夜精品福利免费| 亚洲女与黑人做爰| 中文字幕一区二区在线观看视频| 日韩一区三区| 国产精品露脸自拍| 激情小说 在线视频| 天天综合天天做天天综合| 佐佐木明希电影| 欧美成人亚洲| 亚洲一区二区少妇| 国产一二三区在线观看| 欧美人体做爰大胆视频| 日本免费网站视频| 久久se精品一区二区| 亚洲精品乱码久久久久久蜜桃91| 日本精品另类| 中文字幕av一区二区三区谷原希美| 日本高清不卡码| 久久青草欧美一区二区三区| aa免费在线观看| 亚洲8888| 国产精品久久久久秋霞鲁丝 | 国外成人免费在线播放| 性欧美8khd高清极品| 夜夜嗨av一区二区三区网页| 中文字幕无码毛片免费看| 欧美福利电影在线观看| 草莓视频一区| 国产高潮在线| 亚洲免费视频网站| 中文字幕视频免费观看| 国产精品久久免费看| 免费国偷自产拍精品视频| 欧美一区综合| 精品一区二区三区视频日产| 成人美女大片| 日韩有码在线播放| 午夜精品久久久久久久爽| 亚洲丰满少妇videoshd| 在线免费观看成年人视频| 视频在线在亚洲| 一本—道久久a久久精品蜜桃| 电影91久久久| 亚州欧美日韩中文视频| 国外av在线| 欧美欧美欧美欧美| 日韩av一区二区在线播放| 26uuu国产日韩综合| 九九热在线免费| 久久久久国产精品| 激情伦成人综合小说| 日日av拍夜夜添久久免费| www.欧美精品一二三区| 人妻少妇一区二区三区| 欧美在线短视频| 久久r这里只有精品| 久久综合久久鬼色| 激情久久综合网| 亚洲专区一区| 青青草综合视频| 一区二区三区韩国免费中文网站| 成人免费视频97| 理论不卡电影大全神| 日韩中文字幕在线| 天堂在线视频免费观看| 欧美日本国产一区| 欧美性猛交bbbbb精品| 日韩毛片在线免费观看| 日本黄色特级片| 国产美女av一区二区三区| 92看片淫黄大片一级| 亚洲一区欧美| 天天人人精品| 国内精品偷拍| 成人日韩在线电影| 韩日成人影院| 久久理论片午夜琪琪电影网| 在线观看a视频| 日韩av中文在线| 国产手机精品视频| 日本韩国欧美在线| 国产成人无码精品| 亚洲黄色免费网站| 麻豆一区在线观看| 久久精品欧美一区二区三区麻豆| 午夜激情视频网| 免费成人在线影院| 成人黄色片视频| 在线看片一区| 日韩中文字幕在线不卡| 日韩精品免费| 日产精品久久久一区二区| 欧美美女在线直播| 91久久久久久久久久久久久| 99久久伊人| 国产成人精品免高潮费视频| 老牛影视精品| 69av成年福利视频| 2020国产在线| 久久久伊人日本| 成人av影院在线观看| 欧美男插女视频| av免费在线免费观看| 日韩一级黄色av| 免费观看久久久久| 精品国产欧美一区二区三区成人| 国产免费av在线| 亚洲天堂网站在线观看视频| 深夜福利在线观看直播| 亚洲精品电影网| 秋霞欧美在线观看| 亚洲第一网中文字幕| 蜜桃久久一区二区三区| 精品毛片乱码1区2区3区| wwwxxxx国产| 精品国产91乱码一区二区三区| 国产黄色美女视频| 日韩一区二区免费高清| 亚洲国产av一区二区| 精品久久人人做人人爱| 蜜桃视频污在线观看| 亚洲成人激情在线| 青青青免费视频在线2| 亚洲男人天堂2019| 国产天堂在线| 色老头一区二区三区| a级网站在线播放| 欧美激情小视频| 国产自产自拍视频在线观看| 97在线免费观看| 日韩一区二区三区在线免费观看 | 欧美亚洲视频一区| 欧美三级美国一级| 亚洲国产综合自拍| 成人免费在线| 色天天综合久久久久综合片| 69视频免费看| 欧美丝袜丝交足nylons图片| 在线视频免费观看一区| 欧美一区二区三区视频在线 | 日韩伦理在线视频| 精品久久久久久久久久久久久| www.久久久久久久| 欧美日韩国产大片| 国产成人精品一区二三区四区五区| 欧美不卡视频一区| 精华区一区二区三区| 久久久电影免费观看完整版| 国产91足控脚交在线观看| 日本免费一区二区三区视频观看 | av色综合网| 怕怕欧美视频免费大全| 亚洲综合首页| 欧美精品一级| 日本三级免费观看| 韩国一区二区三区| 亚洲色图14p| 中文子幕无线码一区tr| 中文字幕日韩在线观看| 国产精品无码免费专区午夜| 日本电影一区二区| 干日本少妇视频| 麻豆精品网站| 国产亚洲色婷婷久久| 久久综合九色综合97婷婷| 中文乱码字幕高清一区二区| 亚洲国产精品一区二区www| 日韩中文字幕高清| 精品毛片乱码1区2区3区| 亚洲国产精品三区| 国产免费av在线| 亚洲天堂免费观看| 亚洲色图美国十次| 国产精品h在线观看| 成人福利一区| 日韩美女一区| 日本韩国一区| 国产亚洲欧洲在线| 国产精选在线| 91网免费观看| 凹凸成人精品亚洲精品密奴| 91九色丨porny丨国产jk| 精品亚洲成a人在线观看| 国产伦精品一区| h色网站在线观看| 中文字幕精品一区二区三区精品| 国产亚洲第一页| 欧美久久久久久久久| 国产一二三区在线视频| 国a精品视频大全| 清纯唯美激情亚洲| 精品久久免费观看| 免费观看一级特黄欧美大片| 一区二区不卡免费视频| 亚洲午夜久久久| 欧美三级韩国三级日本三斤在线观看 | 韩国女主播成人在线观看| 播金莲一级淫片aaaaaaa| 亚洲高清在线精品| 丰满人妻一区二区三区免费| 欧美成人小视频| 国产一区一区| 免费成人进口网站| 精品一区二区三区视频| 一级黄色录像毛片| 欧洲av一区二区嗯嗯嗯啊| 日韩精品视频无播放器在线看 | av爱爱亚洲一区| 久久久久久天堂| 欧美成人一级视频| 麻豆福利在线观看| 3d动漫精品啪啪| 视频一区不卡| 精品国产欧美日韩| 欧美日韩国产精品激情在线播放| 成人av电影免费观看| 国产亚洲第一页| 亚洲国产精品成人av| 99爱在线视频| 激情小说综合区| 国产精品日韩精品欧美精品| 欧美高清性xxxx| 色天使久久综合网天天| 超碰在线影院| 成人午夜激情免费视频| 亚州av乱码久久精品蜜桃| 九九久久久久久| 午夜一区二区三区视频| 青青草在线播放| 国产精品久久中文| 中文字幕日韩一区二区不卡 | 高清av一区二区| 中文在线观看免费网站| 国产丝袜精品视频| 成人在线高清| 老司机午夜网站| 成人不卡免费av| 波多野结衣一二区| 日韩有码视频在线| 91欧美日韩在线| 欧美在线观看www| 国产精品午夜在线| 国产女人高潮的av毛片| 午夜免费久久久久| 精品色999| 国产chinesehd精品露脸| 精品久久久久人成| 国产天堂第一区| 免费看黄裸体一级大秀欧美| 久久久久久久久电影| 在线看的毛片| 亚洲永久激情精品| 丁香婷婷深情五月亚洲| 青草视频在线观看免费| 日韩在线观看免费高清| 北条麻妃在线一区二区免费播放| 欧美视频在线播放一区| 中文字幕一区二| 色av男人的天堂免费在线| 91精品国产综合久久香蕉最新版 | av高清不卡在线| 国产精品xxxxxx| 久久久久国产视频| 精品国产精品| 岛国精品一区二区三区| 欧美三级日韩在线| 国产精品论坛| 警花观音坐莲激情销魂小说| 91色婷婷久久久久合中文|