Netty ByteBuf

ByteBuf維護(hù)了兩個(gè)不同的索引:一個(gè)用于讀取,一個(gè)用于寫入。當(dāng)你從ByteBuf讀取時(shí),它的readIndex將會(huì)遞增已經(jīng)被讀取的字節(jié)數(shù)。同樣地,當(dāng)你寫入ByteBuf時(shí),它的writeIndex也會(huì)被遞增。

ByteBuf.png
        ByteBuf byteBuf = Unpooled.copiedBuffer("Netty in Action", CharsetUtil.UTF_8);
        ByteBuf buf = byteBuf.readerIndex(0);//將 readerIndex 移動(dòng)到指定的位置
        buf.markReaderIndex();//標(biāo)記當(dāng)前的 readerIndex
        while (buf.isReadable()){
            System.out.print((char) buf.readByte());
        }
        buf.resetReaderIndex();//回退到之前標(biāo)記的 readerIndex,如果不添加此句,不會(huì)打印while循環(huán)里面輸出。
        while (buf.isReadable()){
            System.out.print((char) buf.readByte());
        }
  • ByteBuf復(fù)制
        Charset utf8 = Charset.forName("UTF-8");
        ByteBuf buf = Unpooled.copiedBuffer("Netty in Action  ", CharsetUtil.UTF_8);
        ByteBuf slice = buf.slice(0, 15);
        System.out.println(slice.toString(utf8));
        buf.setByte(0, (byte) 'J');
        System.out.println(buf.toString(utf8));
        System.out.println(slice.toString(utf8));

Netty in Action
Jetty in Action  
Jetty in Action
//數(shù)據(jù)是共享的,對(duì)其中一個(gè)所做的更改對(duì)另外一個(gè)也是可見的。
  • ByteBuf復(fù)制
        ByteBuf buf = Unpooled.copiedBuffer("Netty in Action  ", CharsetUtil.UTF_8);
        ByteBuf copy = buf.copy(0, 15);
        System.out.println(copy.toString(utf8));
        buf.setByte(0, (byte) 'J');
        System.out.println(buf.toString(utf8));
        System.out.println(copy.toString(utf8));

Netty in Action
Jetty in Action  
Netty in Action
//數(shù)據(jù)不是共享的
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 網(wǎng)絡(luò)數(shù)據(jù)的基本單位總是字節(jié)。Java NIO 提供了 ByteBuffer 作為它 的字節(jié)容器,但是這個(gè)類使...
    小波同學(xué)閱讀 967評(píng)論 0 1
  • ByteBuf是netty用于替代nio的ByteBuffer,存儲(chǔ)字節(jié)的數(shù)據(jù)容器,相比于ByteBuffer,B...
    hello_kd閱讀 348評(píng)論 0 0
  • 1、Netty的ByteBuf的優(yōu)點(diǎn)(重點(diǎn)) 存儲(chǔ)字節(jié)數(shù)組是動(dòng)態(tài)的,其最大值默認(rèn)為Integer.MAX_VALU...
    愛學(xué)習(xí)的蹭蹭閱讀 856評(píng)論 0 1
  • 歡迎關(guān)注公眾號(hào):【愛編碼】如果有需要后臺(tái)回復(fù)2019贈(zèng)送1T的學(xué)習(xí)資料哦?。?簡介 所有的網(wǎng)路通信都涉及字節(jié)序列的...
    xbmchina閱讀 2,622評(píng)論 0 1
  • 概述 Netty 中的 ByteBuf 和 NIO 中的 ByteBuffer 的區(qū)別。 1、Netty 中的 B...
    jijs閱讀 1,819評(píng)論 0 5

友情鏈接更多精彩內(nèi)容