protobuf
简介
protobuf是一种先进的用于通信协议、数据存储的数据序列化方法。
比xml性能好很多,用起来也不复杂,类似json。但是由于二进制存储,数据无法直接可读, 不能自描述,需要通过引入mesage+proto文件来描述。所以他不能像xml,json那样用于配置文件。
语法
repeated optional required
import
https://developers.google.com/protocol-buffers/docs/proto
c++
has
add
mutable
java
Builders vs. Messages
message: immutable 创建后不能修改
builder: build() 生成一个message。
参考资料
protoc
问题排查
1、多版本兼容问题
有时,系统需要用到多个版本的pb。如何能够保障编译通过呢?
rpm依赖的proto: so文件 include文件
t-kgb-protobuf-2_5_0-1.0.2-465607.el5.x86_64.rpm
2、dlopen链接protbuf.so
(1) protobuf 用到了一些全局变量。linking protobuf dynamically with dlopen across several modules are very problematic. I'm not aware of any good solution here.
(2) 在Linux上编译google protobuff时,configure 默认选项是生成动态库,即libprotobuf.so文件。如果同时在多个动态库(动态库以dlopen方式动态加载)中使用同一buff结构,则运行时会报错误:

浙公网安备 33010602011771号