原创 (5)HashMap原理解析——爲啥線程不安全?

目錄 一、 HashMap的數據結構 二、HashMap的功能實現源碼解析 1. hash方法 2. 由鏈表改爲紅黑樹 3.擴容 4. 擴容後的新位置 5. 搬家 三、 怎樣將HashMap升級爲線程安全的 1. HashMap爲啥線程不

原创 (4)Java可見性、原子性、有序性的本質——CPU緩存模型

    我們來看一下併發編程中的原子性、可見性、有序性是怎麼來的。     早期CPU的頻率比內存的頻率要高很多,如果CPU每次都從內存取數據的話,就會造成快車等慢車的狀態,嚴重影響CPU的性能。爲了解決這個問題,CPU中引入了緩存。緩存

原创 項目如行軍——《孫子兵法》之九地篇

    之前讀《華杉講透孫子兵法》一書,感覺行軍打仗與做項目是相通的。這也很容易理解,因爲孫子兵法的精髓就是知己知彼百戰不殆,講的就是如何用精確的認知與正確的做法來做好打仗這件事。做項目也是用正確的方法調度資源(人、物、時間等)來做成一件

原创 啥時候用interface,啥時候用abstract類? 就一句話

有初學者問interface和abstract類該怎樣選擇的問題,不扯麪試題那些,其實就一句話:   定義爲abstract類, 就是爲了定義較多的已實現方法好讓人繼承;繼承者就不用寫這麼多的實現了,可以直接拿來用; 定義爲interfa

原创 程序猿八榮八恥——又一波!

以編程規範爲榮,以風格邋遢爲恥。    以註釋清晰爲榮,以不寫註釋爲恥。   以日內完工爲榮,以加班加點爲恥。   以代碼自測爲榮,以只寫不測爲恥。   以不斷提升爲榮,以不思進取爲恥。   以解決問題爲榮,以撕逼甩鍋爲恥。

原创 (6)Atomic類原子操作

    對於簡單的計數和加減操作,lock和synchronized的鎖粒度太大,容易導致高併發時效率問題。J.U.C包中提供了一個更加高效的解決方案——Atomic類。它的底層通過CAS操作來實現併發安全性。     Atomic類裏提

原创 (7)AbstractQueuedSynchronizer和ReentrantLock—— 可重入鎖的實現

目錄 一、 可重入鎖與非可重入鎖 二、 公平鎖與非公平鎖   三、獨佔鎖與共享鎖 四、AbstractQueuedSynchronizer(AQS) 五、ReentrantLock 1. lock方法 2. tryAcquire方法 3.

原创 (1)Mysql索引原理

一、 什麼是索引     數據庫索引是爲了加快數據檢索而創建的一種分散存儲的數據結構。     它的本質是一種數據結構,它的作用就像一本書的目錄。有了目錄,我們可以儘快找到書中想要的內容的位置;有了索引,我們不必再去掃描整張表,可以加快檢

原创 (9)讀寫鎖ReentrantReadWriteLock解析

一、 ReentrantReadWriteLock簡介     ReentrantReadWriteLock是在AQS的基礎上實現的一個可重入鎖。它的內部維護了一把讀鎖和一把寫鎖,讀鎖是共享鎖,寫鎖是排他鎖。這樣就保證了寫數據時的線程安全

原创 程序猿那點事兒之—— 唐僧的法寶

      話說唐僧從唐太宗那裏領了項目,在觀音的指點下先後收服了三個徒弟組建了項目組,一路上斬妖除魔,項目進展順利。     一天,中途休息的時候,組裏的運維小弟沙悟淨找到唐僧,作了個揖,說      

原创 關於區塊鏈技術高併發可行性的一個疑問

     這幾天區塊鏈技術火的有點不正常,這種不正常的熱度說白了就是有人在炒作趁熱割韭菜。      區塊鏈技術據說將來可以代替絕大多數的證券、銀行等部門的服務器,在交易、數據安全、知識產權保護等方面發揮巨大的作用,是面向未來的技術。

原创 (8)線程自留地——ThreadLocal

    在併發編程中,爲了線性安全我們經常要使用各種各樣的“鎖”。 不管鎖的粒度如何小,哪怕是CAS操作,都存在先來後到的排隊問題。有時候我們只是單純地計數,沒有太複雜的操作,想要一種不涉及鎖的線程安全的操作——ThreadLocal就是

原创 MyBatis源碼(3)—— Mybatis 緩存系統源碼解析

    掂量了一下,自己寫的話寫不了這麼好,轉載過來,學習膜拜!     寫是爲了會,不是爲了寫。      https://zhuanlan.zhihu.com/p/86332753            

原创 MyBatis源碼(1)—— MyBatis架構梗概

目錄 一、 我是如何看源碼的 二、MyBastis架構 1. 預先分析一下MyBatis的骨架 2. 根據這個架構寫出一個MyBatis的1.0版本Demo 3. 看1.0版本有哪些不足,該添加些什麼,該怎樣升級 4. 開始看真實的MyB

原创 起步 —— 種一棵樹最好的時間是十年前

    種一棵樹最好的時間是十年前。       本是空無一物的土地上,屹立着一棵參天大樹。正是十年前播下了一棵幼苗,纔有今天的綠蔭如蓋,葉茂枝繁。     如果是十年前開始認真學習書法,相信應該能寫出一手漂亮的好字了;     如果是