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); List newValue=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序列化及反序列化用法示例