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

 

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

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

静态static的属性,不序列化

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

private static final long serialVersionUID = 1L;

 

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

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

private Object readResolve() {
    return singleton;
}

  

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

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

 

protobuf

 

posted on 2019-09-01 20:35  MC伍  阅读(189)  评论(0编辑  收藏  举报