原创 MySQL的InnoDB存儲引擎中,緩衝池中的Changer Buffer與系統表空間中的Changer Buffer的關係
MySQL的InnoDB存儲引擎中,緩衝池中和系統表空間中都存在Changer Buffer,那它們之間的關係是怎樣的呢?先來一張InnoDB存儲引擎的架構圖: 翻閱了MySQL官網發現如下: 1、https://dev.mys
原创 Springboot中的SPI 機制
一、從java類加載機制說起 java中的類加載器負載加載來自文件系統、網絡或者其他來源的類文件。jvm的類加載器默認使用的是雙親委派模式。三種默認的類加載器Bootstrap ClassLoader、Extension Cla
原创 maven多模塊項目管理及parent標籤
1、題記 最近剛完成一個用Maven構建的Web項目,看了一些Maven方面的書,比如《maven實戰》,但還是對Maven多模塊項目理解得不清晰,所以花了一點時間好好研究了下,現分享如下。 2、問題 下面是一個簡略的項目結構圖:
原创 偏向鎖、輕量級鎖、重量級鎖升級過程中的疑問解答
1 背景 在https://blog.csdn.net/qq_33996921/article/details/106629770這篇文章《Synchronized關鍵字和鎖升級(偏向鎖、輕量級鎖、重量級鎖)》中講解了Synchr
原创 線程創建方式-繼承 Thread 類、實現 Runnable 接口、Callable接口
在 Java 中,有多種方式來實現多線程。下面通過實例來分別介紹繼承 Thread 類、實現 Runnable 接口、Callable接口來創建線程。 1、繼承 Thread 類 1.1類圖 先來看下Thread的類圖: 從
原创 終於搞懂線程的啓動流程了
背景知識 文中參考文章鏈接: 1、線程創建方式-繼承 Thread 類、實現 Runnable 接口、Callable接口 2、openJDK_HotSpot源碼下載 前言 在 Java 中,有一句比較流行的話就是萬物皆對象,同樣
原创 深入理解Condition實現原理
在AQS中存在兩個FIFO隊列:同步隊列 和 等待隊列。本篇文章主要是講condition實現原理(即等待隊裏),同步隊列實現原理看這篇文章:深入理解AQS實現原理和源碼分析。等待隊列是由Condition內部實現的,是一個
原创 Synchronized關鍵字和鎖升級(偏向鎖、輕量級鎖、重量級鎖)
目錄 一、Synchronized使用場景 二、Synchronized實現原理 三、鎖的優化 1、鎖升級 2、鎖粗化 3、鎖消除 一、Synchronized使用場景 Synchronized是一個同步關鍵字,在某些多線程
原创 AQS實現原理和源碼分析
AQS底層實現原理用一句話總結就是:volatile + CAS + 一個虛擬的FIFO雙向隊列(CLH隊列)。所以在瞭解AQS底層實現時,需要先深入瞭解一下CAS實現原理。 #名詞解釋(1)CAS:無鎖的策略使用一種比較交
原创 深入理解ThreadLocal底層原理
ThreadLocal簡介變量值的共享可以使用public static的形式,所有線程都使用同一個變量,如果想實現每一個線程都有自己的共享變量該如何實現呢?JDK中的ThreadLocal類正是爲了解決這樣的問題。Thre
原创 深入理解ReentrantLock原理&&Condition原理
ReentrantLock 介紹 一個可重入的互斥鎖,它具有與使用{synchronized}方法和語句訪問的隱式監視器鎖相同的基本行爲和語義,但它具有可擴展的能力。 一個ReentrantLock會被最後一次成功鎖定(loc
原创 Spring+MyBatis源碼解析之SqlSessionTemplate
1、產生的背景 使用MyBatis就要保證SqlSession實例的線程安全,就必須要爲每一次的請求單獨創建一個SqlSession。但如果每一次請求都要用openSession()自己去創建,就比較麻煩了。 所以在sprin
原创 透過源碼看本質——Spring AOP 在IoC之後,在DI之前
spring的IoC的流程可以分爲定位、加載、註冊三個步驟,在IoC容器中註冊的是BeanDefinition,BeanDefinition就是解析出來的存儲bean對象的。 接着,進行DI操作,需要對BeanDefi
原创 Spring-DI時序圖
Spring-DI時序圖
原创 Spring Ioc時序圖
** Spring Ioc時序圖 **