日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Protocol Buffer 简介

發布時間:2023/12/16 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Protocol Buffer 简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、Protocol Buffer 與 XML、JSON 的區別

  • Protocol Buffer 和 XML、JSON一樣都是結構數據序列化的工具,但它們的數據格式有比較大的區別:
    • 首先,Protocol Buffer 序列化之后得到的數據不是可讀的字符串,而是二進制流
    • 其次,XML 和 JSON 格式的數據信息都包含在了序列化之后的數據中,不需要任何其它信息就能還原序列化之后的數據;但使用 Protocol Buffer 需要事先定義數據的格式(.proto 協議文件),還原一個序列化之后的數據需要使用到這個定義好的數據格式
    • 最后,在傳輸數據量較大的需求場景下,Protocol Buffer 比 XML、JSON 更小(3到10倍)、更快(20到100倍)、使用 & 維護更簡單;而且 Protocol Buffer 可以跨平臺、跨語音使用
  • Protobuf 安裝:
    • 安裝 protobuf: apt-get install libprotobuf-dev
    • 安裝 protobuf 的 python 模塊:pip3 install protobuf==3.13.0
    • 源碼方式安裝:可參考 Protobuf 安裝及使用 && https://github.com/protocolbuffers/protobuf/blob/main/src/README.md
  • Protobuf 版本查看:
    • protoc --version
    • import google.protobuf as gp, gp.__version__

二、Protocol Buffer 的作用

  • 通過將結構化的數據(擁有多種屬性)進行序列化,從而實現(內存與硬盤之間)數據存儲和交換的功能
    • 序列化: 按照 .proto 協議文件將數據結構或對象轉換成二進制流的過程
    • 反序列化:將在序列化過程中所生成的二進制流轉換成數據結構或對象的過程

三、構建 Protocol Buffer 消息對象模型

1、通過 Protocol Buffer 語法描述需要存儲的數據結構

  • Protocol Buffer 定義數據格式的文件一般保存在 .proto文件中,每一個 message代表了一類結構化的數據,message 里面定義了每一個屬性的類型和名字。
  • 一個消息對象可以將其他消息對象類型用作字段類型,情況如下:
# 1、包名 package protocobuff_Demo;# 2、option 選項 option java_package = "com.carson.proto"; option java_outer_classname = "Demo";# 3、消息模型 # 3.1、生成 Person 消息對象(包含多個字段) message Person {required string name = 1;required int32 id = 2;optional string email = 3;enum PhoneType {MOBILE = 0;HOME = 1;WORK = 2;}# 該消息類型定義在 Person 消息類型的內部 # 即 Person 消息類型是 PhoneNumber 消息類型的父消息類型message PhoneNumber {required string number = 1;optional PhoneType type = 2 [default = HOME];}# 直接使用內部消息類型repeated PhoneNumber phone = 4; }# 3.2 使用外部消息類型,直接使用了 Person 消息類型作為消息字段 message AddressBook {repeated Person person = 1; }

2、通過 Protocol Buffer 編譯器編譯 .proto 文件

  • 作用:將 .proto 文件 轉換成對應平臺(python、C++、Java)的代碼文件
  • 編譯指令如下所示:
# 在終端輸入下列命令進行編譯 protoc -I=$SRC_DIR --xxx_out=$DST_DIR $SRC_DIR/addressbook.proto# 參數說明 # 1. $SRC_DIR:指定需要編譯的.proto文件目錄 (如沒有提供則使用當前目錄) # 2. --xxx_out:xxx根據需要生成代碼的類型進行設置"""對于 Java ,xxx = java ,即 -- java_out對于 C++ ,xxx = cpp ,即 --cpp_out對于 Python,xxx = python,即 --python_out"""# 3. $DST_DIR :編譯后代碼生成的目錄 (通常設置與$SRC_DIR相同) # 4. 最后的路徑參數:需要編譯的.proto 文件的具體路徑# 編譯通過后,Protoco Buffer會根據不同平臺生成對應的代碼文件

四、參考資料

1、這是一份很有誠意的 Protocol Buffer 語法詳解
2、手把手教你如何安裝 Protocol Buffer

總結

以上是生活随笔為你收集整理的Protocol Buffer 简介的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。