zoukankan      html  css  js  c++  java
  • 序列化

    序列化的定义

    对象序列化(Object Serialization)API它提供了一个框架,用来将对象编码成字节流,并从字节流编码中重新构建对象。将对象编码为字节流称作对象序列化,相反的过程为反序列化。

    除了在持久化对象时会用到对象序列化之外,当使用RMI(远程方法调用),或在网络中传递对象时,都会用到对象序列化。

    NOTE:对象序列化保存的是对象的"状态",即它的成员变量。由此可知,对象序列化不会关注类中的静态变量。

    默认序列化 

    如果仅仅只是让某个类实现Serializable接口,而没有其它任何处理的话,则就是使用默认序列化机制。使用默认机制,在序列化对象时,不仅会序列化当前对象本身,还会对该对象引用的其它对象也进行序列化,同样地,这些其它对象引用的另外对象也将被序列化,以此类推。所以,如果一个对象包含的成员变量是容器类对象,而这些容器所含有的元素也是容器类对象,那么这个序列化的过程就会较复杂,开销也较大。

    序列化的代价

    实现Serializable的代价一是一旦一个类被公布,就大大降低了改变这个类的灵活性。如果你接受了默认的序列化形式,这个类中私有和包级私有的实例域都将成为导出的API的一部分,从而失去作为信息隐藏工具的有效性。

    代价二是增加了出现Bug和安全漏洞的可能。序列化机制是一个“隐藏的构造器”,因为没有显式构造器很容易忘记确保:反序列化过程也要保证所有“由真正的构造器建立起来的约束关系”,并且不允许攻击者访问正在构造过程中的对象的内部信息。依靠默认的反序列化机制,很容易使对象的约束关系遭到破坏,以免遭到非法访问。

    代价三是随着新版本的发行,相关的测试负担也增加了。

                                                                                                                                                

        

  • 相关阅读:
    连接上三星C5,播放音乐断音
    连接上LG NEXUS4播放音乐无声音输出,关机再开机回连再播放OK
    连接上LG G5时,“连接”提示音能听到明显拖尾杂音
    WebRTC原生开发和混合开发优缺点分析对比
    Safari即将支持WebRTC
    WebRTC通话过程中如何避免其它进程音量下降
    WebRTC 中RTT实现方法
    开发Rtmp推流端开发库的几种选择方案
    WebRTC中OPUS编码相关设置和分析
    WebRTC手记之初探
  • 原文地址:https://www.cnblogs.com/jjfan0327/p/6923712.html
Copyright © 2011-2022 走看看