Kryo序列化及反序列化用法示例

  

Kryo是一个快速高效的Java对象图形序列化框架,主要特点是性能,高效和易用。该项目用来序列化对象到文件,数据库或者网络。
  

  

,,,代码地址:https://github.com/EsotericSoftware/kryo
  

  

,,,样例代码地址:https://github.com/nettm/public
  

  

,,,Kryo的序列化及反序列速度很快,据说很多大公司都在用,我在把对象序列化都转换成了字符串形式,是为了把对象存储到缓存中。我们日常项目中使用的数据形式包括对象,列表,设置和地图,因此主要把这几种类型的数据进行了序列化及反序列化,支持对象中包含列表,设置和地图。
  

  

首先在项目的pom文件中引入:
  

        & lt; dependency>   & lt; groupId> com.esotericsoftware   & lt; artifactId> kryo-shaded   & lt; version> 3.0.3   & lt;/dependency>   之前      

代码KryoTest:
  

        包com.nettm.serializable;   进口java.io.ByteArrayInputStream;   进口java.io.ByteArrayOutputStream;   进口java.io.IOException;   进口java.io.Serializable;   进口java.util.ArrayList;   进口java.util.HashMap;   进口java.util.HashSet;   进口并不知道;   进口java.util.Map;   进口java.util.Set;   进口org.apache.commons.codec.binary.Base64;   进口org.testng.Assert;   进口org.testng.annotations.AfterTest;   进口org.testng.annotations.BeforeTest;   进口org.testng.annotations.Test;   进口com.esotericsoftware.kryo.Kryo;   进口com.esotericsoftware.kryo.io.Input;   进口com.esotericsoftware.kryo.io.Output;   进口com.esotericsoftware.kryo.serializers.CollectionSerializer;   进口com.esotericsoftware.kryo.serializers.JavaSerializer;   进口com.esotericsoftware.kryo.serializers.MapSerializer;   公开课KryoTest {   私人时间长;   @BeforeTest   公共空间beforeTest () {   时间=System.currentTimeMillis ();   }   @AfterTest   公共空间后测(){   System.out.println (System.currentTimeMillis() -时间);   }   @Test (invocationCount=1, threadPoolSize=1)   公共空间testObject () {   CustomItemDto val=new CustomItemDto ();   val.setId (Long.parseLong (String.valueOf (1)));   val.setItemCode (" ");   val.setItemDespositPrice (32.45);   val.setItemMemo(空);   val.setItemName(“张金”);   val.setItemPrice (89.02);   val.setSort (10);   字符串a=serializationObject (val);   CustomItemDto.class CustomItemDto newValue=https://www.yisu.com/zixun/deserializationObject(一个);   newValue.getId Assert.assertEquals (val.getId () ());   }   @Test (invocationCount=1, threadPoolSize=1)   公共空间testList () {   List ();   for (int i=0;我<10;我+ +){   CustomItemDto val=new CustomItemDto ();   val.setId (Long.parseLong (String.valueOf (i)));   val.setItemCode (" ");   val.setItemDespositPrice (32.45);   val.setItemMemo(空);   val.setItemName(“张金”);   val.setItemPrice (89.02);   val.setSort (10);   lst.add (val);   }   字符串a=serializationList (lst, CustomItemDto.class);   ListnewValue=https://www.yisu.com/zixun/deserializationList(一个,   CustomItemDto.class);   newValue.size Assert.assertEquals (lst.size () ());   }   @Test (invocationCount=1, threadPoolSize=1)   公共空间testBean () {   List ();   for (int j=0;j <10;j + +) {   CustomCategoryDto dto=new CustomCategoryDto ();   dto.setCategoryCode (“ABCD_001”);   dto.setCategoryName(“呼吸系统”);   for (int i=0;我& lt;10;我+ +){   CustomItemDto val=new CustomItemDto ();   val.setId (Long.parseLong (String.valueOf (i)));   val.setItemCode (" ");   val.setItemDespositPrice (32.45);   val.setItemMemo(空);   val.setItemName(“张金”);   val.setItemPrice (89.02);   val.setSort (10);   dto.getCustomItemList阀门()(val);   }   for (int i=0;我& lt;10;我+ +){   CustomItemDto val=new CustomItemDto ();   val.setId (Long.parseLong (String.valueOf (i)));   val.setItemCode (" ");   val.setItemDespositPrice (32.45);   val.setItemMemo(空);   val.setItemName(“张金”);   val.setItemPrice (89.02);   val.setSort (10);   dto.getCustomItemSet阀门()(val);   }   for (int i=0;我& lt;10;我+ +){   CustomItemDto val=new CustomItemDto ();   val.setId (Long.parseLong (String.valueOf (i)));   val.setItemCode (" ");   val.setItemDespositPrice (32.45);   val.setItemMemo(空);   val.setItemName(“张金”);   val.setItemPrice (89.02);   val.setSort (10);   dto.getCustomItemMap () .put (String.valueOf(我),val);   }   lst.add (dto);   }   字符串a=serializationList (lst, CustomCategoryDto.class);   List

Kryo序列化及反序列化用法示例