日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
一個更好的C++序列化/反序列化庫Kapok

1.Kapok的特點

青河網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項目制作,到程序開發(fā),運營維護。成都創(chuàng)新互聯(lián)公司從2013年開始到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。

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

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

2.主要功能

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

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

看起來是不是很簡單!

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

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

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

3.應(yīng)用場景

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

4.結(jié)構(gòu)體必須有一個宏定義是否具有侵入性?

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

5.Kapok是如何實現(xiàn)序列化/反序列化的

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

6.Kapok的性能如何

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

7.Kapok是否支持多語言

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


網(wǎng)站標題:一個更好的C++序列化/反序列化庫Kapok
瀏覽地址:http://www.5511xx.com/article/cddsdjo.html