二.protobuf
1.介绍
Google Protocol Buffer (简称 Protobuf)是google旗下的一款轻便高效的结构化数据存储格式
相比于json和xml:
- 优点: 体积小,速度快,支持跨平台多语言,消息格式升级和兼容性好;
- 缺点: 应用不够广,二进制格式可读性差,缺乏自描述.
2.环境配置
- protobuf 编译工具安装
1、下载 protoBuf:
git clone https://github.com/protocolbuffers/protobuf.git
2、安装依赖库
sudo apt-get install autoconf automake libtool curl make g++ unzip libffi-dev -y
3、进入目录
cd protobuf/
4、自动生成configure配置文件:
./autogen.sh
5、配置环境:
./configure
6、编译源代码(时间比较长):
make
7、安装
sudo make install
8、刷新共享库
sudo ldconfig
9、成功后需要使用命令测试
protoc -h
- protobuf 的go语言插件安装
1.获取go语言的proto包 API接口
go get -v -u github.com/golang/protobuf/proto
go get -v -u github.com/golang/protobuf/protoc-gen-go
2.编译
cd $GOPATH/src/github.com/golang/protobuf/protoc-gen-go/
go build
3.将生成的protoc-gen-go可执行文件,放到/bin目录下
sudo cp protoc-gen-go /bin/
3.语法
protobuf 通常会把用户定义的结构体类型叫做一个消息,写在一个以 .proto 结尾的文件中.
消息格式:
(字段修饰符)数据类型 字段名称 = 唯一的编号标签值;
- 字段修饰符-例如: repeated…
- 字段名称: protobuf建议以下划线命名而非驼峰式
- 唯一的编号标签: 在同一个消息里不可以重复
- 注释格式: 使用//,但是不要写在代码右侧,编译后会消失
- 写一个person.proto的demo
//版本号
syntax = "proto3" ;
//包名
package pb ;
//消息体
message Person{
string name = 1 ;
int32 age = 3 ;
//repeated是重复的,类似go中的切片
repeated string emails = 4 ;
//Phone_number 变量类型
repeated Phone_number phones = 5 ;
}
//Phone_number 是消息体名
message Phone_number {
string