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