Kryo框架使用方法代碼示例
Kryo框架的source已移至https://github.com/EsotericSoftware/kryo ,進入此頁面,然后點擊右邊的Download Zip按鈕,就能下載到最新版本的Kryo框架。
導入Eclipse時,記得JDK/JRE選用 JDK1.7版本,因為Kryo會引用到unsafe()對象的一些方法JDK1.7才兼容。。
先來一個String類的序列化跟還原,是不是很簡單?
</pre><pre name="code" class="java"> private static void testString () {
Kryo kryo=new Kryo();
String w_str1="簡體中文,繁體中文,English";
//把w_str1對象序列化
Output output=new Output(1024);
kryo.writeObject(output, w_str1);
output.flush();
output.close();
byte[] w_ret= output.toBytes(); //獲得byte數(shù)據(jù),這些數(shù)據(jù)可用作儲存、網(wǎng)絡傳輸?shù)?..
//還原
Input input=new Input(w_ret);
input.close();
String w_str2=kryo.readObject(input, String.class);
System.out.println(w_str2);
}
再來一個HashMap類的序列化跟還原,因為Kryo自帶了很多java基本類的Serializer,所以盡管不知道Serializer,Kryo也自動匹配:
public static void testHashMap() throws NoSuchAlgorithmException{
Kryo kryo=new Kryo();
HashMap h=new HashMap();
h.put("k1", "v1");
h.put("k2", "v2");
Output output=new Output(1, 1024);
kryo.writeObject(output, h);
output.close();
byte[] data=output.toBytes();
Input i=new Input(data);
i.close();
HashMap h2= (HashMap)kryo.readObject(i, HashMap.class);
System.out.println(h2.get("k2"));
}
那么,我自定義的Bean又應該如何處理呢?下面給出例子:
1、先定義Bean TestBean:
public static class TestBean implements Serializable{
private int[] intArray;
private HashMap<String,String> hashMapVal;
private String strVal;
public int[] getIntArray () {
return intArray;
}
public void setIntArray (int[] intArray) {
this.intArray = intArray;
}
public HashMap<String, String> getHashMapVal () {
return hashMapVal;
}
public void setHashMapVal (HashMap<String, String> hashMapVal) {
this.hashMapVal = hashMapVal;
}
public String getStrVal () {
return strVal;
}
public void setStrVal (String strVal) {
this.strVal = strVal;
}
}
2、因為這是自定義的Bean,Kryo在序列化前先要對TestBean進行注冊:kryo.register(TestBean.class,new BeanSerializer(kryo, TestBean.class)); ,具體例子如下:
public static void testBean() throws NoSuchAlgorithmException{
Kryo kryo=new Kryo();
kryo.register(TestBean.class,new BeanSerializer(kryo, TestBean.class));
TestBean tb1=new TestBean();
tb1.setStrVal("test1");
tb1.setHashMapVal(new HashMap<String,String>());
tb1.getHashMapVal().put("k1", "v1");
tb1.getHashMapVal().put("k2", "v2");
int[] ints=new int[3];
ints[0]=1;
ints[1]=2;
ints[2]=3;
tb1.setIntArray(ints);
Output output=new Output(1, 1024);
kryo.writeObject(output, tb1);
output.close();
byte[] data=output.toBytes();
Input i=new Input(data);
i.close();
TestBean tb2= (TestBean)kryo.readObject(i, TestBean.class);
System.out.println(tb2.strVal);
System.out.println(tb2.hashMapVal.get("k1"));
System.out.println(tb2.intArray[2]);
}
總結
是不是非常簡單?關于Kryo框架使用方法代碼示例的介紹就到這里,希望對大家有所幫助。有什么問題可以隨時留言,小編會及時回復大家的。
相關文章
java string 轉(zhuǎn)date方法如何實現(xiàn)
在開發(fā)應用中經(jīng)常會使用到java string 轉(zhuǎn)date這種不是很常見的做法,本文將以此問題提供詳細解決方案,需要了解的朋友可以參考下2012-11-11
SpringBoot實現(xiàn)License生成和校驗的過程詳解
在我們向客戶銷售商業(yè)軟件的時候,常常需要對所發(fā)布的軟件實行一系列管控措施,諸如驗證使用者身份、軟件是否到期,以及保存版權信息和開發(fā)商詳情等,所以本文給大家介紹了SpringBoot實現(xiàn)License生成和校驗的過程,需要的朋友可以參考下2024-09-09
淺談byte和長度為8的boolean數(shù)組互相轉(zhuǎn)換
下面小編就為大家?guī)硪黄獪\談byte和長度為8的boolean數(shù)組互相轉(zhuǎn)換。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-11-11
SpringBoot整合TomCat實現(xiàn)本地圖片服務器代碼解析
這篇文章主要介紹了SpringBoot整合TomCat實現(xiàn)本地圖片服務器代碼解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-08-08
Struts 2 數(shù)據(jù)校驗功能及校驗問題的解決方案
這篇文章主要介紹了Struts 2 數(shù)據(jù)校驗功能及校驗問題的解決方案的相關資料,需要的朋友可以參考下2016-09-09

