`
malixxx
  • 浏览: 97441 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

protocolBuffer 说明

阅读更多
http://www.cnblogs.com/shrimps/archive/2008/11/06/1327988.html
近期手上项目需要选择一配置信息保存方案,现就XML、JSON、Protocol Buffer(以下简称PB)、Lua做一次横向对比。首先要说明的是Lua严格来说属于嵌入式脚本语言,而XML、JSON、PB都属于数据交换格式,两者之间不属于同类别,按理说不应该放在一起比较,但是就项目需求来讲,Lua也能够实现配置信息保存。故而将Lua和XML、JSON、PB放在一起做横向对比。

  XML | JSON | PB | Lua
数据结构支持 | 复杂结构 | 简单结构 | 较复杂结构 | 复杂结构
数据保存方式 | 文本 | 文本 | 二进制 | 文本
数据保存大小 | 大 | 一般 | 小 | 一般
解析效率 | 慢 | 一般 | 快 | 稍快
语言支持程度 | 非常多 | 多 | C++/Java/Python | 多
开发难度?繁琐? | 繁琐 | 简单 | 简单 | 相对繁琐
学习成本 | 低 | 低 | 低 | 高
适用范围 | 数据交换 | 数据交换 | 数据交换 | 数据保存及脚本处理

最终我的选择为Lua,理由如下:
首先配置文件可能很复杂;其次需要脚本功能;Lua性能较好;语言支持程度好,本项目除了用c++做主要开发外,可能还有大量辅助软件开发,就要求快速开发,性能适用就好,因此可能会选择其他语言做快速开发。而lua的多语言支持还可以。


公司打算用protocolBuffer。
现在讲一下protocolBuffer的安装。
1.在 http://code.google.com/p/protobuf/downloads/list 下载
protobuf-2.3.0.zip
protoc-2.3.0-win32.zip

解压protoc-2.3.0-win32.zip,里面有个protoc.exe文件,配置到path
dos下执行:protoc --version  查看版本。

解压protobuf-2.3.0.zip 将上面的那个protoc.exe文件拷贝到src文件夹中。
protobuf里没有jar包,要自己编译,要用到maven,先下载maven,配置bin目录到path。
然后dos下进入protobuf-2.3.0\java 目录,执行:
mvn install
mvn package

这时maven自动下载依赖包,编译并打包jar。
在protobuf-2.3.0\java\target中生成protobuf-java-2.3.0.jar

官方的例子。
在dos的protobuf\protobuf-2.3.0\examples目录下,执行:protoc --java_out=. addressbook.proto ,这时会根据proto生成对应的AddressBookProtos.java文件。
具体的proto文件的写法,官方有详细文档。

在eclipse下建立项目Test_protobuf,考依赖包protobuf-java-2.3.0.jar,examples目录下的AddPerson.java,ListPeople.java和刚生成的AddressBookProtos.java 3个测试文件。
执行Addperson类,按提示输入信息,会生成 addr.dat文件(F5一下)。
执行Listperson类,看到刚才输入的信息。


官方文档
http://code.google.com/intl/zh-CN/apis/protocolbuffers/docs/javatutorial.html
http://code.google.com/intl/zh-CN/apis/protocolbuffers/docs/reference/java/index.html
http://code.google.com/intl/zh-CN/apis/protocolbuffers/docs/proto.html
http://code.google.com/intl/zh-CN/apis/protocolbuffers/docs/reference/java-generated.html
http://code.google.com/intl/zh-CN/apis/protocolbuffers/docs/encoding.html

---------------------------------------------------------------------
maven安装
去官网下载包
1. 安装
a. 安装jdk, 设置环境变量JAVA_HOME, 把JAVA_HOME/bin加入环境变量PATH中
b. 安装maven, 解压缩,然后把${maven_home}/bin加入环境变量PATH中。 ${maven_home}为maven的目录。
c. 把settings.xml文件拷贝到${user.home}/.m2目录下。
d. 修改hosts文件或dns, repos.eff.com 192.168.0.27。

2. 说明
settings.xml文件中描述了repository的位置, ${user.home}/.m2为本地cache。当运行mvn命令时,
    mvn会自动从本地cache或远程repository下载需要的类库。



b. mvn clean. 清除classes, jar, test report等生成的文件。
c. mvn compile. 编译main/java及main/resources。
d. mvn test. 编译后运行junit test.
      缺省包括以下
            **/*Test.java
                **/Test*.java
                **/*TestCase.java
         不包括以下
                **/Abstract*Test.java
                **/Abstract*TestCase.java
e. mvn package。 编译运行test后,打包。
f. mvn install。 把编译好的jar install到本地repository cache中。
g. mvn deploy。把编译好的jar deploy到文件描述的路径中。
h. mvn eclipse:eclipse。根据pom文件改写.project和.class文件,下载依赖包,并加入m2_repo参数


分享到:
评论
2 楼 darrendu 2010-10-13  
你好,protocolBuffer,能根据一个URL直接进行数据共享吗?就像webService,我看了那个例子,它是把数据写到文件,然后从文件把数据解析出来,难道还要把这个文件放到ftp上,供不同系统调用吗?
1 楼 achenbj 2010-02-04  
牛啊,呵呵!

相关推荐

    PHP安装protobuf详解

    当前的google protocol buffer仅支持:C++,Java,Python。PHP作为WEB开发的主力居然没有得到google protocol buffer的官方支持实在是有一些遗憾。 目前PHP支持google protocol buffer的开源实现包括pb4php、phpbuf...

    protoc.exe编译器

    亲测可用的protoc.exe编译器。Protocol Buffer说明:http://www.ruandb.top/blog/articles/144.html

    基于netty与Springboot实现的编程游戏服务器源码+项目说明.zip

    protocolBuffer。eventBus。并实现一些有用的工具。 mvn clean package java -jar game-start/target/*.jar 使用redis和redisson来缓存玩家数据。 异步保存数据到mongodb。 集成谷歌原型缓冲区,以加快序列化。 ...

    protoc使用说明

    Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件。他们用于 RPC 系统和持续数据存储系统。 Protocol...

    Ixchariot 默认脚本使用说明

    应用程序脚本使用说明(英文版的,下载个翻译软件凑活还是能看懂的) Application scripts are the key to measuring network performance. They model the real applications you use between computers in a ...

    VC下Protobuf 2.5.0 库下载及使用文档

    VS2010下编译ProtocolBuffer及简单使用,资源包括了库文件,及使用说明文档,当然也可参考文章:http://blog.csdn.net/yaoyuanyylyy/article/details/36389277

    基于SSM框架的Java学习分享平台源码

    - Protocol Buffer文件:1个,用于数据交换格式定义; - LICENSE文件:1个,项目许可说明; - Markdown文件:1个,可能包含项目说明或使用指南; - Properties文件:1个,用于配置项目属性; - JSP文件:1个,用于...

    Netty应用说明笔记

    例如前两者并没有提供针对 Protocol Buffer、JSON这些信息格式的封装,但是Netty框架提供了这些数据格式封装(基于责任链模式的编码和解码功能); 2、直接使用NIO需要需要额外的技能,例如Java多线程,网络编程; 3...

    Oracle9i的init.ora参数中文说明

    Oracle9i初始化参数中文说明 Blank_trimming: 说明: 如果值为TRUE, 即使源长度比目标长度 (SQL92 兼容) 更长, 也允许分配数据。 值范围: TRUE | FALSE 默认值: FALSE serializable: 说明: 确定查询是否获取表级...

    Hadoop-2.7.3-Installation-Guide-for_windows:关于在Windows上安装Hadoop综合指南的存储参考

    这是对中型文章( )的引用,为不希望安装maven和protocolbuffer的用户提供资源HadoopHadoop软件包。 比较简单的方法是复制下载此存储库中存在的bin文件,并用HADOOP_HOME中的bin文件替换它,即存在未发行版本的...

    protobuffer2.6

    本人亲自Googledown下最新源码(2.60版本),包含:已打成架包,编译工具,测试用例,meesage.proto格式说明,java版本,

    Python 内置函数memoryview(obj)的具体用法

    memoryview() 函数返回给定参数的...memoryview objects allow Python code to access the internal data of an object that supports the buffer protocol without copying. Create a memoryview that references o

    Nginx+Tomcat负载均衡

    会出现如下图,如果你再关掉一个tomcat,刷新后页面会依然显示说明 负载均衡成功了。 *" pageEncoding="UTF-8"%> %> <html> <head> </head> <body> 88 <!--server1 这里为 88 --> (request....

    解决struts2下载异常的jar包 struts2-sunspoter-stream-1.0.jar

    有关struts2下载组件的具体... 如果出现该警告说明正确执行,该警告说明,Socket非正常中断,但是流确实已经关闭,自此再也不用看到上面出现的讨厌异常结果。 转载至 http://sunspot.blog.51cto.com/372554/474983

    vocx组件.rar

    1. P2P通讯协议层(P2P Protocol):这一层封装了最底层的Peer通讯协议,因为TCP耗资源较多,延迟长,而UDP又不可靠,因此需要对Ip进行重新封装。  2、核心层(P2P Core):这一层封装了最根本的东西,包括Peer、对等...

    最全的oracle常用命令大全.txt

    说明:可以根据视图的text_length值设定set long 的大小 SQL>select text from user_views where view_name=upper('&view_name'); 6、同义词 查看同义词的名称 SQL>select * from user_synonyms; 7、约束...

    CISCO 技术大集合

    Method Status Protocol Ethernet0 unassigned NO unset up up Serial0 unassigned NO unset up up ……… ……… … …… … … 然后,路由器就开始全局参数的设置: Configuring global parameters: 1....

    ORACLE9i_优化设计与系统调整

    §3.4.2 在缓冲区驻留对象(BUFFER_POOL_KEEP) 71 §3.4.3 版本兼容(COMPATIBLE) 72 §3.4.4 控制文件路径(CONTROL_FILES) 72 §3.4.5 CPU个数(CPU_COUNT) 72 §3.4.6 数据缓冲区块数(DB_BLOCK_BUFFERS) 72...

    Java开发详解.zip

    031901_【第19章:Java网络编程】_IP(Internet Protocol)与InetAddress笔记.pdf 031902_【第19章:Java网络编程】_URL与URLConnection笔记.pdf 031903_【第19章:Java网络编程】_URLEncoder与URLDecoder笔记.pdf ...

Global site tag (gtag.js) - Google Analytics