把一个Java对象转换为字节序列的过程称为对象的序列化。反过来称为反序列化。
java中引入这项技术是为了RMI和javabean。
为什么要用serialVersionUID呢?根本的原因是在于本地和远程的持有的同一个类的版本可能是不同的。即是在本地序列化的是新版本的类对你实例,但在远程却是用旧版本的类进行反序列化,这时就会出现问题。为了识别出类的定义的不同版本的,为这每个要序列化的类定义一个serialVersionUID。有些业务场景下,虽然类的定义变化了,但是在业务上可以认为是同样的版本,这时要为类的不同版本定义相同的serialVersionUID;还有些业务场景下,不希望类的不同版本对序列化兼容,因此需要确保类的不同版本具有不同的serialVersionUID。
其实他的应用场景是这样的:
对于同一个类A,它在本地JVM中的版本和远程JVM中可能是不一样的,这时,当远程却用旧版本的类信息去返序列化传送来的新版本的字节序列时,就会出问题。
当在本地JVM中将类A序列化,然后通过网络发送到远程端时,远程JVM
首先,serialVersionUID的值完全是由Java运行时环境根据类的内部细节自动生成的。如果对类的源代码作了修改,再重新编译,新生成的类文件的serialVersionUID的取值有可能也会发生变化。
分享到:
相关推荐
Serializable接口和Externalizable接口实现序列化和反序列化
详细讲解序列化应用和反序列化功能,帮助你理解和使用序列化。
理解.net反射 泛型 序列化 的精美PPT
Java_Serializable(序列化) 的理解和总结
在我们深入探讨C#序列化和反序列化之前我们先要明白什么是序列化,它又称串行化,是.NET运行时环境用来支持用户定义类型的流化的机制。序列化就是把一个对象保存到一个文件或数据库字段中去,反序列化就是在适当的...
深入理解Java虚拟机-Java内存区域透彻分析(序列化、反序列化概念及其使用场景+实现序列化的方式+transient关键字)
能够很好的理解序列化是怎么回事
序列化和反序列化相信大家都经常听到,也都会用, 然而有些人可能不知道:.net为什么要有这个东西以及.net Frameword如何为我们实现这样的机制, 在这里我也是简单谈谈我对序列化和反序列化的一些理解。 一、什么...
本篇文章是对Java中对象的序列化与反序列化进行了详细的分析介绍,需要的朋友参考下
但首先要理解的是,“反序列化漏洞”是对一类漏洞的泛指,而不是专指某种反序列化方法导致的漏洞,比如Jackson反序列化漏洞和Java readObject造成的
对Java序列化的深入了解不仅可以展示你的编程技能,还能体现出你对Java核心概念的掌握。本文精选了20道复杂的Java序列化面试题,并提供了详细的解析,旨在帮助你更好地理解Java序列化的原理、应用和相关问题。通过...
个人理解,序列化和反序列化就是一种压缩和解压的过程。压缩和解压讲究一个速度和大小 2、translate 禁止序列化 3、破坏translate java 和file 、javaXML 都可以通过重写私有readObject和writeObject进行破坏...
这个Demo详细演示了应用.Net的序列化和反序列化来配置数据库连接信息。对理解和使用序列化和反序列化有帮助。有详细注释 在VS2008上开发测试通过
这篇文章主要讲述XML与对象的序列化与反序列化。并且会附上一些简单的序列化与反序列化方法,供大家使用。假设我们在一个Web项目中有这样两个类复制代码 代码如下:public class Member { public string Num { get; ...
序列化和反序列化相信大家都经常听到,也都会用, 然而有些人可能不知道:.net为什么要有这个东西以及.net Frameword如何为我们实现这样的机制, 在这里我也是简单谈谈我对序列化和反序列化的一些理解。 一、什么...
Serializer ++小型,轻巧和易于理解的C ++数据序列化库。 这是从Bvckup 2的实时资源中摘录的,它并不是要成为通用的序列化库,而是可以在现实生活中使用的Serializer ++,它是C ++的小巧,轻便且易于理解的数据序列...
对象序列化是指将对象的状态转换为字符串(来自我这菜鸟的理解,好像有些书上也是这么说的,浅显易懂!); 序列化(Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程(来自“百度百科—序列化...
刚开始对java可序列化完全一片空白,看了这个文档有所理解了
主要介绍了Python 序列化与反序列化的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下