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

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

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

安装Kryo

一般适用maven来Kryo包。

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

<dependency><groupId>com.esotericsoftware</groupId><artifactId>kryo</artifactId><version>4.0.1</version>
</dependency>

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

<dependency><groupId>com.esotericsoftware</groupId><artifactId>kryo-shaded</artifactId><version>4.0.1</version>
</dependency>

如果你想试用最新的特性

<repository><id>sonatype-snapshots</id><name>sonatype snapshots repo</name><url>https://oss.sonatype.org/content/repositories/snapshots</url>
</repository><dependency><groupId>com.esotericsoftware</groupId><artifactId>kryo</artifactId><version>4.0.1-SNAPSHOT</version>
</dependency>

开始使用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类处理缓存字节和刷新到流中。

参考连接:

  • Kryo官网
  • 用于网络的Kryo
  • Kryo为什么比Hessian快

原文发布于:http://www.yesdata.net/2018/03/17/kyro/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/452325.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码编辑器Sublime Text 可以跨平台(linux,window,os x)

说到代码编辑器&#xff0c;大部分人首先会想到UltraEdit&#xff0c;EmEditor和notepad。但今天要介绍的是另一款功能非常强大的代码编辑器——Sublime Text。Sublime Text还是一款跨 OS X、Linux 和 Windows 三大平台的文字/代码编辑器。除了Sublime Text出色的功能&#xff…

计算机画图怎样更改文字,如何在图片上改字|超简单的修改图片里文字方法

这篇文章将要给大家介绍的是&#xff0c;不用联网&#xff0c;不用下载专业的图像处理软件&#xff0c;单纯用画图工具&#xff0c;就能修改表情包、图片上文字的方法&#xff0c;只适合简单的图片处理&#xff0c;复杂的还是交给专业的图像处理工具吧。下面系统吧就给大家带来…

软件维护

所谓软件维护就是在软件已经交付使用之后&#xff0c;为了改正错误或满足新的需要而修改软件的过程。可以通过描述软件交付使用后可能进行的4项活动&#xff0c;具体地定义软件维护。 1.改正性维护 因为软件测试不可能暴露出一个大型软件系统中所有潜藏的错误&#xff0c;所以…

【intellij idea】Project Structure 讲解

参考文章&#xff1a;戳这里 谢谢楼主分享

将以太坊封装为 ERC20

将以太坊封装为 ERC20 TOKEN 很多 DAPP 都是在处理 ERC20接口的 token, 其实很容易将以太坊封装为 ERC20,这样就可以统一处理, 至少我目前在做的雷电网络就是这么处理的. 主要内容复制在网络https://programtheblockchain.com/posts/2018/05/26/wrapping-ether-in-an-erc20-tok…

javascript高级程序设计学习之数值转换 |Number(),parseInt(),parseFloat()

2019独角兽企业重金招聘Python工程师标准>>> 将非数值转换成数值的函数有三个&#xff1a;Number(),parseInt(),parseFloat(); 小记tip&#xff1a;Number()可以用于任何数据类型&#xff1b;parseInt(),parseFloat()针对的是将字符串&#xff1b; Number()的转换规…

软件的可维护性

可以把软件的可维护性定性地定义为&#xff1a;维护人员理解、改正、改动或改进这个软件的难易程度。 提高可维护性是支配软件工程方法学所有步骤的关键目标。

服务器内存延迟,内存带宽、延迟性能测试

内存带宽、延迟性能测试华为FusionServer 2488H V5服务器主板集成了48个内存插槽&#xff0c;但送测机器配备有限。由于送测机型整合了四通道内存控制器&#xff0c;这样使得平台的内存带宽得到了明显的提升。SiSoftware Sandra Lite 2011中提供了内存带宽、内存延迟和缓存性能…

Git学习的最佳教程

身为网页设计师或者网页开发者的你&#xff0c;可能已经听说过Git这个正快速成长的版本控制系统。它由GitHub维护&#xff1b;GitHub是一个开放性的、存储众人代码的网站。如果你想学习如何使用Git&#xff0c;请参考本文。在文章最后&#xff0c;我们罗列了其他Git学习资源。 …

如何使用idea快速创建SpringBoot项目

文章目录一、二、三、四、五、一、 二、 三、 四、 五、

解决pip安装模块报错Cannot fetch index base URL http://pypi.python.org/simple/

产生这个问题的原因呢和github一样,因为他们用的cdn被墙.经小伙伴反馈,解决办法如下. 通过指定国内镜像源来安装: pip --trusted-host 镜像源 install 模块名 -i 镜像源路径 例如:pip --trusted-host pypi.doubanio.com install paramiko -i http://pypi.doubanio.com/simple 注…

闪光css,CSS实现的一闪而过的图片闪光效果

只需要两个html元素和一个css变换&#xff0c;我就能创造出我自己的闪光效果。让我们来实现它&#xff01;呈现光泽图片下面就是这张addy在他博客上使用的图片&#xff1a;比我需要的要大一些&#xff0c;但你可以把它裁剪一些。注意&#xff1a;左边的那张是纯白色的&#xff…

什么是可重用性

所谓重用&#xff08;reuse&#xff09;是指同一事物不做修改或稍加改动就在不同环境中多次重复使用。大量使用可重用的软件构件来开发软件&#xff0c;可以从下述两个方面提高软件的可维护性。 (1) 通常&#xff0c;可重用的软件构件在开发时都经过很严格的测试&#xff0c;可…

MATLAB矩阵操作和算术运算符

矩阵的表示 矩阵之间用空格或者是逗号间隔 矩阵可以拼接&#xff08;可以用矩阵拼接&#xff09; 实部矩阵和虚部矩阵构成复数矩阵&#xff0c;一一对应。 冒号表达式&#xff1a; 格式&#xff1a; e1:e2:e3 e1表示初始值 e2表示步长 e3表示终止值 e2省略则e2为1 lins…

循序渐进学好编程,不要太急!!!

软件开发人员是一个日新月异的领域—–IT中的大师&#xff0c;今天的编程方式与明天的编程或许截然不同&#xff0c;技术在不断地革新&#xff0c;新语言、新平台的如雨后春笋般出现、更好的解决方案的冒出&#xff0c;因此我们需要跟得上节奏&#xff0c;我们别无选择&#xf…

django学习之路

1. 菜鸟教程 http://www.runoob.com/django/django-first-app.html 2. https://blog.csdn.net/Sunshine_ZCC/article/details/73918408转载于:https://www.cnblogs.com/haimishasha/p/9189199.html

x230无线网卡驱动服务器版,ThinkPad X230网卡驱动

ThinkPad X230网卡驱动是一款专为ThinkPad X230打造的无线网卡驱动程序&#xff0c;当然&#xff0c;这款驱动也支持其他机型&#xff0c;包括ThinkPad X220,X220i,X220 Tablet,X220i Tablet等等&#xff0c;如果您的笔记本电脑属于下列所列机型中的一款&#xff0c;欢迎您来欧…

文档

文档是影响软件可维护性的决定因素。由于长期使用的大型软件系统在使用过程中必然会经受多次修改&#xff0c;所以文档比程序代码更重要。软件文档应该满足下述要求&#xff1a; (1) 必须描述如何使用这个系统&#xff0c;没有这种描述时即使是最简单的系统也无法使用。 (2)…

学成在线--0.项目概述

文章目录0.前言1.功能架构2.技术架构3.技术栈4.开发步骤0.前言 当前市场的在线教育模式多种多样&#xff0c;包括&#xff1a;B2C、C2C、B2B2C等业务模式&#xff0c;学成在线采用B2B2C业务模式&#xff0c;即向 企业或个人提供在线教育平台提供教学服务&#xff0c;老师和学生…

【Java学习】JDBC可以再深一点理解

JDBC驱动程序 JDBC驱动程序是JDBC API中实现定义的接口。JDBC是java语言中的与数据库连接的接口。也就是说JDBC是Java API&#xff0c;使得Java可以与数据库进行连接&#xff0c;而JDBC驱动程序是JDBC API&#xff0c;驱动JDBC进一步与数据库进行交互。 例如&#xff1a;使用JD…