原创 ConcurrentHashMap 詳解(超詳細 看不懂你錘我)

ConcurrentHashMap介紹 ConcurrentHashMap是一個 在juc包下的 map, 線程安全。 在jdk.1.7 之前採用數組+ 鏈表的結構 並且採用分段鎖機制 來保證線程安全,而jdk1.8之後 他改成了

原创 多線程之線程池ThreadPoolExecutor 源碼解析

整體 public class ThreadPoolExecutor extends AbstractExecutorService public abstract class AbstractExecutorService im

原创 java集合之Vector 詳解

Vector 是java 集合中的 他繼承了AbstractList 實現了List等接口 運用synchronized 保證了線程安全 但是也帶來了格外的性能開銷 默認擴容 1倍 public class Vector<E>

原创 深入理解JAVA虛擬機之垃圾收集器與內存分配策略

判斷對象是否還活着 引用計數算法 每當有第一個地方引用了對象,計數器就+1 當失效就-1,如果計數器爲0 那麼對象就不可能再被使用了。 可達性分析法 通過一些列成爲 gc roots的對象作爲起始點,從這些結點開始搜索,搜索

原创 Mysql索引從入門到禿頭

什麼是索引 排好序的快速查找數據結構 在數據之外,數據庫系統還維護者滿足特定查找算法的數據結構,這些數據結構以某種結構以某種方式引用的數據,這樣可以在這些數據結構上 實現高級查找算法。這種數據結構就是索引。 索引往往以文件的形式

原创 多線程之FutureTask源碼解析

FutureTask介紹 個可取消的異步計算。FutureTask提供了對Future的基本實現,可以調用方法去開始和取消一個計算,可以查詢計算是否完成並且獲取計算結果。只有當計算完成時才能獲取到計算結果,一旦計算完成,計算將不能

原创 java併發容器之ConcurrentHashMap 詳解

ConcurrentHashMap jdk1.7 使用segment+hashentry來實現。ConcurrentHashMap在初始化時,計算出segement數組的大小ssize和每個segment中HashEntry數組

原创 java 初識JVM

java 代碼執行流程– java程序–> 編譯成字節碼文件 -->類加載器–> 字節碼校驗器 ->執行引擎 java編譯器輸入的指令流是一種基於棧的指令集,另一種是基於寄存器的指令集架構 基於棧式架構的特點: 設計和實現

原创 JAVA面試題之LinkedList ArrayList Vectory 的區別

首先 這三者都實現了java集合框架List 所謂的有序集合,因此具體功能比較相似,比如提供定位,添加,刪除的操作。都提供迭代器遍歷,但是因爲具體的設計區別在行爲,性能,線程安全等方向又有很大的不同。 Vector 是java早

原创 異常、斷言

異常都是由 Throwable 繼承而來,但在下一層立即分解爲兩個分支:Error 和 Exception. Error類層次結構描述了java運行時內存耗盡或者內部錯誤應用程序不應該拋出這種異常 Exception層次結構又分

原创 java集合之LinkedList 詳解

LinkedList 繼承至AbstractSequentialList 同時實現了List 等接口 public class LinkedList<E> extends AbstractSequentialList<E>

原创 劍指Offer -- 重建二叉樹

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,1,5,3,8,6},則重建二叉樹並

原创 java面試題 軟引用 強引用 弱引用 虛引用的的區別

強引用 強引用就是我們最常見的普通引用,只要在有強引用指向的一個對象,就能表明對象還活着。垃圾收集器不會回收這種對象。對於一個普通的對象,如果沒有其他的引用關係,只要超過了引用的作用域活着顯式地將相應的引用賦值爲NULL 就可以被

原创 判斷一個二叉樹是否是鏡像的 (牛客模擬面試最後一題)

例如 [1,2,2,3,4,4,3] 就是對稱的 1、如果只有一個跟 那麼肯定是對稱的 返回True 2、如果一邊有 一邊沒有了 那肯定不對稱 發揮False 3、== 判斷左子樹的右子樹 是否等於右子樹的左子樹== class

原创 線程基礎Thread類源碼解讀

Thread Thread類是java在創建多線程的一個類 也是使用的比較多的一個多線程類。 Thread類繼承了Runnable 接口 實現了多線程。 重要屬性解讀 // 標誌線程狀態 默認爲 未啓動 private vola