IT修真院·小课堂丨互联网职业小课堂在线学习平台

课堂课题:

什么是序列化和反序列化,在RMI中是否要实现 Serializable 接口, serialVersionUID的用处是什么?

关联任务:

任务五

直播时间:

2019-07-01 15:00:00


课堂内容:

视频链接:

PPT链接:

提交按钮:

小课堂内容格式


标题:

【修真院xx(职业)小课堂】课题名称

开场语:

大家好,我是IT修真院XX分院第X期的学员XX,一枚正直纯洁善良的XX程序员,今天给大家分享一下,修真院官网XX(职业)任务X,深度思考中的知识点——XXX

(1)背景介绍:

背景介绍的时候,尽可能的要宽广,讲清楚来龙去脉,讲清楚为什么会需要这个技术。

(2)知识剖析:

讲知识点的时候,尽可能的成体系,学会成体系的去给别人介绍知识。现在很多做的都是零散的,没有分类。

(3)常见问题:

最少列出1个常见问题。

(4)解决方案:

写清楚常见问题的解决方案。

(5)编码实战:

尽可能的去寻找在真实项目中在用的。如果你能找到某个网站在用你说的知识点,这是最好的。学以致用,否则当成练习题就没有意义了。多准备一些demo,讲解过程中将知识点和demo结合,便于大家理解所讲解的知识点。

(6)拓展思考:

知识点之外的拓展思考,由分享人进行讲解,这些东西就是所谓的深度,也是一个人技术水准高低比较的表现。

(7)参考文献:

引入参加文献的时候,在引用的句子后面加上序号【1】。参考文献中列出详细来源。不要去抄别人的东西,这是一个基本的态度。

(8)更多讨论:

Q1:提问人:问题?
A1:回答人(可以是分享人,也可以是其他学员):回答
Q2:提问人:问题?
A2:回答人(可以是分享人,也可以是其他学员):回答
Q3:提问人:问题?
A3:回答人(可以是分享人,也可以是其他学员):回答

(9)鸣谢:

感谢XX、XX师兄,此教程是在他们之前技术分享的基础上完善而成。

(10)结束语:

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

什么是序列化和反序列化,在RMI中是否要实现 Serializable 接口, serialVersionUID的用处是什么?    

辅导师兄


标题:

【修真院java小课堂】

什么是序列化和反序列化,在RMI中是否要实现 Serializable 接口, serialVersionUID的用处是什么?

开场语:

大家好,我是IT修真院上海分院第13期的学员陈嘉斌,一枚正直纯洁善良的java程序员,今天给大家分享一下,修真院官网java任务8,深度思考中的知识点——什么是序列化和反序列化,在RMI中是否要实现 Serializable 接口, serialVersionUID的用处是什么?

(1)背景介绍:

序列化:把对象转换为字节序列的过程。

反序列化:把字节序列恢复为对象的过程。

(2)知识剖析:

 什么是序列化,反序列化

内存中的数据对象只有转化为二进制流才可以进行数据持久化和网络传输。将数据转化为二进制的过程成为对象的序列化。 反之,将二进制流恢复为数据对象的过程称之反序列化。序列化需要保留充分的信息以恢复数据对象,但是为了节约存储空间和网络带宽,序列化后的二进制流又要尽可能的小。

(3)常见问题:

为什么要序列化,反序列化

在正常的请求中,客户端和服务器之间肯定要传递参数。如果传递的是一个java对象,那么服务器就不能识别这个对象了。java对象的本质是class字节码,服务器并不能根据传递过来的字节码识别出java对象。所以我们需要把java对象转换成公共的格式,再把公共格式转化回成对象。

什么情况下需要序列化

当你想把内存中的对象状态保存到一个文件中或者数据库中时候

当你想用套接字在网络上传送对象的时候

当你想通过RMI传输对象的时候

(4)解决方案:

Java序列化技术可以使你将一个对象的状态写入一个Byte 流里,并且可以从其它地方把该Byte 流里的数据读出来,重新构造一个相同的对象。这种机制允许你将对象通过网络进行传播,并可以随时把对象持久化到数据库、文件等系统里。Java的序列化机制是RMI、EJB等技术的技术基础。用途:利用对象的串行化实现保存应用程序的当前工作状态,下次再启动的时候将自动地恢复到上次执行的状态。

(5)编码实战:

序列化的实现

将需要被序列化的类实现Serializable接口,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。

(6)拓展思考:

知识点之外的拓展思考,由分享人进行讲解,这些东西就是所谓的深度,也是一个人技术水准高低比较的表现。

(7)参考文献:

csdn

(8)更多讨论:

Q1:java自定义类中的自定义类是否要序列化?
A1:同样需要进行序列化,这又引出了一个结果,String等java自身的引用类都是默认实现了Serializable接口的

Q2:SerializasionUid有什么用,要这么生成

A2:序列化uid是用来确定序列化版本的,当反序列化的时候回根据类的uid转换会对象,如果uid对应不上会出现异常
Q3:修改了对象以后是否要修改uid?
A3:如果是不兼容性修改,需要修改uid,如果是兼容性的修改则不能修改uid

(9)鸣谢:

感谢师兄,此教程是在他们之前技术分享的基础上完善而成。

(10)结束语:

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~


评论

请您登录 后进行评论