阅读笔记:基础知识(Java篇)
生活随笔
收集整理的這篇文章主要介紹了
阅读笔记:基础知识(Java篇)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1. GC機制(垃圾回收機制)
-
找到垃圾的方法:引用計數(shù)法、可達性分析法
- 回收垃圾的方法:標記清除算法、復制算法、標記整理法、分代算法
2. JVM內(nèi)存劃分
- 線程私有:程序計數(shù)器、JVM虛擬機棧、本地方法棧
- 線程公有:堆、方法區(qū)、運行時常量池
3. 會發(fā)生OOM的區(qū)域
- 堆:內(nèi)存泄漏
- JVM虛擬機棧和本地方法棧:遞歸循環(huán)
- 方法區(qū):早期類加載過多會OOM,現(xiàn)在一般不會
4. 類加載過程
1.加載:將字節(jié)碼數(shù)據(jù)從不同的數(shù)據(jù)源讀取到JVM內(nèi)存,并映射為JVM認可的數(shù)據(jù)結(jié)構(gòu)
2.鏈接:
3.初始化:為靜態(tài)變量賦值,并執(zhí)行靜態(tài)代碼塊中的邏輯
5. 雙親委派模型
1.類加載器分類
-
- 啟動類加載器:主要加載jre/lib下的jar文件
- 擴展類加載器:主要加載jre/lib/ext下的jar文件
- 應用程序類加載器:主要加載classpath下的文件
2.雙親委派模型:當加載一個類時,優(yōu)先使用父類加載器加載,當父類加載器無法加載時才使用子類加載器去加載
6. HashMap的原理
- 可以看作是數(shù)組+鏈表的組合。數(shù)組被分為一個個的桶。哈希值決定了鍵值對在數(shù)組中的尋址。具有相同哈希值的鍵值對會組成鏈表(避免哈希沖突)。當鏈表長度超過閾值(默認是8)的時候會觸發(fā)樹化,鏈表會變成樹形結(jié)構(gòu)。
7. HashMap需要關(guān)注的4個方法
1.hash方法
-
-
將key的hashCode值的高位數(shù)據(jù)移位到低位進行異或運算。這么做的原因是有些key的hashCode值的差異集中在高位,而哈希尋址是忽略容量以上高位的,這種做法可以有效避免哈希沖突
-
2.put方法(步驟)
3.get方法(步驟)
4.resize方法(步驟)
8. sleep和wait的區(qū)別
- sleep方法是Thread類中的靜態(tài)方法,wait是Object類中的方法
- sleep并不會釋放同步鎖,而wait會釋放同步鎖
- sleep可以在任何地方使用,而wait方法只能在同步方法或者同步方法塊中使用
- sleep中必須傳入時間,而wait可以傳也可以不傳,不傳時間的話只有notify或者notifyAll才能喚醒,傳時間的話在時間之后會自動喚醒
9. final、finally、finalize的區(qū)別
- final可以修飾類、變量和方法。修飾類代表這個類不可被繼承,修飾變量代表此變量不可被改變,修飾方法表示此方法不可被重寫(override)
- finally是保證重點代碼一定會執(zhí)行的一種機制。通常是使用try-finally或者try-catch-finally來進行文件流的關(guān)閉等操作
- finalize是Object類中的一個方法。它的設計目的是保證對象在垃圾回收前完成特定資源的回收。finalize機制已不推薦使用,并且在JDK9已經(jīng)被標記為deprecated
10. 常見的單例模式
- 餓漢式、雙重判斷的懶漢式、靜態(tài)內(nèi)部類實現(xiàn)的單例(最推薦的方式)、枚舉實現(xiàn)的單例
單例對象實例需要有volatile修飾,是因為:mInstance = new SingleTon()包含三個操作(給mInstance分配內(nèi)存,調(diào)用SingleTon的構(gòu)造方法初始化成員變量,將mInstance指向分配的內(nèi)存空間),又由于JVM會發(fā)生指令重排,所以可能調(diào)用順序會發(fā)生錯誤。這樣會導致報錯。而volatile的作用有保持可見性和禁止指令重排
11. java中引用類型的區(qū)別
- 強引用:指的是通過new對象創(chuàng)建的引用,垃圾回收器即使在內(nèi)存不足的情況下也不會回收具有強引用的對象
- 軟引用:是通過SoftRefrence實現(xiàn)的,在內(nèi)存不足之前會被垃圾回收器回收。可用于存儲一些內(nèi)存敏感的緩存
- 弱引用:是通過WeakRefrence實現(xiàn)的,垃圾回收器只要掃描到就會將其回收。可用于存儲一些內(nèi)存敏感的緩存
- 虛引用:是通過FanttomRefrence實現(xiàn)的,隨時有可能被回收。可用于跟蹤對象被垃圾回收的活動,當一個虛引用關(guān)聯(lián)的對象被GC回收之前會受到一條系統(tǒng)通知
12. volatile的原理是在生成的匯編代碼中多了一個lock前綴指令,這個前綴指令相當于一個內(nèi)存屏障,這個屏障有三個作用
13. http與https的區(qū)別
- https需要CA證書,很少免費,需要一定費用
- http是明文傳輸,安全性低;而https是http的基礎上通過ssl加密,安全性高
- 默認端口不同。http是80,https是443
14. https的加密算法
- 稱加密:加密和解密用的都是相同的秘鑰,優(yōu)點是速度快,缺點是安全性低。常見的算法有DES、AES等等
- 非對稱加密:非對稱加密有一個密鑰對,分為公鑰和私鑰。一般來說,私鑰自己持有,公鑰可以公開給對方,優(yōu)點是安全性比對稱加密高,缺點是數(shù)據(jù)傳輸效率比對稱加密低。采用公鑰加密的信息只有對應的私鑰可以解密。常見的算法有RSA等
正式場景中一般都是采用對稱加密和非對稱加密結(jié)合的方式,使用非對稱加密來完成秘鑰的傳遞,然后使用對稱加密實現(xiàn)數(shù)據(jù)的傳遞。這樣保證了安全性又提高了傳輸效率
?
大家如果有什么疑問或者建議可以通過評論或者郵件的方式聯(lián)系我,歡迎大家的評論~
轉(zhuǎn)載于:https://www.cnblogs.com/lanxingren/p/9830911.html
總結(jié)
以上是生活随笔為你收集整理的阅读笔记:基础知识(Java篇)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 笔记本电脑连接不上WIFI解决方法(笔记
- 下一篇: Java 中Thread的sleep、j