问题一:为什么Hessian框架不支持writeObject/readObject方法?
为什么Hessian框架不支持writeObject/readObject方法?
参考回答:
Hessian框架不支持writeObject/readObject方法,主要是因为它在序列化对象时会忽略这两个方法。这导致在实际场景中,很多定义了这两个方法的对象在序列化时会出现状态不一致的错误。因为一些重要的数据字段可能被标记为transient,在writeObject方法中进行特殊处理,而Hessian直接序列化所有非transient字段,可能会丢失数据。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/654745
问题二:Kryo框架在处理定义了JDK自定义序列化方法的对象时有什么问题?
Kryo框架在处理定义了JDK自定义序列化方法的对象时有什么问题?
参考回答:
Kryo框架为了保证序列化的正确性,在遇到定义了writeObject/readObject等JDK自定义序列化方法的对象时,会调用JDK的ObjectOutputStream和ObjectInputStream进行序列化。这种方式存在性能差、数据膨胀以及引用表不一致等问题。具体来说,JDK序列化性能很差,会导致Kryo序列化性能大幅退化;JDK序列化结果很大,会导致Kryo序列化数据膨胀;同时,转发给JDK序列化的对象子图不会跟Kryo共享同一个引用表,如果该子图共享或循环引用了其它对象,则会出现重复序列化或递归栈溢出的问题。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/654746
问题三:Jsonb和Fst框架存在哪些问题?
Jsonb和Fst框架存在哪些问题?
参考回答:
Jsonb框架不支持任何JDK自定义序列化方法,如果尝试反序列化这样的对象,会报错。而Fst框架则不支持类型前后兼容,这意味着在服务化场景中,如果对象的类型发生了变化,可能会导致序列化和反序列化失败。因此,这两个框架在某些特定场景下可能存在使用限制。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/654747
问题四:Hessian和Kryo是否支持父子类中存在重名字段的情况?
Hessian和Kryo是否支持父子类中存在重名字段的情况?
参考回答:
Hessian和Kryo在处理父子类中存在重名字段的情况时都存在问题。这两种框架可能无法正确处理这种情况,导致序列化或反序列化过程中的数据错误或丢失。因此,在某些特定条件下,这也会成为它们的使用限制。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/654748
问题五:Fury早期版本和新版本在序列化流程上有何不同?
Fury早期版本和新版本在序列化流程上有何不同?
参考回答:
Fury早期版本的序列化流程与Kryo类似,在遇到支持JDK自定义序列化方法的对象时,会调用JDK的ObjectOutputStream和ObjectInputStream进行序列化。而新版本(0.9.2版本及以后)则提供了一套基于JIT动态编译的100%兼容JDK自定义序列化的实现,性能得到了数量级的提升。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/654749