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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Protocol Buffer 简介

發布時間:2023/12/16 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 简介的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 秋霞午夜 | 国产高潮自拍 | 中文字幕人妻熟女在线 | 国产色在线观看 | 日日噜噜噜夜夜爽爽狠狠 | 精品一区二区三区在线观看 | 色婷婷在线观看视频 | 92av视频| 搡老熟女国产 | 日女人免费视频 | 中文字幕在线看 | 91免费国产在线 | 午夜免费福利网站 | 精品国产户外野外 | 黑人玩弄人妻一区二区三区 | 欧美xxxx黑人 | 91网站免费在线观看 | 自拍偷拍亚洲视频 | 天天视频黄 | 欧美日韩黑人 | 丰满熟女人妻一区二区三 | 国产又粗又猛又爽视频 | 色牛影院 | 在线免费看mv的网站入口 | 交专区videossex | 欧美黑人xxxⅹ高潮交 | 免费毛片网站在线观看 | 国产午夜福利100集发布 | 成人深夜福利在线观看 | 久久精品国产亚洲 | 无码精品人妻一二三区红粉影视 | 欧美日韩a| 免费公开在线视频 | 久久伊人一区二区 | 午夜精品久久久久久久99 | 国产毛片久久久久久久 | 2018av在线| 亚洲成a人在线观看 | 亚洲区一区二区三区 | 日韩精品一区二区三区av | 日本一区二区三区在线观看 | 久久尤物视频 | 日批在线视频 | 国产一区二区观看 | 二区三区不卡 | 日韩精品一区二区三区久久 | 中文字幕日韩一区二区 | 精品无码国产av一区二区三区 | 久久久久久久久久久久电影 | 久久久成人精品视频 | 日韩精品2区 | 日本黄在线观看 | 亚洲黄色三级 | 久久99久久久 | 亚洲精品欧美日韩 | 国产成人精品一区二三区 | 亚洲最大的成人网 | 国产亚洲精品网站 | 精品视频一区二区三区在线观看 | 亚洲色图第1页 | 95在线视频 | 免费看av网 | 亚洲男人在线 | av影视网 | 欧美成人免费在线观看视频 | 亚洲色图综合在线 | 久久久午夜精品福利内容 | 一区二区三区视频免费视 | 午夜免费剧场 | 久久精品在线播放 | 日本久操视频 | 亚洲一区成人 | 亚洲综合av一区二区三区 | 中文字幕在线免费播放 | 国产精品一区二区三区四区在线观看 | 国产精品视频麻豆 | 日韩欧美视频网站 | 国产精品3区 | 国产精品一区二区av白丝下载 | 日韩av高清无码 | 日韩精品人妻无码一本 | 香蕉国产片| 国产成人视屏 | 视频在线一区二区三区 | 午夜剧场91 | 精品国产a线一区二区三区东京热 | 男人天堂手机在线观看 | 亚洲我不卡| 中文字幕久久综合 | 日韩欧美亚洲国产 | 亚洲乱色熟女一区二区三区 | 日韩午夜三级 | 中文字幕第一区综合 | 麻豆91精品91久久久 | 激情久久久久久 | 黄色大片aaa | 精品亚洲aⅴ无码一区二区三区 | 天天干中文字幕 | av手机在线看 |