google 开源的Protobuf,目的是解决json和xml在网络传输中占用带宽问题,它是二进制传输的,无论是解析性能还是占用网络带宽,都要比json和xml优越。

但是,为什么protobuf没有取代json或者xml呢?觉得主要原因是protobuf 是二进制的,对调试不友好,出现问题,不好定位,所以很多公司不使用它。

protobuf除了用作网络传输,还有另一个用途,就是用作配置文件。json也可以用作配置文件,但是json是明文,有些敏感信息容易泄露。protobuf的二进制可以派上用途,还可以把敏感信息隐藏,还有就是protobuf文件比较小。protobuf扩展性也是比较好的,可以在不影响原有字段的情况增加新的字段。

protobuf支持多种语言,我们在设备端使用,只用c++即可,其它语言可以不要,这样编译快一点。从github下载代码,解压,cd 到解压目录,执行./autogen.sh , make 就可以了,然后到home目录下,修改 .profile, 把PATH路径指向protoc  所在目录,这样执行protoc  命令,直接从命令行输入即可。

protoc  编译好后,就可以用它来生成c++协议文件。首先定义好后缀为.proto文件,这个就是自己定义的协议,增加相应的字段就可以了,每个字段必须写上序号,如果是数组,就用 repeat声明。协议定义很简单的。

协议定义好后,protoc  --cpp_out=.  my.proto生成c++实现文件,因为我们只要c++,所以只加了cpp_out参数,如果需要生成其它语言,增加相应的语言参数即可,生成实现文件后,就可以放到工程上用了,工作效率还是挺高的,不用自己写代码,就可以用作配置功能了。

protobuf可以直接从文件中解析数据,也可以从内存解析,网络上传输的数据,就用内存解析,我们在本地当配置文件使用,从文件解析即可。从项目使用效果来看,protobuf达到了我们的要求,性能,占用空间和扩展性都是不错的。

Protobuf配置相关推荐

  1. [Protobuf] Mac系统下安装配置及简单使用

    Mac下Protobuf安装 Protobuf源码Github地址: https://github.com/google/protobuf 配置环境教程: https://github.com/goo ...

  2. Caffe-SSD(single-shot-multibox)在Windows平台下的配置(CPU和GPU)与训练记录

    1在windows上面训练和测试ssd的方法很少,而且配置也相当之麻烦,搞了几天才调试成功.现在写一下过程分享到博客上,顺便也可以作为今后再次安装的参考.我的配置环境: windows: 10  gp ...

  3. Unity C# 网络学习(十二)——Protobuf生成协议

    Unity C# 网络学习(十二)--Protobuf生成协议 一.安装 去Protobuf官网下载对应操作系统的protoc,用于将.proto文件生成对应语言的协议语言文件 由于我使用的是C#所以 ...

  4. 【全网最全】Gem5 配置 DRAMSim2 DRAMSim3

    分享下自己的踩坑经验,希望能帮大家避免耗费太多配置环境的无效时间 专门针对dramsim而安装的gem5版本,如果针对其他版本,本文可能无法提供太多帮助 安装时需要注意的坑主要两个:1. GEM5版本 ...

  5. TensorFlow领衔,七大深度学习框架大对比!

    作者|黄文坚 唐源 编辑|小智 TensorFlow 在 2015 年年底一出现就受到了极大的关注,在一个月内获得了 GitHub上超过一万颗星的关注,目前在所有的机器学习.深度学习项目中排名第一,甚 ...

  6. DL-5 深度学习框架的对比

    在深度学习领域的五大巨头里,它们都各自力挺一种深度学习框架:像谷歌有自家的TensorFlow.Facebook有Torch.百度有Paddle Paddle.微软有CNTK.而亚马逊的AWS则有MX ...

  7. Linux(Ubuntu14.04)下安装Anaconda和Spyder

    Linux(Ubuntu14.04)下安装Anaconda是为了安装python所需要的各种库以及他们的环境配置. Spyder是使用python的IDE 安装python和pip 一般linux系统 ...

  8. 安装Google Object Detection API

    前提条件 已安装python,建议采用VirtualEnv或者Anaconda 安装TensorFlow 1.x python和tensorflow的安装见相关文档 https://www.tenso ...

  9. 各种流行深度学习构架的性能对比

    知乎上对各种深度学习方法的对比: 在众多的神经网络框架如chainer, caffe, torch,mxnet等之间如何做选择? 四个月前就有人提出更新对比,现在我看还没有对比更新过. Evaluat ...

最新文章

  1. 百度某员工抱怨:前人代码写得像坨*,颠覆了对大厂的认知
  2. mysql5 数据类型,Mysql学习笔记5-----字段的数据类型
  3. phpMyAdmin操作之改管理员密码
  4. java类型转换_JAVA类型转换大全
  5. TCP/IP / PDU 是什么
  6. nginx丢弃http包体处理
  7. Nginx深入详解之过滤模块
  8. java 多态_Java 多态
  9. cron计划任务的介绍
  10. python列表求平均值_长篇文讲解:Python要求O(n)复杂度求无序列表中第K的大元素实例...
  11. 华为云计算机访问手机软件,华为云电脑来了,只需一个APP就能让手机秒变Windows电脑!...
  12. CISCO 命令手册
  13. smb服务器速度测试_360路由器做smb服务器各种情况拷贝速度测试外加加装5g网卡...
  14. PowerDesigner中主键外键唯一键设置
  15. 小程序源码:微信零钱模拟器
  16. 计算机网络密码忘记了怎么办,忘记电脑密码怎么办?--重置电脑密码的方法详解...
  17. 【JAVA】java递归测试考拉兹猜想/冰雹猜想
  18. i 标签怎么关闭_中山不干胶标签生产厂家——飞盛条码标识技术
  19. CDQ分治——学习笔记
  20. 日语标点符号用法解说!

热门文章

  1. 运用Java将图片保存到本地
  2. Android自定义Behavior第十六式之空中楼阁
  3. 中国计算机软件专业技术,中国计算机软件专业技术资格考试-20210325012847.doc-原创力文档...
  4. Java(斗地主案例)
  5. SVM中函数间隔和几何间隔的区别
  6. C语言 system函数超简单讲解+整活
  7. 向微积分手机版授课老师说句真心话
  8. tensorflow linux多卡训练_用 Windows 电脑训练深度学习模型?超详细配置教程来了...
  9. 简谈docker swarm中负载均衡原理
  10. Koa2调用java接口_入门koa2接口开发