久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Protostuff詳解

 WindySky 2017-08-01

一、Protostuff介紹

Protostuff是一個開源的,、基于Java語言的序列化庫,,它內(nèi)建支持向前向后兼容(模式演進)和驗證功能。

Protostuff支持的序列化格式包括:

  • protobuf
  • protostuff
  • graph
    即序列化對象圖,,即帶循環(huán)引用的protostuff,。詳見:http://www./documentation/object-graphs/
  • json
  • smile
    即二進制json,從protostuff-json模塊中使用,。Smile數(shù)據(jù)格式是由Jackson JSON庫開發(fā)團隊于2010年發(fā)布的數(shù)據(jù)格式,,并在Jackson 1.6版本開始使用此格式。
    Smile格式規(guī)范:http://wiki./SmileFormatSpec
    與此相似的有BSON格式,,見:http:///
    要注意一點,,Smile數(shù)據(jù)格式和BSON數(shù)據(jù)格式是互不兼容的。比如BSON定義了日期類型,,而Smile沒有日期類型,。而且,有時候BSON數(shù)據(jù)格式占用的空間比原生JSON占用的空間更多,。所以,,對于二進制JSON來說,Smile才是更好的選擇,。
    可以參考通用二進制JSON規(guī)范《Universal Binary JSON Specification》:http:///
  • xml
  • yaml
    只支持序列化
  • kvp
    即二進制的uwsgi頭部(Header),,詳見:http://projects./uwsgi

二,、Protostuff特征

1、支持protostuff-compiler產(chǎn)生的消息

2,、支持現(xiàn)有的POJO

3,、支持現(xiàn)有的protoc產(chǎn)生的Java消息

4、與各種移動平臺的互操作能力(Android,、Kindle,、j2me)

5、支持轉(zhuǎn)碼

三,、Protostuff的模塊

1,、protostuff-api模塊

面向消息和POJO(message/pojo)的序列化API,內(nèi)建了對模式演進的支持,。
可以與現(xiàn)有對象一起工作,,只需添加模式Schema??梢酝ㄟ^代碼生成,、在運行時使用protostuff-runtime生成、或者是手寫產(chǎn)生,。

2,、protostuff-core模塊

綁定了三種二進制格式:protostuff、graph,、protobuf,。

protostuff與protobuf的區(qū)別:
1)protobuf有一個名為“group”的編碼類型域,而protostuff使用它作為嵌套的消息,。
2)protostuff可以使用尾部界定符來處理消息流(Stream),。
3)protostuff的一級類在本地格式中支持循環(huán)引用。

3,、protostuff-runtime模塊

自動啟用現(xiàn)有的POJO序列化/反序列化為各種格式,。
可使用運行時序列化策略,w/c通過系統(tǒng)屬性進行配置,。
依賴于protostuff-API和protostuff-collectionschema,。

4、protostuff-json模塊

面向消息或POJO的JSON序列化/反序列化,。
面向標(biāo)量域的向前向后兼容,。
依賴于protostuff-api、jackson-core-asl-1.7.9,。如果使用了Smile格式,,還需jackson-smile-1.7.9。

5,、protostuff-parser模塊

使用了ANTLR V3,、面向.proto文件的詞法/語法解析器,。
供protostuff-compiler使用。

6,、protostuff-compiler模塊

面向.proto源文件的編譯器,。
可以從文件系統(tǒng)、類路徑或從網(wǎng)絡(luò)HTTP URL中載入.proto源文件,。
可使用參數(shù)-Dproto_path=$path告訴編譯器從哪里載入源文件,。
可擴展/定制編譯的輸出。
要編譯源文件,,執(zhí)行命令:
java -jar protostuff-compiler-1.0.9.jar
protostuff.properties屬性文件定義:

modules = foo
foo.source = path/to/your/foo.proto
#java_bean, gwt_overlay, java_v2protoc_schema
foo.output = java_bean
foo.outputDir = generated
foo.options = some_key,key:value,another_key

依賴于protostuff-parser模塊,。

7、protostuff-me模塊

對于j2me應(yīng)用,,無需外部依賴
與api模塊和core模塊結(jié)合一起使用,,去掉了Java泛型支持。

四,、模式Schema

Schema包含:
1)對象進行序列化的邏輯
2)對象進行反序列化的邏輯
3)對象必填字段的驗證
4)對象字段名稱到字段編號的映射
5)對象的實例化

對于現(xiàn)有的對象,,必須使用protostuff-runtime來生成Schema——可以通過反射來緩存、使用Schema,。
開發(fā)者更喜歡自定義Schema,比如對必填字段的驗證等,,那么可以手動編碼,。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多