1.前言
在互联网快速发展的今天,互联网架构也在不断的升级。而数据的传输和存贮是互联网系统中不可或缺的一部分。举个简单的例子,目前微服务已经很普及了,就拿dubbo来说,不管用jdk自带的序列化,还是dubbo的序列化,效果都不尽然人意。市面上高性能的序列化工具也有例如kryo,pb。但是kryo虽然序列化出来的体积小,传输快,但是不支持前后兼容。(例如序列化前和序列化后,对象的字段必须是一样的,不能多也不能少,否则就会报错),pb整体都不错,体积小,传输快,前后兼容。
但是要自己编写pb文件,使用门槛高。而protoStuff和pb很相似,可以兼容PB,是java的序列化工具类。不需要编写pb文件,开箱即用。
2.依赖
<dependency>
<groupId>io.protostuff</groupId>
<artifactId>protostuff-core</artifactId>
<version>1.7.2</version>
</dependency>
<dependency>
<groupId>io.protostuff</groupId>
<artifactId>protostuff-runtime</artifactId>
<version>1.7.2</version>
</dependency>
3.用法
protoStuff默认只自定义的pojo,如果需要序列化jdk的Map,List等类,需要使用包装类。
package com.ly;
import com.ly.entity.Good;
import io.protostuff.LinkedBuffer;
import io.protostuff.ProtostuffIOUtil;
import io.protostuff.Schema;
import io.protostuff.runtime.RuntimeSchema;
import java.io.FileInputStream;
import java.io.IOException;
import java.