男人女人晚上做那事网站,公司业务推广,seo论坛,wordpress 工具插件下载面试题#xff1a;对序列化和反序列化的理解#xff1f; 我们之所以需要序列化#xff0c;它核心的目的是为了解决网络通信之间的对象传输的问题#xff0c;也就是说#xff0c;如何把当前JVM进程的一个对象#xff0c;通过跨网络传输到另一个JVM进程里面#xff0c;而序… 面试题对序列化和反序列化的理解 我们之所以需要序列化它核心的目的是为了解决网络通信之间的对象传输的问题也就是说如何把当前JVM进程的一个对象通过跨网络传输到另一个JVM进程里面而序列化就是就是把内春里面的对象转化为字节流以便用来实现存储和传输而反序列化是根据从文件或网络上获取到对象的字节流通过解析字节流里面保存的对象信息并且重新构建一个新的对象
1. 基本概念
序列化Serialization 是将数据结构或对象转换成一种可存储或可传输格式的过程。在序列化后数据可以被写入文件、发送到网络或存储在数据库中以便在需要时可以再次还原成原始的数据结构或对象。序列化的过程通常涉及将数据转换成字节流或类似的格式使其能够在不同平台和编程语言之间进行传输和交换。 反序列化Deserialization 是序列化的逆过程即将序列化后的数据重新还原成原始的数据结构或对象。反序列化是从文件、网络数据或数据库中读取序列化的数据并将其转换回原始形式以便在程序中进行使用和操作。 2. 序列化格式
常见的序列化格式包括 JSON、XML、Protocol Buffers、MessagePack等。每种格式有其优势和适用场景选择合适的序列化格式取决于具体的应用需求。
在数据传输(也可称为网络传输)前先通过序列化工具类将Java对象序列化为json/xml文件。
在数据传输(也可称为网络传输)后再将json/xml文件反序列化为对应语言的对象
3. 注意项
一 只有实现了Serializable或者Externalizable接口的类的对象才能被序列化为字节序列。不是则会抛出异常 二 java.io.ObjectInputStream对象输入流 该类的readObject()方法从输入流中读取字节序列然后将字节序列反序列化为一个对象并返回。 java.io.ObjectOutputStream对象输出流 该类的writeObject(Object obj)方法将将传入的obj对象进行序列化把得到的字节序列写入到目标输出流中进行输出。 三 声明为static和transient类型的成员数据不能被序列化。因为static代表类的状态transient代表对象的临时数据