`
Tonyguxu
  • 浏览: 279624 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【Java IO】Java的序列化机制

 
阅读更多

Java序列化机制采用的序列化算法:

1.所有保存到磁盘中的对象都有一个序列化编号

2.当程序试图序列化一个对象时,程序首先会检查该对象是否被序列化过,如果没有(在本次虚拟机中),系统才会将该对象转化为字节序列并输出。

3.如果某个对象已经被序列化过,程序直接输出一个序列化编号,不会对该对象序列化。

 

Hadoop没有采用Java 对象序列化机制的原因:

 

自定义序列化

1.属性前加 “transient”,忽略该属性的序列化 ——反序列化恢复对象时无法获得该属性值。

2.在序列化和反序列化中需要特殊处理的类提供如下方法:

private void writeObject(java.io.ObjectOutputStream out)

private void readObject(java.io.ObjectInputStream in)

3.实现Externalizable接口

void writeExternal(java.io.ObjectOutput out)——保存对象状态(基本类型和引用类型的属性值)

void readExternal(java.io.ObjectInput in)——反序列化(恢复基本类型和引用类型属性值)

 

Serializable和Externalizable序列化机制的对比

1.系统自动存储必要信息  vs   程序员决定存储哪些信息

2.java内建支持 vs  实现两个方法

3. 性能较差 vs 性能较高

 

“关于Java 对象序列化您不知道的 5 件事” 

分享到:
评论

相关推荐

    C#和Java的序列化反序列化

    本篇文章将深入探讨C#和Java中的序列化与反序列化机制。 首先,我们要了解什么是序列化。序列化是指将对象的状态转化为可存储或可传输的数据格式的过程。这个过程通常将内存中的对象转换成字节流,以便保存到磁盘、...

    java.io.Serializable序列化问题

    ### Java.io.Serializable 序列化问题详解 #### 一、序列化的概念与作用 在 Java 编程语言中,序列化是一种将对象的状态(即成员变量的值)转换为可以存储或传输的形式的过程。通常,这种形式是字节流,但也可以是...

    java 对象的序列化与反序列化

    Java对象的序列化和反序列化是Java编程中一项重要的技术,主要用于将对象的状态转换为字节流,以便存储或在网络上传输。这一过程对于理解Java的IO操作、持久化数据以及实现分布式通信等场景非常关键。 首先,我们来...

    Java序列化_Java序列化结构_

    Java序列化是Java平台中的一种持久化机制,它允许对象的状态被转换成字节流,以便存储、网络传输或在不同时间点恢复...理解和熟练掌握序列化机制,以及知道如何避免其潜在问题,对于任何Java开发者来说都是至关重要的。

    IO流与序列化

    在Java编程语言中,`IO流`(Input/Output Stream)和`序列化`是两个重要的概念,它们在处理数据传输、持久化存储以及对象状态的保存等方面发挥着关键作用。 **IO流**: IO流是Java提供的用于处理输入输出操作的机制...

    java对象序列化和反序列化

    2. **接口**: 实现序列化的类需要实现`java.io.Serializable`接口。这个接口是一个标记接口,没有定义任何方法,但是通过实现这个接口,表明类的对象是可以被序列化的。 3. **过程**: - 序列化:使用`java.io....

    Java序列化

    - Java序列化是Java平台提供的一种持久化机制,它允许将对象转换为字节序列,这样就可以保存在文件中或在网络上传输。 - 序列化不仅可以用来持久化数据,还可以用于进程间通信(IPC)和远程方法调用(RMI)。 2. ...

    Java序列化的机制和原理

    Java的序列化机制允许开发者在类中定义`readObject()`和`writeObject()`方法来自定义序列化和反序列化的行为,或者使用`transient`关键字来排除某些字段不参与序列化。 总之,Java序列化是一个强大的工具,它使得...

    java中的序列化与反序列化

    Java序列化机制的优点在于它提供了一种标准的方式来处理对象的持久化和在网络间的传输。然而,序列化也存在安全风险,比如序列化可能导致远程代码执行攻击。因此,对于敏感信息或复杂对象结构,应谨慎使用序列化,并...

    java序列化(Serializable)的作用和反序列化.doc

    ### Java序列化(Serializable)的作用与反序列化详解 #### 一、序列化的概念 序列化是指将程序中的对象转换为一系列字节流的过程,主要用于保存对象的状态或在网络之间传输对象。序列化的主要目的是为了能够持久化...

    java 常用序列化和反序列化框架使用demo

    然而,Java标准库提供的序列化机制效率较低且安全性欠佳,因此出现了许多第三方框架来优化这一过程。本篇将介绍几个常用的Java序列化和反序列化框架,并通过示例代码进行演示。 1. **Java标准序列化**: Java标准...

    java IO.chm

    Java的序列化机制允许将对象转换为字节流,以便存储或在网络上传输。Serializable接口是实现序列化的标志,ObjectInputStream和ObjectOutputStream负责对象的序列化和反序列化。 八、NIO(非阻塞IO) Java NIO(New...

    java序列化全解

    Java序列化是Java平台中的一种核心机制,它允许对象的状态被转换成字节流,以便存储到磁盘、数据库,或者在网络中进行传输。这对于实现持久化、远程...理解并熟练掌握序列化机制对于高级软件开发者来说是非常重要的。

    java序列化(Serializable)的作用和反序列化

    ### Java序列化(Serializable)的作用与反序列化详解 #### 一、序列化是什么? 序列化是指将程序中的对象转换为字节流的过程,从而方便存储或传输这些对象。通常,序列化用于将对象的状态(即其实例变量的值,而非...

    java序列化和反序列化

    序列化机制使得Java对象能够在不同的平台之间进行传输,并且能够保持其原始状态。 **特点:** - **跨平台兼容性:** 序列化后的对象可以在不同的操作系统之间传输,无需担心数据格式或内存布局的不同。 - **对象...

    java自动序列化

    Java序列化是将对象转换为字节流的过程,目的是为了保存对象的状态以便稍后恢复或传输到其他地方。通过实现`Serializable`接口,一个Java对象就可以被序列化。这个接口是一个标记接口,没有定义任何方法,仅表示对象...

    深入分析JavaIO的工作机制.doc

    **组合使用示例**:可以将多个流组合起来使用,比如将对象序列化后通过缓冲输出流写入文件。 ```java OutputStream out = new BufferedOutputStream(new ObjectOutputStream(new FileOutputStream("fileName"))); `...

    Java 文件 序列化 读写

    Java文件序列化是Java平台中一种重要的数据存储和交换机制,它允许我们将对象的状态转换为字节流,以便可以保存到磁盘、网络传输或在内存中存储,然后在需要时将这些字节流恢复为原来的对象。这个过程称为序列化...

    java序列化实现演示

    在给定的链接"Java序列化机制(2)- serialVersionUID 实验"中,博主通过一个实验详细解释了`serialVersionUID`的作用和重要性。实验可能包括以下步骤: 1. 创建一个实现`Serializable`接口的简单类,并运行序列化...

Global site tag (gtag.js) - Google Analytics