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

相关文章

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

Python ORM神器之SQLAlchemy基本使用完全指南

《PythonORM神器之SQLAlchemy基本使用完全指南》SQLAlchemy是Python主流ORM框架,通过对象化方式简化数据库操作,支持多数据库,提供引擎、会话、模型等核心组件,实现事务... 目录一、什么是SQLAlchemy?二、安装SQLAlchemy三、核心概念1. Engine(引擎)

PostgreSQL简介及实战应用

《PostgreSQL简介及实战应用》PostgreSQL是一种功能强大的开源关系型数据库管理系统,以其稳定性、高性能、扩展性和复杂查询能力在众多项目中得到广泛应用,本文将从基础概念讲起,逐步深入到高... 目录前言1. PostgreSQL基础1.1 PostgreSQL简介1.2 基础语法1.3 数据库

Python异步编程之await与asyncio基本用法详解

《Python异步编程之await与asyncio基本用法详解》在Python中,await和asyncio是异步编程的核心工具,用于高效处理I/O密集型任务(如网络请求、文件读写、数据库操作等),接... 目录一、核心概念二、使用场景三、基本用法1. 定义协程2. 运行协程3. 并发执行多个任务四、关键

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

Python中的filter() 函数的工作原理及应用技巧

《Python中的filter()函数的工作原理及应用技巧》Python的filter()函数用于筛选序列元素,返回迭代器,适合函数式编程,相比列表推导式,内存更优,尤其适用于大数据集,结合lamb... 目录前言一、基本概念基本语法二、使用方式1. 使用 lambda 函数2. 使用普通函数3. 使用 N