闲情居|详细整理JavaNio原理(二)( 二 )
缓冲区本质上是一块可以写入数据 , 然后可以从中读取数据的内存 。 这块内存被包装成NIO Buffer对象 , 并提供了一组方法 , 用来方便的访问该块内存 。
为了理解Buffer的工作原理 , 需要熟悉它的三个属性:
- capacity
- position
- limit
这里有一个关于capacity , position和limit在读写模式中的说明 , 详细的解释在插图后面 。
capacity
作为一个内存块 , Buffer有一个固定的大小值 , 也叫“capacity”.你只能往里写capacity个byte、long , char等类型 。 一旦Buffer满了 , 需要将其清空(通过读数据或者清除数据)才能继续写数据往里写数据 。
position
当你写数据到Buffer中时 , position表示当前的位置 。 初始的position值为0.当一个byte、long等数据写到Buffer后 ,position会向前移动到下一个可插入数据的Buffer单元 。 position最大可为capacity – 1 。
当读取数据时 , 也是从某个特定位置读 。 当将Buffer从写模式切换到读模式 , position会被重置为0 。 当从Buffer的position处读取数据时 , position向前移动到下一个可读的位置 。
limit
在写模式下 , Buffer的limit表示你最多能往Buffer里写多少数据 。写模式下 , limit等于Buffer的capacity 。
当切换Buffer到读模式时 ,limit表示你最多能读到多少数据 。 因此 , 当切换Buffer到读模式时 , limit会被设置成写模式下的position值 。 换句话说 , 你能读到之前写入的所有数据(limit被设置成已写数据的数量 , 这个值在写模式下就是position)
Buffer的类型
Java NIO 有以下Buffer类型:
- ByteBuffer
- MappedByteBuffer
- CharBuffer
- DoubleBuffer
- FloatBuffer
- IntBuffer
- LongBuffer
- ShortBuffer
MappedByteBuffer 有些特别 , 在涉及它的专门章节中再讲 。
【闲情居|详细整理JavaNio原理(二)】原文链接:
- 闲情居|华为云手机发布,真正的5G手机,绕过光刻机的技术壁垒
- 中年|馋死人了!好吃的青菜鸡蛋面的详细介绍!快进来看看吧!
- 依据|沪电股份收关注函:要求详细说明股权激励计划业绩考核目标的确定依据和合理性
- 美容|超详细定妆大法!亲测绝对好用
- 精英联盟总队|最详细的Linux简史——Linux大神带你领略它的前世今生
- 闲情居|这个毫无存在感的手机品牌,做了一款可能是今年最奇葩的手机
- 闲情居|准备弯道超车?华为放出大招!未来光刻机或将变成废铁?
- 孤街凉巷冰夏|却在里边发现意想不到的东西,小伙在家整理刚刚收来的废品时
- 闲情居|CD机黄金年代的传奇 把玩Revox瑞华士B226 CD机
- 闲情居|突发 | 特斯拉最新事故造成人员伤亡,官方:车辆没有发生故障