原创 ReentrantLock公平鎖的獲取和釋放源碼學習

ReentrantLock公平鎖的測試代碼如下: public static void main(String[] args) { ReentrantLock lock = new ReentrantLoc

原创 netty 服務端的啓動過程

服務端的啓動過程 ServerBootstrap和Bootstrap的類圖如下所示: 可以看到ServerBootstrap和Bootstrap都是繼承自抽象類AbstractBootstrap。因爲 ServerBootstr

原创 netty AbstractReferenceCountedByteBuf類

AbstractReferenceCountedByteBuf 作用 AbstractReferenceCountedByteBuf類提供了引用計數的功能,其所有的子類都可以使用該功能防止內存泄漏。 屬性 REFCNT_FIELD

原创 netty創建並啓動新線程流程分析

本文主要分享服務端ServerSocketChannel所綁定的NioEventLoop的線程的創建過程 在服務端啓動流程中當執行到註冊操作時,會判斷當前線程是否是ServerSocketChannel所綁定的NioEventLo

原创 netty NioEventLoop中run()方法執行流程分析

NioEventLoop的run方法的執行過程 在創建線程對象的任務中調用了SingleThreadEventExecutor.this#run()方法,使NioEventLoop開始運行,開始處理任務。 NioEventLoop

原创 netty服務端新連接接入的流程分析

由前面的分析可知NioEventLoop的run()方法是一個無限循環,NioEventLoop會不斷的調用Selector的select(timeout)方法查詢是否有新的IO事件,所以當一個客戶端連接進入的時候會被Boss線程

原创 netty UnpooledHeapByteBuf類

UnpooledHeapByteBuf類 UnpooledHeapByteBuf類的類圖如下所示,UnpooledHeapByteBuf繼承自AbstractReferenceCountedByteBuf類,UnpooledHea

原创 java實現一個本地緩存

緩存接口定義: import java.util.Iterator; /** * @author lijiaxing * @Title: GatewayCache * @ProjectName gateway * @da

原创 netty AbstractByteBuf類

ByteBuf和ByteBuffer的關係 Netty的ByteBuf及其子類可以看做是對JDK提供的ByteBuffer的一種擴展,JDK提供的ByteBuffer類有如下缺點: 長度固定,ByteBuffer類一旦被創建則它

原创 netty NioEventLoopGroup的類圖分析

NioEventLoopGroup的類圖如下: 各接口功能說明 Executor接口:任務執行器 ExecutorService接口:提供了異步執行任務能力的執行器 ScheduledExecutorService接口:提供了執

原创 (搬運)Mybatis中傳參包There is no getter for property named 'XXX' in 'class java.lang.String'

原blog地址 http://blog.csdn.net/woshixuye/article/details/8820387 一、發現問題 select num,name,phone from student AND

原创 在git上拉取代碼之後如何在idea右下方顯示當前操作分支

可以看到已經可以顯示了,當前分支是開發分支dev

原创 tcp的粘包和拆包

什麼是tcp粘包和拆包 因爲tcp協議是基於流的傳輸層協議,他會根據tcp緩衝區的實際情況對數據包進行拆分或合併,所以對於上層應用來說,會發生一個大的數據包被tcp拆分成多個小的數據包或多個小的數據包被tcp合併成一個大的數據包的

原创 HashMap源碼學習

HashMap的成員屬性 //數組的默認初始化容量 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; //哈希表的最大容量 static final int MAXIMUM_C

原创 ReentrantLock的await/signal機制源碼學習

測試代碼如下: public class ConditionTest { static ReentrantLock lock = new ReentrantLock(); //創建鎖對象 static C