五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Java網(wǎng)絡(luò)編程(三)一文讀懂NIO

2023-06-30 22:57 作者:懶人Java屈原  | 我要投稿

什么是NIO

NIO被稱作是 New IO或者Non block IO。它是Jdk1.4開(kāi)發(fā)引入的類庫(kù)。NIO與BIO的最大不同是,BIO是面向流,而BIO是面向緩沖區(qū)buffer。Java的IO數(shù)據(jù)流向是固定的,要么讀,要么寫。但是NIO則可以同時(shí)支持讀寫。

NIO三大核心

1.Selector

前面的linux的5種IO模型?提到過(guò),NIO模型會(huì)不斷的輪詢,向操作系統(tǒng)確認(rèn)數(shù)據(jù)。Jdk中,Selector承當(dāng)了這個(gè)職責(zé)。Selector維護(hù)著一張Channel列表,然后不斷輪詢檢查channel狀態(tài)。一旦發(fā)生某個(gè)channel發(fā)生讀寫事件,就會(huì)被檢測(cè)到,進(jìn)行后續(xù)的IO操作。

2.Channel

應(yīng)用程序與底層操作系統(tǒng)之間的橋梁,應(yīng)用程序能通過(guò)channel讀取數(shù)據(jù),也能通過(guò)它向操作系統(tǒng)寫入數(shù)據(jù)。

3.Buffer

緩沖區(qū)buffer是一個(gè)對(duì)象,它包含了需要寫入或者讀出的數(shù)據(jù)。Buffer有3個(gè)重要屬性:

capacity:

存儲(chǔ)數(shù)據(jù)的最大容量,你只能最大往里面寫capacity個(gè)int、short等類型數(shù)據(jù)。滿了之后,需要通過(guò)讀取數(shù)據(jù)或者清楚數(shù)據(jù)兩種方法,才能繼續(xù)往里面寫。

position:

讀模式(Reading mode)下,代表了從這開(kāi)始讀。

寫模式(Writing mode)下,代表了從這開(kāi)始寫。

buffer.clear能將清空重新寫入,buffer的flip能將寫模式切換為讀模式

limit:

讀模式(Reading mode)下,表示你最多能讀多少條數(shù)據(jù)。在從寫模式切換到讀模式,position與limit數(shù)值相同,代表你能讀取之前寫入的所有數(shù)據(jù)。

寫模式(Writing mode)下,數(shù)值與capacity相同。

Nio的寫

1.selector輪詢監(jiān)聽(tīng)到通道寫事件

2.數(shù)據(jù)寫入到buffer緩存

3.buffer緩存數(shù)據(jù)通過(guò)channel通道發(fā)送出去

Nio的讀

1.數(shù)據(jù)通過(guò)channel接收數(shù)據(jù)到buffer

2.selector輪詢觸發(fā)

3.數(shù)據(jù)讀取到應(yīng)用程序

Nio的全模式

Java的八大基本類型,除了Boolean類型外,其他都有對(duì)應(yīng)的Buffer,至于這是為什么,就留給聰明的你來(lái)解答了。

Java網(wǎng)絡(luò)編程(三)一文讀懂NIO的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
中超| 湛江市| 灵丘县| 安溪县| 弋阳县| 察雅县| 融水| 江门市| 文登市| 云安县| 仁寿县| 合江县| 光山县| 山东省| 正定县| 上蔡县| 南康市| 东光县| 西宁市| 蕲春县| 铁岭县| 永宁县| 连州市| 海门市| 卢湾区| 桐乡市| 大城县| 琼海市| 青冈县| 当涂县| 翁牛特旗| 永登县| 霍山县| 泰来县| 昌黎县| 潮安县| 永兴县| 探索| 于田县| 永吉县| 阳西县|