序列化与反序列化(SerDe)

本章将简单讲解序列化与反序列化的相关小知识。

 

一、何为序列化与反序列化

     序列化:将对象的状态转换为字节流的过程。以便将其存储在内存中、数据库中,或通过网络传输。

    反序列化:将字节流转换回对象的过程。将先前序列化的字节流还原为原始对象的状态。反序列化是序列化的逆过程。

                                                                  

 

 

二、目的

  序列化:主要用于数据持久化和网络通信。当需要将对象传输到另一个系统、保存到磁盘,或者通过网络发送时,需要将对象序列化为字节流。

    反序列化:用于从存储介质或网络接收的字节流中重新构建对象,以便在程序中使用。

 

三、为什么需要序列化与反序列化【实际运用】

      跨平台通信: 序列化使得在不同平台、不同语言之间传递对象成为可能,因为字节流是平台无关的。

      数据持久化: 序列化允许将对象的状态保存到文件或数据库中,以便在程序重新启动时能够还原对象。

      分布式系统: 在分布式系统中,对象可能需要在网络上传输,序列化和反序列化是实现这一需求的关键。

 

四、JAVA代码的实现

序列化:

   ObjectOutputStream 是 Java 中用于将对象序列化成字节流的类,通常用于将对象持久化保存到文件或通过网络传输。

 

这里通过 FileOutputStream 将字节流写入download/lovedRole目录下的sanjiu文件。

 

  oos.writeObject的作用是将内容写进输入流中。

    oos.flush() 是作为保险起见,保证清空。

 

完整代码:

 

反序列化:

  ObjectInputStream 是 Java 中用于从输入流中读取对象的类。它通常与 ObjectOutputStream 配合使用,
  用于实现对象的序列化和反序列化。

 

 

    ois.readObject() 用于读取内容。

 

完整代码:

 

posted @ 2023-07-23 19:29  Nakano_Miku  阅读(41)  评论(0)    收藏  举报
返回顶端