Buffer常用操作及原理分析
来源:互联网 发布:美宝莲淘宝旗舰店 编辑:程序博客网 时间:2024/05/16 02:27
一个Buffer是一个固定数量的数据容器。其作用是一个存储器,或者分段运输区,在这里数据可被存储并在之后用于检索,对于每个非boolean原始数据类型都有一个缓冲区。尽管缓冲区作用于他们存储的原始数据类型,但缓冲区十分倾向于处理字节。非字节缓冲区可以在后台执行从字节或到字节的转换,缓冲区的工作与通道紧密联系。通道是I/O传输发生时通过的入口,而缓冲区是这些数据传输的来源或目标。对于离开缓冲区的传输,您想离开缓冲区的传输,您想传递出去的数据被置于一个缓冲区,被传送到通道。对于传回缓冲区的传输,一个通道将数据放置在您所提供的缓冲区中。这种在协同对象之间进行的缓冲区数据传递是高效数据处理的关键。
缓冲区基础:
1.属性
所有的缓冲区都具有四个属性来提供关于其所包含的数据元素的信息。他们是:
容量(capacity)
缓冲区能够容纳的数据元素的最大数量。这一容量在缓冲区创建时被设定,并且永远不能被改变。
上界(limit)
缓冲区的第一个不能被读或者写的元素。或者说,缓冲区中现存元素的计数。
位置(position)
下一个要被读或写的元素的索引。位置会自动由响应的get()和put()函数更新。
标记(mark)
一个备忘位置。调用mark()来设定mark = position,调用reset()设定position= mark。标记在设定前是未定义的。
这四个属性关系如下:
0<=mark<=position<=limit<=capacity
2.实际使用中的例子:
当新创建一个容量为10的缓冲区的时候,其逻辑视图如下:
位置(position)被设置为0,上界和容量(capacity)都为10,其中capacity是固定不变的,其他三个都可以根据需要操作变动,
mark()方法用来记录备忘位置,设置mark = position,
reset()设置position = mark ,
flip() 方法 源码如下:
public final Buffer flip() {
limit = position;
position = 0;
mark = -1;
return this;
}
put() position+1
get() position + 1
hasRemaining()方法,判断是否到达上界
public final boolean hasRemaining() {
return position < limit;
}
- Buffer常用操作及原理分析
- AFNetworking原理及常用操作
- AFNetworking原理及常用操作
- AFNetworking原理及常用操作
- AFNetworking原理及常用操作
- JAVA常用数据结构及原理分析
- JAVA常用数据结构及原理分析
- Buffer Cache的原理及使用
- google protocol buffer原理及使用
- Protocol Buffer的详解,使用及原理
- buffer cache深度分析及性能调整
- iOS网络-05-AFNetwoking原理及常用操作
- iOS网络-05-AFNetwoking原理及常用操作
- ajax常用操作及 跨域的实现原理
- JAVA常用数据结构及原理分析(面试总结)
- JS对象创建常用方式及原理分析
- JS对象创建常用方式及原理分析
- wirshark 常用操作及 tcp 三次握手过程实例分析
- C语言入门-第五周:作业01
- hdu 1789 Doing Homework Again
- enter(回车)键事件
- redis 报错 Redis protected-mode 配置文件没有真正启动
- #414 Divide Two Integers
- Buffer常用操作及原理分析
- 51 Nod 1265 四点共面 (计算几何)
- MachineLearning—Logistic Regression(四)-逻辑回归应用于手写数字识别
- 静态链接与动态链接的区别
- 内存泄漏有哪些场景以及解决方法
- 8天学通MongoDB——第五天 主从复制
- Android之Service学习总结
- 数据结构实验之图论八:欧拉回路
- Java json转Map,转bean,转List<bean>