hello啊,各位观众姥爷们!!!本baby今天又来了!哈哈哈哈哈嗝🐶
什么是序列化?什么是反序列化?
序列化(Serialization)
定义:
序列化是将对象的状态转换为可存储或可传输的格式(如字节流、JSON、XML等)的过程。其核心目的是将对象持久化到磁盘、数据库,或通过网络传输到其他系统。
关键点:
- 对象 → 字节流:将内存中的对象转换为连续的字节序列。
- 跨平台/跨语言:序列化后的数据可以被其他系统(如不同编程语言、不同设备)读取。
- 用途:
- 网络传输(如RPC、HTTP请求)。
- 持久化存储(如保存到文件、Redis、数据库)。
- 分布式系统间数据交换。
示例:
- Java中通过实现
Serializable
接口:java">public class User implements Serializable { private String name; private int age; // getter/setter... }
- 使用JSON序列化:
{"name": "张三", "age": 25}
反序列化(Deserialization)
定义:
反序列化是序列化的逆过程,将序列化后的数据(如字节流、JSON)重建为内存中的对象,恢复其原始状态。
关键点:
- 字节流 → 对象:根据序列化规则,将数据还原为对象的实例。
- 校验与兼容性:
- 类的结构(如字段名、类型)需与序列化时兼容,否则可能失败。
- 可通过版本号(如Java的
serialVersionUID
)避免兼容性问题。
- 安全风险:
- 反序列化不可信数据可能导致漏洞(如Java反序列化攻击)。
示例:
- Java反序列化:
java">try (ObjectInputStream in = new ObjectInputStream(new FileInputStream("user.dat"))) { User user = (User) in.readObject(); }
- JSON反序列化:
java">// 使用Jackson库 ObjectMapper mapper = new ObjectMapper(); User user = mapper.readValue(jsonString, User.class);
序列化与反序列化的核心对比
特性 | 序列化 | 反序列化 |
---|---|---|
方向 | 对象 → 字节流/文本 | 字节流/文本 → 对象 |
目的 | 持久化、传输 | 重建对象 |
依赖条件 | 对象需支持序列化接口/协议 | 目标类必须存在且结构兼容 |
常见格式 | 二进制、JSON、XML、Protobuf | 同左 |
常见问题与注意事项
-
性能问题:
- 二进制序列化(如Java原生、Protobuf)效率高,但可读性差。
- 文本序列化(如JSON、XML)可读性好,但体积大、解析慢。
-
版本兼容性:
- 修改类的字段或方法后,旧序列化数据可能无法反序列化。
- 解决方案:
- 使用版本号(
serialVersionUID
)。 - 使用向后兼容的格式(如JSON忽略未知字段)。
- 使用版本号(
-
安全问题:
- 反序列化恶意数据可能导致代码执行(如Java的
readObject
方法被攻击)。 - 防范措施:
- 避免反序列化不可信数据。
- 使用白名单验证反序列化的类。
- 反序列化恶意数据可能导致代码执行(如Java的
-
跨语言支持:
- 特定格式(如Java原生序列化)仅限Java生态。
- 通用格式(如JSON、Protobuf)支持多语言。
主流序列化技术对比
技术 | 格式 | 性能 | 跨语言 | 可读性 | 典型应用场景 |
---|---|---|---|---|---|
Java原生 | 二进制 | 高 | 仅Java | 差 | Java RMI、缓存 |
JSON | 文本 | 中 | 是 | 优 | REST API、配置文件 |
XML | 文本 | 低 | 是 | 优 | 旧系统、SOAP协议 |
Protobuf | 二进制 | 极高 | 是 | 差 | 微服务、高性能通信 |
Hessian | 二进制 | 高 | 是 | 差 | 跨语言RPC(如Dubbo) |
Avro | 二进制 | 高 | 是 | 差 | Hadoop、大数据存储 |
🤭
- 序列化是对象持久化和传输的桥梁,反序列化是数据还原为对象的关键步骤。
- 选择序列化技术需权衡性能、跨语言支持、可读性等因素。
- 实际开发中,推荐优先使用通用性强、安全性高的格式(如JSON、Protobuf),避免过度依赖语言特定的序列化机制。
IDEA ji huo
https://pan.quark.cn/s/4216736c0427
最新🎬大全(唐探)
https://kdocs.cn/l/cqhxNU9I2lLD
deepSeek最全资料包
https://pan.quark.cn/s/2308ac09ed43