JVM 學習 第 2 課 虛擬機器class檔案從哪裡尋找?哪裡來?
JVM 學習 第 2 課
go 程式碼從壓縮檔案中查詢引數中輸入的檔案,如從
C:\Program Files\Java\jdk1.8.0_65\jre\lib\rt.jar 中找到java/lang/Object.class,並讀取java/lang/Object.class的資料。
func (self *ZipEntry) readClass(className string) ([]byte, Entry, error) {
r, err := zip.OpenReader(self.absPath)
if err != nil {
return nil, nil, err
}
defer r.Close()
for _, f := range r.File {
if f.Name == className {
fmt.Printf("imf zipfile ReadClass %v\n ", className)
fmt.Printf("imf zip OpenReader self absPath %v\n ", self.absPath )
fmt.Printf(" \n " )
fmt.Printf(" \n " )
rc, err := f.Open()
if err != nil {
return nil, nil, err
}
defer rc.Close()
data, err := ioutil.ReadAll(rc)
if err != nil {
return nil, nil, err
}
return data, self, nil
}
}
return nil, nil, errors.New("class not found: " + className)
}
相關推薦
JVM 學習 第 2 課 虛擬機器class檔案從哪裡尋找?哪裡來?
JVM 學習 第 2 課 go 程式碼從壓縮檔案中查詢引數中輸入的檔案,如從 C:\Program Files\Java\jdk1.8.0_65\jre\lib\rt.jar 中找到java/la
Python學習-第2課(函式,函式文件)
一、函式 1.定義 程式碼的一種組織形式 一個函式一般完成一項特定的功能 函式使用 函式需要先定義 使用函式,俗稱呼叫 2.函式的引數和返回值 引數: 負責給函式傳遞一些必要的資料或者資訊 形參(形式引數): 在函式定義的時
jvm虛擬機器 class檔案常量池與執行時常量池
jvm虛擬機器 class檔案常量池與執行時常量池 class檔案常量池 java檔案編譯後生成class檔案,裡面存有兩部分內容: 類的版本、欄位、方法、介面等描述資訊。(欄位是指我們平時在介面或類裡宣告的各種變數 int a 等) 常量池:存放編譯期生成的字
《深入理解java虛擬機器》學習-第八章-虛擬機器位元組碼執行引擎-方法呼叫
1.概述 ① 方法呼叫並不等同於方法執行,方法呼叫階段唯一的任務就是確定被呼叫方法的版本(即呼叫哪一個方法),暫時還不涉及方法內部的具體執行過程。 ② 一切方法呼叫在Class檔案裡面儲存的都只是常量池中的符號引用,而不是方法在實際執行時記憶體佈局的入口地址(即直接引用);
深入理解java虛擬機器-class檔案結構(5)
這個就不敲了。。。Class檔案格式如下圖,class檔案就是用下面的的結構組織起來的 u2表示2個位元組 u4表示4個位元組 常量池的一些型別 各常量的結構如下圖(不全) 寫了一個簡單的java類 package vm.c2; publi
JVM系列第2講:Java 虛擬機器的歷史
說起 Java 虛擬機器,許多人就會將其與 HotSpot 虛擬機器等同看待。但實際上 Java 虛擬機器除了 HotSpot 之外,還有 Sun Classic VM、Exact VM、BEA JRocketit、IBM J9 等等。今天我們就來簡單回顧下 Java 虛擬機器的發展歷史。 虛擬機器始祖:S
機器學習筆記 第2課:適用於所有演算法的原則
機器學習中的監督學習演算法,常常用於預測建模。這些演算法有一個共通的原則。 人們一般這樣來描述機器學習演算法:學習一個目標函式(f),能夠最好地將輸入變數(X)對映到輸出變數(Y)。 Y = f(X) 這是一個常見的學習任務。我們期望在給定新的輸入變數(X)時,對(Y)做出預測。 我們並不知
機器學習筆記 第1課:機器學習中的資料
資料在機器學習中起著重要的作用。 在談論資料時,理解和使用正確的術語非常重要。 你如何看待資料?想想電子表格吧,有列、行和單元格。 從統計視角而言,機器學習的任務是在假設函式( f )的上下文中構建資料。這些假設函式由機器學習演算法通過學習建立。給定一些輸入變數( Input ),該函式回答
《自己動手寫java虛擬機器》學習筆記(六)-----解析class檔案(java)
專案地址:https://github.com/gongxianshengjiadexiaohuihui 註釋都寫的很清楚,有一些概念問題,請參考go版本的實現 目錄結構 首先是位元組轉換工具,因為java和go的類庫不同,另外需注意class檔案是大端儲存方式(高位元組放低地址,
《自己動手寫java虛擬機器》學習筆記(五)-----解析class檔案(go)
專案地址:https://github.com/gongxianshengjiadexiaohuihui 上一節,我們已經通過路徑找到了指定的class檔案,這一節,我們開始解析class檔案,我們知道class檔
《自己動手寫java虛擬機器》學習筆記(四)-----搜尋class檔案(java)
專案地址:https://github.com/gongxianshengjiadexiaohuihui 首先是定義一個抽象類,把四種路徑的格式抽象出來 Entry.java package classpath; import java.io.IOException;
《自己動手寫java虛擬機器》學習筆記(三)-----搜尋class檔案(go)
專案地址:https://github.com/gongxianshengjiadexiaohuihui 我們都知道,.java檔案編譯後會形成.class檔案,然後class檔案會被載入到虛擬機器中,被我們使用,那麼虛擬機器如何從那裡尋找這些class檔案呢,jav
JVM虛擬機器 - Class類檔案結構
JVM虛擬機器 - Class類檔案結構 概述 Class檔案是一組以8位位元組為基礎單位的二進位制流,各個資料專案嚴格按照順序緊湊地排列在Class檔案之中,中間沒有新增任何分隔符,這使得整個Class檔案中儲存的內容幾乎都是程式執行的必要資料。當遇到需要佔用8位位元組以上空間的資
人工智慧第四課:機器學習的數學基礎
我斷斷續續利用在家休假的時間,完成了這門課程《Essential Math for Machine Learning: Python Edition》的學習,並且得到了總分91分。 這門課程的主要內容如下,雖然我們以前都學過數學,但大部分真的都還給老師了。學習這門課程中,
【驅動】第2課、輸入子系統驅動之學習筆記
一、筆記1、問題:原本的字元驅動框架被拆分為兩部分,在本例的 buttons.c 驅動中,沒有用 open, read, write 等操作,只是在按鍵中斷及其觸發的系統定時器中斷中得到按鍵值並上報, 問題:原本一套驅動程式呼叫的步驟被拆分為幾部分了?都在哪裡?如今一套按鍵 操作的驅動呼叫流程是怎樣的?答:
第2課:全球詳細圖解jvm記憶體三大核心區域及其jvm記憶體案例實戰剖析
內容: 1.圖解JVM記憶體的三大核心區 2.JVM記憶體使用案例剖析 一、圖解JVM記憶體的三大核心區 二、VM記憶體使用案例剖析 從JVM呼叫的角度分析Java程式對記憶體空間的使用: 1.當JVM程序啟動的時候,會從類載入路徑中找到包
JVM學習筆記2:Class檔案格式
一:class檔案概述 Class檔案是JVM的輸入,Java虛擬機器規範中定義了Class檔案的結構。Class檔案是JVM實現平臺 無關、技術無關的基礎。 1:Class檔案是一組以8位元組為單位的位元組流,各個資料專案按順序緊湊排列
第五課:機器學習中的特徵工程
只是總結課程要點,特徵工程內容參見分類《feature engineering for machine learning》! 一、正負樣本不平衡處理方法 二、資料與特徵處理 數值型 類別型 時間型 文字型 1)詞袋 2)n-gram 3)Tf-idf
v2 吳恩達老師深度學習第五課第二週程式設計作業2
吳恩達老師深度學習第五課第二週程式設計作業2,包含答案! Emojify! Welcome to the second assignment of Week 2. You are going to use word vector representation
吳恩達深度學習第四課:卷積神經網路(學習筆記2)
前言 1.之所以堅持記錄,是因為看到其他人寫的優秀部落格,內容準確詳實,思路清晰流暢,這也說明了作者對知識的深入思考。我也希望能儘量將筆記寫的準確、簡潔,方便自己回憶也方便別人參考; 2.昨天看到兩篇關於計算機視覺的發展介紹的文章:[觀點|朱鬆純:初探計算機