原创 【死磕 Java 集合】— LinkedHashMap源碼分析

  簡介 LinkedHashMap內部維護了一個雙向鏈表,能保證元素按插入的順序訪問,也能以訪問順序訪問,可以用來實現LRU緩存策略。 LinkedHashMap可以看成是 LinkedList + HashMap。 繼承體系 Lin

原创 分佈式id雪花算法生成器:徹底解決雪花算法時間回撥問題

  分佈式id生成器:徹底解決雪花算法時間回撥問題 Butterfly 簡介 雪花算法是twitter提出的分佈式id生成器方案,但是有三個問題,其中前兩個問題在業內很常見: 時間回撥問題 機器id的分配和回收問題 機器id的上限問題 B

原创 【死磕 Java 集合】— TreeMap源碼分析(二)

  【死磕 Java 集合】— TreeMap源碼分析(二)   插入元素 插入元素,如果元素在樹中存在,則替換value;如果元素不存在,則插入到對應的位置,再平衡樹。 public V put(K key, V value) {

原创 【死磕 Java 集合】— HashMap源碼分析

  簡介 HashMap採用key/value存儲結構,每個key對應唯一的value,查詢和修改的速度都很快,能達到O(1)的平均時間複雜度。它是非線程安全的,且不保證元素存儲的順序; 繼承體系 HashMap實現了Cloneable

原创 【BATJ面試必會】JAVA面試到底需要掌握什麼?【上】

【BATJ面試必會】JAVA面試到底需要掌握什麼?【上】   秋招幾個月累積的知識點,東西太多,分兩篇發,儘量用(*)和加粗標註出高頻知識點, 都是面試問過的或筆試考過的 Java基礎知識(*) https://blog.csdn.ne

原创 【死磕 Java 集合】— ArrayList源碼分析

  【死磕 Java 集合】— ArrayList源碼分析   簡介 ArrayList是一種以數組實現的List,與數組相比,它具有動態擴展的能力,因此也可稱之爲動態數組。 繼承體系 ArrayList實現了List, RandomA

原创 【死磕 Java 集合】— TreeMap源碼分析(一)

  簡介 TreeMap使用紅黑樹存儲元素,可以保證元素按key值的大小進行遍歷。 繼承體系 TreeMap實現了Map、SortedMap、NavigableMap、Cloneable、Serializable等接口。 Sorted

原创 【死磕 Java 集合】— CopyOnWriteArrayList源碼分析

  簡介 CopyOnWriteArrayList是ArrayList的線程安全版本,內部也是通過數組實現,每次對數組的修改都完全拷貝一份新的數組來修改,修改完了再替換掉老數組,這樣保證了只阻塞寫操作,不阻塞讀操作,實現讀寫分離。 繼承體

原创 【死磕 Java 集合】— TreeMap源碼分析(三)

  【死磕 Java 集合】— TreeMap源碼分析(三) 刪除元素 刪除元素本身比較簡單,就是採用二叉樹的刪除規則。 (1)如果刪除的位置有兩個葉子節點,則從其右子樹中取最小的元素放到刪除的位置,然後把刪除位置移到替代元素的位置,進入

原创 【死磕 Java 集合】— TreeMap源碼分析(四)

  【死磕 Java 集合】— TreeMap源碼分析(四) 二叉樹的遍歷 我們知道二叉查找樹的遍歷有前序遍歷、中序遍歷、後序遍歷。 (1)前序遍歷,先遍歷我,再遍歷我的左子節點,最後遍歷我的右子節點; (2)中序遍歷,先遍歷我的左子節點

原创 【死磕 Java 集合】— WeakHashMap源碼分析

  簡介 WeakHashMap是一種弱引用map,內部的key會存儲爲弱引用,當jvm gc的時候,如果這些key沒有強引用存在的話,會被gc回收掉,下一次當我們操作map的時候會把對應的Entry整個刪除掉,基於這種特性,WeakHa

原创 分佈式ID業界解決方案

  分佈式ID業界解決方案   分佈式ID 分佈式 ID 唯一身份標識 類比身份證,引出分佈式ID: AtomicInteger / AtomicLong 線程對外看是唯一的 資源徵用的場景如何保證唯一:鎖 樂觀鎖 / 悲觀鎖 解決目標

原创 互聯網 Java 工程師面試題1

互聯網 Java 工程師面試題 內容涵蓋:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、 Redis、MySQL、Spring、Spring Boot、Spring Clou

原创 分佈式事務專題

  分佈式事務專題 1.基礎概念 1.1.什麼是事務 什麼是事務?舉個生活中的例子:你去小賣鋪買東西,“一手交錢,一手交貨”就是一個事務的例子,交錢和交貨必 須全部成功,事務纔算成功,任一個活動失敗,事務將撤銷所有已成功的活動。

原创 面試專題--linux面試題

Unix 和 Linux 有什麼區別? Linux 和 Unix 都是功能強大的操作系統,都是應用廣泛的服務器操作系統,有很多相似之 處,甚至有一部分人錯誤地認爲 Unix 和 Linux 操作系統是一樣的,然而,事實並非如此, 以