Kryo序列化学习笔记

参考资料:https://github.com/EsotericSoftware/kryo#quickstart

开始

Kryo是一种基于java的快速高效序列化框架,该框架的目标是速度,效率以及容易使用的API。项目可以在任何时间将对象永久化到文件,数据库或者网络。

先看一个最简单的例子

Kryo kryo = new Kryo();
try {
	Output output = new Output(new FileOutputStream("file.bin"));
	String strobj = "hello world";
	kryo.writeObject(output, strobj);
	output.close();

	Input input = new Input(new FileInputStream("file.bin"));
	String someObject = kryo.readObject(input, String.class);
	System.out.println(someObject);
	input.close();
} catch (FileNotFoundException e) {
	e.printStackTrace();
}



该程序能够将String对象序列化到文件,然后在从文件中反序列化到内存对象

IO

Output对象继承至OutputStream,可以通过其将数据写入到它内部的bytebuffer。如果给这个Output设置了一个OutputStream的话,当它内部的buffer满了的话,它会将字节数据自动的flush到输出流。Output有很多方法用来将原语和字符串写成字节,它提供的功能类似于DataoutputStream,BufferedOutputStream,FilterOutputStream。

因为Output会将数据缓存到内部的字节数组中,所以当调用完写数据操作后,务必调用flush(),close()函数确保数据发送到输出流中。

Input类是一种InputStream,可以从一个字节数组中读取数据,这个缓存数组可以直接设置。如果给Input设置了InputStream的话,它将从输入流中读取数据来fill缓存数组。Input具有很多方法将字节转换成原语和字符串。它提供的功能类似DataInputStream, BufferedInputStream, FilterInputStream, andByteArrayInputStream.

Serialzer

Kryo是一种序列化框架,它不强制使用某种模式或者操作特点的数据,这些规范都交由Serializers自己来处理。Serializers提供了默认操作数据的各种方法。如果不是特别用途的话,它可以部分或全部的替代。框架提供的Serializers为大多数的对象提供了读写操作的方法,如果需要的的话,自己实现一个Seralizer也十分容易,框架提供了Serialzer抽象类,该类提供了对象转字节和字节转对象的方法。

public class ColorSerializer extends Serializer<Color> {
    public void write (Kryo kryo, Output output, Color object) {
        output.writeInt(object.getRGB());
    }

    public Color read (Kryo kryo, Input input, Class<T> type) {
        return new Color(input.readInt(), true);
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值