日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

【Java 网络编程】NIO Buffer 简介 ( 概念 | 数据传输 | 标记 | 位置 | 限制 | 容量 | 标记 | 重置 | 清除 | 翻转 | 重绕 | 链式操作 )

發(fā)布時(shí)間:2025/6/17 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Java 网络编程】NIO Buffer 简介 ( 概念 | 数据传输 | 标记 | 位置 | 限制 | 容量 | 标记 | 重置 | 清除 | 翻转 | 重绕 | 链式操作 ) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

        • I. Buffer 簡(jiǎn)介
        • II. Buffer 屬性
        • III. Buffer 數(shù)據(jù)讀寫
        • IV. Buffer 標(biāo)記 mark() 和重置 reset()
        • V. Buffer 清除 翻轉(zhuǎn) 重繞
        • VI. Buffer 緩沖區(qū)只讀屬性
        • VII. Buffer 的鏈?zhǔn)秸{(diào)用



I. Buffer 簡(jiǎn)介



Buffer 是在 NIO 中定義的抽象類 , 其針對(duì)七種基本數(shù)據(jù)類型都有對(duì)應(yīng)的實(shí)現(xiàn)類 , 如 ByteBuffer , CharBuffer , DoubleBuffer , FloatBuffer , IntBuffer , LongBuffer , ShortBuffer ; 其是用于緩存基本數(shù)據(jù)類型的容器 ;

Buffer 作用 : 在內(nèi)存中創(chuàng)建指定大小的空間 , 對(duì)一些基本類型數(shù)據(jù)進(jìn)行緩存 ; 使用緩存能減少讀寫磁盤的次數(shù) , 這塊緩存所占用的內(nèi)存會(huì)一直使用 , 減少了動(dòng)態(tài)內(nèi)存分配的開銷 ;



II. Buffer 屬性



Buffer 緩沖區(qū)基本屬性 :

  • ① 容量 Capacity : 緩沖區(qū)元素個(gè)數(shù) , 不可更改 ;
  • ② 限制 Limit : 緩沖區(qū)的終點(diǎn) , 從該索引開始 ( 包含該索引 ) , 不能對(duì)之后的元素進(jìn)行讀寫操作 ; Limit 值可以修改 , 其值必須是自然數(shù) ;
  • ③ 位置 Position : 下一個(gè)要被讀取或?qū)懭氲脑厮饕?, 注意是下一個(gè) , Position 初始值從 0 開始計(jì)數(shù) , 如果沒(méi)有讀取就一直是 0 , 如果已經(jīng)讀取了 1 個(gè)元素 , 其 Position 值在讀取完畢后變?yōu)?1 , 指向下一個(gè)將要讀取的元素 ;
  • ④ 標(biāo)記 Mark : 調(diào)用 mark() 方法可以設(shè)置標(biāo)記 Mark = Position , 之后在任何時(shí)刻 , 調(diào)用 reset() 方法 , 可以讓 Position = Mark ;

四個(gè)屬性遵循的規(guī)律 : Mark≤Position≤Limit≤CapacityMark \leq Position \leq Limit \leq CapacityMarkPositionLimitCapacity



III. Buffer 數(shù)據(jù)讀寫



1. Buffer 的 7 個(gè)子類 ( ByteBuffer , CharBuffer , DoubleBuffer , FloatBuffer , IntBuffer , LongBuffer , ShortBuffer ) , 都定義了兩類方法 , 分別是 ① 讀取數(shù)據(jù) , ② 寫入數(shù)據(jù) ;


2. 相對(duì)操作和絕對(duì)操作 :

  • ① 相對(duì)操作讀寫數(shù)據(jù) : 緩沖區(qū)相對(duì)操作讀取或?qū)懭霐?shù)據(jù) , 操作完畢后 , Position 被賦值為下一個(gè)將要讀取或?qū)懭氲脑厮饕?, 如果操作的 Position 超出了 Limit , 就會(huì)拋出異常 ;
  • ② 絕對(duì)操作讀寫數(shù)據(jù) : 直接使用元素索引進(jìn)行操作 , 該操作不影響 Position 位置屬性 ; 如果索引超出了緩沖區(qū)大小 , 就會(huì)拋出異常 ;


IV. Buffer 標(biāo)記 mark() 和重置 reset()



標(biāo)記和重置方法 :

  • ① 操作對(duì)象 : 標(biāo)記 mark() 方法 操作的是 Mark 標(biāo)記屬性 , 重置 reset() 方法 , 主要用于操作 Position 位置屬性 ;
  • ② 設(shè)置標(biāo)記 : mark() 方法用于設(shè)置標(biāo)記 , 將當(dāng)前的 Position 賦值給 Mark 屬性 ;
  • ③ 位置重置 : reset() 方法用于重置 Position 位置屬性 , 將當(dāng)前的 Position 位置屬性設(shè)置成 Mark 標(biāo)記屬性值 ;


V. Buffer 清除 翻轉(zhuǎn) 重繞



1. 清除操作 : 調(diào)用 clear() 方法執(zhí)行 , 執(zhí)行了該方法后 , 將 Limit 限制屬性設(shè)置為緩沖區(qū)的容量大小 , 將 Position 位置屬性設(shè)置成 0 , 之后便可以重新從 0 位置開始讀寫緩沖區(qū) ;

2. 翻轉(zhuǎn)操作 : 調(diào)用 flip() 方法執(zhí)行 , 執(zhí)行了該方法后 , 將 Limit 限制屬性設(shè)置為當(dāng)前 Position 位置屬性, 將 Position 位置屬性設(shè)置成 0 , 之后便可以重新從 0 位置開始讀寫緩沖區(qū) , 但是不能超過(guò) Limit 位置 ;

3. 重繞操作 : 調(diào)用 rewind() 方法執(zhí)行 , Limit 限制屬性保持不變 , 將 Position 位置屬性設(shè)置成 0 , 只是重新開始寫入或讀取 ;



VI. Buffer 緩沖區(qū)只讀屬性



Buffer 只讀緩沖區(qū) :

  • ① 只讀屬性 : Buffer 包裹的緩沖區(qū)可能是只讀的 , 不能向緩沖區(qū)中寫入數(shù)據(jù) ;
  • ② 只讀緩沖區(qū)操作 : 只讀緩沖區(qū)的內(nèi)容是不可以修改的 , 但是緩沖區(qū)的 Mark 標(biāo)記 , Limit 限制 , Position 位置屬性是可以改變的 , 緩沖區(qū)是只讀的 , 不可改變緩沖區(qū)及其內(nèi)容 , 因此 Capacity 容量不可改變 ;
  • ③ 判定是否是只讀緩沖區(qū) : 可以調(diào)用 isReadOnly() 方法 , 判定該 Buffer 緩沖區(qū)是否是制度緩沖區(qū) ;


VII. Buffer 的鏈?zhǔn)秸{(diào)用



1. 鏈?zhǔn)秸{(diào)用前提 : Buffer 緩沖區(qū)有很多方法的返回值是 Buffer 對(duì)象本身 , 如 :

  • Buffer clear() 清除緩沖區(qū) ,
  • Buffer flip() 翻轉(zhuǎn)緩沖區(qū) ,
  • Buffer limit(int newLimit) 設(shè)置緩沖區(qū)限制 ,
  • Buffer mark() 設(shè)置緩沖區(qū)標(biāo)記 ,
  • Buffer position(int newPosition) 設(shè)置緩沖區(qū)位置 ,
  • Buffer reset() 重置緩沖區(qū)位置 ,
  • Buffer rewind() 緩沖區(qū)重繞 ;

2.鏈?zhǔn)秸{(diào)用示例 :

  • ① 非鏈?zhǔn)秸{(diào)用 :
ByteBuffer buffer = ByteBuffer.allocate(10) ; buffer.position(3); buffer.rewind(); buffer.limit(9);
  • ② 鏈?zhǔn)秸{(diào)用 :
ByteBuffer buffer = ByteBuffer.allocate(10) ; buffer.position(3).rewind().limit(9);

總結(jié)

以上是生活随笔為你收集整理的【Java 网络编程】NIO Buffer 简介 ( 概念 | 数据传输 | 标记 | 位置 | 限制 | 容量 | 标记 | 重置 | 清除 | 翻转 | 重绕 | 链式操作 )的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。