课程名称:Spring Boot+Vue3前后端分离,实战wiki知识库系统
课程章节:10-3 文档点赞功能开发
主讲老师:甲蛙
课程内容:
前端在文档内容的下方,增加点赞按钮,点击后 doc.vote_count+1
课程收获
在课程中有个需求是同一个ip地址一天内只能点赞一次,设置了切面类(Aspect)在请求前运行得到真实的远程IP,在保存请求的ip地址时用的线程进行赋值取值,简单理解一下就是把一个对象freeze(冷冻)住,然后进行存储,等到再次需要的时候,再将这个对象de-freeze就可以立即使用。
为什么我们要使用序列化赋值取值,它和其他方法对比有什么优点?
-
将一个对象的状态(各个属性量)保存起来,然后在适当的时候再获得。
-
序列化分为两大部分:序列化和反序列化。序列化是这个过程的第一部分,将数据分解成字节流,以便存储在文件中或在网络上传输。反序列化就是打开字节流并重构对象。对象序列化不仅要将基本数据类型转换成字节表示,有时还要恢复数据。恢复数据要求有恢复数据的对象实例
优点:
- 当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个Java对象转换为字节序列,才能在网络上传送
- 面对大量数据时可以把一些数据先序列化到硬盘中,等要用了,再把保存在硬盘中的对象还原到内存中
- 线程间互不干扰;同个线程赋值取值,不需要参数传递