国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

33. bio和nio

這篇具有很好參考價(jià)值的文章主要介紹了33. bio和nio。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、bio網(wǎng)絡(luò)模型

1.1 bio網(wǎng)絡(luò)模型示意圖

單個(gè)客戶端向服務(wù)器發(fā)起請(qǐng)求時(shí),請(qǐng)求順序如下:
33. bio和nio,# 9 知識(shí)點(diǎn),nio,bio

多個(gè)客戶端向一個(gè)服務(wù)器發(fā)起請(qǐng)求時(shí),請(qǐng)求順序如下:
33. bio和nio,# 9 知識(shí)點(diǎn),nio,bio

1.2 bio網(wǎng)絡(luò)模型缺點(diǎn)

1.阻塞式I/O

服務(wù)器端的線程會(huì)因?yàn)樽枞鸌/O,一直阻塞,等待客戶端的請(qǐng)求。
若客戶端一直不發(fā)起,服務(wù)端的業(yè)務(wù)線程會(huì)一直存在。

2.彈性伸縮能力差

因?yàn)橐粋€(gè)客戶端對(duì)應(yīng)一個(gè)服務(wù)端的業(yè)務(wù)線程,那么客戶端和服務(wù)端線程數(shù)是1比1的關(guān)系,再好的機(jī)器也難以承受過多的線程。

3.多線程耗費(fèi)資源

線程的創(chuàng)建銷毀、大量的線程存在服務(wù)端,服務(wù)端的cpu調(diào)度資源都會(huì)存在影響

二、NIO網(wǎng)絡(luò)模型

2.1 nio網(wǎng)絡(luò)模型示意圖

單個(gè)客戶端向服務(wù)器發(fā)起請(qǐng)求時(shí),請(qǐng)求順序如下:
33. bio和nio,# 9 知識(shí)點(diǎn),nio,bio

2.2 nio網(wǎng)絡(luò)模型的改進(jìn)

1.非阻塞式I/O

nio模型是基于非阻塞式I/O構(gòu)建出來的,服務(wù)器端提供一個(gè)單線程的select,統(tǒng)一管理所有客戶端接入的socket鏈接,并負(fù)責(zé)監(jiān)聽每個(gè)鏈接所關(guān)心的事件。

2.彈性伸縮能力強(qiáng)

因?yàn)榉?wù)端不是多個(gè)線程來處理,而是一個(gè)線程就可以處理所有請(qǐng)求,所有客戶端和服務(wù)端線程數(shù)是1比N的關(guān)系,理論上可以接入無限的請(qǐng)求。

3.單線程節(jié)省資源

減少了線程的創(chuàng)建和銷毀,以及線程上下文的切換問題。

三、NIO核心- Channel(通道)

3.1 Channel 簡(jiǎn)介

1.雙向性

信息傳輸?shù)耐ǖ溃琷dk的nio是對(duì)輸入輸出的方式的另一種抽象,類比bio中的流的概念。
不同的是流是單向傳輸,分輸入流輸出流。而通道支持雙向傳輸,一個(gè)channel既可讀又可寫。

2.非阻塞性

傳統(tǒng)流是阻塞模式,而channel可以工作在非阻塞模式下。

3.操作唯一性

操作channel的唯一方式是buffer,通過buffer操作channel實(shí)現(xiàn)數(shù)據(jù)塊的回寫

3.2 Channel 實(shí)現(xiàn)類

1.文件類 : FileChannel - 對(duì)文件進(jìn)行讀寫的流 2.UDP類 :DatagramChannel - 用于UDP的數(shù)據(jù)讀寫 3.TCP類 : ServerSocketChannel/SocketChannel 基于TCP的數(shù)據(jù)讀寫

3.3 bio的socket 和 nio的channel代碼實(shí)現(xiàn)

bio的socket代碼實(shí)現(xiàn)邏輯
33. bio和nio,# 9 知識(shí)點(diǎn),nio,bio

nio的channel代碼實(shí)現(xiàn)邏輯
33. bio和nio,# 9 知識(shí)點(diǎn),nio,bio

四、NIO核心- buffer(緩沖區(qū))

4.1 buffer簡(jiǎn)介

作用 - 讀寫channel中的數(shù)據(jù)或者將數(shù)據(jù)寫到channnel中。
本質(zhì) - 一塊內(nèi)存區(qū)域。這塊內(nèi)存能讀數(shù)據(jù),寫數(shù)據(jù),被nio封裝成了一個(gè)buffer對(duì)象,提供了一系列API。

4.2 buffer屬性

1.Capacity:容量 - 表明數(shù)組可以容納多少字節(jié),如果寫入的字節(jié)數(shù)超過最大容量,那么需要清空后,才能繼續(xù)往里面寫入數(shù)據(jù)。
2.Position: 位置 - position表示當(dāng)前位置,初始化為0,當(dāng)一個(gè)byte寫入后,position會(huì)移動(dòng)到下一個(gè)可插入的數(shù)據(jù)單元。position最大可為容量減1
3.Limit:上限(寫模式下) -limit表示最多能往buffer里寫入多少數(shù)據(jù),此模式下limit等于Capacity。
4.Limit:上限(讀模式下) -limit表示最多能從buffer里讀多少數(shù)據(jù),這時(shí)limit會(huì)被設(shè)置成Position值
5.Mark:標(biāo)記 - 表示一個(gè)特定的position位置,可以通過調(diào)用buffer的reset方法恢復(fù)到這個(gè)position位置。

4.3 buffer的API

1.初始化
33. bio和nio,# 9 知識(shí)點(diǎn),nio,bio

2.寫數(shù)據(jù)
33. bio和nio,# 9 知識(shí)點(diǎn),nio,bio

3.寫模式切換為讀模式
33. bio和nio,# 9 知識(shí)點(diǎn),nio,bio

4.讀取一個(gè)字節(jié)
33. bio和nio,# 9 知識(shí)點(diǎn),nio,bio

5.設(shè)置mark標(biāo)記
33. bio和nio,# 9 知識(shí)點(diǎn),nio,bio

6.回到標(biāo)志位
33. bio和nio,# 9 知識(shí)點(diǎn),nio,bio

7.重置屬性
33. bio和nio,# 9 知識(shí)點(diǎn),nio,bio

五、NIO核心- Select(選擇器)

5.1 簡(jiǎn)介

1.作用 - I/O就緒選擇
2.地位 - NIO網(wǎng)絡(luò)編程的基礎(chǔ)
3.定義 - select是java的nio中能夠檢測(cè)1到多個(gè)nio通道,并能夠知曉通道是否為諸如讀寫事件做好準(zhǔn)備的組件,通過他,一個(gè)單獨(dú)的線程就可以管理多個(gè)channel,從而管理多個(gè)鏈接。

5.2 核心API

33. bio和nio,# 9 知識(shí)點(diǎn),nio,bio

5.3 SelectionKey簡(jiǎn)介

1.四種就緒狀態(tài)常量
    connect 連接就緒
    accept  接收就緒
    read    讀就緒
    write   寫就緒

六、NIO編程實(shí)現(xiàn)步驟

33. bio和nio,# 9 知識(shí)點(diǎn),nio,bio
33. bio和nio,# 9 知識(shí)點(diǎn),nio,bio
33. bio和nio,# 9 知識(shí)點(diǎn),nio,bio

七、總結(jié)

33. bio和nio,# 9 知識(shí)點(diǎn),nio,bio
33. bio和nio,# 9 知識(shí)點(diǎn),nio,bio
33. bio和nio,# 9 知識(shí)點(diǎn),nio,bio
33. bio和nio,# 9 知識(shí)點(diǎn),nio,bio
33. bio和nio,# 9 知識(shí)點(diǎn),nio,bio文章來源地址http://www.zghlxwxcb.cn/news/detail-583926.html

到了這里,關(guān)于33. bio和nio的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 柔性數(shù)組知識(shí)點(diǎn)

    什么是柔性數(shù)組?柔性數(shù)組其實(shí)也是動(dòng)態(tài)內(nèi)存管理部分的內(nèi)容。這節(jié)主要來復(fù)習(xí)柔性數(shù)組的知識(shí)點(diǎn)。? 當(dāng)結(jié)構(gòu)體的最后一個(gè)成員為數(shù)組, 且這個(gè)數(shù)組的大小未確定時(shí), 我們就稱它是柔性數(shù)組。 如: struct stu { ? ? ? ? char name[20]; ? ? ? ? int age; ? ? ? ? char adress[]; } 這里的

    2024年02月22日
    瀏覽(25)
  • SpringMVC相關(guān)知識(shí)點(diǎn)

    傳統(tǒng)開發(fā)中的控制層: 接收請(qǐng)求參數(shù) request.getParameter 封裝實(shí)體 new 實(shí)體類調(diào)用其set方法 訪問業(yè)務(wù)層 接收訪問結(jié)果 指派頁(yè)面 通過request和response對(duì)象進(jìn)行頁(yè)面跳轉(zhuǎn) 將共有行為進(jìn)行抽取成DispatcherServlet【SpringMVC內(nèi)部集成】,通過Spring-MVC.xml配置文件去配置。 Spring: 獲取請(qǐng)求參數(shù)

    2024年02月16日
    瀏覽(18)
  • Hadoop相關(guān)知識(shí)點(diǎn)

    Hadoop相關(guān)知識(shí)點(diǎn)

    開啟防火墻 sudo ufw enable 關(guān)閉防火墻 sudo ufw disable 查看防火墻狀態(tài) sudo ufw status 修改主機(jī)名 sudo vi /etc/hostname 修改映射 sudo vi /etc/hosts (考題) 建立文件夾 mkdir 文件夾名字 刪除文件夾 rm -rf 遞歸刪除文件夾向下穿透,其下所有文件、文件夾都會(huì)被刪除 rm -f 強(qiáng)制刪除文件 rm -r 遞歸

    2024年02月06日
    瀏覽(21)
  • 多線程知識(shí)點(diǎn)

    多線程知識(shí)點(diǎn)

    例如:一個(gè)短視頻,一個(gè)線程復(fù)制管理視頻,一個(gè)線程負(fù)責(zé)管理聲音,一個(gè)線程負(fù)責(zé)管理彈幕 進(jìn)程:Process,程序一旦開始運(yùn)行就是是一個(gè)進(jìn)程 線程:Thread,一個(gè)程序運(yùn)行后,里面就包含了多個(gè)線程 真正的多線程是指有多個(gè)cpu,即多核。如果是模擬的多線程,即只有一個(gè)cpu,在

    2024年02月11日
    瀏覽(88)
  • 網(wǎng)絡(luò)知識(shí)點(diǎn)之-路由

    網(wǎng)絡(luò)知識(shí)點(diǎn)之-路由

    本文章收錄至《網(wǎng)絡(luò)》專欄,點(diǎn)擊右上角專欄圖標(biāo)可訪問本專欄! 路由(routing)是指分組從源到目的地時(shí),決定端到端路徑的網(wǎng)絡(luò)范圍的進(jìn)程。路由工作在OSI參考模型第三層——網(wǎng)絡(luò)層的數(shù)據(jù)包轉(zhuǎn)發(fā)設(shè)備。路由器通過轉(zhuǎn)發(fā)數(shù)據(jù)包來實(shí)現(xiàn)網(wǎng)絡(luò)互連。雖然路由器可以支持多種協(xié)

    2024年02月15日
    瀏覽(22)
  • 一些知識(shí)點(diǎn)小細(xì)節(jié)

    當(dāng)遇到的問題有關(guān)逆序輸出,可以轉(zhuǎn)換一下思想,就是使用for循環(huán)的時(shí)候,i的初始化是從數(shù)組或者是字符串的最后一個(gè),然后注意設(shè)置循環(huán)結(jié)束的條件,最重要的是不要忘記i--;而不是I++; ?注意:當(dāng)要逆序輸出的是字符串類型,可以使用StringBuilder類,因?yàn)镾tringBuilder類有 r

    2024年04月13日
    瀏覽(25)
  • OSPF知識(shí)點(diǎn)

    OSPF知識(shí)點(diǎn)

    一、距離矢量路由協(xié)議的工作原理 運(yùn)行距離矢量路由協(xié)議的路由器周期性的泛洪自己的路由表,每臺(tái)路由器都從相鄰的路由器學(xué)習(xí)到路由,并且將路由加載進(jìn)自己的路由表中,而它們并不清楚網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),只是簡(jiǎn)單地知道到達(dá)某個(gè)目標(biāo)網(wǎng)段應(yīng)該從哪里走、距離走多遠(yuǎn)。

    2023年04月08日
    瀏覽(22)
  • JAVA知識(shí)點(diǎn)梳理

    boo=false; //每一輪排序都會(huì)將最大的一個(gè)排到最后 所以-i 2.第一次不同如果是數(shù)值,返回長(zhǎng)度差 第一次不同如果是字符,返回兩個(gè)字符的Ascrll碼的差值

    2024年02月12日
    瀏覽(26)
  • DAC相關(guān)知識(shí)點(diǎn)

    1.回放數(shù)據(jù)64bit的數(shù)據(jù)來源有兩個(gè)地方: A——ROM波形數(shù)據(jù)表(數(shù)據(jù)來源可由dds產(chǎn)生或者matlab產(chǎn)生,本實(shí)際項(xiàng)目選擇由dds產(chǎn)生的數(shù)據(jù):通過寫地址出來相應(yīng)頻率的波形)。 B——預(yù)留的接口給客戶用來回訪他們的I/Q數(shù)據(jù) (64bit數(shù)據(jù)一般是4組16bit的IQ拼接的{i0,q0,i1,q1})。 2.6

    2024年02月12日
    瀏覽(17)
  • Python函數(shù)知識(shí)點(diǎn)

    ? ? ?函數(shù)是指一段可以直接被另一段程序或代碼引用的程序或代碼,也叫做子程序、方法?,F(xiàn)階段可以理解成函數(shù)是帶名字的代碼塊。 函數(shù)需要先定義再使用! ? ? 舉個(gè)例子來說,想要判斷一個(gè)三角形是不是直角三角形,需要用到勾股定理,只有先明確的定義出勾股定理是

    2023年04月09日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包