java - 深拷贝FlatBuffer对象的方法

标签 java deep-copy flatbuffers

我用 Flatbuffer 表示我的数据。目前我遇到一个问题,我正在将 Flatbuffer 中的大对象集合分成一些小块。

最直接的方法是为每个片段创建一个 FlatBuffers 构建器,然后将对象写入该构建器。但是当对象有点复杂时,逐个结构体复制数据结构是一件相当繁琐的工作。

由于 FlatBuffers 存储相对偏移量,理论上我认为可以简单地复制字节缓冲区以将对象复制到另一个 FlatBuffers 实例中。是否已经有一些可以深度复制的东西可用?我现在用的是java。谢谢

谢谢

最佳答案

这比您想象的要复杂,因为表及其子表在内存中不一定是连续的,并且可能与其他表共享 vtable 等。

最简单的方法是使用嵌套的 FlatBuffers(将子对象粘贴在字节 vector 中),因为这样它就可以轻松复制。

C++中有一个使用反射的深度复制功能,但速度慢,需要二进制模式文件,并且尚未移植到Java。新的“迷你反射”表适用于深度复制,但到目前为止也仅限于 C++。

关于java - 深拷贝FlatBuffer对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47429886/

相关文章:

scala - 如何深度复制混合了特征的类

c++ - flatbuffer c++:是否有可能从 flatbuffers::Vector 窃取

java - 我的 Java 程序没有改变变量的值

java - 检查最终实例变量是否已初始化

java - Quarkus 中如何使用不同的数据源进行读写查询?

.net - 深度复制PSObject

java - Java 中未经检查的强制转换警告

ruby-on-rails - Ruby on Rails对象及其属性的深层复制/深层克隆

c++ - 无法反序列化通过 TCP 接收的 flatbuf 消息

java - 如何通过网络发送 FlatBuffers ByteBuffer?