深圳商城网站制作,建设网站一定要电脑吗,可以做ppt的网站有哪些方面,深圳宝安区必去景点目录
原生⚔ 自定义
基于 Java 原生序列化机制#xff1a;
基于自定义序列化机制#xff1a;
基于Bean⚔基于Field
基于 Bean 的反序列化#xff1a;
基于 Field 的反序列化#xff1a;
常见序列化协议归类 原生⚔ 自定义
基于 Java 原生序列化机制#xff1a;
特…目录
原生⚔ 自定义
基于 Java 原生序列化机制
基于自定义序列化机制
基于Bean⚔基于Field
基于 Bean 的反序列化
基于 Field 的反序列化
常见序列化协议归类 原生⚔ 自定义
基于 Java 原生序列化机制
特点 使用 Java 原生序列化机制对象需要实现 java.io.Serializable 接口。序列化采用 ObjectOutputStream反序列化采用 ObjectInputStream。简单易用无需额外的序列化和反序列化代码。默认支持复杂对象图的序列化和反序列化但对版本兼容性有一定限制。
基于自定义序列化机制
特点 使用非 Java 原生的序列化格式如 JSON、XML 等。需要使用第三方库或框架来实现自定义序列化和反序列化逻辑如 Jackson、Gson 等。序列化格式通常更紧凑、可读性好支持跨语言、跨平台的数据交互。可以更灵活地处理复杂对象结构、版本变更等问题提供更好的兼容性和扩展性。 基于Bean⚔基于Field
基于 Bean 的反序列化
如SnakeYAML、jYAML、YamlBeans、Apache Flex BlazeDS、Red5 IO AMF、Jackson、Castor、Java XMLDecoder 原理 基于 Bean 的反序列化是通过对象的 getter 和 setter 方法来读取和设置对象的属性值。在反序列化过程中会根据属性名调用相应的 setter 方法为对象的属性赋值。 优点 封装性好使用 getter 和 setter 方法可以隐藏对象的内部实现细节提供统一的访问接口。安全性高可以通过控制 setter 方法来对属性值进行校验和处理增强安全性。 缺点 反序列化过程受限需要保证类中存在对应的 setter 方法才能正确反序列化对象。可能影响性能频繁调用 getter 和 setter 方法可能影响性能特别是在大量对象的反序列化过程中。 基于 Field 的反序列化
如Java Serialization、Kryo、Hessian、json-io、XStream 原理 基于 Field 的反序列化直接操作对象的字段Field不通过 getter 和 setter 方法。在反序列化过程中会直接操作对象的字段来设置属性的值。 优点 灵活性高可以直接访问对象的字段无需依赖 getter 和 setter 方法。性能较好直接操作字段可能比通过方法调用更高效。 缺点 破坏封装性直接操作字段可能破坏对象的封装性暴露对象的内部实现细节。安全风险绕过 setter 方法可能导致属性值未经校验存在安全风险。 常见序列化协议归类 序列化协议 特点 jdk jdk 自带 1. 序列化除了 static、transient类型 2. 特点强类型安全性高序列化结果携带类型信息 3. 反序列化基于 Field 机制 4. 应用场景深拷贝 fastjson 第三方实现 1. 可读性好空间占用小 2. 特点弱类型序列化结果不携带类型信息可读性强。有一些安全性问题 3. 反序列化基于 Field 机制兼容 Bean 机制 4. 应用场景消息、透传对象 hessian 第三方实现 1. 序列化除了 static、transient 类型 2. 特点强类型体积小可跨语言序列化结果携带类型信息 3. 反序列化基于 Field 机制兼容 Bean 机制 4. 应用场景RPC