序列化和反序列化

一.  序列化的作用?

  • 实现了Java 对象的持久化,通过序列化可以把数据永久地保存到硬盘上(通常存放在文件里)或者db中。
  • 利用序列化实现远程通信,即在网络上传送对象的字节序列。

二.  概念?

序列化是把对象的状态信息转化为可存储或传输的形式过程,也就是把对象转化为字节序列的过程称为对象的序列化。

反序列化是序列化的逆向过程,把字节数组反序列化为对象,把字节序列恢复为对象的过程成为对象的反序列化。

java是输入输出流实现的,ObjectOutputStream和ObjectInputStream,wirteObject序列化转化成输出流,readObject反序列化将输入流恢复成对象

三.  serialVersionUID?

Java 的序列化机制是通过判断类的 serialVersionUID 来验证版本一致性的。在进行反序列化 时,JVM 会把传来的字节流中的 serialVersionUID 与本地相应实体类的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的 异常,即是 InvalidCastException。

  1. 默认 1L,比如:private static final long serialVersionUID = 1L
  2. 根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段

当实现 java.io.Serializable 接口的类没有显式地定义一个 serialVersionUID 变量时候,Java 序 列化机制会根据编译的Class自动生成一个serialVersionUID作序列化版本比较用,这种情况下,如果Class文件(类名,方法明等)没有发生变化(增加空格,换行,增加注释等等),就算再编译多次,serialVersionUID也不会变化的。

四.  Java序列化的一些简单总结?

  •     Java 序列化只是针对对象的状态进行保存,至于对象中的方法,序列化不关心
  •     当一个父类实现了序列化,那么子类会自动实现序列化,不需要显示实现序列化接口
  •     当一个对象的实例变量引用了其他对象,序列化这个对象的时候会自动把引用的对象也进行序列化(实现深度克隆)
  •     当某个字段被申明为static(修饰的成员变量属于类)或者transient 后,默认的序列化机制会忽略这个字段
  •     被申明为 transient 的字段,如果需要序列化,可以添加两个私有方法:writeObject和readObject
     


    
 

 

内容概要:本书《Deep Reinforcement Learning with Guaranteed Performance》探讨了基于李雅普诺夫方法的深度强化学习及其在非线性系统最优控制中的应用。书中提出了一种近似最优自适应控制方法,结合泰勒展开、神经网络、估计器设计及滑模控制思想,解决了不同场景下的跟踪控制问题。该方法不仅保证了性能指标的渐近收敛,还确保了跟踪误差的渐近收敛至零。此外,书中还涉及了执行器饱、冗余解析等问题,并提出了新的冗余解析方法,验证了所提方法的有效性优越性。 适合人群:研究生及以上学历的研究人员,特别是从事自适应/最优控制、机器人学动态神经网络领域的学术界工业界研究人员。 使用场景及目标:①研究非线性系统的最优控制问题,特别是在存在输入约束系统动力学的情况下;②解决带有参数不确定性的线性非线性系统的跟踪控制问题;③探索基于李雅普诺夫方法的深度强化学习在非线性系统控制中的应用;④设计验证针对冗余机械臂的新型冗余解析方法。 其他说明:本书分为七章,每章内容相对独立,便于读者理解。书中不仅提供了理论分析,还通过实际应用(如欠驱动船舶、冗余机械臂)验证了所提方法的有效性。此外,作者鼓励读者通过仿真实验进一步验证书中提出的理论技术。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值