protobuf 源代码分析 (1)准备工作
protobuf简介
protobuf是google开源的跨平台的一种数据序列化的代码自动生成器,支持c++、java和python语言,支持跨网络的传输数据,与平台类型无关。并且其生产的序列化数据具有如下特点:
1> 短小,高效,相对于xml来说protobuf直接生成二进制的传输流,解析更高效,同时定义消息类型也十分简洁、清晰易懂。
2> 跨平台
3> 支持多种语言。
4> 易于学习和使用,定义proto文件的学习非常容易,非常容易上手,对于一个这么优秀并且这么容易上手的序列化工具,不用简直就是暴殄天物。
protobuf下载、编译、安装
下载:
官网:https://code.google.com/p/protobuf/
源代码:
命令行:
# Non-members may check out a read-only working copy anonymously over HTTP.
svn checkout http://protobuf.googlecode.com/svn/trunk/ protobuf-read-only
Gui、IDE下载:
This project's Subversion repository may be accessed using many different client programs and plug-ins. See your client's documentation for more information
编译:
支持用vc2008直接打开,但是会转换vc2005的两个项目为vc2008的。然后需要把gtest的两个项目都配置为MD/MDd,否则会造成依赖的链接错误。然后就可以直接编译通过
安装:
protobuf 源代码分析 (1)准备工作的更多相关文章
- Parrot源代码分析之海贼王
我们的目的是找到speedup-example在使用Parrot加速的原因,假设仅仅说它源于Context Switch的降低,有点简单了,它究竟为什么降低了?除了Context Switch外是否还 ...
- Openstack本学习笔记——Neutron-server服务加载和启动源代码分析(三)
本文是在学习Openstack过程中整理和总结.因为时间和个人能力有限.错误之处在所难免,欢迎指正! 在Neutron-server服务载入与启动源代码分析(二)中搞定模块功能的扩展和载入.我们就回到 ...
- Android HandlerThread 源代码分析
HandlerThread 简单介绍: 我们知道Thread线程是一次性消费品,当Thread线程运行完一个耗时的任务之后.线程就会被自己主动销毁了.假设此时我又有一 个耗时任务须要运行,我们不得不又 ...
- Android异步任务处理框架AsyncTask源代码分析
[转载请注明出处:http://blog.csdn.net/feiduclear_up CSDN 废墟的树] 引言 在平时项目开发中难免会遇到异步耗时的任务(比方最常见的网络请求).遇到这样的问题.我 ...
- Java设计模式-代理模式之动态代理(附源代码分析)
Java设计模式-代理模式之动态代理(附源代码分析) 动态代理概念及类图 上一篇中介绍了静态代理,动态代理跟静态代理一个最大的差别就是:动态代理是在执行时刻动态的创建出代理类及其对象. 上篇中的静态代 ...
- struts2请求过程源代码分析
struts2请求过程源代码分析 Struts2是Struts社区和WebWork社区的共同成果.我们甚至能够说,Struts2是WebWork的升级版.他採用的正是WebWork的核心,所以.Str ...
- HBase源代码分析之HRegion上MemStore的flsuh流程(二)
继上篇<HBase源代码分析之HRegion上MemStore的flsuh流程(一)>之后.我们继续分析下HRegion上MemStore flush的核心方法internalFlushc ...
- android-plugmgr源代码分析
android-plugmgr是一个Android插件加载框架,它最大的特点就是对插件不需要进行任何约束.关于这个类库的介绍见作者博客,市面上也有一些插件加载框架,但是感觉没有这个好.在这篇文章中,我 ...
- Twitter Storm源代码分析之ZooKeeper中的目录结构
徐明明博客:Twitter Storm源代码分析之ZooKeeper中的目录结构 我们知道Twitter Storm的所有的状态信息都是保存在Zookeeper里面,nimbus通过在zookeepe ...
随机推荐
- Ubuntu各版本的历史发行界面
不多说,直接上干货! 总的网址是:http://releases.ubuntu.com/releases/ 比如,选择的是UbuntuKylin,则点击 http://cdimage.ubuntu. ...
- Centos下Kubernetes+Flannel部署(新)
一.准备工作 1) 三台centos主机 k8s master: 10.11.151.97 tc-151-97 k8s node1: 10.11.151.100 tc-151-100 k8s no ...
- java 集合框架小结
一:集合框架 集合框架是为表示和操作集合而规定的一种统一的标准的体系结构. 任何集合框架都包含三大块内容:对外的接口.接口的实现和对集合运算的算法. 接口:即表示集合的抽象数据类型.Colle ...
- layer相关使用
父子页面传参数 转自:https://blog.csdn.net/babyxue/article/details/76854106 1.父页面打开子页面并向子页面传参数 function setCho ...
- Rails中实现批量删除
在Rails生成的控制器模版中,包含的destroy只能处理单个对象,而批量删除要求能够同时处理多个对象,这需要自定义一个批量操作action.批量删除的效果图如下:
- 存储树形的数据表转为Json
/// <summary> /// 根据DataTable生成Json树结构 /// </summary> /// <param name="tabel&quo ...
- IOS开发常见第三方总结
链接](https://github.com/languages/Objective-C/most_watched) * [three20](https://github.com/facebook ...
- [转]Dotfuscator 使用图解教程
本文转自:https://www.cnblogs.com/xiezunxu/articles/7228741.html Dotfuscator:是.NET混淆器和压缩器,它可以帮助您防止您的应用程序被 ...
- 以中间件,路由,跨进程事件的姿势使用WebSocket--Node.js篇
上一篇文章介绍了在浏览器端以中间件,路由,跨进程事件的姿势使用原生WebSocket.这篇文章将介绍如何使用Node.js以相同的编程模式来实现WebSocket服务端. Node.js中比较流行的两 ...
- SQL Server数据库状态和文件状态
数据库状态 (database states) 查询数据库的当前状态 : 1.查询所有数据库的状态 ,通过sys.databases目录视图的state_desc列 user master go se ...