透明零拷贝
这个零拷贝和我理解的零拷贝其实是两个东西。这个强调的是ByteBuf之间可以通过零拷贝而获取到一个新的ByteBuf,而我理解的零拷贝是内核级别的。
1
2
3
4
5
6
7
8
9
10
|
// 复合类型与组件类型是兼容的
ByteBuf message = Unpooled.wrappedBuffer(header, body);
// 可以通过混合符合类型与普通缓冲区来创建一个符合类型
ByteBuf messageWithFooter = Unpooled.wrappedBuffer(message, footer);
//
messageWithFooter.getUnsignedInt(messageWithFooter.readableBytes() - footer-readableBytes - 1);
|
我现在好奇的是这种符合类型的引用技术是如何处理的,哈哈。
ByteBuf是支持自动扩容的
1
2
3
4
5
6
7
8
9
10
11
|
ByteBuf b = Unpooled.buffer(4);
b.writeByte('1');
b.writeByte('2');
b.writeByte('3');
b.writeByte('4');
// 当写入的字节数超过初始容量4时,内部缓冲区自动分配具有较大的容量
b.writeByte('5');
|