分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

Netty(一):ByteBuf读写过程图解

发布时间:2023-09-06 02:03责任编辑:赖小花关键词:暂无标签

我们知道ByteBuf通过读写两个索引分离,避免了NIO中ByteBuffer中读写模式切换时,需要flip等繁琐的操作。

今天就通过一段测试代码以及图例来直观的了解下ByteBuf中的readIndex, writeIndex以及capacity的概念。

先贴出测试代码:

 1 public class ByteBuffTest { 2 ?3 ????public static void main(String[] args){ 4 ????????/*******************初始阶段**********************/ 5 ????????ByteBuf buf = Unpooled.buffer(100, 200); 6 ????????System.out.println("writable bytes " + buf.writableBytes()); 7 ????????System.out.println("readable bytes " + buf.readableBytes()); 8 ?9 ????????/*******************写入数据**********************/10 ????????String str = "write test";//UTF-8 英文字符占一个字节11 ????????int length = str.getBytes().length;//因此得到的字节长度为1012 ????????buf.writeBytes(str.getBytes());13 ????????System.out.println("writable bytes " + buf.writableBytes());14 ????????System.out.println("readable bytes " + buf.readableBytes());15 16 ????????/*******************读取数据*********************/17 ????????char c = (char)buf.readByte();//读取第一个字节,并转换成字符打印18 ????????System.out.println("c:" + c);19 ????????System.out.println("writable bytes " + buf.writableBytes());20 ????????System.out.println("readable bytes " + buf.readableBytes());21 22 ????????/*******************丢弃已读*********************/23 ????????buf.discardReadBytes();24 ????????System.out.println("writable bytes " + buf.writableBytes());25 ????????System.out.println("readable bytes " + buf.readableBytes());26 27 ????}28 }

然后是测试打印结果:

对上述过程用图例直观表示:

Netty(一):ByteBuf读写过程图解

原文地址:https://www.cnblogs.com/insaneXs/p/9303652.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved