What are protocol buffers?java
官網對protobuf的描述web
Protocol buffers are a flexible, efficient, automated mechanism for serializing structured data – think XML, but smaller, faster, and simpler. You define how you want your data to be structured once, then you can use special generated source code to easily write and read your structured data to and from a variety of data streams and using a variety of languages. You can even update your data structure without breaking deployed programs that are compiled against the "old" format.
數組
爲何要用protobuf?數據結構
常見的序列化的方式工具
1. 直接使用java的序列化方式,這種方式只有java知道,C++是不知道的,不利於數據交換。flex
2. 使用自定義的數據格式,好比存儲三元數組能夠採用相似1:20:3的方式進行,可是須要額外的編碼去解析,也須要額外的運行時去處理。ui
3. 使用xml的序列化方式。可是xml對空間的佔用是相對來講是比較大的。google
protobuf的特色編碼
1. protobuf多語言支持,方便各個端進行數據交換spa
2. 在.proto文件中定義好數據結構以後,能夠經過官方提供的工具生成相關的類,不須要本身再寫代碼了,至關的方便。
3. 使用protobuf序列化對象後的字節數更小,速度更快,傳輸更快。
4. 使用protobuf序列化對象以後,是以二進制的方式存在的,不是文本類型的,不便於肉眼查看,調試時可使用toString(),將對象轉化爲肉眼能查看的內容,解析這些二進制內容須要schema。
5. 在遵照必定的設計規則下,保持向後兼容性,每一個域都有一個獨立的id號,方便產品的迭代,數據結構的變化
怎麼用protobuf?
1. protobuf會根據.proto文件生成代碼,因此說.proto的message名和域名都須要遵照必定的命名規範
message SongServerRequest {
required string song_name = 1;
}
https://developers.google.com/protocol-buffers/docs/javatutorial?hl=zh-cn#parsing-and-serialization
IT是個變化很快的行業,想了解最新,最酷的特性只能上官網去查找。
人類一思考,上帝就發笑。
站在巨人的肩膀上編碼的,
並不是鉅細都出自本身的思考,
不免會有誤差,
如有誤,歡迎指正。
------------by jackson.ke