外国人 做的中国字网站外链建设工具
2026/2/7 15:18:39 网站建设 项目流程
外国人 做的中国字网站,外链建设工具,高端网站建设要,网络平台贷款逾期不还在前面的学习里#xff0c;我已经多次接触“序列化”这个概念。 之前一直用 JSON#xff0c;但很快会遇到两个问题#xff1a; 文本体积大#xff0c;传输效率低解析性能一般 因此接下来需要学习 Protocol Buffers#xff08;Protobuf#xff09;#xff0c;它是 Goog…在前面的学习里我已经多次接触“序列化”这个概念。之前一直用 JSON但很快会遇到两个问题文本体积大传输效率低解析性能一般因此接下来需要学习Protocol BuffersProtobuf它是 Google 提供的一种高效二进制序列化协议也是后续 brpc 的基础组件。这一篇不讲复杂语法只做一件事用 C 跑通 Protobuf 最小闭环定义结构 → 生成代码 → 序列化 → 反序列化先把“能用”跑起来再谈语法细节。一、什么是序列化结合我的理解在网络传输或持久化存储中序列化把内存中的对象 → 转换成二进制数据反序列化把二进制数据→ 还原成对象以前如果自己写类classPerson{string name;intage;// 还要自己写 encode() / decode()}需要手动实现一堆get/set和序列化逻辑繁琐且容易出错。Protobuf 的核心思想就是我只需要写结构描述文件.proto编译器自动生成 C 类 序列化 / 反序列化方法这就是它高效的关键。二、编写.proto文件创建contacts.protosyntax proto3; package contacts; message PeopleInfo { string name 1; // 字段编号标识 int32 age 2; }我目前理解的几个点package类似 C 命名空间message就是结构体 / 类 1, 2是字段编号用于二进制编码标识字段Protobuf 最终序列化生成的是紧凑二进制数据不是文本这一步只是描述结构真正的 C 类还没生成。三、通过 protoc 生成 C 代码执行命令protoc --cpp_out. contacts.proto会生成两个文件contacts.pb.h contacts.pb.cc它们就是自动生成的 C 类定义自动生成的序列化 / 反序列化实现从这一刻起我们不需要自己写任何 encode/decode 代码。这也是 Protobuf 的关键特性依赖 .proto → 生成头文件和源文件 → 直接使用生成类四、编写测试程序下面是我跑通的完整测试代码。main.cc#includeiostream#includecontacts.pb.hintmain(){std::string person_str;// 构造对象并序列化contacts::PeopleInfo person;person.set_name(Alice);person.set_age(20);if(!person.SerializeToString(person_str)){std::cerrFailed to serialize person.std::endl;return-1;}std::coutSerialized PeopleInfo: person_strstd::endl;// 反序列化contacts::PeopleInfo deserialized_person;if(!deserialized_person.ParseFromString(person_str)){std::cerrFailed to deserialize person.std::endl;return-1;}std::coutDeserialized PeopleInfo: namedeserialized_person.name(), agedeserialized_person.age()std::endl;return0;}这里的重点是SerializeToString()→ 把对象序列化成二进制字符串ParseFromString()→ 把二进制数据还原成对象整个过程我没有写任何序列化逻辑全部由生成代码完成。五、编译运行编译命令g -o main main.cc contacts.pb.cc -stdc11 -lprotobuf运行后输出可以看到控制台打印的序列化结果是不可读的二进制数据但反序列化后对象完整还原说明整个 Protobuf 工作链路已经跑通。六、小结到这里一个最小 Protobuf C 闭环已经完成流程总结.proto 描述结构 ↓ protoc 生成 .pb.h / .pb.cc ↓ 程序中直接使用生成类 ↓ SerializeToString → 二进制数据 ↓ ParseFromString → 还原对象关键理解点Protobuf 的序列化结果是紧凑二进制数据不需要手写任何序列化逻辑一切依赖.proto生成的 C 源文件这篇目的是为了让大家快速上手接下来我会继续分享PB的更多细节 ^ ^

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询