序列化

Posted jhin-wxy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了序列化相关的知识,希望对你有一定的参考价值。

序列化:把对象转换为字节序列的过程称为对象的序列化。
反序列化:把字节序列恢复为对象的过程称为对象的反序列化。

 

通过实现Serializable接口来达到目的

transient 修饰的属性,不会被序列化

静态static的属性,不序列化

需要显式的声明serialVersionUID这个属性,如果不声明,java会自动赋值,但会与反序列化时生成的UID不同,会抛出异常

private static final long serialVersionUID = 1L;

 

序列化会通过反射调用无参数的构造方法创建一个新的对象,对单例进行了破坏

在单例类中添加定义readResolve即可解决

private Object readResolve() 
    return singleton;

  

序列化的文件中的数据为明文存储,存在一定的安全风险,需谨慎使用

方序列化时,如cookie,可能会出现客户端篡改权限的问题

 

protobuf

 

以上是关于序列化的主要内容,如果未能解决你的问题,请参考以下文章

什么是序列化? 如何实现(反)序列化 序列化的应用

什么是序列化? 如何实现(反)序列化 序列化的应用

如何序列化/反序列化的ArrayList

什么是java的序列化和反序列化?

Netty_05_六种序列化方式(JavaIO序列化 XML序列化 Hessian序列化 JSON序列化 Protobuf序列化 AVRO序列化)(实践类)

Netty_05_六种序列化方式(JavaIO序列化 XML序列化 Hessian序列化 JSON序列化 Protobuf序列化 AVRO序列化)(实践类)