我的知識點

本人做Java5年有餘,仍像個應屆畢業生,知其然不知其所以然,面試多次失敗,痛定思痛,決定梳理下自己的知識點。

本章知識點基於JDK 8

Java知識點總結

JVM相關知識

JVM內存結構

程序計數器

Java虛擬機棧

棧幀
棧幀存儲了局部變量表、操作數棧、動態鏈接、方法出口等信息。

本地方法棧

Java堆

方法區

運行時常量池

直接內存

http://blog.csdn.net/bluetjs/article/details/52874852


類加載機制

http://blog.csdn.net/u013256816/article/details/50829596


垃圾回收機制

如何確定回收對象

  1. 引用計數器算法
  2. 可達性分析算法
  3. 引用類型
  4. finalize方法

垃圾收集算法

  1. 標記清楚算法(Mark-Sweep)
  2. 複製算法(Copying)
  3. 標記整理算法(Mark-Compact)

HotSpot算法實現

  1. 枚舉根節點
  2. 安全點
  3. 安全區域

垃圾收集器

http://blog.csdn.net/tonytfjing/article/details/44278233
http://blog.csdn.net/java2000_wl/article/details/8030172
http://blog.csdn.net/renfufei/article/details/54885190


JVM調優


基礎

集合

List

  1. ArrayList和LinkedList的選型?

  2. sdsd

Map


反射

多線程

Java內存模型

先行發生原則(happens-before)

  1. 程序次序規則:一個線程內,按照代碼順序,書寫在前面的操作先行發生於書寫在後面的操作。準確地說,應該是控制流的順序而不是程序代碼順序,因爲要考慮分支、循環等結構。
  2. 鎖定規則:一個unLock操作先行發生於後面對同一個鎖的lock操作
  3. volatile變量規則:對一個變量的寫操作先行發生於後面對這個變量的讀操作
  4. 傳遞規則:如果操作A先行發生於操作B,而操作B又先行發生於操作C,則可以得出操作A先行發生於操作C
  5. 線程啓動規則:Thread對象的start()方法先行發生於此線程的每個一個動作
  6. 線程中斷規則:對線程interrupt()方法的調用先行發生於被中斷線程的代碼檢測到中斷事件的發生
  7. 線程終結規則:線程中所有的操作都先行發生於線程的終止檢測,我們可以通過Thread.join()方法結束、Thread.isAlive()的返回值手段檢測到線程已經終止執行
  8. 對象終結規則:一個對象的初始化完成先行發生於他的finalize()方法的開始

volatile 語義

volatile提供了兩種特性:
1. 保證此變量對所有其他線程的可見性,指當一條線程修改了這個變量的值,新值對於其他線程來說是可以立即得知的。
2. 禁止指令重排序優化。

實現原理:
1. Lock前綴指令會引起處理器緩存回寫到內存
2. 一個處理器的緩存回寫到內存會導致其他處理器的緩存失效

要使 volatile 變量提供理想的線程安全,必須同時滿足下面兩個條件:
1. 對變量的寫操作不依賴於當前值。
2. 該變量沒有包含在具有其他變量的不變式中。

synchronized 語義

synchronized實現同步的基礎:java中每一個對象都可以作爲鎖
1. 普通同步方法,鎖是當前實例對象。
2. 靜態同步方法,鎖是當前類的class對象
3. 同步方法塊,鎖是Synchronized括號裏的對象

1和3的實現方式是monitorenter和monitorexit指令。2的實現方式是方法的簽名裏有ACC_SYNCHRONIZED標記,實質上還是用的monitorenter和monitorexit實現。

Java對象頭
如果對象是數組類型,則虛擬機用3個字寬存儲對象頭,如果不是,則用2個字寬存儲。在32位虛擬機裏,一個字寬是4個字節。

長度 內容 說明
32/64bit Mark Word 存儲對象的Hashcode和鎖信息
32/64bit Class Metadata Address 存儲到對象類型數據的指針
32/32bit Array length 數組長度(如果是數組)

Mark Word在不同鎖狀態下的存儲格式:
這裏寫圖片描述

鎖的狀態

  1. 偏向鎖
  2. 輕量鎖
  3. 重量級鎖

final 語義

Unsafe

線程池

實現原理:

網絡

日期

異常

Steam

分佈式

CAP理論

分佈式事務

http://www.codeceo.com/article/distributed-transaction.html
http://blog.jobbole.com/89140/
http://www.infoq.com/cn/articles/solution-of-distributed-system-transaction-consistency

數據庫

ACID

  1. 原子性(Atomicity)
  2. 一致性(Consistency)
  3. 隔離性(Isolation)

  4. 持久性(Durability)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章