最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java?NIO緩沖區(qū)Buffer基礎(chǔ)教程示例

 更新時間:2023年10月27日 10:36:18   作者:lane  
這篇文章主要介紹了Java?NIO緩沖區(qū)Buffer基礎(chǔ)教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

概念

緩沖區(qū)(Buffer)本質(zhì)上是管理著基本元數(shù)對象的數(shù)組

Buffer家族

Buffer基本屬性

/** Invariants: mark <= position <= limit <= capacity */

//用來臨時標(biāo)記position的位置,便于還原
private int mark = -1;
//即將讀取或?qū)懭氲拈_始位置
private int position = 0;
//上界,緩沖區(qū)現(xiàn)有元素的數(shù)量
private int limit;
//緩存區(qū)的最大容量,初始化時設(shè)定,不能改變
private int capacity;

Buffer基本API

package java.nio;
public abstract class Buffer {
    //獲取緩沖區(qū)容量
    public final int capacity()
    //獲取當(dāng)前位置
    public final int position()
    //設(shè)置一個新的position
    public final Buffer position(int newPosition)
    //獲取上界位置
    public final int limit()
    //設(shè)置一個新的上界位置,但是不能小于0或超過capacity
    public final Buffer limit(int newLimit)
    //標(biāo)記當(dāng)前position
    public final Buffer mark()
    //恢復(fù)標(biāo)記的position
    public final Buffer reset()
    //重新設(shè)置mark=-1 position=0 limit=capacity,讀取完數(shù)據(jù)調(diào)用,數(shù)據(jù)沒有被清理,寫入的數(shù)據(jù)會覆蓋之前的數(shù)據(jù)
    public final Buffer clear()
    //翻轉(zhuǎn)緩沖區(qū),使寫入的數(shù)據(jù)進(jìn)入可讀狀態(tài)
    public final Buffer flip()
    //重置讀寫位置,將position設(shè)為0,mark設(shè)為-1丟棄
    public final Buffer rewind()
    //獲取當(dāng)前位置好緩沖區(qū)上界Limit還有多少元素
    public final int remaining()
    //判斷position是否已經(jīng)達(dá)到limit上界,用于判斷是否已經(jīng)全部讀取完畢
    public final boolean hasRemaining()
    //判斷當(dāng)前緩沖區(qū)是否是只讀的
    public abstract boolean isReadOnly();
}

填充Hello后的緩沖區(qū)

ByteBuffer buffer=ByteBuffer.allocate(10);
buffer.put((byte)'H').put((byte)'e').put((byte)'l').put((byte)'l').put((byte)'o');

調(diào)用flip翻轉(zhuǎn)后的緩沖區(qū)

buffer.flip();

直接緩沖區(qū)直接緩沖區(qū)是指java虛擬機(jī)堆棧外的系統(tǒng)存儲區(qū),通常情況通道之間的緩沖區(qū)數(shù)據(jù)傳輸不能直接使用非直接緩沖區(qū),而是會創(chuàng)建臨時直接緩沖區(qū)來復(fù)制數(shù)據(jù)后傳輸,這樣導(dǎo)致性能損耗。如果是高并發(fā)情況下重復(fù)使用緩沖區(qū),使用直接緩沖區(qū)可以提高IO性能。但是創(chuàng)建直接緩沖區(qū)需要繞過JVM直接操作本地系統(tǒng),這樣的創(chuàng)建和銷毀動作需要更高的成本。

緩沖區(qū)的創(chuàng)建方式

以ByteBuffer為例

//創(chuàng)建一個直接緩沖區(qū)
ByteBuffer buffer = ByteBuffer.allocateDirect(1024);
//創(chuàng)建一個間接緩沖區(qū)
ByteBuffer buffer = ByteBuffer.allocate(1024);
//創(chuàng)建一個只讀的備份緩沖區(qū)
byte[] bytes = "hello".getBytes();
ByteBuffer buffer = ByteBuffer.wrap(bytes);

以上就是Java NIO緩沖區(qū)Buffer基礎(chǔ)教程示例的詳細(xì)內(nèi)容,更多關(guān)于Java NIO緩沖區(qū)Buffer的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • SpringBoot獲取瀏覽器信息的多種實現(xiàn)方式

    SpringBoot獲取瀏覽器信息的多種實現(xiàn)方式

    在Web開發(fā)中,獲取用戶瀏覽器信息是常見需求,可用于統(tǒng)計分析、個性化展示、安全防護(hù)等場景,SpringBoot提供了多種方式來獲取這些信息,下面是詳細(xì)實現(xiàn)方法,需要的朋友可以參考下
    2025-10-10
  • SpringBoot Event 事件如何實現(xiàn)異步延遲執(zhí)行

    SpringBoot Event 事件如何實現(xiàn)異步延遲執(zhí)行

    這篇文章主要介紹了Spring Boot Event 事件如何實現(xiàn)異步延遲執(zhí)行問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Spring之@Qualifier注解的具體使用

    Spring之@Qualifier注解的具體使用

    本文主要介紹了Spring之@Qualifier注解的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • 解決找不到符號 符號:變量 log問題

    解決找不到符號 符號:變量 log問題

    這篇文章主要介紹了解決找不到符號 符號: 變量 log問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Spring Boot自定義配置屬性源(PropertySource)

    Spring Boot自定義配置屬性源(PropertySource)

    這篇文章主要介紹了Spring Boot自定義配置屬性源(PropertySource),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • Java中的裝箱和拆箱深入理解

    Java中的裝箱和拆箱深入理解

    裝箱和拆箱是java中老生常談的問題,下面小編通過本文給大家介紹java裝箱和拆箱最基本的東西,感興趣的朋友一起看下吧
    2016-07-07
  • 淺談java實現(xiàn)redis的發(fā)布訂閱(簡單易懂)

    淺談java實現(xiàn)redis的發(fā)布訂閱(簡單易懂)

    本篇文章主要介紹了淺談java實現(xiàn) redis的發(fā)布訂閱(簡單易懂),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • 一文給你通俗易懂的講解Java異常

    一文給你通俗易懂的講解Java異常

    這篇文章主要給大家介紹了關(guān)于Java異常的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • spring boot jar的啟動原理解析

    spring boot jar的啟動原理解析

    這篇文章主要介紹了 spring boot jar的啟動原理分析,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-02-02
  • Spring Bean常用的的裝配方式詳解

    Spring Bean常用的的裝配方式詳解

    這篇文章主要介紹了Spring Bean常用的的裝配方式詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07

最新評論

伊金霍洛旗| 永济市| 新丰县| 新宾| 江陵县| 伽师县| 万荣县| 南阳市| 朝阳区| 金寨县| 福清市| 遂川县| 东港市| 临城县| 离岛区| 开平市| 长沙市| 池州市| 灵寿县| 聂拉木县| 桂林市| 临湘市| 丰都县| 开封市| 江源县| 祁连县| 洛阳市| 灵武市| 启东市| 达州市| 呼玛县| 重庆市| 连江县| 盈江县| 阳高县| 东平县| 白玉县| 合肥市| 惠来县| 松桃| 厦门市|