Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 旧版本之间的数据格式兼容性_Java_Serialization_Upgrade_Backwards Compatibility_Thrift - Fatal编程技术网

Java 旧版本之间的数据格式兼容性

Java 旧版本之间的数据格式兼容性,java,serialization,upgrade,backwards-compatibility,thrift,Java,Serialization,Upgrade,Backwards Compatibility,Thrift,我正在尝试升级一个使用Thrift 0.2库进行通信的系统。由于这是一个相当旧的版本(最新的稳定版本是0.5),而且据称性能有了显著的改进(在0.4中),所以我希望升级。但是,我找不到有关底层数据格式是否有不兼容更改的信息。基于版本控制方案,人们希望没有;但是,由于这些仍然是1.0之前的版本,因此对稳定性的期望可能会降低 我之所以希望了解到数据格式本身是向后兼容的,是因为它允许逐个升级组件 无论如何:我希望有更多信息的人能给我指出正确的文档 。。。我们不再使用byte[]作为二进制字段的底层数据

我正在尝试升级一个使用Thrift 0.2库进行通信的系统。由于这是一个相当旧的版本(最新的稳定版本是0.5),而且据称性能有了显著的改进(在0.4中),所以我希望升级。但是,我找不到有关底层数据格式是否有不兼容更改的信息。基于版本控制方案,人们希望没有;但是,由于这些仍然是1.0之前的版本,因此对稳定性的期望可能会降低

我之所以希望了解到数据格式本身是向后兼容的,是因为它允许逐个升级组件

无论如何:我希望有更多信息的人能给我指出正确的文档

。。。我们不再使用byte[]作为二进制字段的底层数据类型,而是改用ByteBuffer。这意味着我们可以避免在反序列化过程中进行不必要的字节数组分配和复制。这种方法比旧方法快了整整2.5倍,这还不足以减少垃圾收集时间为了升级,您肯定需要对代码进行一些更改,但您仍然会发现这是值得的


摘自文件。源代码中的相关更改:。

Btw;我终于有机会使用更新版本的Thrift,虽然对特定部分的更改可能会带来2.5倍的提升,但阅读用例部分的总体提升为+50%(即阅读相同数量的数据所需的时间减少了约33%)。这是一个很好的改进。在使用0.5.0之后,我注意到生成的代码不是即插即用的——实现扩展的基类具有不同的API——但幸运的是,wire格式看起来是相同的(大小至少没有改变)。