原创 三、netty基本入門

作爲netty的第一個應用程序,入門就好,明白幾個接口的含義即可。 開發工具: IntelliJ IDEA 2016.2.2(64) 系統環境: win 10 服務端: package nettyServer; import io.n

原创 八、分隔符和定長解碼器的應用(2)

下面主要是使用FixedLengthFrameDecoder應用開發 FixedLengthFrameDecoder是固定長度解碼器,它能夠按照指定的長度對消息進行自動解碼,我們不需要去考慮TCP的粘包和拆包問題。同樣上代碼實例: 服

原创 四、TCP粘包與拆包

TCP是個“流”協議,所謂流,就是沒有界限的一串數據。TCP底層並不瞭解上層業務數據的具體含義,它會根據TCP緩衝區的實際情況進行包的拆分,所以在業務上認爲,一個完整的包可能會被TCP拆分成多個包進行發送,也有可能把多個小的包封裝成一個大

原创 Java中Arrays.sort排序源碼分析

本篇以JDK1.7版本來說明: 首先說明:Arrays.sort()方法是根據傳出參數的長度的大小來判斷用哪種排序方法。 上一波源碼: public static void sort(int[] a) { DualPivo

原创 4、hash數據類型操作

一、概述: 我們可以將Redis中的Hashes類型看成具有String Key和String Value的map容器。所以該類型非常適合於存儲值對象的信息。如Username、Password和Age等。如果Hash中包含很少的字段,那

原创 九、編解碼技術

一、Java序列化 基於Java提供的對象輸入和輸出流(ObjectInputStream和ObjectOutputStream),可以把Java對象作爲可存儲的字節數組寫入文件,也可以傳輸到網絡中。對於我們開發人員來說,基於

原创 一、BIO、NIO、AIO通信機制理解

一、BIO的理解 首先我們通過通信模型圖來熟悉下BIO的服務端通信模型:採用BIO通信模型的服務端,通常由一個獨立的Acceptor線程負責監聽客戶端的連接,它接收到客戶端的連接請求之後爲每個客戶端創建一個新的線程進行鏈路處理,處理完成之

原创 6、key的通用操作

一、概述: 在該系列的前幾篇博客中,主要講述的是與Redis數據類型相關的命令,如String、List、Set、Hashes和Sorted-Set。這些命令都具有一個共同點,即所有的操作都是針對與Key關聯的Value的。而該篇博客將主

原创 5、Set數據類型

一、概述: 在Redis中,我們可以將Set類型看作爲沒有排序的字符集合,和List類型一樣,我們也可以在該類型的數據值上執行添加、刪除或判斷某一元素是否存在等操作。需要說明的是,這些操作的時間複雜度爲O(1),即常量時間內完成次操作。S