社区
BSV区块链
帖子详情
什么是序列化和反序列化?
ちんたくよう
2021-03-09 07:16:13
之前在某篇文章里看到的这两个词。
据说是数据传输的时候用的一种技术,求大神解答。
...全文
3135
1
打赏
收藏
什么是序列化和反序列化?
之前在某篇文章里看到的这两个词。 据说是数据传输的时候用的一种技术,求大神解答。
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
「已注销」
2021-03-14
打赏
举报
回复
序列化和反序列化是非常常见的计算机技术名词。
当 A 把一段数据发给 B 时,不同的序列化规则会影响 B 对收到数据的解释。举个例子。
程序中,一般用特定的数据结构,来表示和存储具体的数据,就像上面描述的那样。
这样的数据,方便人们识别和理解,方便程序操作,但不方便在网络上传输。
在传输前需要将数据结构转换成方便网络传输的字节流形式,这个过程称为序列化。
从字节流“恢复”数据成数据结构的形式,这个过程称为反序列化。
举个例子方便理解。我们可以定义下面的数据结构,来表示二十四小时制的时间。
Type Time {
uint32_t hour;
uint32_t minute;
uint32_t second;
};
时、分、秒分别用 4 字节整数表示,20:35:10可以表示为
Time t;
t.hour = 20; // 00 00 00 14
t.minute = 35; // 00 00 00 23
t.second = 10; // 00 00 00 0a
注释后面是数据的十六进制表示。在传输数据时,发送
00 00 00 14 00 00 00 23 00 00 00 0a
并规定:
你会收到 12 字节的数据
第一个 4 字节数据是“时”
第二个 4 字节数据是“分”
第三个 4 字节数据是“秒”
对方在收到数据后,就能根据规则,将字节流还原成数据结构的形式。
注意到,数据结构不仅包含数据的值,还描述“这是什么数据”。
当你看到t.hour = 20,你知道这个数据表示时间中的“小时”,值为 20。
但当你看到00 00 00 14,你只知道这个数据的值为 20,但不知道这是 20 时,还是 20 分,还是 20 秒。所以,需要定义序列化的规则。
更多细节内容,请关注开发者专区博客
https://blog.csdn.net/aaron67/article/details/106751818
【超详细讲解】什么是
序列化
和
反
序列化
?
序列化
是将对象的状态转换为可存储或可传输格式的过程。对象在内存中一般以特定的数据结构(指针、引用、哈希表、链表等)存在,直接传输内存数据是不可靠的(不同机器架构不同、数据对齐不同、指针无意义等问题)。所以我们需要将对象转换成连续的字节流(或标准格式的文本),使得:可以写入磁盘文件可以通过网络发送到远端可以被其他进程或设备正确解析简单来说,
序列化
是让数据“离开内存,去旅行”的必备装备。
反
序列化
就是
序列化
的逆过程。把收到的字节流或文本格式数据,还原成内存中的对象或数据结构,供程序继续操作。
Java
序列化
和
反
序列化
可以通过实现 readObject 方法来自定义
反
序列化
过程。例如,可以在
反
序列化
时对字段进行额外的验证或初始化。// 不会被默认
序列化
// 自定义
反
序列化
逻辑// 默认
反
序列化
// 手动
反
序列化
age// 自定义
序列化
逻辑// 默认
序列化
// 手动
序列化
age@Override//
序列化
//
反
序列化
。
【Java】
序列化
和
反
序列化
而这个writeString()往往是这样写的,字符串长度(不是大小)小于两个字节,就先写入一个字节的TC_STRING(16进制 74),然后调用writeUTF(),写入一个signature,这好像跟jvm有关。要使用一个类,就要先把它加载到虚拟机中,在加载完类之后,堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个class对象),这个对象就包含了完整的类的结构信息,我们可以通过这个对象看到类的结构,这个对象就像一面镜子,透过镜子可以看到类的结构,所以形象的称之为:反射。
关于
序列化
和
反
序列化
序列化
:将数据结构或对象转换成二进制字节流的过程
反
序列化
:将在
序列化
过程中所生成的二进制字节流转换成数据结构或者对象的过程1)transient修饰的变量不能被
序列化
;2)transient只作用于实现 Serializable 接口;3)transient只能用来修饰普通成员变量字段;
序列化
和
反
序列化
序列化
:
序列化
是将对象的状态转换为可存储或可传输的格式的过程。这通常涉及将对象转换为字节流,以便可以将其存储在文件、数据库中,或通过网络传输。
反
序列化
:
反
序列化
是将字节流重新转换为对象的过程。它是
序列化
的逆过程,通过
反
序列化
,可以从存储或传输的字节流中恢复对象。
BSV区块链
49
社区成员
93
社区内容
发帖
与我相关
我的任务
BSV区块链
BSV区块链(BSV Blockchain)是唯一遵从2008年发布的比特币白皮书宗旨的全球公有链,具有稳定性、可拓展性、安全性、支持安全即时交易四大核心特性。
复制链接
扫一扫
分享
社区描述
BSV区块链(BSV Blockchain)是唯一遵从2008年发布的比特币白皮书宗旨的全球公有链,具有稳定性、可拓展性、安全性、支持安全即时交易四大核心特性。
区块链
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章