序列化机制原理及实现

序列化是什么?

序列化就是指对象通过写出描述自己状态的数值来记录自己的过程,即将对象表示成一系列有序字节(二进制文件),反序列化是将顺序倒过来,从有序的字节中表示成原来的对象

序列化的用途?

序列化在开发中经常用到,主要的应用场景在网络传输和文件IO流得写入和写出,网络传输上,客户端将对象序列化为二进制字节然后传输到服务器,服务器反序列化为对象,进行逻辑处理。

java实现得序列化机制的原理:

java提供了将对象写入流和从流中恢复对象的方法。对象能包含其它的对象,而其它的对象又可以包含另外的对象。对于一个对象的简单域,writeObject()直接将其值写入流中。当遇到一个对象域时,writeObject()被再次调用,如果这个对象内嵌另一个对象,那么,writeObject()又被调用,直到对象能被直接写入流为止。程序员所需要做的是将对象传入ObjectOutputStream的writeObject()方法,剩下的将有系统自动完成。
java实现得序列化的具体步骤:

  1. 实现Serializable接口
  2. ObjectInputStream  : 表示读取指定的字节数据转换成对象
  3. ObjectOutputStream 

序列化机制的常见问题:

serialVersionUID的作用 

保证序列化和反序列化的对象是一致的,一面错误异常。

静态变量的序列化

序列化并不保存静态变量的状态

Transient关键字

transient关键字表示指定属性不参与序列化

父子类问题

如果父类没有实现序列化,而子类实现列序列化。那么父类中的成员没办法做序列化操作

序列化的存储规则

对同一个对象进行多次写入,打印出的第一次存储结果和第二次存储结果,只多了5个字节的引用关系。

并不会导致文件累加

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值