序列化与反序列化

序列化潜规则

  1. 序列化的对象必须实现Serializable接口
  2. 序列化与反序列化的版本号不一致会报错
  3. 序列化与反序列化的字段不同不会报错,只是反序列化字段多余的会是null,缺少的就缺少了
  4. 静态变量不参与序列化
  5. transient关键字修饰的字段不会参与序列化
  6. 子类实现序列化但是父类没有,那么父类的字段不能被序列化会是null,但是父类实现序列化,子类不实现,那就可以全部序列化
  7. 可以通过writeObject()和readObject()方法手动实现序列化
  8. 同一个对象被序列化两次以后,数据大小会增长5个字节,这5个字节就是多出来的引用,指向的是同一个对象内存地址
  9. 序列化可以实现克隆,实现Cloneable接口,浅克隆只会克隆对象本身的属性和依赖的对象的引用,而不会克隆依赖对象本身,深克隆不仅会克隆对象本身还会克隆依赖的对象本身(相当于重新开辟了一份空间)

序列化技术:

了解更多可以点这里

java自带的
实现Serializable接口,通过二进制流
webservice技术形式
通过http+xml实现,
优点:可读性高
缺点:字节码比较大,效率不高
jackson / fastjson / gson
相对来说jackson比fastjson要快,比gson性能要好,但是jackson和gson的稳定性要比fastjson好
hession2
dubbo默认的
protobuf
独立语言,独立平台
优势:跨平台,空间压缩和性能都很好,解析性能也很高
缺点:实现很麻烦,学习成本高
varint去编码(基于位图做的),然后用TLV方式去存储数据,tag-length-value,底层就是位运算算法
thrift
avro
kryo
messagepack
fst

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值