标注下,今天开始看看Protocol buffer格式,熟悉它java c++库的使用。
首先来说明下 PB(Protocol buffer) json XML三者之间的比较
XML | JSON | PB | ||
数据结构支持 | 复杂结构 | 简单结构 | 较复杂结构 | |
数据保存方式 | 文本 | 文本 | 二进制 | |
数据保存大小 | 大 | 一般 | 小 | |
解析效率 | 慢 | 一般 | 快 | |
语言支持程度 | 非常多 | 多 | C++/Java/Python | |
开发难度?繁琐? | 繁琐 | 简单 | 简单 | |
学习成本 | 低 | 低 | 低 | |
适用范围 | 数据交换 | 数据交换 | 数据交换 |
这个数据是抄袭别人的,但是就个人使用上来说,肯定是把XML给抛出几条街。。
看着xml那复杂的神奇的定义。。。不说了。
json其实是种好格式,可读性好,解析也快,用gson去序列化解析,速度没得说,然后体积也小。
既然json这么好,为什么要学习pb呢?
说明下原因把。
装甲逆袭的单机功能已经都完成了,然后最近呢也没时间回家敲代码,所以,很果断的选择了学习这条不归路。
然后,装甲逆袭的网络部分已经确定了是用mina写服务端然后客户端用bsdsocket,但是缺少了一种数据格式。
其实本来用json作为数据格式是个很好的选择,可以做到非常懒惰的做法,将封包解包的步骤都省略了,然后大小端问题也可以不去管它。多好的选择啊。。
但是总是觉得jsoncpp这个东西用的蛋疼,好把所以就更蛋疼的来学习pb了,今天是第一天,上面大概介绍了下pb与其他数据格式的比较,那么现在就来说说pb的其他情况吧。
抄自百度百科..
protocolbuffer(以下简称PB)是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了三种语言的实现:java、c++ 和 python,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用 xml 进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。
发现也没什么好说的,今天就先到这里吧,明天学习下pb java库的使用!
然后就介绍下接下来的学习进程吧。
-------pb java库的使用
-------pb c++库的使用
-------pb使用过程中的一些问题
-------pb与json的比较
-------pb的实际应用(在装甲逆袭中,服务端使用java,客户端使用c++)实现网络的解析读取。