`
csd_ali
  • 浏览: 136230 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

序列化的秘密

阅读更多

序列化的秘密,详细内容请看附件

 

内容简介:

为什么要有序列化:

       一样事物的产生,必然有他的道理

序列化都干些啥:

       产生了就得干活

首要问题:反序列化时如何生成实例

       序列化时将实例变为了字节序列,反序列化时就得把实例再给你变回来

是不是所有的类都需要序列化:

       不是所有类都需要实例化,原因是什么

哪些东西需要序列化:

       类里面有那么多东西,序列化需要关照到哪些内容?

transient保护敏感信息  

       如果类里有的字段是敏感信息,不想被序列化,该怎么办?

序列化算法:

       探究序列化的原理

定制自己的序列化算法:

       自己也可以定制序列化,step bystep告诉你怎么做

严重漏洞:刻舟求剑:

       从字节序列中读取老版本的对象,去恢复新版本的,好比刻舟求剑

单例模式不过是浮云:

       序列化可以肆意生成实例,单例模式很难保证,我们该如何做?

同引用实例化问题:

       如果两个属性引用了同一个实例,反序列化时是生成一个实例,还是两个?

常见的序列化攻击:

       序列化的过程“漏洞重重”,自然攻击也就来了,有哪些攻击,我们该如何做

百家争鸣:hessianmina也玩序列化:

       hessianmina都实现了自己的序列化,各有千秋百家争鸣,我们来探讨一下

工作中需要注意的点:

       如何用好序列化

附录1 ObjectOutputStreamObjectInputStream

       序列化不可获取的两个类,放在哪章都不好,只能放在这里做个参考

附录2 Serializable中的隐藏方法一览:

       Serializable里有很多不为人知的秘密

参考文献:

       想扩展阅读请看这里,很多高手的文章都在这里,感谢他们的帮助

        

       很多内容都是自己瞎琢磨的,有问题请大家批评指正thanks

 

 

3
6
分享到:
评论
2 楼 gkbusy 2011-03-20  
总结的好~~

补充一点:

序列化中有一个法则是:静态属性不纳入序列化的内容之中。
不过这个法则有一个例外的场景——就是针对serialVersionUID。

serialVersionUID这个静态属性会被序列化写入到传输的二进制内容中,在反序列化的时候,客户端会用本地中java类中的serialVersionUID与从网络(或者其他方式)中传送过来的二进制实例信息中的serailVersionUID的值进行比较,从而了解这两份序列化的内容是否为同一个类产生的。
1 楼 lixjluck 2011-03-18  
总结的很好,学习了。

相关推荐

    Java对象序列化的秘密

    Java对象序列化是Java平台提供的一种机制,允许将对象的状态转换为字节流,以便存储在磁盘上、通过网络传输或在不同时间点恢复。这个过程涉及到将一个复杂的Java对象模型转换为简单的二进制表示,使得数据可以在不同...

    Java 序列化的秘密(高清PDF中文版)

    ### Java序列化的秘密 #### 为什么需要序列化 在探讨序列化之前,我们需要理解序列化产生的背景及其必要性。简而言之,Java程序本质上是由进程和内存构成的系统,在这个系统中,进程根据定义好的类生成一系列实例...

    04.序列和单元格的秘密共16页.pdf.zip

    综上所述,虽然具体文档内容未知,但可以推测"序列和单元格的秘密"可能涵盖了如何有效地使用序列进行数据分析,理解单元格的引用机制,以及利用这些基础进行更高级的操作,如公式编写、排序、过滤和条件格式化等。...

    信息安全_数据安全_us-18-Haken-Automated-Discovery-of-Deserialization

    【信息安全与数据安全:自动化序列化 gadget 链的发现】 在信息技术领域,尤其是在网络安全方面,数据安全是至关重要的。信息安全是指确保数据的保密性、完整性和可用性,以防止未经授权的访问、修改或破坏。数据...

    时间序列数据库的秘密(二)——索引

    Elasticsearch是通过Lucene的倒排索引技术实现比...要进一步深入的化,还是要看一下Lucene的倒排索引是怎么构成的。这里有好几个概念。我们来看一个实际的例子,假设有如下的数据:这里每一行是一个document。每个doc

    易语言源码秘密潜入OICQ1.0.7z

    3. 数据序列化与解析:QQ通信通常涉及数据的序列化和反序列化,开发者需要知道如何将数据结构转换为可发送的字节流,以及接收后如何还原为原始数据。 4. 非法操作的风险:需要注意的是,“秘密潜入”一词可能暗示了...

    RPC协议解析

    4. **服务器解序列化**:服务器接收到请求后,对其进行解序列化,然后调用相应的服务方法。 5. **响应序列化与传输**:服务处理完成后,服务器将结果序列化并通过网络返回给客户端。 6. **客户端解序列化**:客户端...

    数据可视化专家的七个秘密

    以下是对"数据可视化专家的七个秘密"这一主题的详细解读: 1. **选择合适的图表类型**:不同的数据和问题需要不同类型的图表来呈现。例如,条形图适合比较类别之间的数量差异,折线图用于显示趋势,饼图展示部分与...

    数据-2011-2018年维多利亚的秘密各部门全球净销售额.rar

    标签“数据”提示我们这是一个用于分析和研究的数据资源,可能是以表格形式(如Excel文件)存在,包含数值和时间序列信息,适合进行统计分析和数据可视化。 压缩包子文件的文件名称“数据-2011-2018年维多利亚的...

    sss:实现 Shamir 的秘密共享算法的 Java 库

    该库包含用于将共享序列化和反序列化为二进制消息的实用函数,以实现紧凑且易于存储和共享。 工件在 Maven 中央存储库中的以下坐标可用: <groupId>rs.in.zivanovic <artifactId>sss <version>1.0.0 ...

    【Java面试+Java学习指南】 一份涵盖大部分Java程序员所需要掌握的核心知识

    序列化和反序列化 继承、封装、多态的实现原理 容器 Java集合类总结 Java集合详解1:一文读懂ArrayList,Vector与Stack使用方法和实现原理 Java集合详解2:Queue和LinkedList Java集合详解3:Iterator,fail-fast机制...

    时间的秘密:在SPSS中进行时间序列分析的深度指南

    4. **结果可视化**:提供多种图表和图形,帮助用户直观地理解分析结果。 5. **扩展性**:可以通过安装额外的插件和模块来扩展其功能。 SPSS现在由IBM公司维护和开发,并且已经被整合到IBM的分析解决方案中,称为IBM...

    ASHRAE标准135-2020:楼宇自动化与控制网络数据通信协议

    标准定义了BACnet消息传递接口的格式、编码规则和语义解析方式,在多个应用实例上解释了ASN.1表示法下的BACnet对象的序列化和反序列化流程。 适合人群:适用于从事智能建筑、楼宇控制系统集成的专业人士和开发者们。...

    (4,4)的量子秘密共享协议及其模型化检测

    协议中由发起者制备五粒子GHZ态的量子序列, 秘密共享方总人数为4, 只有当4个人都参与解密时才能解出秘密信息。分析了协议的正确性和安全性, 结果表明协议能抵抗截获重发攻击、中间人攻击和纠缠攻击。当诱惑粒子存在...

    手机中的秘密——SIM卡的秘密

    ### 手机中的秘密——SIM卡的秘密 #### SIM卡简介 SIM卡,即用户识别模块(Subscriber Identity Module),是一种用于移动通信设备中的智能卡。它不仅承载着用户的个人身份信息,还是实现移动通信服务的关键部件之...

    Java工程师面试复习指南

    序列化和反序列化 继承封装多态的实现原理 集合类 Java集合类总结 Java集合详解:一文读懂ArrayList,Vector与Stack使用方法和实现原理 Java集合详解:Queue和LinkedList Java集合详解:迭代器,快速失败机制与比较器...

    litjson.rar

    总之,litjson.dll在Unity3D的C#开发中扮演着重要的角色,它简化了JSON数据的序列化和反序列化过程,使开发者能够更加专注于游戏逻辑和功能的实现。掌握litjson的使用,无疑能提高开发效率,提升项目的整体质量。

    秘密共享者

    Python的内置`pickle`库可能用于序列化对象到文件,而`socket`库或HTTP库(如`requests`)则可能用于网络通信。 7. **版本控制**:由于项目名称中包含"master",这可能是Git版本控制的一部分,意味着代码可能托管在...

    xstream-1.4.3

    XStream,这个小巧而强大的库,自版本1.4.3以来,一直是Java开发者处理对象序列化和反序列化的首选工具。它以其简洁的API、高效的性能和对多种格式的支持赢得了广泛的赞誉。在本文中,我们将深入探讨XStream的核心...

Global site tag (gtag.js) - Google Analytics