每天一个知识点 - 快速了解java序列化

含义

序列化将对象的状态信息转换为可以存储或传输的形式的过程


概念

把数据结构或对象转换为字节序列(二进制字节流)的过程称为对象的序列化

把序列化过程中所生成的字节序列(二进制字节流)恢复为数据结构或对象的过程称为对象的反序列化


序列化和反序列化常见应用场景

  1. 对象在进行网络传输(比如远程方法调用 RPC 的时候)之前需要先被序列化,接收到序列化的对象之后需要再进行反序列化
  2. 将对象存储到文件之前需要进行序列化,将对象从文件中读取出来需要进行反序列化
  3. 将对象存储到数据库(如 Redis)之前需要用到序列化,将对象从缓存数据库中读取出来需要反序列化
  4. 将对象存储到内存之前需要进行序列化,从内存中读取出来之后需要进行反序列化

对象的序列化主要作用

  1. 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件当中
  2. 通过网络传输对象或者说是将对象存储到文件系统、数据库、内存中

序列化操作的具体过程

序列化操作的时候系统会把当前类的SerialVersionUID写入序列化文件当中,当反序列化时系统会去检测文件中的SerialVersionUID,判断它是否与当前类的serialVersionUID一致,如果一致就说明序列化类的版本与当前类版本是一样的,可以反序列化成功,否则失败


如果有些字段不想进行序列化怎么办

对于不想进行序列化的变量,可以使用 transient 关键字修饰。

transient 关键字的作用是:阻止实例中那些用此关键字修饰的的变量序列化;当对象被反序列化时,transient 修饰的变量值不会被持久化和恢复。transient 只能修饰变量,不能修饰类和方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GeekInk失控

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值