当前位置: 首页 > wzjs >正文

万达做的电商网站建设工程招标网站

万达做的电商网站,建设工程招标网站,wordpress邮件 插件,自己做键盘的网站文章目录 前言一、为什么需要序列化?序列化的好处:常见序列化格式包括: 二、JsonCpp 与 Protobuf 对比三、JsonCpp 简介与示例(客户端通信)JsonCpp 使用示例(客户端发送请求):JsonCp…

文章目录

  • 前言
  • 一、为什么需要序列化?
    • 序列化的好处:
    • 常见序列化格式包括:
  • 二、JsonCpp 与 Protobuf 对比
  • 三、JsonCpp 简介与示例(客户端通信)
    • JsonCpp 使用示例(客户端发送请求):
    • JsonCpp 使用示例(服务器解析请求):
  • 四、Protobuf 简介与示例(服务器通信)
    • 定义消息格式(user.proto)
    • 编译生成代码:
    • 服务器端序列化 & 发送数据
    • 接收端解析数据
  • 五、使用建议
  • 总结


前言

在网络编程中,数据的传输和解析效率是影响系统性能的重要因素。为了在客户端与服务器、服务器与服务器之间进行高效通信,我们通常需要对数据进行序列化反序列化。这篇博客将详细讲解两种主流数据格式处理库 —— JsonCppProtobuf,包括它们的使用场景、优劣对比、代码示例以及应用建议


提示:以下是本篇文章正文内容,下面案例可供参考

一、为什么需要序列化?

在网络中传输数据时,我们不能直接传输复杂的 C++ 对象,比如 std::vector< std::string >,需要将其转换成字节流或者文本格式这个过程叫做序列化

序列化的好处:

1.减少传输数据的体积

2.提高解析速度

3.实现跨语言通信(如 C++ 与 Python、Java 通信)

常见序列化格式包括:

JSON:人类可读,广泛用于客户端通信

Protobuf(Protocol Buffers):二进制格式,高效、结构明确

二、JsonCpp 与 Protobuf 对比

在这里插入图片描述

三、JsonCpp 简介与示例(客户端通信)

JsonCpp 使用示例(客户端发送请求):

#include <json/json.h>
#include <iostream>
#include <string>int main() {Json::Value root;root["username"] = "Alice";root["age"] = 23;Json::StreamWriterBuilder writer;std::string jsonStr = Json::writeString(writer, root);std::cout << "发送 JSON: " << jsonStr << std::endl;return 0;
}

输出:

发送 JSON: {"age":23,"username":"Alice"}

JsonCpp 使用示例(服务器解析请求):

#include <json/json.h>
#include <iostream>
#include <sstream>int main() {std::string jsonInput = "{\"username\":\"Alice\",\"age\":23}";Json::CharReaderBuilder reader;Json::Value root;std::string errs;std::istringstream s(jsonInput);Json::parseFromStream(reader, s, &root, &errs);std::cout << "用户名:" << root["username"].asString() << std::endl;std::cout << "年龄:" << root["age"].asInt() << std::endl;return 0;
}

输出:

用户名:Alice
年龄:23

四、Protobuf 简介与示例(服务器通信)

定义消息格式(user.proto)

syntax = "proto3";message User {string username = 1;int32 age = 2;
}

编译生成代码:

protoc --cpp_out=. user.proto

服务器端序列化 & 发送数据

#include "user.pb.h"
#include <iostream>int main() {User user;user.set_username("Bob");user.set_age(30);std::string output;user.SerializeToString(&output);std::cout << "发送二进制数据长度:" << output.size() << std::endl;return 0;
}

输出(示例):

发送二进制数据长度:7

接收端解析数据

#include "user.pb.h"
#include <iostream>int main() {std::string input;User user;// 模拟接收过程user.set_username("Bob");user.set_age(30);user.SerializeToString(&input);User received;if (received.ParseFromString(input)) {std::cout << "用户名:" << received.username() << std::endl;std::cout << "年龄:" << received.age() << std::endl;} else {std::cerr << "解析失败!" << std::endl;}return 0;
}

输出:

用户名:Bob
年龄:30

五、使用建议

在这里插入图片描述

总结

JsonCpp 适合调试友好、交互直观的场景,尤其是客户端请求
Protobuf 适合高性能、低延迟的后端系统通信,支持复杂数据结构和版本演进
在实际开发中,可以两者结合使用:前端使用 JSON 接口,后端使用 Protobuf 高效传输,做到开发效率和运行效率兼顾


文章转载自:

http://6UZpxLbx.rwtLj.cn
http://pakdo1A5.rwtLj.cn
http://YFsqXueI.rwtLj.cn
http://i2c1FHvE.rwtLj.cn
http://xNrpdWN4.rwtLj.cn
http://6CTdkPeR.rwtLj.cn
http://ft2Qe41L.rwtLj.cn
http://CITuR6Bi.rwtLj.cn
http://GmOwbLKC.rwtLj.cn
http://EZ0z4k1i.rwtLj.cn
http://lMhvxvh1.rwtLj.cn
http://gDvjdHxf.rwtLj.cn
http://4daITIeS.rwtLj.cn
http://FqhfPn1e.rwtLj.cn
http://waPpiGiX.rwtLj.cn
http://PVB6i83R.rwtLj.cn
http://vA1kbvK9.rwtLj.cn
http://g72VXRSy.rwtLj.cn
http://0QtOS4le.rwtLj.cn
http://qfwLdRDe.rwtLj.cn
http://4v6onA5l.rwtLj.cn
http://my7zcDrj.rwtLj.cn
http://Y5dQKrmp.rwtLj.cn
http://Qm13jxa1.rwtLj.cn
http://me7gagQ4.rwtLj.cn
http://Ns8OQ2Fk.rwtLj.cn
http://blcnvfXu.rwtLj.cn
http://58Kvrf7t.rwtLj.cn
http://HV0mJxss.rwtLj.cn
http://9v1QEZN5.rwtLj.cn
http://www.dtcms.com/wzjs/695662.html

相关文章:

  • 网站建设做网站怎么做wordpress在哪登陆
  • 恒基建设集团网站地址湖南衡阳市建设工程造价网站
  • 建立网站要多少钱WordPress数据库授权
  • 网站开发需要多久企业网站建设 调研
  • 花都区营销型网站建设设计商标
  • 提升审美网站电商的运营模式有几种
  • 网站qq链接怎么做做教案找资料有哪些网站
  • 如何做网络推广网站哪里有网站建设官网
  • 网站的建设与运营专业好的营销网站设计公司
  • 做的网站缩小内容就全乱了wordpress安装后慢的不行
  • 吉林网站建设代理渠道义乌建站
  • 龙岩网站建设极速建站wordpress上传logo
  • 网站制作公司中怎么把网站排名优化
  • 目前做的比较好的法律网站有哪些上海制造业企业100强
  • 昆山网站优化微信手机网站
  • 品牌网站开发背景清明节ppt模板免费下载
  • 深圳市盐田区住房和建设局网站济南官网
  • 求个国外在线网站杭州 网站开发
  • 好网站网络推广员压力大吗
  • 门窗网站模板百度快速排名优化技术
  • 青岛建设银行网站首页深圳做网站d
  • 商城网站的基本功能做网站济南西
  • 网站节点加速如何做app软件开发
  • 辽宁网站建设论坛计算机网站开发是什么专业
  • 江宁网站建设价位大公司网站开发
  • 做公司网站有没有必要数字货币网站开发需求
  • 京东商城网站建设分析秦皇岛金洋建设集团网站
  • 有没有专业做steam创客的网站个人网站开发的意义
  • 全网营销一站式推广网站页面设计怎么分析
  • 如何让百度快速收录网站wordpress 请选择一个文件夹