zoukankan      html  css  js  c++  java
  • java.io.Serializable中serialVersionUID的作用

    把对象转换为字节序列的过程称为对象的序列化。
      把字节序列恢复为对象的过程称为对象的反序列化。
      对象的序列化主要有两种用途:
      1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;
      2) 在网络上传送对象的字节序列。

      在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存。比如最常见的是Web服务器中的Session对象,当有 10万用户并发访问,就有可能出现10万个Session对象,内存可能吃不消,于是Web容器就会把一些seesion先序列化到硬盘中,等要用了,再把保存在硬盘中的对象还原到内存中。

      当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个Java对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象

    serialVersionUID是根据会根据类信息动态生成serialVersionUID,序列化和反序列化都会根据这个类。如果在序列化之后对象存入到本地磁盘,而实体又修改了字段,这时候再去反序列化磁盘上的对象会失败,因为根据类信息生成serialVersionUID和序列化时生成的serialVersionUID不一样了,反序列化时找不到这个类了,会抛出InvalidClassExceptions 异常。

    If a serializable class does not explicitly declare a serialVersionUID, then the serialization runtime will calculate a default serialVersionUID value for that class based on various aspects of the class, as described in the Java(TM) Object Serialization Specification. However, it is strongly recommended that all serializable classes explicitly declare serialVersionUID values, since the default serialVersionUID computation is highly sensitive to class details that may vary depending on compiler implementations, and can thus result in unexpected InvalidClassExceptions during deserialization. 

    参考:https://blog.csdn.net/java_mdzy/article/details/78354959

  • 相关阅读:
    表管理和索引,外键作用
    小场景 shell 应用
    高并发Linux系统及kernel参数优化
    H3C F100-M-G 配置2条数字专线
    yun update更新后 vm-workstation 找不到kernel
    布局页面
    第八节课
    第七堂课
    第六堂课 框架和样式表的基础
    第五节课 表单元素
  • 原文地址:https://www.cnblogs.com/aeolian/p/10534705.html
Copyright © 2011-2022 走看看