分佈式系統開發工具包 —— 基於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>

<!--more-->maven

若是你已經在你的classpath下有了不一樣版本的asm了的話,上述依賴可能會碰到問題。這時你能夠使用kyro-shaded jar包,它自身包含了它所需版本的asm,而且是位於在不一樣包裏的。url

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

若是你想試用最新的特性spa

<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類處理緩存字節和刷新到流中。.net

本文爲摘錄,原文發佈於:http://www.yesdata.net/2018/03/17/kyro/code

相關文章
相關標籤/搜索