java – 原始缓冲区的限制 – 加载部分数据和共享字符串

前端之家收集整理的这篇文章主要介绍了java – 原始缓冲区的限制 – 加载部分数据和共享字符串前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想检查原始缓冲区是否是我使用的最好的序列化程序,我的研究发现没有其他的接近.
我正在处理 java后端和android( java)移动应用程序,但是可能在不久的将来会创建其他客户端,所以我想要一个跨平台的东西.
数据结构粗略:
message All {
    repeated Line lines = 1;
    Common common = 2;
}

有几百个Line对象,每行都相当复杂,自己需要〜100 kB.

我使用原始缓冲区看到的两个问题
– 在应用程序启动时,我只需要一小部分可用的数据 – 只需“常用”和“Line”的基本信息.是否可以加载部分数据?
– 每个Line对象包含数百个字符串,但是在多个Line对象中会出现相同的字符串,因此我想尝试在这些对象之间共享它们.是否可能在原始buf级别,还是需要成为应用程序级别的一部分?

谢谢!

解决方法

从您给出的有限规格,很难给出适当的反馈.你说,对于你的问题,最好的解决方案似乎是protobuf,但是我们不能从给出的信息重新评估.

根据你写的内容,我甚至会说一个简单的GZIPped字节数组(或者大部分是可打印的JSON)(可以说是他们是Strings))可能会更好(“重复使用”跨线对象的很多东西=&gt ; GZIP将摇滚).

正如其他人所说:使用protobuf,不可能加载“部分数据结构”(实际上你不会是部分数据结构),只要“重复”部分是一个集合,因为比protobuf将会分配你的结构本身的数据).

我会把我的两美分GZIPped JSON流(例如,与杰克逊),当然,在这种情况下,您将减少带宽与cpu周期的成本.

猜你在找的Java相关文章