激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Golang - 詳解Google Protobuf簡明教程

詳解Google Protobuf簡明教程

2020-06-06 12:13geekpy Golang

這篇文章主要介紹了詳解Google Protobuf簡明教程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

Protobuf是什么

Protobuf實際是一套類似Json或者XML的數據傳輸格式和規范,用于不同應用或進程之間進行通信時使用。通信時所傳遞的信息是通過Protobuf定義的message數據結構進行打包,然后編譯成二進制的碼流再進行傳輸或者存儲。

Protobuf的優點

相比較而言,Protobuf有如下優點:

  • 足夠簡單
  • 序列化后體積很小:消息大小只需要XML的1/10 ~ 1/3
  • 解析速度快:解析速度比XML快20 ~ 100倍
  • 多語言支持
  • 更好的兼容性,Protobuf設計的一個原則就是要能夠很好的支持向下或向上兼容

如何安裝使用Protobuf

安裝

使用Python的話簡便的安裝方法如下

?
1
2
pip install protobuf  # 安裝protobuf庫
sudo apt-get install protobuf-compiler # 安裝protobuf編譯器

如果自己編譯安裝的話可以參考git上安裝指導,雖然寫得不清楚:)

使用

使用Protobuf有如下幾個步驟:

  • 定義消息
  • 初始化消息以及存儲傳輸消息
  • 讀取消息并解析

下面以一個實際的例子來說明如何使用Protobuf,先展示出項目的實際目錄結構:

?
1
2
3
4
5
6
7
8
9
.
├── my
│  ├── helloworld_pb2.py
│  ├── helloworld_pb2.pyc
│  └── __init__.py
├── mybuffer.io
├── my.helloworld.proto
├── reader.py
└── writer.py

定義消息

Protobuf的消息結構是通過一種叫做Protocol Buffer Language的語言進行定義和描述的,實際上Protocol Buffer Language分為兩個版本,版本2和版本3,默認不聲明的情況下使用的是版本2,下面以版本2為來舉個栗子, 假設我們定義了文件名為my.helloworld.proto的文件,如下:

?
1
2
3
4
5
6
7
package my;
message helloworld
{
  required int32 id = 1;
  required string str = 2;
  optional int32 wow = 3;
}

然后我們需要使用protoc進行編譯

?
1
protoc -I=./ --python_out=./ ./my.helloworld.proto
  • -I: 是設定源路徑
  • --python_out: 用于設定編譯后的輸出結果,如果使用其它語言請使用對應語言的option
  • 最后一個參數是你要編譯的proto文件

現在已經定義好了消息的數據結構,接下來看下如何使用

消息初始化和存儲傳輸

我們來通過writer.py來初始化消息并存儲為文件,代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
from my.helloworld_pb2 import helloworld
 
def main():
  hw = helloworld()
  hw.id = 123
  hw.str = "eric"
  print hw
 
  with open("mybuffer.io", "wb") as f:
    f.write(hw.SerializeToString())
 
if __name__ == "__main__":
  main()

執行writer.py之后就會將序列化的結果存儲在文件mybuffer.io中,然后看下如何讀取

消息讀取與解析

我們通過reader.py來讀取和解析消息,代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
from my.helloworld_pb2 import helloworld
 
def main():
  hw = helloworld()
  with open("mybuffer.io", "rb") as f:
    hw.ParseFromString(f.read())
    print hw.id
    print hw.str
 
if __name__ == "__main__":
  main()

Reference:

Developer Guide
Github

到此這篇關于詳解Google Protobuf簡明教程的文章就介紹到這了,更多相關Google Protobuf內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://www.jianshu.com/p/b723053a86a6

延伸 · 閱讀

精彩推薦
  • Golanggolang json.Marshal 特殊html字符被轉義的解決方法

    golang json.Marshal 特殊html字符被轉義的解決方法

    今天小編就為大家分享一篇golang json.Marshal 特殊html字符被轉義的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧 ...

    李浩的life12792020-05-27
  • GolangGolang通脈之數據類型詳情

    Golang通脈之數據類型詳情

    這篇文章主要介紹了Golang通脈之數據類型,在編程語言中標識符就是定義的具有某種意義的詞,比如變量名、常量名、函數名等等,Go語言中標識符允許由...

    4272021-11-24
  • Golanggo語言制作端口掃描器

    go語言制作端口掃描器

    本文給大家分享的是使用go語言編寫的TCP端口掃描器,可以選擇IP范圍,掃描的端口,以及多線程,有需要的小伙伴可以參考下。 ...

    腳本之家3642020-04-25
  • GolangGolang中Bit數組的實現方式

    Golang中Bit數組的實現方式

    這篇文章主要介紹了Golang中Bit數組的實現方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    天易獨尊11682021-06-09
  • Golanggolang如何使用struct的tag屬性的詳細介紹

    golang如何使用struct的tag屬性的詳細介紹

    這篇文章主要介紹了golang如何使用struct的tag屬性的詳細介紹,從例子說起,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看...

    Go語言中文網11352020-05-21
  • Golanggo日志系統logrus顯示文件和行號的操作

    go日志系統logrus顯示文件和行號的操作

    這篇文章主要介紹了go日志系統logrus顯示文件和行號的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    SmallQinYan12302021-02-02
  • Golanggolang 通過ssh代理連接mysql的操作

    golang 通過ssh代理連接mysql的操作

    這篇文章主要介紹了golang 通過ssh代理連接mysql的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    a165861639710342021-03-08
  • Golanggolang的httpserver優雅重啟方法詳解

    golang的httpserver優雅重啟方法詳解

    這篇文章主要給大家介紹了關于golang的httpserver優雅重啟的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,...

    helight2992020-05-14
主站蜘蛛池模板: av手机在线免费播放 | 91精品观看91久久久久久国产 | 被啪羞羞视频在线观看 | 永久免费黄色片 | 牛牛a级毛片在线播放 | 99r国产精品 | 一区二区三区四区高清视频 | 国产91亚洲精品一区二区三区 | 毛片免费在线视频 | 奇米888一区二区三区 | 少妇一级淫片免费放4p | 国产精品成人亚洲一区二区 | 亚洲精品久久久久久久久久 | 久久久国产一区二区三区 | 成人国产高清 | 精品欧美一区二区精品久久久 | 5xsq在线视频 | 成人毛片在线免费看 | 欧美xxxx精品另类 | 国产精品www | 成人aaaa免费全部观看 | 热re91久久精品国产99热 | 一级美女大片 | 国产精品久久久久久久亚洲按摩 | 亚洲资源在线播放 | 中文字幕四区 | 嫩嫩的freehdxxx| 欧美不卡 | 久久精品国产99国产精品澳门 | 国产成人精品免高潮在线观看 | 日本大片在线播放 | 精品国产一区二区三区天美传媒 | 国产乱淫av| 91 视频网站 | 激情黄页 | 精品欧美一区二区精品久久 | 日本羞羞影院 | 热99视频| 在线看小早川怜子av | 一级爱片 | 欧美日韩国产成人在线观看 |