欧美1区2区3区激情无套,两个女人互添下身视频在线观看,久久av无码精品人妻系列,久久精品噜噜噜成人,末发育娇小性色xxxx

【面試官】那Java NIO為什么速度快?

  • 面試官:了解過NIO嗎?
  • 面試官:那NIO為什么速度快?
  • 面試官:還有嗎?
  • 面試官:你剛剛說輸入/輸出流是處理字節(jié)?字符流不是處理字符嗎
  • 面試官:你具體介紹下Buffer
  • 面試官:Channel呢?
  • 面試官:知道NIO零拷貝嗎?

大家好,我是南哥。

一個Java學(xué)習(xí)與進階的領(lǐng)路人,跟著南哥我們一起Java成長。

文章目錄

  1. Java NIO
    1. 通道和緩沖器
    2. 非阻塞IO模型
    3. 字符流處理字符?
  2. Channel和Buffer使用
    1. Buffer
    2. Channel
  3. NIO零拷貝

1. Java NIO

面試官:了解過NIO嗎?

了解的面試官。NIO的出現(xiàn)在于提高IO的速度,它相比傳統(tǒng)的輸入/輸出流速度更快。

NIO通過管道Channel和緩沖器Buffer來處理數(shù)據(jù),可以把管道當(dāng)成一個礦藏,緩沖器就是礦藏里的卡車。

程序通過管道里的緩沖器進行數(shù)據(jù)交互,而不直接處理數(shù)據(jù)。程序要么從緩沖器獲取數(shù)據(jù),要么輸入數(shù)據(jù)到緩沖器。

1.1 通道和緩沖器

面試官:那NIO為什么速度快?

是這樣的,NIO提供了通道和緩沖器這兩個核心對象。

(1)管道Channel

與傳統(tǒng)的IO流只能只讀或只寫的單向流不同,NIO通道是雙向的,也就是說讀寫操作可以同時進行,使得數(shù)據(jù)的處理效率也更高。

(2)緩沖器Buffer

傳統(tǒng)的輸入/輸出流一次只處理一個字節(jié),而每一次字節(jié)讀取都是一次系統(tǒng)調(diào)用,涉及到用戶空間和內(nèi)核空間之間的上下文切換,通常來說效率不高。

NIO采用內(nèi)存映射文件方式來處理輸入/輸出,Channel通過map()方法把一塊數(shù)據(jù)映射到內(nèi)存中。程序通過Buffer進行數(shù)據(jù)交互,減少了與原始數(shù)據(jù)源的直接訪問。NIO面向塊的處理方式使得效率更高。

1.2 非阻塞IO模型

面試官:還有嗎?

有的。

傳統(tǒng)的輸入/輸出流是同步阻塞IO模型,如果數(shù)據(jù)源沒有數(shù)據(jù)了,此時程序?qū)⑦M行阻塞。

NIO是I/O多路復(fù)用模型,線程可以詢問通道有沒可用的數(shù)據(jù),而不需要在沒有數(shù)據(jù)時阻塞掉線程。

1.3 字符流處理字符?

面試官:你剛剛說輸入/輸出流是處理字節(jié)?字符流不是處理字符嗎?

不是的。所有數(shù)據(jù)包括文本數(shù)據(jù)最終都是以字節(jié)形式存儲的,因為計算機底層只能理解二進制數(shù)據(jù)。

字符最終也是要轉(zhuǎn)換成字節(jié)形式,之所以可以在文本文件看到字符,是因為系統(tǒng)將底層的二進制序列轉(zhuǎn)換成了字符。

2. Channel和Buffer使用

2.1 Buffer

面試官:你具體介紹下Buffer?

好的,Buffer里有3個關(guān)鍵變量。

  1. capcity:表示緩沖器Buffer的最大數(shù)據(jù)容量。
  2. position:用來指出下一個可以讀出/寫入的索引位置,也就是記錄指針的

剩余60%內(nèi)容,訂閱專欄后可繼續(xù)查看/也可單篇購買

Java面試突擊 文章被收錄于專欄

??以面試官面試的形式,涵蓋了你怒懟大廠面試官、拿下大廠面試所需掌握的核心知識、面試重點! ??相信一定對你順利通關(guān)面試、拿到理想Offer有所幫助! ??花費大量精力去制作本專欄,創(chuàng)作不易,各位的支持就是我創(chuàng)作的最大動力!

全部評論
愛了大佬 給你發(fā)發(fā)
1 回復(fù) 分享
發(fā)布于 2024-05-29 10:51 浙江
大佬太用心了
1 回復(fù) 分享
發(fā)布于 2024-04-25 13:36 浙江
666
點贊 回復(fù) 分享
發(fā)布于 2024-04-20 21:47 廣東

相關(guān)推薦

評論
16
89
分享

創(chuàng)作者周榜

更多
??途W(wǎng)
牛客企業(yè)服務(wù)