Vert.x 3学习笔记---05

Buffers
在vertx中,写数据和读数据都会使用到缓冲区。

Creating buffers

创建一个buffer可以使用静态的方法Buffer.buffer来构造;
Buffers can be initialised from strings or byte arrays, or empty buffers can be created.
buffer可以从一个字符串、字节数组或者空buffer来初始化创建。

//使用空的静态方法来构造
Buffer buff = Buffer.buffer();
//使用字符串的静态方法来构造
Buffer buff = Buffer.buffer("some string");
Buffer buff = Buffer.buffer("some string", "UTF-16");
//使用字节数组的静态方法来构造
byte[] bytes = new byte[] {1, 3, 5};
Buffer buff = Buffer.buffer(bytes);

note:如果你能确定buffer的大小的话,可以在构造buffer的时候就确定其大小,这样可以优化性能。但是这样的话,创建的buffer就是一个空的,而不是零填充

Buffer buff = Buffer.buffer(10000);

Writing to a Buffer

有两种方法将数据写入缓冲区:appending 和 random access(随机存取)。buffer会自动的增长来存储所加入的数据。

Appending to a Buffer

使用appendXXX方法,或者append方法。

Buffer buff = Buffer.buffer();

buff.appendInt(123).appendString("hello\n");

socket.write(buff);

Random access buffer writes

Buffer buff = Buffer.buffer();

buff.setInt(1000, 123);
buff.setString(0, "hello");

此方法使用的是setXXX方法,第一个参数为index(下标),第二个是data(数据)。

Reading from a Buffer

从缓冲区中读取数据,可以使用getXXX方法。

Buffer buff = Buffer.buffer();
for (int i = 0; i < buff.length(); i += 4) {
  System.out.println("int value at " + i + " is " + buff.getInt(i));
}

Working with unsigned numbers

unsigned numbers 能够从一个buffer中read、或者写入append、set;使用的方法为:getUnsignedXXX, appendUnsignedXXX and setUnsignedXXX。
这是很有用的,对于自定义了codec的消息格式来说。

Buffer buff = Buffer.buffer(128);
int pos = 15;
buff.setUnsignedByte(pos, (short) 200);
System.out.println(buff.getUnsignedByte(pos));//200

Buffer length

Use length to obtain the length of the buffer. The length of a buffer is the index of the byte in the buffer with the largest index + 1.

Copying buffers

Use copy to make a copy of the buffer

Slicing buffers

A sliced buffer is a new buffer which backs onto the original buffer, i.e. it does not copy the underlying data. Use slice to create a sliced buffers

Buffer re-use

After writing a buffer to a socket or other similar place, they cannot be re-used.
将buffer写入到socket中或者其他相似的地方后,buffer是不能重复使用的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值