资讯专栏INFORMATION COLUMN

分布式系统开发工具包 —— 基于Kryo的Java对象序列化

BlackMass / 3428人阅读

摘要:是用于语言的一个快速和高效的对象图序列化框架。项目的目的是快速高效方便地使用。当需要持久化对象的时候,不论是持久化到文件数据库还是网络,都可以使用。如果你想试用最新的特性开始使用库类编排序列化,和类处理缓存字节和刷新到流中。

Kryo是用于Java语言的一个快速和高效的对象图序列化框架。Kryo项目的目的是快速、高效、方便地使用API。当需要持久化对象的时候,不论是持久化到文件、数据库还是网络,都可以使用Kryo。

目前Kryo已经到了4.0.1版本以上了。本文的介绍适用于V2.0+以上版本。

安装Kryo

一般适用maven来Kryo包。

使用官方版的Kryo的话可以引用下述配置代码


    com.esotericsoftware
        kryo
    4.0.1

如果你已经在你的classpath下有了不同版本的asm了的话,上述依赖可能会碰到问题。这时你可以使用kyro-shaded jar包,它自身包含了它所需版本的asm,并且是位于在不同包里的。


    com.esotericsoftware
        kryo-shaded
    4.0.1

如果你想试用最新的特性


   sonatype-snapshots
   sonatype snapshots repo
   https://oss.sonatype.org/content/repositories/snapshots

    

   com.esotericsoftware
       kryo
   4.0.1-SNAPSHOT
开始使用Kryo库
import com.esotericsoftware.kryo.Kryo;
import com.esotericsoftware.kryo.io.Output;
import com.esotericsoftware.kryo.io.Input;
// ...
Kryo kryo = new Kryo();
// ...
Output output = new Output(new FileOutputStream("file.bin"));
SomeClass someObject = ...
kryo.writeObject(output, someObject);
output.close();
// ...
Input input = new Input(new FileInputStream("file.bin"));
SomeClass someObject = kryo.readObject(input, SomeClass.class);
input.close();

Kryo类编排序列化,Output和Input类处理缓存字节和刷新到流中。

本文为摘录,原文发布于:http://www.yesdata.net/2018/03/17/kyro/

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/68839.html

相关文章

  • 基于Java语言构建区块链(三)—— 持久化 & 命令行

    摘要:我们该选择哪一款数据库呢事实上,在比特币白皮书中并没有明确指定使用哪一种的数据库,因此这个由开发人员自己决定。详见精通比特币第二版第章节交易的输入与输出此外,每个区块数据都是以单独的文件形式存储在磁盘上。资料源代码精通比特币第二版 showImg(https://segmentfault.com/img/remote/1460000013923488?w=1200&h=627); 最...

    asoren 评论0 收藏0
  • 基于Java语言构建区块链(三)—— 持久化 & 命令行

    摘要:我们该选择哪一款数据库呢事实上,在比特币白皮书中并没有明确指定使用哪一种的数据库,因此这个由开发人员自己决定。详见精通比特币第二版第章节交易的输入与输出此外,每个区块数据都是以单独的文件形式存储在磁盘上。资料源代码精通比特币第二版 showImg(https://segmentfault.com/img/remote/1460000013923488?w=1200&h=627); 最...

    李世赞 评论0 收藏0
  • Flink 源码解析 —— 深度解析 Flink 是如何管理好内存

    摘要:减少垃圾收集压力因为所有长生命周期的数据都是在的管理内存中以二进制表示的,所以所有数据对象都是短暂的,甚至是可变的,并且可以重用。当然,并不是唯一一个基于且对二进制数据进行操作的数据处理系统。 showImg(https://segmentfault.com/img/remote/1460000020044119?w=1280&h=853); 前言 如今,许多用于分析大型数据集的开源系...

    Edison 评论0 收藏0
  • 马蜂窝推荐系统容灾缓存服务设计与实现

    摘要:马蜂窝推荐系统对于请求的平均处理时延要求在级别,时延的线保持在以内。任务队列与异步写入这里我们使用了中的线程池来实现。三优化方向基于和,我们在现有的推荐系统中增加了一个本地容灾缓存系统,当依赖服务或者应用本身突发异常时可以返回缓存的数据。 数据库突然断开连接、第三方接口迟迟不返回结果、高峰期网络发生抖动...... 当程序突发异常时,我们的应用可以告诉调用方或者用户「对不起,服务器出了...

    Dean 评论0 收藏0
  • 马蜂窝推荐系统容灾缓存服务设计与实现

    摘要:马蜂窝推荐系统对于请求的平均处理时延要求在级别,时延的线保持在以内。任务队列与异步写入这里我们使用了中的线程池来实现。三优化方向基于和,我们在现有的推荐系统中增加了一个本地容灾缓存系统,当依赖服务或者应用本身突发异常时可以返回缓存的数据。数据库突然断开连接、第三方接口迟迟不返回结果、高峰期网络发生抖动...... 当程序突发异常时,我们的应用可以告诉调用方或者用户「对不起,服务器出了点问题」...

    focusj 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<