深入Java 虛擬機 之讀書筆記
開始...posted on 2005-12-10 11:13 refactoring 重構(gòu) 閱讀(237) 評論(1) 編輯 收藏
beyond the limitation of the life
posted on 2005-12-10 11:13 refactoring 重構(gòu) 閱讀(237) 評論(1) 編輯 收藏
類裝載器
1。運行時包:同一個類裝載器裝載的、屬于同一個包的、多個類型的集合。要訪問protect/friend訪問時一定是同一個運行時包才行
java API的類文件是最可信的,可以通過禁止引入某個包中的類,
2。Class 要通過四次檢查來:第一次載入時,第二、三次連接中,動態(tài)連接過程中解析符號引用時
第一次:文件完整性與文件的格式、版本號
第二次:每個部分屬性與它定義的是否相符?如返回類型與參數(shù)一致性,還有final是否被子類化,常量池的引用是否指向合法的reference
第三次:是校驗字節(jié)碼,即操作碼,操作對象是否合法獲值與棧中數(shù)值是正確的值與類型。停機問題:不能用一個程序來判斷輸入的值是否會產(chǎn)生停機
第四次:確定某個類的引用或方法的存在和合法性,它是動態(tài)連編的一部分
如果避免同時引入了舊包和新包,但調(diào)用者根本不知道?
查一下java編譯是根據(jù)時間還是所有的重新編譯?
Java系統(tǒng)安全(類裝載器體系結(jié)構(gòu)、class文件檢查器以及java中內(nèi)置的安全特性如限制對本地方法的調(diào)用)
1. 類型安全的引用轉(zhuǎn)換
2. 結(jié)構(gòu)化的內(nèi)存訪問
3. 數(shù)據(jù)邊界檢查
4. 空引用
引用散列方法:大量的輸入得到很小的輸入,即它們是一對一的,輸出和jar文件放在一起,如果jar文件有改變就會發(fā)現(xiàn)輸出不對。
私鑰與公鑰的問題:
1. 有公鑰的情況下得到私鑰是很難的
2. 私鑰加密的都可以用公鑰解開
用私鑰加密后的散列輸入與包含散列輸出的jar傳到A手中,A得到后用公鑰解開,再用這個輸入計算一下,與jar中的輸出應(yīng)該是一樣的
Keytool 產(chǎn)生公鑰與私鑰
Jarsigner 簽名
keytool -genkey -alias friend -keypass friend4life -validity 10000 -keystore ijvmkeys
將生成ivjmkeys的keystore文件,有效期為10000天
keytool -genkey -alias stranger -keypass friend4life -validity 10000 -keystore ijvmkeys
jarsigner –keystore ijvmkeys –storepass ijvm2ed –keypass friend4life friend.jar friend
jarsigner –keystore ijvmkeys –storepass ijvm2ed –keypass friend4life friend.jar stranger
Java虛擬機體系結(jié)構(gòu)
子系統(tǒng)、內(nèi)存區(qū)、數(shù)據(jù)類型、指令
回復(fù) 更多評論
只有注冊用戶登錄后才能發(fā)表評論。 | ||
![]() |
||
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
|
||