原创 ReentrantReadWriteLock詳解

1、用法 //初始化讀鎖和寫鎖 ReentrantReadWriteLock rwl = new ReentrantReadWriteLock(); ReentrantReadWriteLock.ReadLock rlock = rwl

原创 ConcurrentHashMap 原理

HashMap在多線程中可能會出現死循環的問題,因而再多線程情況下需要使用其他替代方案。 1、選擇 HashTable是一個方案,不過HashTable會對整個結構加鎖(synchronized),在高併發訪問情況下,效率很低,因而基

原创 Semaphore詳解

1、方法 public void acquire() public void acquireUninterruptibly() public void release() public boolean tryAcquire(int pe

原创 HashMap總結

本文所使用的源碼來自jdk1.8 1、存儲 HashMap之所以訪問很快,內部機制是通過數組+鏈表(鏈表長度大於8則轉爲紅黑樹)來實現的。 HashMap中最頂層的結構是哈希桶數組: transient Node<K,V>[] ta

原创 synchronized總結

用法: a、指定加鎖對象,對給定對象加鎖; synchronized(a){ ... } b、直接作用於實例函數,對指定實例加鎖; public synchronized void f(){ ... } c、直接作用於靜

原创 循環柵欄CyclicBarrier的使用及原理

1、使用 直接await即可。 //指定等待數量 public CyclicBarrier(int parties) //等待,觸發歸0則往下走 int await() 2、原理 使用ReentrantLock及相應Condition

原创 線程詳解

線程狀態 public enum State { // 剛創建線程.還未執行 NEW, //線程已啓動,或在等待分配cpu時間片 RUNNABLE, //

原创 swagger2

swagger需要導入swagger相關頁面,比較麻煩。 swagger2更近一步,只需要做幾個配置即可,更簡單,更易用。 項目基於spring-boot實現,下面指定配置點 pom.xml依賴 <!-- swagge

原创 webpack細節點記錄

1、 __dirname 獲得當前文件所在目錄的完整目錄名 __filename 當前模塊文件的帶有完整絕對路徑的文件名 2、path.join path.join('/foo', 'bar', 'baz/asdf', 'quux',