原创 叢林探險之Tomcat的連接器

文章目錄叢林背景Endpoint的繼承體系NioEndpoint(一)bind() 初始化ServerSocketChannel(二)Acceptor線程負責與客戶端建立連接(三)LimitLatch控制最大連接數(四)Polle

原创 存儲之Mysql架構

原创 設計模式實踐篇

小紀 今天我新開了春生秋實專欄,這個專欄的定位就是把我之前寫的一些有價值的腦圖挑選出來跟大家一起討論一下。既然是這個專欄的第一篇,那就得上點乾貨熱熱場。咋們這次討論下老生常談的設計模式。 前言 業務開發這麼多年,作者我也是聽到了不

原创 LinkedBlockingQueue的雙鎖算法

背景 LinkedBlockingQueue是JAVA併發包下的一個常用的線程安全的隊列。 這個隊列挺有意思的,因爲在沒看它的源碼之前,我以前它就是簡單的用一把鎖來控制隊列的入隊與出隊。但實際它的設計更加巧妙,它用了兩把鎖來分別控

原创 ConcurrentLinkedQueue非阻塞算法的實現

背景 ConcurrentLinkedQueue 是一個併發安全的非阻塞隊列。本質利用自旋CAS的方式來完成入隊和出隊的操作,但是走的不是一般的玩法。 普通的非阻塞算法 以下是我本人實現的利用自旋CAS來實現併發安全得入隊和出隊操

原创 PriorityQueue的堆排序算法實現

背景 完全二叉樹:只缺少最後一層靠右邊節點的二叉樹爲完全二叉樹。 堆:特定排序規則下的完全二叉樹。 堆分爲最大堆與最小堆,最小堆的特點就是父節點的值小於其子節點,最大堆的特點就是父節點的值大於其子節點。 樹這個邏輯結構可以用數組來

原创 叢林探險之Dubbo遠程調用

叢林背景 dubbo框架的核心就是遠程調用。在設計上,作者對遠程調用的實現進行了分層,一共是三層:business層、rpc層與remoting層。 business層,這一層有爲RPC接口創建的動態代理對象 rpc層,這一層的

原创 叢林探險之Spring自定義註解加載Bean

文章目錄叢林背景角色(一)自定義註解 StrategyBean(二)自定義註解 StrategyBeanScan(三)自定義註冊機 StrategyBeanScanRegistrar(四)自定義Bean工廠後置處理器Strateg

原创 叢林探險之dubbo遠程調用

叢林背景 dubbo框架的核心就是遠程調用。在設計上,作者對遠程調用的實現進行了分層,一共是三層:business層、rpc層與remoting層。 business層,這一層有爲RPC接口創建的動態代理對象 rpc層,這一層的

原创 春生秋實之一致性

(一)一致性的概念 一致性是通過可見性來定義的。 一致性是指多副本中的數據一致性。 (二)全局排序的概念 嘗試對所有進程的讀寫操作做一次全局排序(全局排序就是排成一列的意思) 全局排序中屬於同一個進程的讀寫順序肯定是不變的 進

原创 春生秋實之AbstractQueuedSynchronizer

AQS簡介 AQS是一個抽象類,封裝了互斥鎖和共享鎖的加鎖和解鎖的模板方法,子類繼續繼承AQS並且覆蓋他的一些鉤子方法來實現完整加鎖和解鎖的操作。 具體的加鎖和加鎖是要通過AQS內部的一個同步隊列。 加鎖失敗的線程會創建一個節點

原创 叢林探險之Tomcat如何處理Http連接

文章目錄叢林背景Endpoint的繼承體系NioEndpoint(一)bind() 初始化ServerSocketChannel(二)Acceptor線程負責與客戶端建立連接(三)LimitLatch控制最大連接數(四)Polle