定州网站制作多少钱,购物型网站建设,淄博网站建设价格,治疗男科一般花费多少钱序列化工具对比 JdkSerialize#xff1a;java内置的序列化能将实现了Serilazable接口的对象进行序列化和反序列化#xff0c; ObjectOutputStream的writeObject()方法可序列化对象生成字节数组 Protostuff#xff1a;google开源的protostuff采用更为紧凑的二进制数组#… 序列化工具对比 JdkSerializejava内置的序列化能将实现了Serilazable接口的对象进行序列化和反序列化 ObjectOutputStream的writeObject()方法可序列化对象生成字节数组 Protostuffgoogle开源的protostuff采用更为紧凑的二进制数组表现更加优异然后使用protostuff的编译工具生成pojo类
JdkSerializeUtil import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;/*** jdk序列化*/
public class JdkSerializeUtil {/*** 序列化* param obj* param T* return*/public static T byte[] serialize(T obj) {if (obj null){throw new NullPointerException();}ByteArrayOutputStream bos new ByteArrayOutputStream();try {ObjectOutputStream oos new ObjectOutputStream(bos);oos.writeObject(obj);return bos.toByteArray();} catch (Exception ex) {ex.printStackTrace();}return new byte[0];}/*** 反序列化* param data* param clazz* param T* return*/public static T T deserialize(byte[] data, ClassT clazz) {ByteArrayInputStream bis new ByteArrayInputStream(data);try {ObjectInputStream ois new ObjectInputStream(bis);T obj (T)ois.readObject();return obj;} catch (Exception ex) {ex.printStackTrace();}return null;}}ProtostuffUtil 优选 import com.heima.model.wemedia.pojos.WmNews;
import io.protostuff.LinkedBuffer;
import io.protostuff.ProtostuffIOUtil;
import io.protostuff.Schema;
import io.protostuff.runtime.RuntimeSchema;public class ProtostuffUtil {/*** 序列化* param t* param T* return*/public static T byte[] serialize(T t){Schema schema RuntimeSchema.getSchema(t.getClass());return ProtostuffIOUtil.toByteArray(t,schema,LinkedBuffer.allocate(LinkedBuffer.DEFAULT_BUFFER_SIZE));}/*** 反序列化* param bytes* param c* param T* return*/public static T T deserialize(byte []bytes,ClassT c) {T t null;try {t c.newInstance();Schema schema RuntimeSchema.getSchema(t.getClass());ProtostuffIOUtil.mergeFrom(bytes,t,schema);} catch (InstantiationException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();}return t;}}Protostuff需要引导依赖
dependencygroupIdio.protostuff/groupIdartifactIdprotostuff-core/artifactIdversion1.6.0/version
/dependencydependencygroupIdio.protostuff/groupIdartifactIdprotostuff-runtime/artifactIdversion1.6.0/version
/dependency
测试
/*** jdk序列化与protostuff序列化对比* param args*/public static void main(String[] args) {long start System.currentTimeMillis();for (int i 0; i 1000000 ; i) {WmNews wmNews new WmNews(); //自己测试创建的对象JdkSerializeUtil.serialize(wmNews);}System.out.println( jdk 花费 (System.currentTimeMillis()-start));start System.currentTimeMillis();for (int i 0; i 1000000 ; i) {WmNews wmNews new WmNews();ProtostuffUtil.serialize(wmNews);}System.out.println( protostuff 花费 (System.currentTimeMillis()-start));}
结果