java kryo_java kryo序列化与反序列化
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序列化与反序列化相关推荐
- fileinputstream自定义类序列化和反序列化_Rest Assured篇:Java中的序列化和反序列化...
点击上方蓝字设为星标 每天傍晚伴你一起成长! Java 中的序列化和反序列化是一个重要的编程概念.它适用于所有主要的编程语言.在本章中,我们将尝试在Java语言的上下文中理解此概念.在本章的最后,我们 ...
- Java对象的序列化与反序列化
序列化与反序列化 序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程.一般将一个对象存储至一个储存媒介,例如文件或是内存缓冲区等.在网络传输过程中,可以是字节或是 ...
- java对象的序列化和反序列化详细解释
java对象的序列化和反序列化是什么意思 1.序列化是干啥用的? 序列化的原本意图是希望对一个Java对象作一下"变换",变成字节序列,这样一来方便持久化存储到磁盘,避免程序运行结 ...
- 反序列化对象列表发生异常_面试官:你知道Java对象的序列化与反序列化背后的原理吗?...
序列化与反序列化 序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程.一般将一个对象存储至一个储存媒介,例如档案或是记亿体缓冲等.在网络传输过程中,可以是字节或是 ...
- Java对象的序列化和反序列化
[感谢]孤傲苍狼的 Java基础学习总结--Java对象的序列化和反序列化 一.序列化和反序列化的概念 序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化.可以对流化后的对象进行 ...
- JAVA中JSON序列化和反序列化
JAVA中JSON序列化和反序列化 1 FASTJSON的序列化和反序列化 1.1 主函数 1.2 自定义对象 2 GSON序列化和反序列化 2.1 主函数 2.2 自定义对象 总结 不同包序列化和反 ...
- K:java中的序列化与反序列化
Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?以下内容将围绕这些问题进行展开讨论. Java序列化与反序列化 简单来说Java序列化是指把Java对象转 ...
- Java对象序列化详解6,Java对象的序列化与反序列化详解
把对象转换为字节序列的过程称为对象的序列化,把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种途径: Ⅰ . 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中 Ⅱ. 在网 ...
- Java基础学习总结——Java对象的序列化和反序列化
一.序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化. 把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存 ...
- Java基础学习总结(14)——Java对象的序列化和反序列化
2019独角兽企业重金招聘Python工程师标准>>> 一.序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化. 把字节序列恢复为对象的过程称为对象的反序列化. 对象 ...
最新文章
- java b2b b2c o2o分布式电子商务云平台
- 中国文学发展史思维导图
- Segment Routing — SRv6 — Overview
- Oracle创建用户、表空间、导入导出、...命令
- ❗HTML引入JavaScript的三种常用方式汇总❗
- QDoc支持衍生项目
- python3 -c 和 python3 -m
- 175. Combine Two Tables
- python离线安装依赖包_python离线安装外部依赖包的实现
- VMware、Ubuntu和apt
- 高斯主元素消去法c语言,列主元Gauss消去法(C++实现)
- 改进的脱机手写体汉字细化算法
- 【转】Java URL Encoding and Decoding
- 21个js 技巧收藏
- h5小游戏构建架设h5棋牌平台开发制作
- MATLAB常见非线性可视化绘制方法-分岔图与庞加莱截面(混沌可视化、Poincare截面、Logistic、Henon、Lorenz、Rossler、Duffing系统)
- windows和linux共用蓝牙鼠标,Ubuntu和Windows双系统蓝牙设备共享配对
- mysql创建表时出现10064错误
- 《易学C++(第2版)》——2.2 如何创建一个程序
- 以太坊区块链 POA本地搭建多节点私有链
热门文章
- java黄金分割_黄金分式与黄金分割数(Java实现)
- npm run tsc报错 (声明文件报错||tsc.js报错)
- 2021年中国消费金融行业贷款情况及发展趋势分析:互联网消费金融放款规模达到20.2万亿[图]
- 销售团队管理规章制度
- Android电源键亮灭屏流程
- oracle 增量导出 导入,Oracle增量导入导出
- leetcode 有效的括号
- 一个人的精神结构和他的精神资源
- MacOS High Sierra(10.13.6)上安装xcode10.2.1
- 手机电脑Mac地址修改方法