当前位置 : 主页 > 编程语言 > c++ >

Protostuff序列化

来源:互联网 收集:自由互联 发布时间:2021-06-30
gistfile1.txt JDK提供的序列化技术相对而已效率较低。在转换二进制数组过程中空间利用率较差。在github上有个专门对比序列化技术做对比的数据:https://github.com/eishay/jvm-serializers/wiki本文
gistfile1.txt
JDK提供的序列化技术相对而已效率较低。在转换二进制数组过程中空间利用率较差。
在github上有个专门对比序列化技术做对比的数据:https://github.com/eishay/jvm-serializers/wiki

本文使用protobuf的改良版protostuff,该技术的性能远远高于JDK提供的Serializable。

Maven的pom中加入依赖:

 
    
  
   com.dyuproject.protostuff
  
    
  
   protostuff-core
  
    
  
   1.1.2
  

 

 
    
  
   com.dyuproject.protostuff
  
    
  
   protostuff-runtime
  
    
  
   1.1.2
  

 

或者


 
    
  
   io.protostuff
  
    
  
   protostuff-core
  
    
  
   1.6.0
  

 

 
    
  
   io.protostuff
  
    
  
   protostuff-runtime
  
    
  
   1.6.0
  

 

简单使用protostuff:
1、假设有个实体类:Person;
2、序列化
    private RuntimeSchema
 
   schema = RuntimeSchema.createFrom(Person.class);

    Person person = new Person();
    person.setxxx();
    ...

    byte[] bytes = ProtostuffIOUtil.toByteArray(person, schema, LinkedBuffer.allocate(LinkedBuffer.DEFAULT_BUFFER_SIZE));


3、反序列化
    private RuntimeSchema
  
    schema = RuntimeSchema.createFrom(Person.class); byte[] bytes = ...//Person对象序列化后的byte数组 //准备一个空对象 Person person = schema.newMessage(); //将byte数组反序列化后放入person空对象中, ProtostuffIOUtil.mergeFrom(bytes, person, schema); System.out.println(person);
  
 
网友评论