原创 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時序圖 **