原创 享元模式
享元模式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