protobuf的簡介
Protocol buffers是用于序列化結構化資料的靈活、高效、自動化的機制——比如XML,但是更小、更快、更簡單。您隻需定義一下希望如何對資料進行結構化,然後就可以使用特殊生成的源代碼來輕松地編寫和讀取到各種資料流中的結構化資料,并使用各種語言。你甚至可以更新你的資料結構,而不必破壞那些被編譯為“舊”格式的程式。
Google protobuf是一個靈活的、高效的用于序列化資料的協定。相比較XML和JSON格式,protobuf更小、更快、更便捷。protobuf也叫protocol buffer是google 的一種資料交換的格式,它獨立于語言,獨立于平台。Google protobuf是跨語言的,并且自帶了一個編譯器(protoc),隻需要用它進行編譯,可以編譯成Java、python、C++、C#、Go等代碼,然後就可以直接使用,不需要再寫其他代碼,自帶有解析的代碼。
Google 提供了多種語言的實作:Java、c#、c++、Go 和 Python,每一種實作都包含了相應語言的編譯器以及庫檔案。由于它是一種二進制的格式,比使用 xml 、json進行資料交換快許多。可以把它用于分布式應用之間的資料通信或者異構環境下的資料交換。作為一種效率和相容性都很優秀的二進制資料傳輸格式,可以用于諸如網絡傳輸、配置檔案、資料存儲等諸多領域。
1、.proto檔案是protobuf一個重要的檔案,它定義了需要序列化資料的結構。使用protobuf的3個步驟是:
第一步,在.proto檔案中定義消息格式
第二步,用protobuf編譯器編譯.proto檔案
第三步,用C++/Java等對應的protobuf API來寫或者讀消息
官方文檔:
https://developers.google.com/protocol-buffers/docs/overviewprotobuf的安裝
protoc的源碼和各個系統的預編譯包:
https://github.com/protocolbuffers/protobuf/releases1、選擇對應的安裝檔案下載下傳

2、添加到環境變量中
安裝完成!
protobuf的使用方法
1、基本用法
protoc --version #檢視protoc的版本
2、代碼轉換顯例
切換到要使用的proto檔案路徑下,并打開cmd視窗執行以下指令
protoc -I=源位址 --java_out=目标位址 源位址/xxx.proto
此處生成時會以 proto 裡面注明的java_package為路徑完整生成,是以目标位址不必包含java_package及之後的路徑,比如:option java_package = "com.test.protocol";,那麼就會生成com/test/protocol/XXX.java
參數說明
-I:主要用于指定待編譯的 .proto 消息定義檔案所在的目錄,即可能出現的包含檔案的路徑,該選項可以被同時指定多個。此處指定的路徑不能為空,如果是目前目錄,直接使用.,如果是子目錄,直接使用子目錄相對徑,如:foo/bar/baz,如果要編譯的檔案指定的檔案路徑為baz/test.proto,那麼應這麼寫-I=foo/bar,而不要一直寫到baz。
比如執行指令:
protoc -I=. --java_out=../../../../ beans/*.proto apis/*.proto *.proto