`
malixxx
  • 浏览: 100408 次
  • 性别: 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  
牛啊,呵呵!

相关推荐

    protocol buffer编译器

    Protocol Buffer(简称protobuf)是Google开发的一种数据序列化协议,它是跨平台、语言无关的,用于高效地存储和传输结构化数据。protobuf的核心是.proto文件,这是一种定义数据结构的源代码格式,类似于XML或JSON,...

    安卓直播视频播放流媒体IPCameraRTSPDLNA相关-Android实现protocolbuffer压缩.zip

    在实际开发中,你需要理解RTSP和DLNA的工作原理,掌握使用Protocol Buffer进行数据交换的方法,并熟悉Android的多媒体框架,如MediaPlayer或ExoPlayer,以实现视频流的接收和播放。此外,对于网络摄像机的控制,可能...

    ProtocolBuf 2.5.0

    5. 文档:详细说明protobuf的用法、API参考以及最佳实践。 在实际开发中,使用protobuf可以显著提高数据传输效率,降低网络带宽消耗,同时简化跨平台的开发工作。它已经成为现代软件工程中不可或缺的一部分,尤其在...

    proto_db-master.zip

    【标题】:“proto_db-master.zip”是一个包含proto_db项目的压缩包,该项目是基于Google Protocol Buffer实现的ORM(对象关系映射)系统。 【描述】:ORM是一种编程技术,它允许开发者使用面向对象的方式操作...

    protoc.exe

    描述中的“ProtocolBuffer 包含 protoc.exe,自动生成代码”揭示了protoc.exe的主要功能。protoc.exe是一个编译器,用于将.proto文件(定义了数据结构和接口的文本文件)转换为不同编程语言的源代码,如C++、Java、...

    【QGIS跨平台编译】之【protobuf跨平台编译】:Windows环境下编译成果(支撑QGIS跨平台编译,以及二次研发)

    四、其他说明 在Windows环境下,基于Qt Creator进行编译的protobuf开源库。包含有头文件include、库文件lib、动态库dll等,提供了Debug、Release版本。 当前采用的版本为protobuf-21.2,如果下载者,需要其他版本的...

    protoc-2.4.1-win32.zip

    标签中的"protoc-2.4.1-win32.zip xml protocol buffer"提到了两个关键概念:XML和Protocol Buffer。XML是一种通用的标记语言,广泛用于数据交换和文档存储,而Protocol Buffer则是Google提出的一种更高效的替代方案...

    protubuf editor(最新proto文件编辑器,支持proto3)

    protobuf(Protocol Buffers)是Google推出的一种数据序列化协议,它允许开发者定义数据结构,然后生成对应的序列化和反序列化的代码,用于在不同的数据平台之间交换数据。protobuf的主要优点包括高效、跨平台、语言...

    Golang轻量级并发服务器框架Zinx的设计与实现

    此外,还讨论了基于 Zinx 实现 MMO 多人在线游戏 AOI 算法以及数据传输协议 protocol buffer 的相关内容。 适合人群:Golang 开发者,尤其适用于对轻量级服务器框架感兴趣的开发人员,初级到中级水平的技术开发者。 ...

    基于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...

    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个,用于...

    Socket编程函数说明

    Socket 编程函数说明 Socket 编程是计算机网络编程中的一种基本技术,它允许程序员在不同主机之间进行通信。Socket 编程函数是实现这种通信的基础,本文将对 Socket 编程函数进行详细的说明。 1. socket 函数 ...

    mina文档说明书

    3. **Protocol Buffers**:MINA支持多种协议,如TCP/IP、UDP、HTTP等,开发者可以自定义协议解析器,通过Buffer对象进行数据读写。 4. **Event-driven**:MINA基于事件驱动模型,当网络事件(如连接建立、数据到达...

    Oracle9i的init.ora参数中文说明

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

    proto buffer 最新官方全平台包

    Proto Buffer(Protocol Buffers)是Google开发的一种数据序列化协议,它是用于结构化数据的高效、灵活且可扩展的序列化方法。Proto Buffer允许开发者定义数据结构,然后生成能够在各种编程语言中使用的代码,用于...

    开源项目-lyft-protoc-gen-validate.zip

    开源项目“lyft-protoc-gen-validate”是一个用于生成多语言消息验证器的Protocol Buffer(protobuf)编译器插件。Protocol Buffer是Google推出的一种数据序列化协议,它允许开发者定义数据结构,然后生成能够在各种...

    Netty应用说明笔记

    Netty 提供了丰富的组件和设计模式,如责任链模式的编码和解码功能,用于处理各种信息格式,如Protocol Buffer和JSON。在Java NIO框架的基础上,Netty为开发者提供了更高级别的抽象,减少了直接使用NIO所需的复杂性...

Global site tag (gtag.js) - Google Analytics