成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

【源起Netty 前傳】Linux網(wǎng)絡(luò)模型小記

Null / 1257人閱讀

摘要:非阻塞模型這種也很好理解,由阻塞的死等系統(tǒng)響應(yīng)進(jìn)化成多次調(diào)用查看數(shù)據(jù)就緒狀態(tài)。復(fù)用模型,以及它的增強(qiáng)版就屬于該種模型。此時(shí)用戶進(jìn)程阻塞在事件上,數(shù)據(jù)就緒系統(tǒng)予以通知。信號(hào)驅(qū)動(dòng)模型應(yīng)用進(jìn)程建立信號(hào)處理程序時(shí),是非阻塞的。

引言

之前的兩篇文章 FastThreadLocal怎么Fast?、ScheduledThreadPoolExecutor源碼解讀 搞的我心力交瘁,且讀源碼過程中深感功力不足,遂決定“磨刀”——先達(dá)到較熟練使用netty的程度,再回過頭來繼續(xù)啃源碼!至于“磨刀石”嘛,選擇了《Netty權(quán)威指南》(第二版)……哎呦,不錯(cuò)奧!

正文

其實(shí)本篇文章更像是一篇讀書筆記,記錄了Linux網(wǎng)絡(luò)模型的相關(guān)知識(shí)。為什么要關(guān)注Linux網(wǎng)絡(luò)模型?因?yàn)閖ava的各I/O模型與之關(guān)系緊密!

書中根據(jù)UNIX網(wǎng)絡(luò)編程,作了5種I/O模型分類:

阻塞I/O模型

最簡(jiǎn)單的一種,等待直至完成的過程,不多作解釋。

非阻塞I/O模型

這種也很好理解,由阻塞I/O的死等系統(tǒng)響應(yīng)進(jìn)化成多次調(diào)用查看數(shù)據(jù)就緒狀態(tài)。

I/O復(fù)用模型

select/poll,以及它的增強(qiáng)版epoll就屬于該種模型。與非阻塞I/O模型相比,愚以為有兩點(diǎn)優(yōu)勢(shì):

不需要用戶進(jìn)程進(jìn)行掃描以確認(rèn)數(shù)據(jù)就緒狀態(tài),改為系統(tǒng)層面幫你“掃描”。此時(shí)用戶進(jìn)程阻塞在select事件上,數(shù)據(jù)就緒系統(tǒng)予以通知。

epoll 基于事件驅(qū)動(dòng)的方式代替掃描

這里多提一句,epoll把消息通知給用戶空間時(shí)避免了內(nèi)存復(fù)制(0拷貝),使用的mmap技術(shù),即內(nèi)核和用戶空間映射到同一內(nèi)存實(shí)現(xiàn)。

信號(hào)驅(qū)動(dòng)I/O模型

應(yīng)用進(jìn)程建立SIGIO信號(hào)處理程序時(shí),是非阻塞的。而數(shù)據(jù)就緒時(shí),以SIGIO信號(hào)的形式通知到用戶進(jìn)程。

異步I/O模型

特點(diǎn)是,幾乎全部交由系統(tǒng)處理,數(shù)據(jù)處理完畢后,才通知到用戶進(jìn)程。

后記

以上的描述中,是不是很多詞句都在java I/O相關(guān)的世界中聽到過?是的——阻塞I/O對(duì)應(yīng)BIO,epoll之于NIO,NIO的多路復(fù)用技術(shù)對(duì)標(biāo)I/O復(fù)用模型,以及AIO和異步I/O模型……

好了,that"s all,小記就要有小記的樣子。
最后,再次推薦《Netty權(quán)威指南》!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/68445.html

相關(guān)文章

  • 源起Netty 正傳】Netty Channel

    摘要:搞懂了這部分后,我們將明白在世界中扮演的角色進(jìn)擊的此圖展示的已經(jīng)算是優(yōu)化后的了用到了線程池。多線程將這種處理操作分隔出來,非型操作業(yè)務(wù)操作配備以線程池,進(jìn)化成多線程模型這樣的架構(gòu),系統(tǒng)瓶頸轉(zhuǎn)移至部分。 Channel定位 注意:如無(wú)特別說明,文中的Channel都指的是Netty Channel(io.netty.channel) 一周時(shí)間的Channel家族學(xué)習(xí),一度讓我懷疑人生——...

    jindong 評(píng)論0 收藏0
  • 源起Netty 外傳】ServiceLoader詳解

    摘要:答曰摸索直譯為服務(wù)加載器,最終目的是獲取的實(shí)現(xiàn)類。代碼走起首先,要有一個(gè)接口形狀接口介紹然后,要有該接口的實(shí)現(xiàn)類。期具體實(shí)現(xiàn)依靠的內(nèi)部類,感性趣的朋友可以自己看一下??偨Y(jié)重點(diǎn)在于可跨越包獲取,這一點(diǎn)筆者通過多模塊項(xiàng)目親測(cè)延時(shí)加載特性 前戲 netty源碼注釋有云: ... If a provider class has been installed in a jar file tha...

    MoAir 評(píng)論0 收藏0
  • 源起Netty 外傳】System.getPropert()詳解

    摘要:閱讀源碼時(shí),發(fā)現(xiàn)很多,理所當(dāng)然會(huì)想翻閱資料后,該技能,姿勢(shì)如下環(huán)境中的全部屬性全部屬性注意如果將本行代碼放在自定義屬性之后,會(huì)不會(huì)打出把自定義屬性也給獲取到可以結(jié)論會(huì)獲取目前環(huán)境中全部的屬性值,無(wú)論系統(tǒng)提供還是個(gè)人定義系統(tǒng)提供屬性代碼中定義 閱讀源碼時(shí),發(fā)現(xiàn)很多System.getProperty(xxx),理所當(dāng)然會(huì)想:whats fucking this? 翻閱資料后,Get該技能...

    lixiang 評(píng)論0 收藏0
  • 源起Netty 正傳】升級(jí)版卡車——ByteBuf

    摘要:之所以稱它為卡車,只因編程思想中有段比喻我們可以把它想象成一個(gè)煤礦,通道是一個(gè)包含煤層數(shù)據(jù)的礦藏,而緩沖器則是派送到礦藏中的卡車。那么升級(jí)版卡車,自然指的就是。結(jié)構(gòu)和功能之所以再次打造了升級(jí)版的緩沖器,顯然是不滿中的某些弊端。 卡車 卡車指的是java原生類ByteBuffer,這兄弟在NIO界大名鼎鼎,與Channel、Selector的鐵三角組合構(gòu)筑了NIO的核心。之所以稱它為卡車...

    Jason_Geng 評(píng)論0 收藏0
  • 源起Netty 外傳】FastThreadLocal怎么Fast?

    摘要:實(shí)現(xiàn)原理淺談幫助理解的示意圖中有一屬性,類型是的靜態(tài)內(nèi)部類。剛剛說過,是一個(gè)中的靜態(tài)內(nèi)部類,則是的內(nèi)部節(jié)點(diǎn)。這個(gè)會(huì)在線程中,作為其屬性初始是一個(gè)數(shù)組的索引,達(dá)成與類似的效果。的方法被調(diào)用時(shí),會(huì)根據(jù)記錄的槽位信息進(jìn)行大掃除。 概述 FastThreadLocal的類名本身就充滿了對(duì)ThreadLocal的挑釁,快男FastThreadLocal是怎么快的?源碼中類注釋坦白如下: /** ...

    gxyz 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<