原创 HashMap底層存儲原理

HashMap在日常工作中使用場景非常多,程序員都知道是HashMap是線程非安全的,但是底層是以什麼方式存儲的?本人仔細研讀了一下源碼,也只是掌握了核心的存儲功能,並沒有把全部代碼看明白,但是對於理解hashMap的存儲結構完全夠了。

原创 Spring學習-InitializingBean,ApplicationContextWare

Spring這個框架斷斷續續用了幾年,但是很多其中的機制並沒有完全理解透徹,現在抽出時間系統整理一下相關知識點,也是爲自己的技術進行總結! InitailizingBean 這個接口 InitailizingBean中只有一個方法,就是

原创 JVM原理之JVM調優

調優性能關注點 * 吞吐量*:吞吐量是考察垃圾收集器重要的性能指標之一,指不考慮垃圾回收引起的停頓時間,應用程序能夠支撐最大請求的指標。 延遲: 縮短垃圾收集引起的應用程序停頓時間,避免應用程序發生抖動。 內存佔用:垃圾收集器流暢運行所

原创 Dubbo框架學習-負載均衡

負載概述 dubbo中的負載均衡機制主要有4種方式,分別是隨機,輪訓,最少連接數,一致性hash。其中默認情況下,dubbo採用隨機方式進行負載。 dubbo中的負載均衡就是從多個Invoker列表中選擇一個可執行的Invoker。集羣

原创 Rocketmq分佈式事物消息

Rocketmq源碼中關於分佈式事物消息的實現並沒有完全開源,本人是基於3.4.6分析。其中的類是TransactionMQProducer。 源碼分析 TransactionMQProducer是發送分佈式事物消息的核心基礎類,其中s

原创 設計模式之觀察者模式

第一次學習觀察者模式已經是六七年以前,那個時候只是機械的去理解。也知道JAVA中AWT和SWING中使用了觀察者模式。但是沒有真正去理解透(當然,現在也可能沒有真正理解透,但是比那個時候要好很多)。後面陸續也看過幾次,都沒有真正去思考觀察

原创 JVM原理之垃圾收集

垃圾收集作用 JVM堆中存在大量的垃圾對象,如果長時間不收集,容易造成內存溢出或者內存泄露。垃圾收集可以減少堆的可用空間。 頻繁的GC行爲會造成應用程序的停頓,造成用戶體驗較差,吞吐量減少。 確定回收對象 引用計數器:爲每個對象設置

原创 Rocketmq-push消息消費

Push方式消費消息 在Rocketmq中,consumer消費方式有2種,一種是Pull方式消費,一種是push方式消費。Pull方式是consumer主動去broker方式去拉取消息;而push方式是broker主動推送消息,但是pu

原创 CAP和BASE理論理解

分佈式系統都是基於CAP/BASE理論進行設計的。CAP/BASE在分佈式系統設計過程中提供了最基本的也是最重要的原則。 正確的理解CAP/BASE能夠更好的指導分佈式系統的設計,當然了只有經歷了大量的分佈式系統實戰,才能更加深刻的理解

原创 zookeeper中的ZAB協議理解

ZAB協議 ZAB協議是專門爲zookeeper實現分佈式協調功能而設計。zookeeper主要是根據ZAB協議是實現分佈式系統數據一致性。 zookeeper根據ZAB協議建立了主備模型完成zookeeper集羣中數據的同步。這裏所說

原创 Dubbo框架學習-重要概念理解

ProxyFactory ProxyFactory是代理工廠,在dubbo中主要有兩個作用,我們可以通過源碼來分析接口作用 @SPI("javassist") public interface ProxyFactory {

原创 Zookeeper客戶端ZkClient

ZkClient簡介 ZkClient是github上開源的一個zookeeper客戶端。它對原生的zookeeper客戶端API進行了封裝,內部實現了session重連,Watcher反覆註冊,極大降低了開發人員使用zookeeper

原创 多線程併發-synchronized

同步方式 synchronized同步方式主要有3種,簡單介紹如下: 1.1. synchronized同步普通方法,鎖是當前對象實例。 1.2. synchronized同步靜態方法,鎖是當前類的Class對象。 1.3 syn