just take notes to 'discover the secrets of java serialization.
http://java.sun.com/developer/technicalArticles/Programming/serialization/
Default Mechanism:
Rule #1: The object to be persisted must implement the Serializable
interface or inherit that implementation from its object hierarchy.
to actually persist the object, use ObjectOutputStream.writeObject();
Nonserializable object:
when a field we don't want to serialize, e.g, thread, OutputStream, socket, follow the rules:
Rule #2: The object to be persisted must mark all nonserializable fields transient
Customize the protocol
when want to recover the state like thread, can use this:
private void writeObject(ObjectOutputStream out) throws IOException;
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException;
Create your own protocol
you can implement Externalizable interface to build your own protocol
public void writeExternal(ObjectOutput out) throws IOException;
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException;
Version Control
all persistent-capable
classes are automatically given a unique identifier. The identifier that is part of
all classes is maintained in a field called serialVersionUID
.
If you wish to control versioning, you simply have to provide the serialVersionUID
field manually and ensure it is always the same, no matter what changes you make to
the classfile.
The version control works great as long as the changes are compatible. Compatible
changes include adding or removing a method or a field. Incompatible changes
include changing an object's hierarchy or removing the implementation of the
Serializable
interface. A complete list of compatible and incompatible
changes is given in the Java Serialization Specification.
分享到:
相关推荐
"Faster Java Serialization"项目正是为了解决这个问题而诞生的,它通过采用开源的方式,提供了比默认Java序列化更快的实现。这个项目的核心在于运行时生成定制的序列化代码,以优化序列化和反序列化过程。这种做法...
- **序列化与反序列化**:BRAP使用高效的序列化技术,如Google的Protocol Buffers或Java自带的Java serialization,将对象转换为字节流在网络中传输,到达目的地后再反序列化恢复为对象。 - **通信协议**:BRAP...
Java Serialization - **序列化概述**:Java 中的对象可以通过实现 `Serializable` 接口来支持序列化。序列化是指将对象的状态转换为字节流的过程,以便能够将其保存到磁盘上或通过网络传输。 - **序列化的使用**...
### Java Streams 和 Serialization 详解 在Java编程语言中,数据的读取与写入操作是通过流(Streams)实现的。此外,为了保存对象的状态,Java提供了序列化(Serialization)机制。本文将深入探讨Java中的流操作...
Item 85: Prefer alternatives to Java serialization Item 86: Implement Serializable with great caution Item 87: Consider using a custom serialized form Item 88: Write readObject methods defensively ...
这意味着,即使不是所有序列化机制都像Java Serialization那样功能强大,它们仍然可以成为攻击者的利用目标。 7. 安全建议 虽然文档并未明确提供具体的解决方案,但从中可以推断出,开发者和安全研究人员应采取以下...
Java Serialization, java Tutorial
因此,你需要添加如`java serialization`相关的jar包,例如`serp.jar`(用于Java反序列化)或者`kryo`、`FST`等第三方序列化库,以支持Java对象的序列化和反序列化。 在实际部署中,你可能需要按照以下步骤操作: ...
### 实现高效Java线程序列化、移动性和持久性的经验 #### 概述 随着分布式计算的发展,移动性与持久性成为了重要的组成部分。这些特性在负载均衡、容错以及应用程序的动态重构等领域有着广泛的应用场景。Java作为...
1. **Java Serialization**:Java平台默认的序列化方式,简单易用,但性能较差,且序列化的对象必须实现Serializable接口。 2. **Hessian2**:一种快速的二进制序列化协议,它将Java对象转换为高效的字节流,适合于...
- **Java序列化(Java Serialization)**:JINI使用Java序列化机制来传递服务的接口和实现。 - ** Lease管理**:服务和客户端之间的租约机制,用于控制服务使用时间,确保服务的可靠性和容错性。 ### 2. JINI服务...
Java序列化机制是Java平台提供的一种标准方法,用于将对象的状态转换为字节流,以便存储在磁盘上,或者在网络中进行传输。这使得Java对象可以在不同的Java虚拟机(JVM)之间交换,这对于分布式应用程序,如远程方法...
是否使用了标准的序列化库,如Java的Java serialization,或是自定义的机制? - 请求和响应的网络传输部分是如何设计的?是基于HTTP还是直接TCP连接? - 调用处理中如何实现同步/异步调用,以及错误处理? 通过研究...
Fast, efficient Java serialization java序列化jar包
Spark 提供了多种序列化方式,如 Java Serialization、Kryo Serialization 和 Java Serialization 等。在这篇文章中,我们使用 Java Serialization 将对象序列化。 知识点 2:HDFS 的存储 HDFS(Hadoop Distributed...
4. **Java序列化(Java Serialization)**:JINI技术依赖于Java的序列化机制来跨网络传输对象。服务提供者和消费者之间的通信通常涉及对象的序列化和反序列化。 5. **信任模型(Trust Model)**:由于JINI允许网络...
Java提供了多种序列化机制,如Java Serialization、JSON Serialization等。在本篇文章中,我们将使用Java Serialization进行序列化。 存储对象 为了存储对象,我们需要将对象序列化成字节数组,然后将其存储在...
此外,Dubbo还提供了多种序列化协议(如Hessian、Java serialization等),用户可以根据实际需求选择合适的协议以优化网络传输性能。 #### 3. 智能路由与负载均衡 为了实现更高效的服务调度,Dubbo内置了一套智能...