原创 【Java】HashMap源碼分析—put、get、resize方法詳解

上一篇介紹了HashMap的基本概念,這一篇着重介紹HasHMap中的一些常用方法: put() get() resize() 首先介紹resize()這個方法,在我看來這是HashMap中一個非常重要的方法,是用來調整HashM

原创 RocketMQ中Producer消息的發送源碼分析

上篇博客介紹過Producer的啓動,這裏涉及到相關內容就不再累贅了【RocketMQ中Producer的啓動源碼分析】 Producer發送消息,首先需要生成Message實例: public class Message imp

原创 RocketMQ中PullConsumer的啓動源碼分析

通過DefaultMQPullConsumer作爲默認實現,這裏的啓動過程和Producer很相似,但相比複雜一些 【RocketMQ中Producer的啓動源碼分析】 DefaultMQPullConsumer的構造方法: pu

原创 RocketMQ中PullConsumer的消息拉取源碼分析

在PullConsumer中,有關消息的拉取RocketMQ提供了很多API,但總的來說分爲兩種,同步消息拉取和異步消息拉取 同步消息拉取 以同步方式拉取消息都是通過DefaultMQPullConsumerImpl的pullSy

原创 RocketMQ中Broker的HA策略源碼分析

Broker的HA策略分爲兩部分 ①同步元數據 ②同步消息數據 同步元數據 在Slave啓動時,會啓動一個定時任務用來從master同步元數據 if (role == BrokerRole.SLAVE) { if (nul

原创 RocketMQ中Broker的刷盤源碼分析

上一篇博客的最後簡單提了下CommitLog的刷盤 【RocketMQ中Broker的消息存儲源碼分析】 (這篇博客和上一篇有很大的聯繫) Broker的CommitLog刷盤會啓動一個線程,不停地將緩衝區的內容寫入磁盤(Com

原创 RocketMQ中Broker的消息存儲源碼分析

Broker和前面分析過的NameServer類似,需要在Pipeline責任鏈上通過NettyServerHandler來處理消息 【RocketMQ中NameServer的啓動源碼分析】 實際上就通過前面提到的SendMess

原创 RocketMQ中Broker的啓動源碼分析(二)

接着上一篇博客 【RocketMQ中Broker的啓動源碼分析(一)】 在完成準備工作後,調用start方法: public static BrokerController start(BrokerController cont

原创 RocketMQ中NameServer的啓動源碼分析

在RocketMQ中,使用NamesrvStartup作爲啓動類 主函數作爲其啓動的入口: public static void main(String[] args) { main0(args); } main0方法: pu

原创 RocketMQ中Broker的啓動源碼分析(一)

在RocketMQ中,使用BrokerStartup作爲啓動類,相較於NameServer的啓動,Broker作爲RocketMQ的核心可複雜得多 【RocketMQ中NameServer的啓動源碼分析】 主函數作爲其啓動的入口:

原创 RocketMQ中Producer消息的發送

上篇博客介紹過Producer的啓動,這裏涉及到相關內容就不再累贅了【RocketMQ中Producer的啓動源碼分析】 Producer發送消息,首先需要生成Message實例: public class Message imp

原创 RocketMQ中Producer的啓動源碼分析

RocketMQ中通過DefaultMQProducer創建Producer DefaultMQProducer定義如下: public class DefaultMQProducer extends ClientConfig i

原创 Netty中NioEventLoopGroup的創建源碼分析

NioEventLoopGroup的無參構造: public NioEventLoopGroup() { this(0); } 調用了單參的構造: public NioEventLoopGroup(int nThreads)

原创 Netty中FastThreadLocal源碼分析

Netty中使用FastThreadLocal替代JDK中的ThreadLocal 【JAVA】ThreadLocal源碼分析,其用法和ThreadLocal 一樣,只不過從名字FastThreadLocal來看,其處理效率要比J

原创 Netty服務端的啓動源碼分析

ServerBootstrap的構造: public class ServerBootstrap extends AbstractBootstrap<ServerBootstrap, ServerChannel> { pr