序列化,反序列化

今天看ArrayList的源代码,发现了里面的一个关键字transient

然后查了一下,发现这个关键字是用来防止序列化的

那什么是序列化呢?我又懵逼了

为什么需要序列化?

在当今的网络社会,我们需要在网络上传输各种类型的数据,包括文本、图片、音频、视频等, 而这些数据都是以二进制序列的形式在网络上传送的,那么发送方就需要将这些数据序列化为字节流后传输,而接收方接到字节流后需要反序列化为相应的数据类型。当然接收方也可以将接收到的字节流存储到磁盘中,等到以后想恢复的时候再恢复。

综上,可以得出对象的序列化和反序列化主要有两种用途:

把对象的字节序列永久地保存到磁盘上。(持久化对象)
可以将Java对象以字节序列的方式在网络中传输。(网络传输对象)

通过Serializable或Externalizable来使数据序列化

 

serialVersionUID

由于反序列化Java对象的时候,必须提供该对象的class文件,但是随着项目的升级class文件文件也会升级,Java如何保证兼容性呢?答案就是 serialVersionUID。每个可以序列化的类里面都会存在一个serialVersionUID,只要这个值前后一致,即使类升级了,系统仍然会认为他们是同一版本。如果我们不显式指定一个,系统就会使用默认值。
 

 

tips:1. 父类可以被序列化,子类就可以被序列化

2.子类被序列化,父类就不可以

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485609.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

腾讯研究院发布《2021数字科技前沿应用趋势》

来源 :腾讯研究院编辑: 陈近梅2021年1月9日,在腾讯研究院举办的“腾讯科技向善暨数字未来大会2021”上,《变量:2021数字科技前沿应用趋势》报告正式发布。该报告由腾讯研究院发起,先后访谈业界权威专家&…

linux导入pgsql日志目录,Centos下PostgreSQL安装及修改数据目录

记录下在Centos7.6 安装PostgreSQL数据库,版本10.12的过程,第一次装,遇到的坑太多了,网上教程坑也多,有的版本不一样方法不一样。花了半天时间…背景:内网服务器,搭了个sonarqube代码审计系统&a…

ArrayList的容量

ArrayList当容量放不下元素时,容量会自动扩大 那么如果把元素移除,容量会自动减小吗? package zhousai; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; public class test { public static void …

H3 BPM之流程包(流程Demo)导入导出

流程包是什么? 流程包指的是工作流从表单设计到流程设计产生的数据包,所有的表单逻辑和流程模型逻辑数据都包含在里面。由于各种厂商工作流软件运行机制不一样,流程包不支持在不同产品之间导入导出,只支持在同一款工作流软件里面导…

11大改革举措!国家自然科学基金2021年项目指南发布

来源:国家自然科学基金委员会网站编辑:宗华排版:李言1月15日,国家自然科学基金委员会网站更新了2021年度项目指南。点击链接进入:2021年项目指南未来智能实验室的主要工作包括:建立AI智能系统智商评测体系&…

服务器win和linux系统安装教程,Win+linux双系统安装

导读如果你要安装linux系统,但是又不想换掉Win7的操作习惯,建议安装WinLinux双系统,随你个人喜好。下面介绍的是用U盘安装的方法。笔者使用的是华硕FX50J装的双系统,之前使用过Dell的游闸安装过,但是没有碰到那么多问题…

Servlet API

Servlet API:由两个软件包组成:对应于HTTP协议的软件包,对应于除HTTP协议以外的软件包 即Servlet API 可以适用于任何通信协议 我们学习的Servlet,是位于javax.servlet.http包中的类和接口,是基础HTTP协议 Servlet继承关系&…

hibernate框架学习之使用SQLQuery查询数据

SQLQuery对象的获取  Hibernate支持使用原生SQL语句进行查询,通过session对象获得SQLQuery对象进行,需要传入SQL语句  SQLQuery createSQLQuery(String sqlStr)  SQLQuery query session.createSQLQuery(“select * from tbl_user");sqlStr是…

Leetcode--135. 发糖果

老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。 你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果。 相邻的孩子中,评分高的…

Linux下载cfg命令,Linux安装详解-配置ks.cfg实现自动安装过程

之前发过一篇关于通过PXE实现Linux批量无人值守自动安装的文章(可以参考http://www.linuxidc.com/Linux/2011-08/39949.htm),不过写的只是具体的配置和操作,对于原理部分没有说明,最近通过一段时间的学习,把linux的启动安装过程深…

人类如何接近“宇宙无限”?微积分的力量无处不在

来源:遇见数学距离2021年高考还有不到两百天,当无数高中生还在为千军万马过独木桥儿紧锣密鼓准备之时,有部分初中生却已经一只脚踏入了清华大学的校门。2020年的最后一天,清华大学发布官方通知,将启动“丘成桐数学科学…

linux如何运行synaptic,Linux_Ubuntu 7.04 Synaptic软件包管理器功能,Ubuntu的新立得软件包管理器(Syn - phpStudy...

Ubuntu 7.04 Synaptic软件包管理器功能Ubuntu的新立得软件包管理器(Synaptic Package Manager)是APT(Advanced Package Tool)的图形界面,非常直观易用。但有时候是用文字模式远程登录到Ubuntu,或者安装的是Server版的Ubuntu,再或者有什么其它…

三层架构

1.三层架构 与MVC设计模式的目标一致,都是为了 解耦合,提高代码复用 区别:二者对项目理解的角度不同 2.三层组成: 表示层(USL,User Show Layer;视图层) 业务逻辑层(BLL,Business Logic Layer;Service层) 数据访问层(DAL,Dat…

这10个著名的思想实验,竟然是物理学家完成的

来源 : 知更社区在物理学中,有一类特殊的实验:它们不需要购置昂贵的仪器,不需要大量的人力物力,需要的只是有逻辑的大脑;而这种实验却可以挑战前人的结论,建立新的理论,甚至引发人们…

怎样查看Jdk是32位还是64位

怎样查看Jdk是32位还是64位、、 ------------- --------------- ------------- 其实还可以这样看哦、、 --------------- ------------- ---------------转载于:https://www.cnblogs.com/GaoNa/p/9352283.html

交叉编译及linux简单程序设计,嵌入式实验6交叉编译及Linux简单程序设计实验

实验六交叉编译及Linux简单程序设计实验的实验报告一实验目的1、了解和掌握交叉编译模式和方法;2、熟悉和掌握Linux简单程序设计。二实验环境预装Fedora10_A8_Linux的pc机一台,CVT-A8嵌入式实验箱一台(已构建嵌入式Linux系统),以太网线一根&a…

计算机网络概念

计算机网络:将独立的,分散的计算机系统(手机,电脑)通过线路,通信设备(路由器,交换机)连接起来,由软件来实在资源共享,信息传递的系统 计算机网络的功能: 1. 数据通信 eg&#xff…

【创新应用】5AloT(5G+AI+物联网)深度研究报告:下一轮科技红利

来源:智能研究院当前正处于两轮科技红利之间,5AIoT(5GAI物联网)将成继移动互联网后,下一轮科技红利最大的机遇。智能手机和移动互联网连接数趋于饱和,但伴随 5G、wifi、AI 等技术发展、成本下降,以及场景逐渐成熟&…

pipenv和autoenv

目录 pipenv安装创建环境常用命令换源pipenv 官方文档:https://docs.pipenv.org/#pipenv-usage 安装 pip3 install pipenv 创建环境 创建环境:pipenv --three # 创建python3版的环境 pipenv --two # 创建python2版的环境 pipenv --python 3.6 # 创建指定python版本的环境 生…

嵌入式linux 修改mac,MAC to MAC 环境下,嵌入式linux的修改

MAC to MAC ,网卡驱动应该如何调整正常情况下,完整的网卡由MAC和PHY两部分组成。PHY的含义很广,不知道的wiki之。简单地说,是物理层芯片。在TCP/IP协议中,数据链路层之上的所有数据,都可以在你的内存里由软…