gpt4 book ai didi

java - 是否有一个 Java ByteBuffer 实现在底层结合了多个支持 ByteBuffer?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:38:10 25 4
gpt4 key购买 nike

我有一个或多个 ByteBuffer,其中包含一条消息的部分内容。现在我想阅读此消息,但我不想将 N ByteBuffer 复制到一个中。我的解析器需要一个包含完整消息的 ByteBuffer,但我的消息被分成 N 个 ByteBuffers。

有没有办法将这 N 个 ByteBuffers 组合成一个而不用字节复制?我设想了 ByteBuffer 抽象类的某种智能实现,这些 ByteBuffer 在底层由这些 ByteBuffer 支持,只需将指针和委托(delegate)调整到正确的 ByteBuffer。

如果您对我为什么需要它感到好奇,请查看下面来自 BM&F/Bovespa 的协议(protocol)。它们将消息分成 block ,并且它们可以在不同的数据包中乱序出现,换句话说,相同的消息序列可以出现在多个数据包中,每个数据包都有一个消息 block 。我不能按顺序写入同一个 ByteBuffer,因为这些 block 可能是无序的。 :(

我是不是漏掉了一些更聪明的东西?鉴于下面的 block 协议(protocol),看起来没有办法顺序写入同一个 ByteBuffer。 :(

enter image description here enter image description here

最佳答案

我认为您正在寻找的数据结构被称为(据我所知)Chain Buffer。在内部,它是一个动态增长的字节数组或缓冲区集合(例如 Java 中的 ArrayList),而在外部,该结构就像一个常规的 Buffer

如果您处理性能,它会非常方便,尽管某些操作的实现可能并非完全微不足道(例如,搜索给定模式的位置)。

我所知道的唯一公共(public) Java 实现是 ChainBufferKraken由 NCHOVY(尽管不再维护)。

关于java - 是否有一个 Java ByteBuffer 实现在底层结合了多个支持 ByteBuffer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25903776/

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