
获得徽章 19
赞了这篇沸点
赞了这篇文章
赞了这篇沸点
#每日一题#
问题、什么是序列化和反序列化?
回答:如果我们需要持久化 Java 对象比如将 Java 对象保存在文件中,或者在网络传输 Java 对象,这些场景都需要用到序列化。
序列化:将数据结构或对象转换成二进制字节流的过程。序列化的主要目的是通过网络传输对象或者说是将对象存储到文件系统、数据库、内存中。
反序列化:将在序列化过程中所生成的二进制字节流转换成数据结构或者对象的过程。
对于 Java 这种面向对象编程语言来说,我们序列化的都是对象(Object)也就是实例化后的类(Class),但是在 C++这种半面向对象的语言中,struct(结构体)定义的是数据结构类型,而 class 对应的是对象类型。
下面是序列化和反序列化常见应用场景:
1.对象在进行网络传输(比如远程方法调用RPC的时候)之前需要先被序列化,接收到序列化的对象之后需要再进行反序列化。
2.将对象存储到文件之前需要进行序列化,将对象从文件中读取出来需要进行反序列化。
3.将对象存储到数据库(如 Redis)之前需要用到序列化,将对象从缓存数据库中读取出来需要反序列化。
4.将对象存储到内存之前需要进行序列化,从内存中读取出来之后需要进行反序列化。
问题、什么是序列化和反序列化?
回答:如果我们需要持久化 Java 对象比如将 Java 对象保存在文件中,或者在网络传输 Java 对象,这些场景都需要用到序列化。
序列化:将数据结构或对象转换成二进制字节流的过程。序列化的主要目的是通过网络传输对象或者说是将对象存储到文件系统、数据库、内存中。
反序列化:将在序列化过程中所生成的二进制字节流转换成数据结构或者对象的过程。
对于 Java 这种面向对象编程语言来说,我们序列化的都是对象(Object)也就是实例化后的类(Class),但是在 C++这种半面向对象的语言中,struct(结构体)定义的是数据结构类型,而 class 对应的是对象类型。
下面是序列化和反序列化常见应用场景:
1.对象在进行网络传输(比如远程方法调用RPC的时候)之前需要先被序列化,接收到序列化的对象之后需要再进行反序列化。
2.将对象存储到文件之前需要进行序列化,将对象从文件中读取出来需要进行反序列化。
3.将对象存储到数据库(如 Redis)之前需要用到序列化,将对象从缓存数据库中读取出来需要反序列化。
4.将对象存储到内存之前需要进行序列化,从内存中读取出来之后需要进行反序列化。
展开
评论
3
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章