個人理解的技術點總彙
==================================== Mysql Start ====================================
【事務隔離級別】
讀未提交:事務A和事務B進行的各種操作在沒提交之前相互都能看到,而且對操作的表沒有進行加鎖。這樣會存在髒讀的問題。不會加任何鎖。
讀已提交:事務A和事務B進行的各種操作,必須要在另一個事務提交後,本事務才能看到,會出現不可重複讀,兩個事務對同一條數據的寫操作會有鎖進行限制。寫會加鎖。
可重複讀:事務A執行select後就對這張表持有數據快照,事務B對此表執行插入、刪除、更新操作提交後,事務A是看不到的,除非對事務B插入的數據執行更新操作加入到快照中就能看到。會出現幻讀。增加了數據庫快照,寫會加鎖。
串行化:讀會加S鎖, 寫會加X鎖。
【索引結構】
MyISAM引擎
在MyISAM中,主索引和輔助索引(Secondary key)在結構上沒有任何區別,只是主索引要求key是唯一的,而輔助索引的key可以重複。葉子節點 data域保存的是地址。
InnoDB引擎
索引結構其實和MyISAM引擎一樣,只有兩點區別。1. InnoDB引擎中索引就是數據記錄;2. InnoDB引擎中索引的葉子節點的數據域保存的就是行記錄。
【索引使用】
全列匹配
最左前綴匹配
查詢條件用到了索引中列的精確匹配,但是中間某個條件未提供
查詢條件沒有指定索引第一列
匹配某列前綴字符串
範圍查詢
查詢條件中含有函數或表達式
索引選擇性與前綴索引
在使用InnoDB存儲引擎時,如果沒有特別的需要,請永遠使用一個與業務無關的自增字段作爲主鍵。
==================================== Mysql End ====================================
==================================== JVM Start ====================================
【垃圾回收機制】
對象是否已死:
什麼是引用計數?由於難以解決循環引用問題,java中並沒有使用引用計數。
可達性分析: 根據方法區和虛擬機棧中作爲 root對象,查看那些對象不可達。
強引用,軟引用,弱引用,虛引用。
finalize方法。
方法區回收,這一塊內存回收的代價比較大,主要回收廢棄的常量和無用的類。
垃圾收集算法:標記-清除算法;複製算法;標記整理算法;
Hotspot算法實現
垃圾收集器: 串行垃圾回收器;並行垃圾回收器;併發標記清除垃圾回收器;G1垃圾回收器;
內存分配和回收策略: 新生代和老年代
==================================== JVM End ====================================