源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Java序列化机制与原理的深入分析

  • 时间:2022-05-25 06:19 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Java序列化机制与原理的深入分析
[b]Java序列化算法透析[/b]     Serialization(序列化)是一种将对象以一连串的字节描述的过程;反序列化deserialization是一种将这些字节重建成一个对象的过程。Java序列化API提供一种处理对象序列化的标准机制。在这里你能学到如何序列化一个对象,什么时候需要序列化以及Java序列化的算法,我们用一个实例来示范序列化以后的字节是如何描述一个对象的信息的。 序列化的必要性     Java中,一切都是对象,在分布式环境中经常需要将Object从这一端网络或设备传递到另一端。这就需要有一种可以在两端传输数据的协议。Java序列化机制就是为了解决这个问题而产生。 如何序列化一个对象 一个对象能够序列化的前提是实现Serializable接口,Serializable接口没有方法,更像是个标记。有了这个标记的Class就能被序列化机制处理。
[u]复制代码[/u] 代码如下:
import java.io.Serializable;       class TestSerial implements Serializable {                  public byte version = 100;                public byte count = 0;       }
    然后我们写个程序将对象序列化并输出。ObjectOutputStream能把Object输出成Byte流。我们将Byte流暂时存储到temp.out文件里。
[u]复制代码[/u] 代码如下:
public static void main(String args[]) throws IOException {           FileOutputStream fos = new FileOutputStream("temp.out");           ObjectOutputStream oos = new ObjectOutputStream(fos);           TestSerial ts = new TestSerial();           oos.writeObject(ts);           oos.flush();           oos.close();       }
    如果要从持久的文件中读取Bytes重建对象,我们可以使用ObjectInputStream。
[u]复制代码[/u] 代码如下:
public static void main(String args[]) throws      IOException {             FileInputStream fis = new FileInputStream("temp.out");             ObjectInputStream oin = new ObjectInputStream(fis);             TestSerial ts = (TestSerial) oin.readObject();              System.out.println("version="+ts.version);        }
执行结果为
100. 对象的序列化格式 将一个对象序列化后是什么样子呢?打开刚才我们将对象序列化输出的temp.out文件,以16进制方式显示。内容应该如下:
[u]复制代码[/u] 代码如下:
AC ED 00 05 73 72 00 0A 53 65 72 69 61 6C 54 65
73 74 A0 0C 34 00 FE B1 DD F9 02 00 02 42 00 05 63 6F 75 6E 74 42 00 07 76 65 72 73 69 6F 6E 78 70 00 64
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部