1.概念
序列化:把对象转为字节或者字符的过程
反序列化:把字节或者字符转为对象的过程
2.序列化应用场景
(1)网络通讯(微服务架构中,服务之间的调用Dubbo框架中的RPC调用)
(2)存储数据(文件或者缓存)
3.java中如何序列化和反序列化
(1)对象实现serializable接口
(2)添加序列化id(为反序列化提供保障)
(3)借助流对象完成序列化与反序列化
4.如何解决序列化和反序列化过程中的安全问题
(1)添加writeObejct(ObjectOutputStream out),方法对内容加密后再序列化
(2)添加readObejct(ObejctInputStream),反序列化之后再解密
5.序列化粒度控制
(1)transient(不需要序列化的属性添加该关键字)适用于少量属性不需要序列化
(2)实现Externalizable(需要序列化的属性,在重写方法(writeExternal/readExternal)中去序列化和反序列化),适用于只有少量属性需要序列化
6.序列化性能
java中序列化相对较差,底层会将元数据和数据全部序列化
借助第三方框架直降对象数据序列化提高性能(Kryo)