欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

如何解析Mina代碼

小編給大家分享一下如何解析Mina代碼,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),九臺企業(yè)網(wǎng)站建設(shè),九臺品牌網(wǎng)站建設(shè),網(wǎng)站定制,九臺網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,九臺網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

首先,Mina是什么?能幫我們做什么?我研究一個(gè)新技術(shù)的時(shí)候,首先問的就是這樣的問題。我個(gè)人的理解就是Mina是一個(gè)關(guān)注于通訊層的框架,任何需要底層通訊的應(yīng)用,都可以使用它。更詳細(xì)準(zhǔn)確的介紹,請看官方網(wǎng)站http://mina.apache.org/

Mina的優(yōu)勢:

1. 用NIO實(shí)現(xiàn),無需太多線程??梢蕴幚淼牟l(fā)量更大。

2. 對于應(yīng)用層來說,編程更方便。

好了廢話少說,先看個(gè)Demo吧

public static void main(String[] args) throws IOException {      // 創(chuàng)建Acceptor       IoAcceptor acceptor = new NioSocketAcceptor();       // 注冊filter      acceptor.getFilterChain().addLast( "logger", new LoggingFilter() );     acceptor.getFilterChain().addLast( "codec", new ProtocolCodecFilter( new TextLineCodecFactory( Charset.forName( "UTF-8" ))));       // 注冊你的業(yè)務(wù)處理類       acceptor.setHandler( new TimeServerHandler() );       // 配置參數(shù)       acceptor.getSessionConfig().setReadBufferSize( 2048 );      acceptor.getSessionConfig().setIdleTime( IdleStatus.BOTH_IDLE, 10 );       // 讓Acceptor在綁定的地址偵聽       acceptor.bind( new InetSocketAddress(PORT) );  }

IoHandler

public interface IoHandler {        void sessionCreated(IoSession session) throws Exception;        void sessionOpened(IoSession session) throws Exception;        void sessionClosed(IoSession session) throws Exception;        void sessionIdle(IoSession session, IdleStatus status) throws Exception;        void exceptionCaught(IoSession session, Throwable cause) throws Exception;        void messageReceived(IoSession session, Object message) throws Exception;        void messageSent(IoSession session, Object message) throws Exception;  }

首先new一個(gè)Acceptor,可以看出,Acceptor是我們要操作的服務(wù)器對象。然后,向Acceptor里注冊了兩個(gè)filter。filter的概念類似于web服務(wù)器里的filter。filter處于你的業(yè)務(wù)端代碼和具體的發(fā)送數(shù)據(jù)代碼之間,它負(fù)責(zé)過濾或者說處理傳遞過來的信息。業(yè)務(wù)處理代碼,寫在Handler里。

代碼結(jié)構(gòu)相當(dāng)?shù)那逦?。我們需要填寫的業(yè)務(wù)代碼就是 Handler 和 Filter了。它們倆很相似,但是在概念上是有區(qū)別的。filter事實(shí)上主要是處理底層的通信字節(jié)流,通信協(xié)議等,一般跟業(yè)務(wù)邏輯沒什么關(guān)系。Handler是專門暴露給應(yīng)用開發(fā)者,用來填寫業(yè)務(wù)處理代碼的。

看看下面的圖便知道了

如何解析Mina代碼

Mina暴露給開發(fā)者的接口主要是IoAcceptor(服務(wù)器端)或者IoConnector(客戶端)。Mina內(nèi)部具體是怎么實(shí)現(xiàn)偵聽,處理連接的呢?我們先來介紹一下Mina的方法哲學(xué)或者說術(shù)語吧。

IoSession

IoSession: IoSession是一個(gè)客戶連接的抽象,整個(gè)通訊框架可以說,都是圍繞著IoSession工作的。

IoAcceptor: 初始化服務(wù)器,用的就是它

IoProcessor: 負(fù)責(zé)處理IoSession,包括創(chuàng)建,移除,讀寫事件的處理

IoFilter: 過濾消息或者說消息處理(通訊層的)

IoHandler: 消息處理(應(yīng)用邏輯層的)

通訊層的核心類,事實(shí)上是IoAcceptor,IoProcessor,IoSession。在這里我們只分析IoAcceptor模式,也就是服務(wù)器端的代碼??蛻舳说拇a與此類似,大家可以自己研究。

首先,調(diào)用IoAcceptor.bind()方法時(shí),服務(wù)器已經(jīng)初始化完畢,這時(shí)服務(wù)器就在指定的端口上開始偵聽客戶端發(fā)來的連接請求。

當(dāng)IoAcceptor偵聽到客戶端請求時(shí),它就會(huì)把這個(gè)請求交給IoProcessor進(jìn)行處理。然后IoAcceptor回去繼續(xù)偵聽。顯然,IoAcceptor的工作流程就是 偵聽 --> 傳遞請求 --> 繼續(xù)偵聽。

IoProcessor得任務(wù)則是處理這些連接的IO事件。顯然IoProcessor不可能和IoAcceptor在同一個(gè)線程里運(yùn)行。他們兩個(gè)分工不同,可以并發(fā)執(zhí)行。Mina內(nèi)部事實(shí)上維護(hù)了一個(gè)IoProcessor對象池,對象池的默認(rèn)大小是CPU個(gè)數(shù)+1.也就是說,如果你的機(jī)器是4核的,可能就有5個(gè)IoProcessor(可以理解為線程)同時(shí)工作。

看看下面的示意圖吧,一圖勝千言:

如何解析Mina代碼

在這里主要分析IoAcceptor 和 IoProcessor。

IoAcceptor比較簡單,它的核心代碼都在AbstractPollingAccetor里,輪詢代碼在它的內(nèi)部類Accetpor里的run方法里。請看下面的UML圖:

如何解析Mina代碼

IoProcessor比較復(fù)雜,它的主要代碼是在AbstractPollingProcessor里的,輪詢代碼在它的內(nèi)部類Processor里的run方法實(shí)現(xiàn)。值得注意的是,IoAcceptor所持有的IoProcessor引用,事實(shí)上是一個(gè)對象池。對象池負(fù)責(zé)調(diào)度某個(gè)Processor來處理請求。下面是UML類圖

如何解析Mina代碼

以上是“如何解析Mina代碼”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)站名稱:如何解析Mina代碼
文章來源:http://aaarwkj.com/article18/gpgpdp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站App開發(fā)、面包屑導(dǎo)航、虛擬主機(jī)、外貿(mào)建站、網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營
亚洲乱码一区二区免费版| 日韩a国产v亚洲欧美精品| 久久久久久国产精彩视频| 亚洲成人免费在线一区| 亚洲av区一区二区三| 久久精品国产亚洲av蜜点| 蜜臀国产午夜在线视频| 久久热福利视频就在这里| 麻豆映画传媒在线播放| 成年人免费在线观看毛片| 伊人亚洲中文一区二区| 人妻乱人伦中文字幕在线| 开心久久婷婷综合中文字幕| 色欧美在线视频观看日韩| 91嫩草中文字幕在线| 国产国语久久91老女人| 精品毛片在线播放网站不卡| 日本一区二区欧美亚洲国产| 亚洲中少妇久久中文字幕| 亚洲av污精品一区二区三区| 中文字幕欧美日韩人妻| 欧美口爆吞精在线播放| 国内熟妇人妻色在线三级| 欧美国产日韩激情在线| 日韩一区二区高清看片| 日韩成年人高清精品不卡一区二区 | 日本在线免费观看91| 黄色免费大片在线播放| 久久亚洲欧洲日本韩国欧美| 美女诱惑丝袜国产国产av丝袜| 在线看日本一区二区| 亚洲日本高清一二三区| 亚洲国产日韩一区二区在线| 日本a亚洲中文字幕永远| 午夜久久精品国产亚洲av| 亚洲欧美日韩国产一区| 国产亚洲精品视频在线网| 一本综合九九国产二区| 久久九九精品日本人妻视频| 内地精品露脸自拍视频| 美国一级二级三级黄片|