gpt4 book ai didi

java - 消息的自定义java序列化

转载 作者:行者123 更新时间:2023-12-01 16:11:09 24 4
gpt4 key购买 nike

在线写入消息时,我想写下数据中的字节数,然后写下数据。

消息格式:

{num of bytes in data}{data}

我可以通过将数据写入临时 byteArrayOutput 流,然后从中获取字节数组大小,然后写入大小,然后写入字节数组来实现此目的。这种方法涉及大量开销,即。不必要地创建临时字节数组、创建临时流等。

我们是否有更好的方法(同时考虑 CPU 和垃圾创建)来实现这一目标?

最佳答案

典型的方法是引入可重用的ByteBuffer。例如:

ByteBuffer out = ...

int oldPos = out.position(); // Remember current position.
out.position(oldPos + 2); // Leave space for message length (unsigned short)

out.putInt(...); // Write out data.

// Finally prepend buffer with number of bytes.
out.putShort(oldPos, (short)(out.position() - (oldPos + 2)));

填充缓冲区后,您可以使用 SocketChannel.write(ByteBuffer) 通过线路发送数据(假设您使用的是 NIO)。

关于java - 消息的自定义java序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1193672/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com