NIO——buffer
2015-09-19 22:11
211 查看
(1)作用
NIO中的Buffer用于和NIO通道进行交互:数据从通道读入缓冲区,从缓冲区写入到通道中的。
Buffer的本质是一块可读可写的内存,NIO将这块内存包装成Buffer对象,并提供了一组方法,用来方便的访问该内存
(2)position、limit
1)写模式
可以理解为栈,position为栈顶指针,limit为指针的最大位置
2)读模式
可以理解为队列,position为队首指针,limit为队尾指针
capacity是整个内存的大小,不用和前两个一起比较
3)测试
NIO中的Buffer用于和NIO通道进行交互:数据从通道读入缓冲区,从缓冲区写入到通道中的。
Buffer的本质是一块可读可写的内存,NIO将这块内存包装成Buffer对象,并提供了一组方法,用来方便的访问该内存
(2)position、limit
1)写模式
可以理解为栈,position为栈顶指针,limit为指针的最大位置
2)读模式
可以理解为队列,position为队首指针,limit为队尾指针
capacity是整个内存的大小,不用和前两个一起比较
3)测试
@Test public void test() { System.out.println("初始写状态"); ByteBuffer buffer = ByteBuffer.allocate(8); System.out.println("position: "+buffer.position()); System.out.println("limit: "+buffer.limit()); System.out.println("-----------------"); buffer.put((byte) 5); byte[] bytes = {6,7,8}; buffer.put(bytes); System.out.println("放入4个数据后状态"); System.out.println("position: "+buffer.position()); System.out.println("limit: "+buffer.limit()); System.out.println("-----------------"); buffer.flip(); System.out.println("切换为读状态"); System.out.println("position: "+buffer.position()); System.out.println("limit: "+buffer.limit()); System.out.println("-----------------"); byte res = buffer.get(); System.out.println(res); System.out.println("读取一个数据后状态"); System.out.println("position: "+buffer.position()); System.out.println("limit: "+buffer.limit()); }结果为:
初始写状态 position: 0 limit: 8 ----------------- 放入4个数据后状态 position: 4 limit: 8 ----------------- 切换为读状态 position: 0 limit: 4 ----------------- 5 读取一个数据后状态 position: 1 limit: 4
相关文章推荐
- CSS Sprite的使用
- 2015.9.19蘑菇街WEB前端笔试体会
- node.js面试题大全-侧重后端应用与对Node核心的理解
- HTML5学习之工具使用
- node 的 异步 数据库 调用 处理
- css改变背景透明度【转】
- 剑指offer-二进制中1的个数
- jsp用过滤器解决中文乱码
- 剑指offer-对称的二叉树
- CSS
- javascript中的变量对象和活动对象
- [LeetCode][JavaScript]Binary Tree Postorder Traversal
- CSS基础
- 关于json
- 剑指offer - 二维数组的查找
- nodejs服务器搭建
- 统一的表单验证(jquery+正则)
- html+css基础1
- 初试javascript
- javascript中的执行上下文堆栈和执行上下文