Netty NIO之ByteBuffer

最重要的四个指标:

Capacity: 当前ByteBuffer的容量

Position:当前模式下的位置 (写:写到什么位置了,读:读到什么位置了)

Limit: 当前模式下的限制位置(写:写到这不能继续再写了。再写就报错,读:读到这就没有了,再读就打你)

Mark: 记录下当前的状态,以便于回归。

重要的几个方法:

flip:

就是状态模式的转换,写转读。  就是通过修改position,limit来进行的。

public final Buffer flip() {
    limit = position; // 设置读取上限
    position = 0; // 重置 position
    mark = -1; // 清空 mark
    return this;
}

rewind:倒带,从它的代码中就能看出来,这个操作知识重置了postion的值,对于limit并没有修改,证明对于操作的位置还是有限制的,这样就更适用于读,如果是适用于写的话,应该将 capacity赋值给limit

public final Buffer rewind() {
    position = 0; // 重置 position
    mark = -1; // 清空 mark
    return this;
}

clear: 上面刚说完适用于读恢复的操作,下面就是写恢复的操作。

public final Buffer clear() {
    position = 0; // 重置 position
    limit = capacity; // 恢复 limit 为 capacity
    mark = -1; // 清空 mark
    return this;
}

mark,reset:

mark就是给当前byteBuffer标记一个状态,记录此时的postion的值,reset就是在一系列操作之后,能根据mark进行恢复当时的状态将 mark的值赋值给position

public final Buffer mark() {
    mark = position;
    return this;
}
public final Buffer reset() {
    int m = mark;
    if (m < 0)
        throw new InvalidMarkException();
    position = m;
    return this;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值