如果想通過mina來實現乙個自定義協議的網路應用程式,使用者只需要編寫自定義協議編譯碼處理器和業務處理邏輯即可。由於每乙個session關聯乙個processor處理執行緒,多個session共享有限的processor執行緒池,如果handler中的業務邏輯處理比較耗時,會導致後續請求阻塞等待,嚴重降低效率,所以,一般會向acceptor的filterchain新增乙個executorfilter來緩解該問題,典型**如下:
defaultiofilterchainbuilder chain = acceptor.getfilterchain();
// 日誌
loggingfilter filter = new loggingfilter();
chain.addlast("logger", filter);
// 協議處理
chain.addlast("codec", new protocolcodecfilter(codecfactory));
// 執行緒池
chain.addlast("executor", new executorfilter(executors.newcachedthreadpool()));
當server接收到client傳送資料後的處理流程如下:
呵呵,用jude畫的序列圖,不是很規範。備忘。
Spring原始碼解析之 Aop原始碼解析(2)
spring aop 更多的是oop開發模式的乙個補充,幫助oop以更好的方式來解決對於需要解決業務功能模組之上統一管理 的功能 以一副圖來做為aop功能的說明更直觀些。對於類似系統的安全檢查,系統日誌,事務管理等相關功能,物件導向的開發方法並沒有更好的解決方法 aop引入了一些概念。更多的是spr...
Mongoose原始碼之接收連線
上次提到,mongoose通過呼叫mg start 啟動乙個master thread執行緒,用於監聽所有的client連線請求。在接到client請求後,主程序會通過呼叫accept new connection 去處理連線請求。下面是accept new connection 的實現 stati...
原始碼解析 JDK原始碼之LinkedHashMap
linkedhashmap原始碼,基於 jdk1.6.43 他繼承了hashmap,並且實現了插入和訪問的有序功能 public class linkedhashmapextends hashmapimplements map 其也有乙個entry內部類,繼承了 hashmap 的entry 內部類...