当前位置: 首页 > news >正文

序列化和反序列化

面试题:对序列化和反序列化的理解?

我们之所以需要序列化,它核心的目的是为了解决网络通信之间的对象传输的问题,也就是说,如何把当前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代表对象的临时数据

http://www.lryc.cn/news/399696.html

相关文章:

  • OpenCV中使用Canny算法在图像中查找边缘
  • 基于springboot+vue+uniapp的机电公司管理信息系统
  • 电子期刊制作实战教程:从零开始制作
  • 11.FreeRTOS_事件组
  • Python爬虫-爬取三国演义文本数据-bs4
  • html5——列表、表格
  • 【Python字符串攻略】:玩转文字,编织程序的叙事艺术
  • element form表单中密码框被自动赋值,并默认背景色为白色,手动输值后背景色才是自己配置的背景色,与表单的自动填充有关
  • 【UE5.1 角色练习】15-枪械射击——子弹发射物
  • Zynq7000系列FPGA中的DMA控制器的编程限制
  • 超简易高效的 AI绘图工具—与sd-webui一致界面,6G显存最高提升75%出图速率!(附安装包)
  • ArduPilot开源代码之OpticalFlow_backend
  • 设计模式探索:适配器模式
  • OpenCV 寻找棋盘格角点及绘制
  • 【深度学习】PyTorch深度学习笔记02-线性模型
  • 10.FreeRTOS_互斥量
  • EtherCAT总线冗余让制造更安全更可靠更智能
  • Android IdleHandler源码分析
  • Mac安装stable diffusion 工具
  • CVE-2024-6387Open SSH漏洞彻底解决举措(含踩坑内容)
  • python的简单爬取
  • 【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第60集-agent训练资讯APP重点推荐AI资讯内容(含视频)
  • 【学术会议征稿】第三届智能电网与能源系统国际学术会议
  • 01. 课程简介
  • iOS热门面试题(三)
  • ECS中postTransform.Value = float4x4.Scale(1, math.sin(elapsedTime), 1)
  • VLM技术介绍
  • x264 编码器 AArch64 汇编函数模块关系分析
  • windows10开启防火墙,增加入站规则后不生效,还是不能访问后端程序
  • academic-homepage:快速搭建个人学术主页,页面内容包括个人简介、教育经历、发布过的学术列表等,同时页面布局兼容移动端。