java NIO关于*Buffer的 flip | reset | rewind | clear 的灵活使用备忘
来源:互联网 发布:linux trace ping 编辑:程序博客网 时间:2024/06/01 09:10
首先对于Buffer的理解:
有两种状态:
读 || 写
四个重要的属性:
capacity: 【Buffer实例最大容量,不可变】
limit: 【Buffer实例最大 {可写 | 可读 } 的值,在写模式下,默认与初始化 给定的 capacity 相等】
position:【在读 || 写 状态下,初始为0, 每 读||写 N个元素,positon+=N 。】
mark: 【position的辅助变量,要显示的调用mark方法来记录最近一次position的位置】
1.flip 方法使用场景:当生产者向Buffer中写入了内容而消费者想要读取的情况
在首次创建Buffer时,buffer实例处于写模式
这四个变量的值依次初始:
mark = -1
position = 0
limit = capacity
capacity = 初始给定
这时调用
channel.read(buffer)
buffer.put*(basicType)
可以往buffer里写入相应的数据,这时候四个重要属性:
mark = -1position = 相应写入的数量,最大不能超过limitlimit = capacitycapacity = 初始给定
现在要读取写入的内容,要转换为读状态(更改这四个状态变量)
这时候需要调用 flip() 方法
limit = position; //读取不超过limit内容position = 0; //要从position处读取mark = -1;
现在就可以调用相应的操作来从buffer中读取相应的类容
例子:
while(buf.hasRemaining()){System.out.print((char) buf.get());}
2.reset 方法:把mark备忘的position赋值给position变量
3.rewind 方法:只把position置为0,也就是在读 || 写 状态下,都可以重新开始读 或 写 ,其他变量保持不变
4. clear 方法: 重新转换为写状态【把四个状态变量都变为初始状态】(这时候读没有任何意义)
写完才发现好像根本没有必要发。。。但是还是发了吧。。。。。。。。。。。。。。。。。。。。。。。。
- java NIO关于*Buffer的 flip | reset | rewind | clear 的灵活使用备忘
- NIO之Buffer的clear()、rewind()、flip()方法的区别
- buffer中clear rewind flip的区别
- java.nio.ByteBuffer的clear、flip、rewind方法的区别
- java.nio.ByteBuffer中flip、rewind、clear方法的区别
- java.nio.ByteBuffer中flip、rewind、clear方法的区别
- java.nio.ByteBuffer中flip、rewind、clear方法的区别
- java.nio.ByteBuffer中flip、rewind、clear方法的区别
- java.nio.ByteBuffer中flip、rewind、clear方法的区别
- java.nio.ByteBuffer中flip、rewind、clear方法的区别
- java.nio.ByteBuffer中flip、rewind、clear方法的区别
- java.nio.ByteBuffer中flip、rewind、clear方法的区别
- java.nio.ByteBuffer中flip、rewind、clear方法的区别
- Java NIO之Buffer中flip()、rewind()、clear()方法解析
- NIO中有关Buffer的几种常用方法比如clear,rewind和flip
- NIO实战(二)——java.nio.ByteBuffer中flip、rewind、clear方法的区别
- Buffer中clear(),flip()和rewind()的理解
- java.nio.ByteBuffer中flip、rewind、clear
- [机器学习实验4]正则化(引入惩罚因子)
- 《重构-改善既有代码的设计》知识精选——代码坏味道
- 2017智慧树 创践大学生创新创业实务答案
- Wdatepicker日期控件的使用指南
- opencv 矩阵元素排序(代码)
- java NIO关于*Buffer的 flip | reset | rewind | clear 的灵活使用备忘
- 面向对象三大特征之继承详解
- 汇编函数封装 pc寄存器 符号标签 数字标签
- GitBash输入中文的问题
- NG4与IONIC3开发坑总结
- Java中的多线程你只要看这一篇就够了
- 逆元
- Nexus3(Windows)
- 51Nod 1072 威佐夫游戏(黄金分割)