当前位置: 首页 > 编程笔记 >

Kryo框架使用方法代码示例

国胤
2023-03-14
本文向大家介绍Kryo框架使用方法代码示例,包括了Kryo框架使用方法代码示例的使用技巧和注意事项,需要的朋友参考一下

Kryo框架的source已移至https://github.com/EsotericSoftware/kryo ,进入此页面,然后点击右边的Download Zip按钮,就能下载到最新版本的Kryo框架

     导入Eclipse时,记得JDK/JRE选用 JDK1.7版本,因为Kryo会引用到unsafe()对象的一些方法JDK1.7才兼容。。

     先来一个String类的序列化跟还原,是不是很简单?

</pre><pre name="code" class="java"> private static void testString () { 
  Kryo kryo=new Kryo(); 
  String w_str1="简体中文,繁體中文,English"; 
  //把w_str1对象序列化 
  Output output=new Output(1024); 
  kryo.writeObject(output, w_str1); 
  output.flush(); 
  output.close(); 
  byte[] w_ret= output.toBytes(); //获得byte数据,这些数据可用作储存、网络传输等... 
  //还原 
  Input input=new Input(w_ret); 
  input.close(); 
  String w_str2=kryo.readObject(input, String.class); 
  System.out.println(w_str2); 
 } 

   再来一个HashMap类的序列化跟还原,因为Kryo自带了很多java基本类的Serializer,所以尽管不知道Serializer,Kryo也自动匹配:

public static void testHashMap() throws NoSuchAlgorithmException{ 
  Kryo kryo=new Kryo();    
  HashMap h=new HashMap(); 
  h.put("k1", "v1"); 
  h.put("k2", "v2"); 
  Output output=new Output(1, 1024);  
  kryo.writeObject(output, h); 
  output.close(); 
  byte[] data=output.toBytes(); 
  Input i=new Input(data); 
  i.close(); 
  HashMap h2= (HashMap)kryo.readObject(i, HashMap.class); 
  System.out.println(h2.get("k2"));   
 } 

   那么,我自定义的Bean又应该如何处理呢?下面给出例子:
1、先定义Bean TestBean:

public static class TestBean implements Serializable{ 
  private int[] intArray; 
  private HashMap<String,String> hashMapVal; 
  private String strVal; 
  public int[] getIntArray () { 
   return intArray; 
  } 
  public void setIntArray (int[] intArray) { 
   this.intArray = intArray; 
  } 
  public HashMap<String, String> getHashMapVal () { 
   return hashMapVal; 
  } 
  public void setHashMapVal (HashMap<String, String> hashMapVal) { 
   this.hashMapVal = hashMapVal; 
  } 
  public String getStrVal () { 
   return strVal; 
  } 
  public void setStrVal (String strVal) { 
   this.strVal = strVal; 
  } 
 } 

    2、因为这是自定义的Bean,Kryo在序列化前先要对TestBean进行注册:kryo.register(TestBean.class,new BeanSerializer(kryo, TestBean.class)); ,具体例子如下:

public static void testBean() throws NoSuchAlgorithmException{ 
  Kryo kryo=new Kryo(); 
  kryo.register(TestBean.class,new BeanSerializer(kryo, TestBean.class)); 
  TestBean tb1=new TestBean(); 
  tb1.setStrVal("test1"); 
  tb1.setHashMapVal(new HashMap<String,String>()); 
  tb1.getHashMapVal().put("k1", "v1"); 
  tb1.getHashMapVal().put("k2", "v2"); 
  int[] ints=new int[3]; 
  ints[0]=1; 
  ints[1]=2; 
  ints[2]=3; 
  tb1.setIntArray(ints); 
  Output output=new Output(1, 1024);  
  kryo.writeObject(output, tb1); 
  output.close(); 
  byte[] data=output.toBytes(); 

   
Input i=new Input(data); 
 i.close(); 
 TestBean tb2= (TestBean)kryo.readObject(i, TestBean.class); 
 System.out.println(tb2.strVal); 
 System.out.println(tb2.hashMapVal.get("k1")); 
 System.out.println(tb2.intArray[2]);     
} 

总结

是不是非常简单?关于Kryo框架使用方法代码示例的介绍就到这里,希望对大家有所帮助。有什么问题可以随时留言,小编会及时回复大家的。

 类似资料:
  • 本文向大家介绍YII2框架中验证码的简单使用方法示例,包括了YII2框架中验证码的简单使用方法示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了YII2框架中验证码的简单使用方法。分享给大家供大家参考,具体如下: 验证码的使用是比较频繁的。YII2中已经帮我们做好了封装。 首先我们在控制器里创建一个actions方法,用于使用yii\captcha\CaptchaAction 显示页面代

  • 本文向大家介绍Yii 框架使用Gii生成代码操作示例,包括了Yii 框架使用Gii生成代码操作示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Yii 框架使用Gii生成代码操作。分享给大家供大家参考,具体如下: 开始 Gii Gii 是 Yii 中的一个模块。 可以通过配置应用的 modules 属性开启它。通常来讲在 config/web.php 文件中会有以下配置代码: 这段配置表

  • 本文向大家介绍Vue框架里使用Swiper的方法示例,包括了Vue框架里使用Swiper的方法示例的使用技巧和注意事项,需要的朋友参考一下 下载swiper 首先使用npm 或者cnpm下载swiper 引入swiper 使用swiper mounted里面调用 注意 如果想要从后台请求图片放上去 new Swiper要写在网络请求成功的函数里面,否则不会出来数据。 slider组件的内容如下:

  • 本文向大家介绍Yii框架Session与Cookie使用方法示例,包括了Yii框架Session与Cookie使用方法示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Yii框架Session与Cookie使用方法。分享给大家供大家参考,具体如下: Yii Session使用 Yii cookie的使用 更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、

  • 本文向大家介绍ThinkPHP5框架中使用JWT的方法示例,包括了ThinkPHP5框架中使用JWT的方法示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了ThinkPHP5框架中使用JWT的方法。分享给大家供大家参考,具体如下: JWT下载地址:https://jwt.io 可以直接去github上下载,也可以使用composer 使用composer的话要确保你的电脑上安装了comp

  • 问题内容: 我已经用Bottle完成了一些编码。这真的很简单,可以满足我的需求。但是,当我尝试将应用程序包装到一个类中时,我很固执: 是否可以在Bottle中使用方法而不是函数? 问题答案: 您的代码不起作用,因为您尝试路由到非绑定方法。非绑定方法没有对的引用,如果尚未创建的实例,怎么办? 如果要路由到类方法,则首先必须初始化类,然后再初始化到该对象上的方法,如下所示: 如果要在处理程序附近添加路