序列化

以下内容来自于《码出高效Java开发手册》,本人摘抄仅做学习使用。

内存中的数据对象只有转化为二进制流才可以进行数据持久化网络传输。重点 ,敲黑板了。将数据对象转化为二进制流的过程称为对象的序列化,反之将二进制流恢复为数据对象的过程称为反序列化。
实现序列化的三种方式:

1 Java原生序列化

 Java类通过实现Serialzable接口来实现该类对象的系列化。 一般是根据类内部的类名、接口名、方法名等内容自动生成serialVersionId,当类中内容变化时,编译器可能重新会生成serialVersionId值。因此实现Serialzable接口的类一定要显示地定义serialVersionId属性值。

2Hession序列化

 Hession序列化是一种支持动态类型、跨语言、基于对象传输的网络协议。Java对象系列化的二进制流可以被其他语言(c,C++等)反序列化。
 Hession序列化注意事项:
 Hession会把复杂对象所有属性存储在一个Map中进行序列化。所以在子类、父类存在同名成员变量的情况下,Hession序列化时,先序列化子类,然后序列化父类。因此反序列化结果会导致子类同名成员变量被父类的值覆盖。

3JSON序列化

JSON序列化就是将数据对象转化为JSON字符串。JSON反序列化就是将JSON字符串转化为Java对象。
序列化通常会通过网络传输对象,而对象中往往包括敏感数据,往往成为黑客的攻击点。如何防范这种黑客攻击呢?1有些对象的敏感属性不需要进行反序列化传输,可以加transient关键字来修饰属性,比如private transient password;.
下篇文章讲讲transient关键字的使用。
2如果一定要传递加密的属性,可以使用对称和非对称加密方法。

总结:应用开发者对序列化要有一定的安全防范意识、对于传入数据的内容进行校验或者权限控制,及时更新安全漏洞。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值