前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >EsotericSoftware Kryo —— 官方(1)

EsotericSoftware Kryo —— 官方(1)

作者头像
MickyInvQ
发布2020-09-27 10:38:21
1.9K0
发布2020-09-27 10:38:21
举报
文章被收录于专栏:InvQ的专栏InvQ的专栏
在这里插入图片描述
在这里插入图片描述
kryo是什么

kryo 是一个针对Java的快速,高效的二进制对象图形序列化框架。

kryo目标

kryo的目标是高速、占用空间小、并且有简单好用的api 随时为Java对象提供持久化的能力,包括持久化为文件、数据库、或者网络传输。 kryo也可以实现深度和浅度的复制,克隆。

kryo 复制的过程

这是一个对象到对象的复制,而不是对象到字节数据,再到对象的过程。

安装

可现在最新发行版

Maven

在pom文件中加入依赖项

代码语言:javascript
复制
<dependency>
   <groupId>com.esotericsoftware</groupId>
   <artifactId>kryo</artifactId>
   <version>5.0.0-RC4</version>
</dependency>

如果没有maven,可以使用jar

快速开始
代码语言:javascript
复制
import com.esotericsoftware.kryo.Kryo;
import com.esotericsoftware.kryo.io.Input;
import com.esotericsoftware.kryo.io.Output;
import java.io.*;

public class HelloKryo {
   static public void main (String[] args) throws Exception {
      Kryo kryo = new Kryo();
      kryo.register(SomeClass.class);

      SomeClass object = new SomeClass();
      object.value = "Hello Kryo!";

      Output output = new Output(new FileOutputStream("file.bin"));
      kryo.writeObject(output, object);
      output.close();

      Input input = new Input(new FileInputStream("file.bin"));
      SomeClass object2 = kryo.readObject(input, SomeClass.class);
      input.close();   
   }
   static public class SomeClass {
      String value;
   }
}

kryo类自动序列化。输出和输入的类可以处理 字节字节,或者可以输出到流中。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

接下来介绍下这一切都是如何工作的以及类库的高级使用方法

IO

从kryo中拿数据或者通过kryo输出数据这个动作是通过Input 和 Output类完成的。这些类都不是线程安全的。 #####Output Output类是一个OutputStream

在这里插入图片描述
在这里插入图片描述

,能够将数据写入一个字节数组 buffer 中。如果你急需一个字节数据,这个字节数据可以获取得到,并可以直接使用。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如果输出结果是一个OutputStream输出流。那么当字节数组buffer满了后,会flush到stream中,否则output会自动扩容这个字节数组。Output类有很多高效的将原生类和字符串写为字节数组的方法。它提供了类似DataOutputStream, BufferedOutputStream, FilterOutputStream, and ByteArrayOutputStream这些类的功能,不过都在一个类里面。

Output 在写入OutputStream的时候会在字节数组中有缓冲,,所以在写完操作后,一定要调用 flush or close 方法。 如果Output 没有以OutputStream的形式提供结果,就没必要调用 flush or close 方法。

不同于许多流,一个Output 实例,通过设置position或者设置一个新的字节数据或者新的流,那么就可以被重复使用。

在这里插入图片描述
在这里插入图片描述

注意,无参的Output 构造器,创建的是一个未初始化的Output ,所以,在使用前一定要调用setBuffer方法。

Input
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/11/16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • kryo是什么
  • kryo目标
  • kryo 复制的过程
  • 安装
    • Maven
      • 快速开始
      • IO
        • Input
        相关产品与服务
        文件存储
        文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档