分布式系統開發工具包 —— 基于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.pswp.cn/news/452325.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/452325.shtml
英文地址,請注明出處:http://en.pswp.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…