JAVA NIO之Buffer(一)
来源:互联网 发布:御彩轩计划软件下载 编辑:程序博客网 时间:2024/05/17 22:40
1.Buffer是一个原始类型的数据容器,是一个特定原始类型的线性有限序列。除了它的内容外,最基本的属性有:capacity,limit,position,这三个属性的含义如下:
2. 除了boolean类型外,其他基本数据类型的Buffer(ByteBuffer,ShortBuffer,CharBuffer,IntBuffer,LongBuffer,1)capacity: buffer包含数据元素的个数(int类型,非负,大小固定不变)
2)limit: limit指定的元素是第一个不能被读或者写的元素(int类型,非负,它的值不会超过capacity)
3)position: position指定的下一个元素可以被读或者写(int类型,非负,它的值不会超过limit)
4)三者之间的不变关系是:0 <= mark <= position <= limit <= capacity
FloatBuffer,DoubleBuffer)都是Buffer的子类。
3.相对操作读写一个或多个数据元素从当前位置(position)开始,position数值的大小随着转移数据的数量而增加。如果请求转移的数据超过了limt,然后执行get()方法时将会得到一个BufferUnderflowException,如果此时执行put()操作,将会得到一个BufferOverflowException,在任何一种情况下,没有数据会被转移。
4.采用明确的索引方式的绝对操作,不会影响position的大小,如果采用绝对操作执行get,put方法时下标参数超过了limit,将会得到一个IndexOutOfBoundsException
5.数据可以通过I/O操作,从当前位置开始来移进或者移出一个合适的缓冲区。
6.Marking and resetting
1)当调用rest方法时,postion会移动到mark标记的位置。(前提是必须先定义mark)
2)mark不会经常使用,一旦使用的话,它的大小是非负的,并且不会超过position
3)当position或者limit小于mark的大小时,mark会被丢弃掉即mark是无效的。
4)如果mark没有定义,当调用reset方法时,会得到一个InvalidMarkException
5)新建的Buffer,position等于0,mark未定义,limit的值可能是0也可能是是他的值,这个取决于buffer的类型和构造buffer的方式。新分配的缓冲区的每一个元素会被初始化为0
7. Clearing, flipping, and rewinding
1)clear: 使一个缓冲区为一个新序列的channel-read或者一个相对的put操作做准备:position重置为0,limit重置为capacity
2)flip: 使一个缓冲区为一个新序列的channel-write或者一个相对的get操作做准备:limit重置为position的位置,position重置为0
3)rewind: 使缓冲区的数据可以重复读:position的位置重置为0,limit位置不变。
8. 所有的Buffer都是可读的,但并非所有的Buffer都是可写的,所有buffer类里面的可变方法都被指定为可选择的操作,当在一个只读的Buffer上面调用写操作时,会得到一个ReadOnlyBufferException。一个只读的缓冲区不允许修改
它的内容,但是mark,pisition,limit的值是可以更改的,无论一个Buffer是不是只读的,可以通过调用它的isReadOnly方法来判断。
9. 所有的Buffer在多线程环境下,都是线程不安全的,如果一个buffer用在多线程环境下,需要采取一定的同步机制。
10. Buffer类里面的方法的调用方式有以下两种:
1) b.flip();
b.position(23);
b.limit(42);
2)b.flip().position(23).limit(42);
- JAVA NIO之Buffer(一)
- java nio之Buffer(一)
- Java之NIO(一)Channel和Buffer
- Java 之NIO(一) - 简介(Buffer)
- java nio之Buffer
- Java NIO 之 buffer
- Java NIO 之Buffer
- java nio之Buffer
- java NIO之buffer
- Java NIO 之 Buffer
- java nio(一)--Buffer基础
- Java - NIO之Buffer(上)
- Java - NIO之Buffer(下)
- 《JAVA NIO》之Buffer类图
- Java nio 之 buffer order
- Java之IO、NIO、Buffer
- Java NIO笔记之Buffer
- java.nio包的分析(一)--Buffer类
- Java 面试知识点2
- Interface Orientation
- 廖雪峰还是挺靠谱的
- Remove Duplicates from Sorted List
- 欢迎使用CSDN-markdown编辑器
- JAVA NIO之Buffer(一)
- Webpack对比其他框架的优势分析
- ctrl左键无效
- SHOW PROCESSLIST ,mysql进程查询和定时脚本零时解决进程锁死问题
- iOS中使用textView进行图文混排的上传与显示
- IOS开发第二天-类别与扩展
- CDR怎么保存JPG格式
- Java用循环链表写的约瑟夫环
- 3.25日天梯赛大区赛lv1题解