原创 享元模式

享元模式UML圖 一句話概括享元模式:爲了節省內存空間,將對象分爲不可變的內部狀態對象和可變的外部狀態對象;每次在使用的時候,如果內部狀態對象已經存在則複用,否則新建保存。 享元工廠負責存儲享元對象的Map。 點贊

原创 Netty學習05-用Netty5寫一個簡單的服務端和客戶端

前面文章講了如何通過Netty3寫一個簡單的例子,但是Netty4和Netty5同Netty3有很大的不同,這篇文章簡單介紹下如何通過Netty5寫一個簡單的服務端和客戶端例子。 服務端 1. 初始化一個NIO輔助服務類

原创 jdk動態代理簡析

本文是根據所學對jdk動態代理做一個簡單的源碼分析,更深層次的源碼可參考其他博主的文章。 先來一個簡單的動態代理的例子。 //接口 public interface IBank { /** * 查詢賬戶信息

原创 觀察者模式

點贊 收藏 分享 文章舉報 jiang_zf 發佈了57 篇原創文章 · 獲贊 21 · 訪問量 7萬+ 私信 關注

原创 netty學習03-Netty客戶端和服務端結合

在netty學習02-Netty初步學習-HelloNetty中已經學習瞭如何搭建netty服務端,下面介紹下如何搭建netty客戶端。 netty客戶端搭建的流程和服務端類似,很多地方都是把Server緩衝Client即可。 1.創建客

原创 netty學習02-Netty初步學習-HelloNetty

創建Netty服務端的幾個步驟: 1.創建服務類 ServerBootstrap bootstrap=new ServerBootstrap(); 2.創建監聽端口線程和數據讀寫線程 ExecutorService boss= Exe

原创 netty學習04-編寫一個簡單NIO系統

如果要提高NIO的工作效率可以通過兩個方面入手: 1.一個系統註冊多個selector 2.一個selector可以註冊多個ServerSocketChannel 業務代碼的實現流程如圖所示,詳細解釋和代碼可查看附件: 點贊

原创 狀態模式

狀態模式UML類圖: 狀態模式就是有一個上下文,然後上下文通過處理一些通用的邏輯之後,對於不同的狀態的相關邏輯交給相關的實現類去實現,並且內部可以實現狀態轉換。遵循了單一職責原則和開放封閉原則。 狀態模式和策略模式類圖基本差不多,區別就

原创 虛擬機nat模式網絡配置

一、vm中虛擬網絡編輯器中需要確認以及設置的有 1、子網編碼:保證和網關在同一個網段(紅色部分爲網段)且不與網關ip重複,我設置的192.168.0.0 2、子網掩碼:一般是固定的255.255.255.0 3、網關:自己隨便設置的一個(

原创 Netty學習08-netty消息在管道中流轉分析

我在前面的文章中寫到,給消息添加各種處理事件,但是這些處理事件是如何關聯起來,做到都能夠執行,而且會先執行上行的處理方法,然後處理下行的處理方法的。 本文基於netty-3.10.5.Final源碼做一個簡單的分析。 前面《netty學習

原创 Netty學習09-粘包和分包及FrameDecoder源碼解析

粘包出現的原因:服務端與客戶端沒有約定好要使用的數據結構。Socket Client實際是將數據包發送到一個緩存buffer中,通過buffer刷到數據鏈路層。因服務端接收數據包時,不能斷定數據包1何時結束,就有可能出現數據包2的部分數據

原创 Netty學習07-protobuf序列化學習

Protobuf是一個靈活的、高效的用於序列化數據的協議。相比較XML和JSON格式,protobuf更小、更快、更便捷。Protobuf是跨語言的,並且自帶了一個編譯器(protoc),只需要用它進行編譯,可以編譯成Java、pytho

原创 簡單工廠模式與工廠方法模式和抽象工廠模式

1. 簡單工廠模式 2. 工廠方法模式 3. 抽象工廠模式   概括三種模式: 簡單工廠模式:去除了與具體產品的依賴。但是當需求變動的時候,需要對原有的類進行修改,違背了開放封閉原則。 工廠方法模式:工廠方法克服了簡單工廠違背的開放

原创 Netty學習06-用Netty3和Netty5分別寫一個心跳處理實例

心跳機制的意義: TCP空閒的時候是不會發送任何數據包。也就是說,當一個TCP的socket,客戶端與服務端誰也不發送數據,會一直保持着連接。這其中如果有一方異常掉線(例如死機、路由被破壞、防火牆切斷連接等),另一端如果沒有發送數據,永遠

原创 幾種裝配bean註解的區別

@Autowired:該註解可以對類成員變量,方法和構造方法進行標註,完成自動裝配的工作,通過使用@Autowired 來消除setter和getting方法。默認按照bean的類型進行註解;如果想按照名稱來轉配注入,則需要結合@Qual