zoukankan      html  css  js  c++  java
  • messagePack编解码

    首先引入javassist-3.20.0-GA.jar与msgpack-0.6.12.jar两个包,然后就可以使用.

     1 package com.ming.netty.code;
     2 
     3 import java.io.Serializable;
     4 import java.nio.ByteBuffer;
     5 
     6 
     7 /**
     8  * 一个普通学生类
     9  * @author mingge
    10  *
    11  */
    12 public class Student implements Serializable{
    13     private static final long serialVersionUID = 1L;
    14 
    15     private String stuName;
    16 
    17 
    18     public String getStuName() {
    19         return stuName;
    20     }
    21 
    22     public void setStuName(String stuName) {
    23         this.stuName = stuName;
    24     }
    25     
    26     public byte[] codeC(){
    27         ByteBuffer buffer=ByteBuffer.allocate(1024);
    28         byte[] value=this.getStuName().getBytes();
    29         buffer.putInt(value.length);
    30         buffer.put(value);
    31         buffer.flip();
    32         value=null;
    33         byte[] result=new byte[buffer.remaining()];
    34         buffer.get(result);
    35         return result;
    36     }
    37     
    38 }
     1 package com.ming.netty.code;
     2 
     3 import java.io.ByteArrayOutputStream;
     4 import java.io.ObjectOutputStream;
     5 import java.util.ArrayList;
     6 import java.util.List;
     7 
     8 import org.msgpack.MessagePack;
     9 import org.msgpack.template.Templates;
    10 
    11 public class TestMsgPack {
    12 
    13     public static void main(String[] args) throws Exception{
    14         List<String> list=new ArrayList<>();
    15         list.add("a");
    16         list.add("b");
    17         list.add("c");
    18         
    19         ByteArrayOutputStream bos=new ByteArrayOutputStream();
    20         ObjectOutputStream os=new ObjectOutputStream(bos);
    21         os.writeObject(list);
    22         os.flush();
    23         os.close();
    24         byte[] b=bos.toByteArray();
    25         System.out.println("list的jdk序列化长度:"+b.length);
    26         
    27         MessagePack msgpack=new MessagePack();
    28         byte[] bytes=msgpack.write(list);//序列化编码
    29         System.out.println("list的msgpack序列化长度:"+bytes.length);
    30         
    31         List<String> dst=msgpack.read(bytes,Templates.tList(Templates.TString));//反序列化
    32         System.out.println("反序列化获取的值:"+dst.get(0));
    33         
    34         Teacher t=new Teacher();
    35         t.setNo(1);
    36         t.setName("张三");
    37         t.setSex("男");
    38         MessagePack msgpack1=new MessagePack();
    39         byte[] bytes1=MessagePack.pack(t);//序列化编码
    40         System.out.println("teacher序列化长度:"+bytes1.length);
    41         
    42         
    43         
    44         Teacher t1=msgpack1.read(bytes1, Teacher.class);
    45         System.out.println("t1的值:"+t1.getName());
    46     }
    47 }

    运行结果集:

    list的jdk序列化长度:70
    list的msgpack序列化长度:7
    反序列化获取的值:a
    teacher序列化长度:13
    t1的值:张三

    显然msgpack的序列化比jdk序列化要好一点.

  • 相关阅读:
    mtk camera 移植步骤
    Camera 涉及的文件70
    android camera(四):camera 驱动 GT2005
    android camera(二):摄像头工作原理、s5PV310 摄像头接口(CAMIF)
    android camera(三):camera V4L2 FIMC
    android camera(一):camera模组CMM介绍
    【译】第23节---Fluent API
    【译】第22节---Fluent API
    【译】第21节---Fluent API
    【译】第20节---数据注解-InverseProperty
  • 原文地址:https://www.cnblogs.com/huzi007/p/5518059.html
Copyright © 2011-2022 走看看