原创 從spring容器啓動解析webmvc源碼
Spring webmvc啓動流程 本文將從spring容器啓動過程去分析springmvc源碼,首先我們思考一個問題: web容器在啓動的時候是怎麼將bean解析並加載到spring容器中的,像我們自己如果要啓動容器,那是不是要new
原创 rabbitmq高可用集羣搭建踩坑
rabbitmq高可用集羣搭建踩坑 搭建rabbtmq集羣時,執行 rabbitmqctl join_cluster rabbit@rabbit-node1報錯 Clustering node rabbit@slave1 wit
原创 AQS之ReentrantLock
AQS是AbstractQueuedSynchronizer的簡稱,它是java併發包很重要的一個工具類,像比較常見的ReentrantLock、CountDownLatch等都是在AQS的基礎上建立的。本文將從ReentrantLock
原创 AQS之CountDownLatch
CountDownLatch是java併發包中一個常見的類,本文將從源碼的角度來分析CountDownLatch的實現原理,而CountDownLatch是基於AQS的共享鎖模式來實現的,所以需要對AQS有一定的瞭解。
原创 volatile底層原理剖析
在理解volatile之前,我們先來熟悉下計算機執行程序的過程 要執行我們的應用程序,首先將我們的程序從磁盤上讀取到內存中,內存裏這個時候存放了要執行的指令和數據,要執行一條指令的時候,指令寄存器根據程序計數器PC中存放的下一條待執行指
原创 kafka架構和原理分析
目錄 kafka消費模式 kafka架構 kafka生產者消息發送流程 文件存儲機制 kafka生產者分區策略 kafka數據可靠性與一致性 Exactly Once kafka消費者分區策略 consumer offset的維護 kaf
原创 Spring IOC循環依賴源碼解析
目錄 什麼是循環依賴? Bean註冊 Bean實例化 springIOC循環依賴總結 驗證 什麼是循環依賴? 所謂循環依賴就是A依賴B的同時B又依賴A,二者互相依賴,形成環路。試想,SpringIOC在初始化容器的時候,先實例化Bean
原创 kafka API實踐(kafka原理驗證)
kafka生產者API kafka生產者發送消息採用異步發送的方式,我們在寫發送消息的代碼的時候,會調用send方法,整個發送的過程涉及兩個線程:main線程和sender線程,有一個重要的線程共享變量:RecordAccumulator
原创 HashMap和concurrentHashMap解析
HashMap1.7 HashMap是非線程安全的,不支持併發操作,其實現比較簡單。先來看下JDK1.7中HashMap的結構圖 HashMap裏面是一個數組,數組中的每個元素是一個Entry對象,每個Entry對象的next屬性指向下
原创 JVM垃圾回收與調優
首先,第一個問題:什麼是垃圾? 我們說當一個對象,沒有任何引用指向它的時候,那這個對象就是垃圾。 那麼JVM是怎麼知道這個對象已經沒有引用指向它了呢?也就是說JVM是怎麼找到垃圾的? 目前來說有兩種算法:reference count(引
原创 Synchronized筆記
用戶態和內核態 平時我們所寫的java程序是運行在用戶空間的,因爲我們的jvm對於操作系統來講就是一個普通程序。用戶空間的程序要執行讀寫硬盤、讀寫網絡、讀寫內存等重要操作時必須經過操作系統內核來進行。 在JDK早期,Synchronize
原创 shell腳本啓動kafka集羣
前提:kafka集羣之間已配置ssh免密登錄,kafka集羣配置路徑一致 要實現kafka羣起腳本 思路:通過ssh登錄後,循環啓動每臺機器的kafka和zookeeper kafka和zookeeper單機啓動腳本:remote_ser