真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

「Protocol_Buffer」之基本使用與格式定義-創(chuàng)新互聯(lián)

「Protocol Buffer」系列教程

1.「Protocol_Buffer」之基本使用與格式定義
2.「Protocol Buffer」之PB在HTTP協(xié)議中的應(yīng)用

創(chuàng)新互聯(lián)專(zhuān)注于恩陽(yáng)網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供恩陽(yáng)營(yíng)銷(xiāo)型網(wǎng)站建設(shè),恩陽(yáng)網(wǎng)站制作、恩陽(yáng)網(wǎng)頁(yè)設(shè)計(jì)、恩陽(yáng)網(wǎng)站官網(wǎng)定制、重慶小程序開(kāi)發(fā)公司服務(wù),打造恩陽(yáng)網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供恩陽(yáng)網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。

簡(jiǎn)介

Protocol Buffers以下簡(jiǎn)稱(chēng)pb,是google開(kāi)發(fā)的一個(gè)可以序列化 反序列化object的數(shù)據(jù)交換格式,類(lèi)似于xml,但是比xml 更輕,更快,更簡(jiǎn)單。而且以上的重點(diǎn)突出一個(gè)跨平臺(tái),和xml json等數(shù)據(jù)序列化一樣,跨平臺(tái)跨語(yǔ)言。
是一個(gè)語(yǔ)言無(wú)關(guān),平臺(tái)無(wú)關(guān),可擴(kuò)展的結(jié)構(gòu)化數(shù)據(jù)序列化方案, 用于協(xié)議通訊, 數(shù)據(jù)存儲(chǔ)和其他更多用途.
如果需要進(jìn)行深入學(xué)習(xí)點(diǎn)擊這里

安裝

1.github:https://github.com/google/protobuf/releases 下載最新版本的對(duì)應(yīng)語(yǔ)言的pb
2.下載完畢之后運(yùn)行包中自帶config文件。
3.make&&make ×××tall。
4.進(jìn)入python文件夾 
5.運(yùn)行安裝命令
>  $ python setup.py build
>  $ python setup.py test

PB描述文件定義

PB的使用需要定義一個(gè).proto文件,該文件里面會(huì)定義號(hào)數(shù)據(jù)類(lèi)型和格式。我在這里就不再搬運(yùn)各語(yǔ)言對(duì)應(yīng)的字段,因?yàn)檫@些官方文檔中都寫(xiě)的非常清楚。這里直接最典型的使用方法。

syntax = "proto3";

package people;

message Person {
    string name = 1;
    int32 id = 2;
    enum Gender {     //定義枚舉類(lèi)型,每個(gè)枚舉定義必須包含一個(gè)映射到0的常量作為它的第一個(gè)元素
        FEMALE = 0;
        MALE = 1;
    }
    Gender gender = 3;

    enum PhoneType {    //定義枚舉類(lèi)型,每個(gè)枚舉定義必須包含一個(gè)映射到0的常量作為它的第一個(gè)元素
        MOBILE = 0;
        HOME = 1;
       wORK = 2;
    }

    message PhoneNumber {     //定義嵌套消息類(lèi)型
        string number = 1;
        PhoneType type = 2;
    }
    repeated PhoneNumber phones = 4;      //動(dòng)態(tài)數(shù)組,構(gòu)成元素的數(shù)據(jù)類(lèi)型是上面定義的PhoneNumber
}

編譯

生成對(duì)應(yīng)語(yǔ)言的描述文件

Python命令:
protoc -I=$SRC_DIR --python_out=$DST_DIR $SRC_DIR/people.proto
生成一個(gè)people_pb2.py文件
C++命令:
protoc -I=$SRC_DIR --cpp_out=$DST_DIR $SRC_DIR/ people.proto
生成people.pb.h和people.pb.cc文件
Java命令:
protoc -I=$SRC_DIR --java_out=$DST_DIR $SRC_DIR/ people.proto
每個(gè)message生成一個(gè).java文件

Python+PB實(shí)例

這里用python作為演示,如何使用生成的python版的描述文件


from test_pb2 import Person

person = Person()

person.name = "xx.xxx"
person.id = 123456
person.gender = 1

#數(shù)組+嵌套類(lèi)型的使用,元素1添加
phone1 = person.phones.add()
phone1.number = "654321"
phone1.type = 2

#數(shù)組+嵌套類(lèi)型的使用,元素2添加
phone2 = person.phones.add()
phone2.number = "123456"
phone2.type = 1

#序列化
result = person.SerializeToString()

print(person)
print(result)

#反序列化
person = Person()
person.ParseFromString(result)
print(person)

運(yùn)行結(jié)果如下
```python
$ python3 main.py 

#序列化前的結(jié)果
name: "xx.xxx"
id: 123456
gender: MALE
phones {
  number: "654321"
  type: WORK
}
phones {
  number: "123456"
  type: HOME
}

#序列化后的數(shù)據(jù)
b'\n\x06xx.xxx\x10\xc0\xc4\x07\x18\x01"\n\n\x06654321\x10\x02"\n\n\x06123456\x10\x01'

#反序列化后的數(shù)據(jù)
name: "xx.xxx"
id: 123456
gender: MALE
phones {
  number: "654321"
  type: WORK
}
phones {
  number: "123456"
  type: HOME
}

后續(xù)

這里介紹了Protocol Buffer的基本用法,接下來(lái)會(huì)介紹PB如何與gRPC配合使用

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


標(biāo)題名稱(chēng):「Protocol_Buffer」之基本使用與格式定義-創(chuàng)新互聯(lián)
網(wǎng)站路徑:http://weahome.cn/article/dchhje.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部