Netty - ByteBuf索引管理

news/2024/7/1 3:02:53

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

之前写过一篇文章介绍过JDK里面InputStream的mark(readlimit)和reset()方法,Java IO:使用mark/reset实现替换文件中字符串。相应的,可以通过调用markReaderIndex()/markWriterIndex()/resetReaderIndex()resetWriterIndex()来标记和重置ByteBuf的readerIndexwriterIndex

除此之外,还可以调用readerIndex(int)/writerIndex(int)来将索引移动到指定位置。如果尝试设置到一个无效的位置将会抛出IndexOutOfBoundsException

在调用clear()方法之前:

     +-------------------+------------------+------------------+| discardable bytes |  readable bytes  |  writable bytes  ||                   |     (CONTENT)    |                  |+-------------------+------------------+------------------+|                   |                  |                  |0      <=      readerIndex   <=   writerIndex    <=    capacity

After clear():readerIndex和writerIndex都被设置成了0,但是不会清除内存中的内容

     +---------------------------------------------------------+|             writable bytes (got more space)             |+---------------------------------------------------------+|                                                         |0 = readerIndex = writerIndex            <=            capacity

AbstractByteBuf#clear 代码如下:可以看到,只是将两个索引重置为0,没有对内存进行擦除操作。

public ByteBuf clear() {readerIndex = writerIndex = 0;return this;
}

转载于:https://my.oschina.net/javamaster/blog/2998525


http://lihuaxi.xjx100.cn/news/235626.html

相关文章

Swift项目引入第三方库的方法

分类&#xff1a;iOS&#xff08;55&#xff09; 目录(?)[] Swift项目引入第三方库的方法 转自 http://blog.shiqichan.com/How-To-Import-3rd-Lib-Into-Swift-Project/ 以下&#xff0c;将创建一个Swift项目&#xff0c;然后引入3个库&#xff1a; Snappy 简化autolayout代码…

实现nginx上配置免费证书Let's Encrypt

Lets Encrypt 的免费证书有效期为三个月&#xff0c;不过可以免费续期&#xff0c;写一个脚本定期更新即可。 准备一台nginx 服务器 &#xff0c;将以下三个附件上传到你的nginx服务器。 1、下载脚本文件&#xff0c;wget https://raw.githubusercontent.com/xdtianyu/scripts/…

inet_pton和inet_ntop函数

Linux下这2个IP地址转换函数&#xff0c;可以在将IP地址在“点分十进制”和“整数”之间转换 而且&#xff0c;inet_pton和inet_ntop这2个函数能够处理ipv4和ipv6。算是比较新的函数了。 inet_pton函数原型如下[将“点分十进制” &#xff0d;> “整数”] #include <sys/…

Swift2.0系列]Error Handling(项目应用篇)

1.FileManager中的应用 倘若你只是想看FileManager中的 Error Handling是如何实现的&#xff0c;请找到3.删除文件以及4.获取文件信息。我分别为你提供了do-catch以及try?的使用方法。 打开Xcode,选中Single View Application&#xff0c;输入项目名称例如FileManagerDemo,点击…

FastJson 转换 javaBean 时 null 值被忽略都问题

[toc] 问题 当 JavaeBean 中某个属性值为 null 时&#xff0c;转换为 JSONObject 对象或者 json 字符串时&#xff0c;该属性值被忽略。如何让不管值是否为 null&#xff0c;转化后该属性还存在&#xff0c;只是值为 null。 情况演示 class St {private String sid;private Str…

Swoft 2 Beta 发布,基于 Swoole 的云原生协程框架

Swoft 是首个基于 Swoole 原生协程的框架&#xff0c;从开发到发布据今已有2年多。 1.x 发布以来&#xff0c;已有大量的开发人员和企业使用&#xff0c;得到了大家的认可。从去年11月份开始&#xff0c;将近半年的时间从零开始&#xff0c;底层吸取之前经验&#xff0c;基于 S…

Linux驱动: rtc子系统

1. 前言 限于作者能力水平&#xff0c;本文可能存在的谬误&#xff0c;因此而给读者带来的损失&#xff0c;作者不做任何承诺。 2. 背景 本文分析代码基于Linux 3.10内核&#xff0c;硬件平台为嵌入式ARM32平台. 3. rtc子系统 3.1 相关代码文件列表 drivers/rtc/class.c …

cnblogs不愧为cnblogs

在cnblogs落脚3天了&#xff0c;写了一些很实践的文章&#xff0c;很有成就感&#xff0c;为什么&#xff1f;我第一次为是否发表这篇文章而作出思考&#xff0c;以前在别的地方&#xff0c;总是转别人的文章居多&#xff0c;到了cnblogs&#xff0c;感受到了原创的精神——即使…