我正在使用以下代码将 byte[] 写入编年史队列,
excerptAppender.writeBytes(b -> b.write(data));
如何从队列中读回相同的 byte[]。我发现了这样的东西,
excerptTailer.readBytes(b-> b.read(bytes));
但在这种情况下,我需要长度。我是否需要单独编写长度并读取相同的长度以创建字节 []。?
或者有没有办法让框架本身处理长度,这样我们就可以读起来像,
excerptTailer.readBytes();
我找不到太多关于此的文档。
从 github 得到这个样本,
assertTrue(tailer.readBytes(b -> {
long address = b.address(b.readPosition());
Unsafe unsafe = UnsafeMemory.UNSAFE;
int code = unsafe.getByte(address);
address++;
int num = unsafe.getInt(address);
address += 4;
long num2 = unsafe.getLong(address);
address += 8;
int length = unsafe.getByte(address);
address++;
byte[] bytes = new byte[length];
unsafe.copyMemory(null, address, bytes, Unsafe.ARRAY_BYTE_BASE_OFFSET, bytes.length);
String text = new String(bytes, StandardCharsets.UTF_8);
assertEquals("Hello World", text);
// do something with values
}));
这是否推荐用于生产。?