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周期的成本.

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...