我的netty之旅(4)

关于nio,其实就是单线程的阻塞式io流,但是传统的io流都是单向,out或者in,在netty中有了一个全新的类就是buffer, buffer有六种,对应java的除了bool的其他类型,而且是双向的,既可以是写入也可以是写出,在buffer接口中有三个重要的元素,capacity,limit和position,position相当于左边,index, capacity是整个容器的容量,limit是可使用的容量,有flip方法可以控制反转,还有clear和rewind方法。
bytebuffer创建方法两种

ByteBuffer.allocate(1024); 

byte[] b1=new byte[] {1};
	ByteBuffer.wrap(b1);

DirectByteBuffer和keepbytebuffer的区别,是DirectByteBuffer会调用系统本身内存,不需要copy到虚拟机上,实现零拷贝,所以效率比较高,keepbytebuffer是jvm里先生成一份,再把数据拷贝到java模型之外的操作系统当中,然后直接和io设备交互,除此之外还有只读Buffer,就是直接把write重新了,只要调用就报错

ByteBuffer b = ByteBuffer.allocate(1024);
ByteBuffer asReadOnlyBuffer = b.asReadOnlyBuffer();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值