protocol buffer 小知识备忘录

proto buffer 备忘录

使用protoc命令对我们定义的message.proto文件进行编译

// $SRC_DIR 表示.proto文件所在目录;
// cpp_out 表示当前用于C++语言;
// $DST_DIR 表示编译生成文件的路径;

protoc -I=$SRC_DIR --cpp_out=$DST_DIR $SRC_DIR/message.proto

ProtoBuf数据类型

proto文件消息类型C++ 类型说明
doubledouble
floatfloat
int32int32使用可变长编码方式,负数时不够高效,应该使用sint32
int64int64同上
uint32uint32使用可变长编码方式
uint64uint64同上
sint32int32使用可变长编码方式,有符号的整型值,负数编码时比通常的int32高效
sint64sint64同上
fixed32uint32总是4个字节,如果数值总是比2^28大的话,这个类型会比uint32高效
fixed64uint64总是8个字节,如果数值总是比2^56大的话,这个类型会比uint64高效
sfixed32int32总是4个字节
sfixed64int64总是8个字节
boolbool
stringstring一个字符串必须是utf-8编码或者7-bit的ascii编码的文本

Code Style

  • Message名:用驼峰,第一个字母为大写,如PersonRequest
  • 字段名字用小写,名字用下划线之间分割,例如:birth_date
  • 联合全部用大写
  • service名字用大写,service中的方法名也用大写首字母+驼峰命名
//
//GATE_:网关,BS_:负载均衡服务器
//

//gs请求gate的地址
message BS_GetGateAddrAck {
	enum ErrorCode {
		ERR_OK = 0;
		ERR_FAIL = 1;
	}
	ErrorCode error_code = 1;
	string gate_ip_addr = 2;
	uint32 port = 3;
}

字段修饰符

protobuf一共有三个字段修饰符: 
  - required:该值是必须要设置的; 
  - optional :该字段可以有0个或1个值(不超过1个); 
  - repeated:该字段可以重复任意多次(包括0次),类似于C++中的list;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值