ByteBuf 详解
进行数据传输 ,需要使用缓冲区。ByteBuf是一个Byte数组的缓冲区,通过两个指针来协助读写操作。以下ri标识readIndex wi标识writeIndex。
- 1.1 工作原理
工作原理
图示原理
刚初始化的ByteBuf
写入N个字节后
读取M个字节 M < N
调用discardReadBytes 操作之后的
调用clear之后
分析如何动态扩展
ByteBuf的write 操作进行了封装,进行剩余空间的校验,如果可用缓冲区不足,会自动进行扩展。
功能介绍
顺序读
顺序写
readIndex writeIndex
ri和wi将ByteBuf缓冲区分割为三个区域
可以调用discardReadBytes 来重用空间 节省内存,但是会发生数组复制,频繁调用可能会产生性能下降
Readable bytes 和 writeable bytes
可读空间是实际存贮的区域 可写字段是尚未被使用可以填充的空间
Mark / Reset
对于缓冲区的操作 ,由于某种原因需要对之前的操作进行回滚,调用mark会将当前的指针备份到mark变量中,调用reset的时候,重新将指针至于mark’的位置
ByteBuf 详解相关推荐
- java 检查bytebuf长度_Java学习笔记16-Netty缓冲区ByteBuf详解
Java学习笔记16-Netty缓冲区ByteBuf详解 Netty自己的ByteBuf ByteBuf是为解决ByteBuffer的问题和满足网络应用程序开发人员的日常需求而设计的. JDK Byt ...
- netty系列之:netty中的ByteBuf详解
文章目录 简介 ByteBuf详解 创建一个Buff 随机访问Buff 序列读写 搜索 其他衍生buffer方法 和现有JDK类型的转换 总结 简介 netty中用于进行信息承载和交流的类叫做Byte ...
- 消息 ByteBuf 详解
Netty提供了ByteBuf来替代Java NIO的ByteBuffer缓冲区,以操纵内存缓冲区. 与Java NIO的ByteBuffer相比,ByteBuf的优势如下: · Pooling(池化 ...
- Netty 教程 – ByteBuf详解
ByteBuffer存在的问题 ByteBuffer是JDK1.4中提供的java.nio.Buffer, 在内存中预留指定大小的存储空间来存放临时数据,其他Buffer的子类有:CharBuffer ...
- netty源码之ByteBuf详解
一.背景简介 ByteBuf,顾名思义,就是字节缓冲区,是Netty中非常重要的一个组件.熟悉jdk NIO的同学应该知道ByteBuffer,正是因为jdk原生ByteBuffer使用比较复杂,某些 ...
- Netty之ByteBuf详解
1. ByteBuf的创建 在Netty中,有一个比较常见的对象ByteBuf,它其实等同于Java Nio中的ByteBuffer,但是ByteBuf对Nio中的ByteBuffer的功能做了很作增 ...
- 非阻塞网络编程详解------IO模型
1.前言 随着互联网的发展,面对海量用户高并发业务,传统的阻塞式的服务端架构模式已经无能为力.本文(和下篇<高性能网络编程(六):一文读懂高性能网络编程中的线程模型>)旨在为大家提供有用的 ...
- Netty详解(五):Netty TCP粘包 拆包
1. 概述 无论是服务端还是客户端,我们读取或者发送消息的时候,都需要考虑TCP底层的粘包和拆包机制.下面我们来通过Netty来详解TCP底层的粘包和拆包机制. 2. TCP底层的粘包和拆包机制 TC ...
- netty系列之:netty中的Channel详解
文章目录 简介 Channel详解 异步IO和ChannelFuture Channel的层级结构 释放资源 事件处理 总结 简介 Channel是连接ByteBuf和Event的桥梁,netty中的 ...
最新文章
- 15-11-23:system指令
- Python 之 pip拒绝访问
- Ackerman 函数的解法
- 2.羽翼sqlmap学习笔记之MySQL注入
- python3 socketserver_Python3中的SocketServer
- javaIo流实际应用
- linux调用odbc接口乱码,linux中pypyodbc读取GB编码mdb中文乱码解决办法
- C语言实现音乐播放器(Linux madplay)
- 创建数据库python: can‘t open file ‘manage.py‘: [Errno 2] No such file or directory报错
- 深入理解MySQL索引设计和优化原则
- struts2中struts.xml配置文件详解
- 金蝶k3 wise版本安装流程
- 有监督 VS 无监督
- 网络与IO知识扫盲(一):Linux虚拟文件系统,文件描述符
- 微信公众平台开发(34)微相册
- echarts 2.0 macarons主题安装
- c# 第32节 类的继承
- opencv中的split函数
- linux下查看gaussian结构,察看Gaussian全部IOp的方法
- 智能家居2.0 - Matter 1.0 标准和受益者