原创 AQS分析第三篇(藉助ReentrantLock探索AQS獨佔模式的實現原理)

問題是最好的老師! 一、思考 問題一:關於Node節點的屬性(waitStatus和nextWaiter)? 第一篇中我們瞭解到AQS中隊列的Node節點的數據結構,其中Node有幾個屬性waitStatus和nextWaiter,我們

原创 MYSQL---索引---B+樹

本文將探討以下幾個問題。 一、思考 問題一:B樹和B+樹的區別? 問題二:爲什麼InnoDB要採用B+樹數據結構? 二、分析 B樹的結構 本文大量參考了其他比較優秀的博文,具體地址,請看文末。 B即balance,意爲平衡,B樹又稱爲

原创 AQS分析第一篇(AQS是什麼,有什麼用,數據結構)

問題是最好的老師! 一、思考 第一篇並不深究AQS的實現原理,簡單的解決以下幾個問題,如果您可以輕鬆回答出以下問題,可跳過該篇。 問題一:AQS是什麼?其使用場景在哪裏? 看過JUC源碼的大概都瞭解ReetrantLock是藉助AQS實

原创 併發工具類源碼分析---CyclicBarrier(詳細)

一、作用   JDK1.8英文註釋 * A synchronization aid that allows a set of threads to all wait for * each other to reach a common

原创 MYSQL---MVCC

通過本文將弄明白以下幾個問題。 一、思考 問題一:MVCC是什麼?主要爲了解決什麼問題? 問題二:MVCC的實現原理是什麼? 問題三:有了MVCC之後,開發者還需要做什麼? 二、分析  2.1概念 該定義由此博文總結:https://d

原创 JAVA---線程池(源碼分析)

問題是最好的老師。 一、思考 問題一:爲什麼需要使用線程池? 問題二:線程池的工作原理? 問題三:線程池是如何做到線程複用的? 問題四:當無任何任務執行時,線程池中的線程數量是等於核心線程數還是0?最大線程數是如何降爲核心線程數的? 問題

原创 JAVA---阻塞隊列

問題是最好的老師! 一、思考 問題一:阻塞隊列阻塞了什麼操作?爲什麼需要這樣一個隊列(使用場景是什麼)? 我們都知道在線程池中會用到阻塞隊列,那麼線程池爲什麼不用一個一般的隊列,要用阻塞隊列。那麼阻塞隊列是否還有其他場景。 問題二:阻

原创 JAVA---線程中斷(詳細)

問題是最好的老師! 一、思考 問題一:什麼情況下線程會中斷? 線程自己會中斷嗎,爲什麼要去中斷一個線程,在什麼情況下才能中斷一個線程。 問題二:如何中斷一個線程? 問題三:線程被中斷意味着什麼? 線程被中斷了,其狀態是什麼,被中斷的線程還

原创 AQS分析第四篇(藉助CountDownLatch探索AQS共享模式的實現原理)

上一篇我們通過ReentrantLock分析瞭如何AQS獨佔模式的實現原理。這一篇我們將根據CountDownLatch探索共享模式的實現原理,如果你認真看完上一篇,那該篇的內容將更容易理解。主要分析以下幾個問題? 一、思考 問題一:Co

原创 MYSQL---日誌

本文將探討以下幾個問題。 一、思考 問題一:MYSQL執行流程中會產生哪些日誌? 相信大家都接觸過binlog,redolog,undolog這些字眼,那麼這些日誌究竟在何時產生,存放於什麼位置呢? 問題二:這些日誌的作用是什麼?

原创 JAVA---爲什麼遞歸太深會導致棧溢出

一、思考 對於這個問題,我是這樣想的: 我們知道棧大小是可以通過參數(-Xss)設置的,棧是線程私有的,線程內部的每個方法調用會創建一個棧幀,所以如果“棧幀的數量*每個棧幀的大小>棧大小”時便會發生“棧溢出”。 這樣的設想基於: -Xss

原创 MYSQL---事務

本文將弄明白以下幾個問題。 一、思考 問題一:事務是什麼?爲了解決什麼問題?有哪些特性? 問題二:各種事務的隔離級別的區別? 二、分析 這篇文章先真正搞清楚事務的特性,並不分析事務的實現原理,如果想了解事務的實現原理,請移步【MYSQL-

原创 AQS分析第二篇(其提供的受保護方法代表什麼意思,如何使用AQS)

問題是最好的老師! 一、思考 第一篇分析了AQS是幹什麼的,其內部的數據結構是怎樣的,第二篇依然不深入理解AQS的主要實現,先解決以下問題: 如何使用AQS? 通過第一篇我們知道,AQS是一個同步框架,其提供了排隊和阻塞等機制,子類需要

原创 MYSQL---索引---聚簇索引

本文將探討以下幾個問題。 一、思考 問題一:聚簇索引定義? 問題二:聚簇索引和非聚簇索引區別? 問題三:一級索引和二級索引概念? 二、分析 相信提到索引,到家都聽說過以下名詞: 聚簇索引、非聚簇索引、主鍵索引、輔助索引、一級索引、二級索引

原创 Sql單表查詢語句的各種用法以及注意事項

一、Sql查詢基本結構 SELECT  <目標列名序列>   FROM  <數據源> [WHERE <檢索條件表達式>]    [GROUP BY <分組依據列>]   [HAVING <組提取條件>]  [ORDER BY <排序依據列