news 2026/10/6 12:40:35

【NIO】3.1 ByteBuffer的原理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【NIO】3.1 ByteBuffer的原理

ByteBuffer的原理

  • 1. ByteBuffer的原理
    • 1.1 ByteBuffer的重要参数(其实是来自父类Buffer)
    • 1.2 图示说明
  • 2. 补充说明

1. ByteBuffer的原理

1.1 ByteBuffer的重要参数(其实是来自父类Buffer)

private int mark = -1; // 标记位置
private int position = 0; // 当前位置
private int limit; // 限制位置
private int capacity; // 容量

1.2 图示说明

  1. buffer底层维护一个数组,使用allocate(10),相当于分配到长度为10的数组:
    此时buffer是写入模式,只能写数据,不能从中读数据。
  2. 每次channel从文件中读取一个字节,并且存入buffer中,position就向后移动一位:
  3. 使用flip()方法后,表示调整buffer为读模式,此时position和limit的位置会移动:
  4. 读完4个字节后:
  5. 调用clear()方法后,position和limit会恢复到初始的位置,此时buffer被调整为写模式。
    只不过buffer中的数据并没有清除,只是写数据时可以覆盖写。

2. 补充说明

如果数据没有读完,就想切换到写模式,可以调用compact()方法;
比如:只读取了两个数据:

调用compact(),几个指针对应变化:
此时未读的数据,会移动到前面。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/6 12:40:20

【题解-洛谷】P1877 [HAOI2012] 音量调节

题目:P1877 [HAOI2012] 音量调节 题目描述 一个吉他手准备参加一场演出。他不喜欢在演出时始终使用同一个音量,所以他决定每一首歌之前他都需要改变一次音量。在演出开始之前,他已经做好一个列表,里面写着每首歌开始之前他想要改…

作者头像 李华
网站建设 2026/10/6 12:39:05

【高质量毕设开题】基于AI大模型+SpringBoot的社区医院慢性病智能化管理系统的设计与实现(源码+报告)

温馨提示: 本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示: 本人主页置顶文章(点我)开头有 CSDN平台官方提供的学长联系方式的名片! 温馨提示: 本人主页置顶文章(点我)开头有 CSDN 平…

作者头像 李华
网站建设 2026/10/6 12:38:01

【大数据毕设项目】基于大数据的人口统计特征与肥胖风险关联分析及可视化\面向健康管理的人口统计特征与肥胖风险可视化分析平台

文章目录 一、项目开发背景意义 二、项目开发技术 三、项目开发内容 四、项目展示 五、项目相关代码 六、最后 一、项目开发背景意义 随着社会经济的发展和人民生活方式的改变,肥胖问题日益成为影响公众健康的重要公共卫生挑战。传统的数据分析方式难以应对海…

作者头像 李华
网站建设 2026/10/6 12:35:38

开源项目吐槽大会:那些让人又爱又恨的开源项目

1. 引言:为什么我们需要一场吐槽大会开源项目让技术世界变得丰富多彩,但每个开发者心中都藏着几个「又爱又恨」的开源项目。本文以轻松幽默的视角,盘点那些让人忍不住吐槽的开源项目,并从中提炼出值得借鉴的经验教训。2. 吐槽大会…

作者头像 李华
网站建设 2026/10/6 12:35:37

云克隆luminex 技术实现 C5b9、GAS6、GREM1、LDH、PON1、RNASE3 高通量多因子检测

摘要:补体末端激活、细胞凋亡损伤、氧化应激、纤维化调控、粒细胞活化共同参与肾脏损伤、血管病变、肿瘤及炎症性疾病进程。C5b9(膜攻击复合物)、GAS6、GREM1、LDH、PON1、RNASE3 分别代表补体末端活化、TAM 受体配体信号、纤维化调控、细胞坏…

作者头像 李华