深入理解NIO三大核心

2021-10-06 17:32:47 字數 2658 閱讀 4271

limit :指定剩餘資料容量/剩餘可儲存資料空間

capacity:可以儲存在緩衝區的最大資料容量

public

class

bufferplay

output

("呼叫buffer.get()"

, buffer)

;// 復位

buffer.

clear()

;output

("呼叫buffer.clear()"

, buffer)

;// 關閉管道

channel.

close()

;}private

static

void

output

(string string, bytebuffer buffer)

}// 執行結果

初始化 :

capacity:

10, position:

0, limit:

10呼叫channel.

read()

: capacity:

10, position:

8, limit:

10呼叫buffer.

flip()

: capacity:

10, position:

0, limit:

8呼叫buffer.

get():

capacity:

10, position:

8, limit:

8呼叫buffer.

// 建立子緩衝區 設定字緩衝區的位置 為 原緩衝區位置的 3-6 容量為4

buffer.

position(3

);buffer.

limit(7

);bytebuffer slice = buffer.

slice()

;// 改變子緩衝區的內容

for(

int i=

0; i

capacity()

;++i)

// 重新設定 position 和 limit 的位置,方便讀取驗證資料

buffer.

position(0

);buffer.

limit

(buffer.

capacity()

);while

(buffer.

remaining()

>0)

}}

//  建立乙個緩衝區

bytebuffer buffer = bytebuffer.

allocate(10

);// 建立乙個唯讀緩衝區-從原有緩衝區基礎上覆制

bytebuffer readonly = buffer.

asreadonlybuffer()

;

bytebuffer buffer = bytebuffer.

allocatedirect()

;

public

class

}

引用自咕泡學院tom老師的課堂筆記

從  inputstream 中獲取 channel

建立buffer

將資料通過channle 讀/寫 到buffer

深入理解NIO核心元件

io input output 輸入 輸出 本地磁碟讀寫是io 網路使用tcp udp協議傳輸,也是io 以網路傳輸為例 客戶端向服務端傳送乙個http請求 服務端給客戶端開啟乙個執行緒,並且等待資料讀寫 此時客戶端因網路原因或其他因素不進行讀寫,那麼服務端執行緒將會持續等待。請求數增多後執行緒數也...

深入理解php核心

第二章 使用者 的執行 第三節 zend引擎與指令碼執行 第四節 小結 第三章 變數及資料型別 第二節 常量 第三節 預定義變數 第四節 靜態變數 第五節 型別提示的實現 第六節 變數的生命週期 第七節 資料型別轉換 第八節 小結 第四章 函式的實現 第二節 函式的定義,引數及返回值 第三節 函式的...

深入理解php核心

第二章 使用者 的執行 第三節 zend引擎與指令碼執行 第四節 小結 第三章 變數及資料型別 第二節 常量 第三節 預定義變數 第四節 靜態變數 第五節 型別提示的實現 第六節 變數的生命週期 第七節 資料型別轉換 第八節 小結 第四章 函式的實現 第二節 函式的定義,引數及返回值 第三節 函式的...