Java protobuf框架使用向导
ProtoBuf,全称是Protocol Buffers, 它是谷歌内部用的一种高效的、可扩展的对结构化数据进行编码的格式规范。谷歌自己内部很多程序之间的通信协议都用了ProtoBuf。
ProtoBuf,全称是Protocol Buffers, 它是谷歌内部用的一种高效的、可扩展的对结构化数据进行编码的格式规范。谷歌自己内部很多程序之间的通信协议都用了ProtoBuf。
下面介绍的是使用Java ProtoBuf的基本步骤:
1.http://code.google.com/p/protobuf/downloads/list ,选择其中的win版本下载
2.下载一个protobuf-java-2.4.1.jar文件(注意,要与你刚才下的proto.exe版本相同,否则可能出现编译通不过现象)
http://grepcode.com/snapshot/repo1.maven.org/maven2/com.google.protobuf/protobuf-java/2.4.1
3.在proto.exe同级目录,编写一个msg.proto文件:
- package tutorial;
- option java_package = "com.protobuftest.protobuf";
- option java_outer_classname = "PersonProbuf";
- message Person {
- required string name = 1;
- required int32 id = 2;
- optional string email = 3;
- enum PhoneType {
- MOBILE = 0;
- HOME = 1;
- WORK = 2;
- }
- message PhoneNumber {
- required string number = 1;
- optional PhoneType type = 2 [default = HOME];
- }
- repeated PhoneNumber phone = 4;
- message CountryInfo {
- required string name = 1;
- required string code = 2;
- optional int32 number = 3;
- }
- }
- message AddressBook {
- repeated Person person = 1;
- }
4.使用如下命令编译这个文件:
5.将生成的ProtoBufferPractice.java文件引入eclipse
6.把下载的protobuf-java-2.4.1.jar也引入工程
7.使用方法:
- package com.protobuftest;
- import java.util.List;
- import com.google.protobuf.InvalidProtocolBufferException;
- import com.protobuftest.protobuf.PersonProbuf;
- import com.protobuftest.protobuf.PersonProbuf.Person;
- import com.protobuftest.protobuf.PersonProbuf.Person.PhoneNumber;
- import com.protobuftest.protobuf.PersonProbuf.Person.PhoneNumberOrBuilder;
- import com.protobuftest.protobuf.PersonProbuf.Person.PhoneType;
- public class ProtoBufTest {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- PersonProbuf.Person.Builder builder = PersonProbuf.Person.newBuilder();
- builder.setEmail("kkk@email.com");
- builder.setId(1);
- builder.setName("TestName");
- builder.addPhone(PersonProbuf.Person.PhoneNumber.newBuilder().setNumber("131111111").setType(PersonProbuf.Person.PhoneType.MOBILE));
- builder.addPhone(PersonProbuf.Person.PhoneNumber.newBuilder().setNumber("011111").setType(PersonProbuf.Person.PhoneType.HOME));
- Person person = builder.build();
- byte[] buf = person.toByteArray();
- try {
- Person person2 = PersonProbuf.Person.parseFrom(buf);
- System.out.println(person2.getName() + ", " + person2.getEmail());
- List<PhoneNumber> lstPhones = person2.getPhoneList();
- for (PhoneNumber phoneNumber : lstPhones) {
- System.out.println(phoneNumber.getNumber());
- }
- } catch (InvalidProtocolBufferException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- System.out.println(buf);
- }
- }
源文档 <http://blog.csdn.net/csharp25/article/details/6632127>
原文链接:http://www.cnblogs.com/brainy/archive/2012/05/11/2496581.html
相关推荐
Java protobuf框架使用向导ProtoBuf,全称是Protocol Buffers, 它是谷歌内部用的一种高效的、可扩展的对结构化数据进行编码的格式规范。谷歌自己内部很多程序之间的通信协议都用了ProtoBuf
要使用Java Protobuf框架,首先需要下载相应的工具。在`http://code.google.com/p/protobuf/downloads/list`,你可以找到适用于Windows系统的protobuf编译器proto.exe。同时,你需要下载对应的protobuf-java库,如...
在本文中,我们将详细介绍如何使用Maven来搭建一个gRPC Java项目,并提供一个简单的示例。gRPC是一个高性能、开源的通用RPC框架,它利用Protocol Buffers作为接口定义语言。Maven是Java项目管理和构建的工具,对于...
- 使用高效的序列化技术如protobuf或json,减少数据传输量。 - 考虑缓存策略,减少不必要的网络通信。 - 对于高并发场景,可能需要负载均衡和集群部署。 9. **监控和调试** - 利用Eclipse的内置工具或者第三方...
少儿编程scratch项目源代码文件案例素材-足球物理学.zip
scratch少儿编程逻辑思维游戏源码-走出垃圾桶 第二部分.zip
scratch少儿编程逻辑思维游戏源码-正在开发中.zip
【智能设备】超轻量级AR眼镜设计方案
scratch少儿编程逻辑思维游戏源码-战斗.zip
少儿编程scratch项目源代码文件案例素材-子弹冲刺 v2.zip
scratch少儿编程逻辑思维游戏源码-小鸡跳.zip
内容概要:本文详细介绍了利用Stanley算法在CarSim和Simulink平台上实现自动驾驶车辆的轨迹跟随和车道保持功能。文章首先解释了Stanley算法的核心思想及其公式,接着展示了如何在Simulink中具体实现该算法,包括横向误差计算、前馈控制以及方向盘转角限制等关键技术环节。同时,文中还讨论了联合仿真过程中遇到的各种挑战及解决方案,如坐标系对齐、信号同步等问题,并提供了详细的代码片段和调试技巧。最终,通过一系列实验验证了该模型的有效性和鲁棒性。 适用人群:从事自动驾驶技术研发的工程师和技术爱好者,尤其是对横向控制算法感兴趣的读者。 使用场景及目标:适用于希望深入了解并掌握Stanley算法在自动驾驶中的应用,以及希望通过CarSim和Simulink平台搭建和优化自动驾驶仿真系统的专业人士。 其他说明:文章不仅提供了理论解析,还包括大量实用的操作指南和实践经验分享,有助于读者快速上手并在实践中不断改进和完善自己的项目。
实训商业源码-导航-毕业设计.zip
scratch少儿编程逻辑思维游戏源码-以太.zip
内容概要:本文介绍了一种用于光伏系统的新型最大功率点跟踪(MPPT)策略及其MATLAB仿真模型。该策略结合了大步长扰动和模糊控制的优点,通过分段策略切换实现动态响应速度快和稳态精度高的特点。具体来说,在动态阶段采用大步长扰动以快速逼近最大功率点,而在稳态阶段则切换到模糊控制以确保高精度。文中详细展示了如何构建模糊推理系统(FIS),并提供了完整的MATLAB代码示例,包括状态切换逻辑、步长自适应调整以及模糊规则库的设计。 适合人群:从事光伏系统研究的技术人员、高校师生及相关领域的科研工作者。 使用场景及目标:适用于需要优化光伏系统能量转换效率的研究项目,旨在提高MPPT算法在不同光照条件下对最大功率点的跟踪能力。 其他说明:文中不仅讨论了理论概念,还给出了详细的代码实现步骤,便于读者理解和应用。此外,作者还分享了一些实践经验,如通过引入随机噪声来模拟真实环境的影响,进一步验证了所提方法的有效性和鲁棒性。
半闭环数控车床液压传动与控制设计.rar
scratch少儿编程逻辑思维游戏源码-烟花.zip
小米路由器,救砖资料 官方资料
内容概要:本文详细介绍了三相异步电机矢量控制调速系统的Simulink仿真及其MATLAB建模方法。首先,文章解释了三相异步电机的基本特点以及矢量控制技术的优势,尤其是磁场定向控制(FOC)。接下来,逐步讲解了如何在Simulink中搭建仿真模型,包括电源模块、异步电机模块的参数设置,以及坐标变换(如Clark变换和Park变换)的具体实现。文中还探讨了电流环控制、矢量解耦控制、PI调节器参数设置、SVPWM模块的死区补偿、转速观测器的设计等关键技术细节。通过不断调整模型参数,可以深入研究系统的性能,为实际电机控制应用提供理论支持和实践指导。 适合人群:电机控制系统工程师、自动化专业学生、科研人员。 使用场景及目标:适用于希望深入了解三相异步电机矢量控制原理和技术实现的研究者和工程师。目标是掌握Simulink仿真的具体操作步骤,理解各个模块的功能和相互关系,从而能够在实际项目中应用这些技术和方法。 其他说明:文章不仅提供了详细的理论背景介绍,还包括了许多实用的代码片段和调试技巧,帮助读者更好地理解和应用矢量控制技术。
应用多元回归方程进行客运量预测的源代码