https://blog.csdn.net/lan12334321234/article/details/84907492

实用

import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

import java.io.IOException;

import java.io.Serializable;

import java.util.ArrayList;

import java.util.List;

import org.apache.commons.codec.binary.Base64;

import com.esotericsoftware.kryo.Kryo;

import com.esotericsoftware.kryo.io.Input;

import com.esotericsoftware.kryo.io.Output;

import com.esotericsoftware.kryo.serializers.CollectionSerializer;

import com.esotericsoftware.kryo.serializers.JavaSerializer;

public class KyroTest {

public static void main(String[] args) {

List list = new ArrayList();

Person p ;

for(int i=0;i<=100000;i++){

p = new Person();

p.setId(i);

list.add(p);

}

long begin = System.currentTimeMillis();

String listStr = serializationList(list,Person.class);

System.out.println(listStr.length());

System.out.println(System.currentTimeMillis()-begin);

begin = System.currentTimeMillis();

deserializationList(listStr,Person.class);

System.out.println(System.currentTimeMillis()-begin);

}

@SuppressWarnings("all")

private static String serializationList(List obj, Class clazz) {

Kryo kryo = new Kryo();

kryo.setReferences(false);

kryo.setRegistrationRequired(true);

CollectionSerializer serializer = new CollectionSerializer();

serializer.setElementClass(clazz, new JavaSerializer());

serializer.setElementsCanBeNull(false);

kryo.register(clazz, new JavaSerializer());

kryo.register(ArrayList.class, serializer);

ByteArrayOutputStream baos = new ByteArrayOutputStream();

Output output = new Output(baos);

kryo.writeObject(output, obj);

output.flush();

output.close();

byte[] b = baos.toByteArray();

try {

baos.flush();

baos.close();

} catch (IOException e) {

e.printStackTrace();

}

return new String(new Base64().encode(b));

}

@SuppressWarnings("all")

private static List deserializationList(String obj, Class clazz) {

Kryo kryo = new Kryo();

kryo.setReferences(false);

kryo.setRegistrationRequired(true);

CollectionSerializer serializer = new CollectionSerializer();

serializer.setElementClass(clazz, new JavaSerializer());

serializer.setElementsCanBeNull(false);

kryo.register(clazz, new JavaSerializer());

kryo.register(ArrayList.class, serializer);

ByteArrayInputStream bais = new ByteArrayInputStream(new Base64().decode(obj));

Input input = new Input(bais);

return (List) kryo.readObject(input, ArrayList.class, serializer);

}

/**

* 序列化对象

*

* @param obj

* @return

*/

@SuppressWarnings("all")

private static String serializationObject(T obj) {

Kryo kryo = new Kryo();

kryo.setReferences(false);

kryo.register(obj.getClass(), new JavaSerializer());

ByteArrayOutputStream baos = new ByteArrayOutputStream();

Output output = new Output(baos);

kryo.writeClassAndObject(output, obj);

output.flush();

output.close();

byte[] b = baos.toByteArray();

try {

baos.flush();

baos.close();

} catch (IOException e) {

e.printStackTrace();

}

return new String(new Base64().encode(b));

}

/**

* 反序列化

*

* @param obj

* @param clazz

* @return

*/

@SuppressWarnings("all")

private T deserializationObject(String obj, Class clazz) {

Kryo kryo = new Kryo();

kryo.setReferences(false);

kryo.register(clazz, new JavaSerializer());

ByteArrayInputStream bais = new ByteArrayInputStream(new Base64().decode(obj));

Input input = new Input(bais);

return (T) kryo.readClassAndObject(input);

}

}

class Person implements Serializable{

private static final long serialVersionUID = 1L;

private int id ;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

}

---------------------

作者:艾伦蓝

来源:CSDN

原文:https://blog.csdn.net/lan12334321234/article/details/84907492

版权声明:本文为博主原创文章,转载请附上博文链接!

java kryo_java kryo序列化与反序列化相关推荐

  1. fileinputstream自定义类序列化和反序列化_Rest Assured篇:Java中的序列化和反序列化...

    点击上方蓝字设为星标 每天傍晚伴你一起成长! Java 中的序列化和反序列化是一个重要的编程概念.它适用于所有主要的编程语言.在本章中,我们将尝试在Java语言的上下文中理解此概念.在本章的最后,我们 ...

  2. Java对象的序列化与反序列化

    序列化与反序列化 序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程.一般将一个对象存储至一个储存媒介,例如文件或是内存缓冲区等.在网络传输过程中,可以是字节或是 ...

  3. java对象的序列化和反序列化详细解释

    java对象的序列化和反序列化是什么意思 1.序列化是干啥用的? 序列化的原本意图是希望对一个Java对象作一下"变换",变成字节序列,这样一来方便持久化存储到磁盘,避免程序运行结 ...

  4. 反序列化对象列表发生异常_面试官:你知道Java对象的序列化与反序列化背后的原理吗?...

    序列化与反序列化 序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程.一般将一个对象存储至一个储存媒介,例如档案或是记亿体缓冲等.在网络传输过程中,可以是字节或是 ...

  5. Java对象的序列化和反序列化

    [感谢]孤傲苍狼的 Java基础学习总结--Java对象的序列化和反序列化 一.序列化和反序列化的概念 序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化.可以对流化后的对象进行 ...

  6. JAVA中JSON序列化和反序列化

    JAVA中JSON序列化和反序列化 1 FASTJSON的序列化和反序列化 1.1 主函数 1.2 自定义对象 2 GSON序列化和反序列化 2.1 主函数 2.2 自定义对象 总结 不同包序列化和反 ...

  7. K:java中的序列化与反序列化

    Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?以下内容将围绕这些问题进行展开讨论. Java序列化与反序列化 简单来说Java序列化是指把Java对象转 ...

  8. Java对象序列化详解6,Java对象的序列化与反序列化详解

    把对象转换为字节序列的过程称为对象的序列化,把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种途径: Ⅰ . 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中 Ⅱ.  在网 ...

  9. Java基础学习总结——Java对象的序列化和反序列化

    一.序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化. 把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存 ...

  10. Java基础学习总结(14)——Java对象的序列化和反序列化

    2019独角兽企业重金招聘Python工程师标准>>> 一.序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化. 把字节序列恢复为对象的过程称为对象的反序列化. 对象 ...

最新文章

  1. java b2b b2c o2o分布式电子商务云平台
  2. 中国文学发展史思维导图
  3. Segment Routing — SRv6 — Overview
  4. Oracle创建用户、表空间、导入导出、...命令
  5. ❗HTML引入JavaScript的三种常用方式汇总❗
  6. QDoc支持衍生项目
  7. python3 -c 和 python3 -m
  8. 175. Combine Two Tables
  9. python离线安装依赖包_python离线安装外部依赖包的实现
  10. VMware、Ubuntu和apt
  11. 高斯主元素消去法c语言,列主元Gauss消去法(C++实现)
  12. 改进的脱机手写体汉字细化算法
  13. 【转】Java URL Encoding and Decoding
  14. 21个js 技巧收藏
  15. h5小游戏构建架设h5棋牌平台开发制作
  16. MATLAB常见非线性可视化绘制方法-分岔图与庞加莱截面(混沌可视化、Poincare截面、Logistic、Henon、Lorenz、Rossler、Duffing系统)
  17. windows和linux共用蓝牙鼠标,Ubuntu和Windows双系统蓝牙设备共享配对
  18. mysql创建表时出现10064错误
  19. 《易学C++(第2版)》——2.2 如何创建一个程序
  20. 以太坊区块链 POA本地搭建多节点私有链

热门文章

  1. java黄金分割_黄金分式与黄金分割数(Java实现)
  2. npm run tsc报错 (声明文件报错||tsc.js报错)
  3. 2021年中国消费金融行业贷款情况及发展趋势分析:互联网消费金融放款规模达到20.2万亿[图]
  4. 销售团队管理规章制度
  5. Android电源键亮灭屏流程
  6. oracle 增量导出 导入,Oracle增量导入导出
  7. leetcode 有效的括号
  8. 一个人的精神结构和他的精神资源
  9. MacOS High Sierra(10.13.6)上安装xcode10.2.1
  10. 手机电脑Mac地址修改方法