成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一個更好的C++序列化/反序列化庫Kapok

開發 后端 開發工具
一點夢想:盡自己一份力,讓c++的世界變得更美好!

1.Kapok的特點

簡單,易用,header-only,只需要引用Kapok.hpp即可;高效,初步測試性和messagepack相當。

它是純c++11實現,因此需要支持C++11的編譯器。

2.主要功能

對對象進行自動化的序列化和反序列化,用起來非常簡單,先來看個序列化/反序列化一個tuple的例子吧。

 

  1. //序列化 
  2. Serializer sr; 
  3. auto tp = std::make_tuple(1012, string("test")); 
  4. sr.Serialize(tp, "tuple"); 
  5.  
  6. //反序列化 
  7. DeSerializer dr; 
  8. std::tuple<intint, string> p; 
  9. dr.Parse(sr.GetString()); 
  10. dr.Deserialize(p, "tuple"); 

 

看起來是不是很簡單!

再看一個序列化一個自定義對象的例子。

 

  1. struct Person 
  2.   int age; 
  3.   string name; 
  4.   string city; 
  5.   
  6.   META(age, name, city) 
  7. }; 
  8.   
  9. Person p = { 18"bb""aa" }; 
  10. //序列化 
  11. Serializer sr; 
  12. sr.Serialize(p, "Person"); 
  13.   
  14. //反序列化 
  15. DeSerializer dr; 
  16. Person person; 
  17. dr.Parse(sr.GetString()); 
  18. dr.Deserialize(person, "Person"); 

 

 

一樣的很簡單,結構這里需要一個宏定義META,這個META的作用就是獲取對象的元信息,有了這個元信息我們就可以很方便的實現序列化和反序列化了。

3.應用場景

Kapok除了不支持指針之外所有的對象都支持,支持結構體的無限嵌套(被嵌套的結構體也必須定義META宏)。這里說一下為 什么不支持指針呢,因為對象中有指針的話存在兩個問題:1.這個指針如果是動態數組的話,c++中無法獲取這個數組的長度;2.指針還涉及到內存管理,我 希望Kapok專注于序列化和/反序列化,暫時不考慮內存管理。

4.結構體必須有一個宏定義是否具有侵入性?

看起來每個序列化/反序列化的對象都要帶一個宏定義似乎侵入性較強,但這種侵入性是完全無害 的,因為它只是定義了一個額外的函數而已,這個函數只會在序列化/反序列化的時候才會用到,不會對當前對象造成任何影響,還有一點是因為c++沒有反射, 必須要通過某種方法來獲取對象的元信息,縱觀目前所有的序列化方案,只有這種方式是最簡潔的,用戶做最少的事情即可,這也是我選擇這種方式的原因。

5.Kapok是如何實現序列化/反序列化的

Kapok的***層是用到了rapidjson, 用它來實現對基本類型的序列化,對它做了一個簡單的封裝以便供上層使用,上面層就是序列化\反序列化實現層,主要是實現對對象元信息的解析和自動化的打包和解包。下面是Kapok序列化的一個示意圖:

一個更好的C++序列化/反序列化庫Kapok

6.Kapok的性能如何

初步測試對一個tuple進行序列化/反序列化一萬次,發現Kapok的耗時和messagepack相當。

7.Kapok是否支持多語言

暫時不支持,先把c++版本做好再說,如果要支持多語言的話,需要用其它語言進行重寫,比較麻煩,所以暫時不考慮支持多語言。

 

 

責任編輯:王雪燕
相關推薦

2009-08-24 17:14:08

C#序列化

2022-08-06 08:41:18

序列化反序列化Hessian

2009-08-06 11:16:25

C#序列化和反序列化

2011-06-01 15:05:02

序列化反序列化

2011-06-01 14:50:48

2009-08-25 14:24:36

C#序列化和反序列化

2018-03-19 10:20:23

Java序列化反序列化

2009-08-25 14:43:26

C#序列化和反序列化

2011-05-18 15:20:13

XML

2023-12-13 13:49:52

Python序列化模塊

2009-06-14 22:01:27

Java對象序列化反序列化

2019-11-20 10:07:23

web安全PHP序列化反序列化

2024-06-28 08:28:43

反序列化filterJson

2012-04-13 10:45:59

XML

2024-01-30 13:32:51

JSON反序列化序列化

2021-11-18 07:39:41

Json 序列化Vue

2009-09-09 15:47:27

XML序列化和反序列化

2009-09-09 14:45:41

XML序列化和反序列化

2009-09-09 16:10:11

.NET序列化和反序列

2010-03-19 15:54:21

Java Socket
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日韩亚洲成人 | 中文字幕av在线 | 国产夜恋视频在线观看 | 国产精品中文字幕在线 | 亚洲欧洲小视频 | 毛片网在线观看 | 久久国际精品 | 九一在线观看 | 久久成人人人人精品欧 | 久久久精品一区二区三区 | www.玖玖玖 | 午夜男人免费视频 | 亚洲视频中文 | 欧洲国产精品视频 | 久久久久久国产 | 日本天天色 | 欧美日韩a | 成人免费黄视频 | 精品一区二区在线看 | 91麻豆精品一区二区三区 | 欧美精品首页 | 国产东北一级毛片 | 国产98色在线 | 日韩 | 暖暖成人免费视频 | 欧美日韩视频一区二区 | 最近中文字幕免费 | 亚洲久久久 | 久久九| 日日草夜夜草 | 国产成人久久av免费高清密臂 | 一区在线观看 | 99视频免费在线 | 自拍在线 | 中文字幕一区二区三区乱码图片 | 九色porny自拍视频 | 久草热在线 | 久久久久久久久久性 | 欧美精三区欧美精三区 | 婷婷激情综合 | 久草精品视频 | 欧美精品成人 |