Kryo框架的获取、基本应用例子

2023-10-11 19:08

本文主要是介绍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]);				}



是不是非常简单?好了,下一篇文章讲述如何在序列化的同时进行数据的加密。。。


转载请注明出处:http://blog.csdn.net/rocklee

这篇关于Kryo框架的获取、基本应用例子的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/190204

相关文章

分布式锁在Spring Boot应用中的实现过程

《分布式锁在SpringBoot应用中的实现过程》文章介绍在SpringBoot中通过自定义Lock注解、LockAspect切面和RedisLockUtils工具类实现分布式锁,确保多实例并发操作... 目录Lock注解LockASPect切面RedisLockUtils工具类总结在现代微服务架构中,分布

Python标准库之数据压缩和存档的应用详解

《Python标准库之数据压缩和存档的应用详解》在数据处理与存储领域,压缩和存档是提升效率的关键技术,Python标准库提供了一套完整的工具链,下面小编就来和大家简单介绍一下吧... 目录一、核心模块架构与设计哲学二、关键模块深度解析1.tarfile:专业级归档工具2.zipfile:跨平台归档首选3.

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

深入浅出SpringBoot WebSocket构建实时应用全面指南

《深入浅出SpringBootWebSocket构建实时应用全面指南》WebSocket是一种在单个TCP连接上进行全双工通信的协议,这篇文章主要为大家详细介绍了SpringBoot如何集成WebS... 目录前言为什么需要 WebSocketWebSocket 是什么Spring Boot 如何简化 We

Java Stream流之GroupBy的用法及应用场景

《JavaStream流之GroupBy的用法及应用场景》本教程将详细介绍如何在Java中使用Stream流的groupby方法,包括基本用法和一些常见的实际应用场景,感兴趣的朋友一起看看吧... 目录Java Stream流之GroupBy的用法1. 前言2. 基础概念什么是 GroupBy?Stream

python中列表应用和扩展性实用详解

《python中列表应用和扩展性实用详解》文章介绍了Python列表的核心特性:有序数据集合,用[]定义,元素类型可不同,支持迭代、循环、切片,可执行增删改查、排序、推导式及嵌套操作,是常用的数据处理... 目录1、列表定义2、格式3、列表是可迭代对象4、列表的常见操作总结1、列表定义是处理一组有序项目的

C#中的Converter的具体应用

《C#中的Converter的具体应用》C#中的Converter提供了一种灵活的类型转换机制,本文详细介绍了Converter的基本概念、使用场景,具有一定的参考价值,感兴趣的可以了解一下... 目录Converter的基本概念1. Converter委托2. 使用场景布尔型转换示例示例1:简单的字符串到

Python获取浏览器Cookies的四种方式小结

《Python获取浏览器Cookies的四种方式小结》在进行Web应用程序测试和开发时,获取浏览器Cookies是一项重要任务,本文我们介绍四种用Python获取浏览器Cookies的方式,具有一定的... 目录什么是 Cookie?1.使用Selenium库获取浏览器Cookies2.使用浏览器开发者工具

Java获取当前时间String类型和Date类型方式

《Java获取当前时间String类型和Date类型方式》:本文主要介绍Java获取当前时间String类型和Date类型方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录Java获取当前时间String和Date类型String类型和Date类型输出结果总结Java获取

Spring Boot Actuator应用监控与管理的详细步骤

《SpringBootActuator应用监控与管理的详细步骤》SpringBootActuator是SpringBoot的监控工具,提供健康检查、性能指标、日志管理等核心功能,支持自定义和扩展端... 目录一、 Spring Boot Actuator 概述二、 集成 Spring Boot Actuat