1.protobuf是干什么的
protobuf为google公司出品,其全称为Protocol Buffers。关于其是什么网上一搜一大堆,但是初学者往往还是看的晕头转向。其实简单的概括protobuf的功能无非就是对结构化数据串行化。举个简单的小例子
struct Person
{
int number; //编号
char name[100]; //姓名
char hobby[1000]; //爱好
};
上面我定义了一个简单的用于描述一个人的Person结构体,假定每个人都有一个编号(类似身份证号),我将其定义为int型就姑且认为够用吧。其次是name,好多人奇怪为什么我要给name定义100字节,个人感觉小日本的名字好长所以怕不够用(哈哈)。接着是hobby字段,由于我不能确定每个人到底有多少爱好,也是怕不够存所以就给了1000。
好了数据定义完了现在服务器有100000个人的Person结构体(person[100000])需要保存到磁盘里你会咋么做?
如果你是一个不懂序列化的新手我想你大概会这样做
for(int i = 0; i < 100000; i++)
{
......
fwrite(&person[i],sizeof(struct Person),1,fp);
......
}
这么从正确性的角度来说的确没什么问题,但是试想如果大多数人的名