Java序列化的机制原理(一)

本文深入探讨Java序列化的机制,包括序列化算法步骤、名词解释、数据结构解析,以及对象属性的值如何被序列化。通过实例解析序列化后的数据,帮助开发者理解序列化的内部工作原理,适用于数据持久化、跨服务通信和Redis缓存等场景。
摘要由CSDN通过智能技术生成

引言

序列化是Java开发中不可或缺的一部分,对于大多数开发人员也是非常熟悉,使用频繁。在项目中的使用场景也很多,例如:数据持久化保持、项目内不同服务间通信、Redis缓存等。所以需要开发人员掌握这方面的知识,本文就实现Serializable接口,来进行解析序列化后的数据。
我们在将对象进行序列化后,会发现序列化后的对象文本跟类文本文件并不一样大,这是为什么呢?这是因为序列化后的文本存储方式不一样导致的。

正文

一、序列化算法一般步骤

  1. 将对象实例相关的类元数据输出。
  2. 递归地输出类的超类描述直到不再有超类。
  3. 类元数据完了以后,开始从最顶层的超类开始输出对象实例的实际数据值。
  4. 从上至下递归输出实例的数据

二、名词解释

直接类:开始输出直接被序列化的类(以下简称“直接类”,是相对于“直接类”的父类,和“直接类”中所包含的对象型属性的类而言)的描述
现在通过用二进制查看序列化后代码进行分析序列化后的数据。以下相关解释可以通过java.io.ObjectStreamConstants找到相关解释。

三、序列化后数据

在这里插入图片描述

四、相关数据解释

首先可以看到代码全部都是十六进制数据,接下来就一一解读相关意义(为什么依两个十六进制的数字为分隔,这个是因为两个十六进制最大刚好代表一个字节,方便解释)

五、数据结构解析(子类及父类)

AC ED:代表使用了序列化协议。
java.io.ObjectStreamConstants.STREAM_MAGIC 对应这个常量
00 05:代表序列化协议版本。
java.io.ObjectStreamConstants.STREAM_VERSION 对应这个常量
73:代表这是一个新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值