• Google Protocol Buffer安装编译及使用


    近期玩了玩谷歌的Protocol Buffer。以下就简介下

    Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准。眼下已经正在使用的有超过 48,162 种报文格式定义和超过12,183 .proto 文件,他们用于RPC 系统和持续数据存储系统。Protocol Buffers 是一种轻便高效的结构化数据存储格式,能够用于结构化数据串行化。或者说序列化。它非常适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。眼下提供了 C++JavaPython 三种语言的 API相比較一些其它的XML技术而言,该技术的一个明显特点就是更加节省空间(以二进制流存储)、速度更快以及更加灵活。

    安装 Google Protocol Buffer

    在站点 http://code.google.com/p/protobuf/downloads/list上能够下载Protobuf 的源码。然后解压编译安装便能够使用它了。


    解压完毕后首先要对源代码进行编译再此以win7为例,由于编译须要用到visual studio所以没有安装的须要先安装vs,我电脑上装的是vs2010,装好vs后打开vsprojects目录


    点击红框内的文件打开。这时候就打开了vs程序。应该会提示进行项目转换

    将编译模式切换为Release模式,并右键分别生成libprotobuflibprotobuf-litelibprotocprotoc这四个project。编译完毕后在Release目录下会生成这四个文件libprotobuf.liblibprotobuf-lite.liblibprotoc.libprotoc.exe 


    将它们复制到cwindows文件夹下

    接下来就能够用protoc了,使用例如以下命令

    protoc --proto_path=IMPORT_PATH --cpp_out=DST_DIR --java_out=DST_DIR --python_out=DST_DIR path/to/file.proto
    
    下面是各种语言的不同写法

    比如

    protobuf-masterjava>protoc -I=D:Cellproto --java_out=D:CellprotoCell D:Cellproto est.proto

    假设不出意外在目标路径下就会生成对应的版本号的文件了。文件有了接下来就是怎样用,以下以java为例

    别的语言不太清楚,java在使用的时候问题会比較多,当你把生成的java文件复制到编辑器里边时会发现报错,这是由于缺少jar包。jar包从何而来呢?进入proto源代码下的java目录有个README.md用记事本打开它


    跟着它一步一步来吧,首先安装maven。就是下载完了配置下环境变量。然后分别执行1,2,3命令吧,第三步要注意

    就是说你要确保protobuf-mastersrc文件夹下有proto.exe,理论上你自己编译完毕了就有了,然而并没有,好吧,还记得编译完毕后我们生成的那几个文件有这个吧,把它再拷贝一份过来,然后再来执行这几个命令,顺利完毕。到此为止你的protobuf-masterjava arget这个路径下就会多了一些文件了。把jar包复制到编译器吧。然后就能够開始使用了。

    在此给出官网上一个样例,这是一个.proto文件

    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 AddressBook {
      repeated Person person = 1;
    }

    使用的时候就能够这样用了

    <strong><span style="color:#330033;">Person john =
             Person.newBuilder()
                        .setId(1234)
                        .setName("John Doe")
                        .setEmail("jdoe@example.com")
                        .addPhone(
                                Person.PhoneNumber.newBuilder()
                                        .setNumber("555-4321")
                                        .setType(Person.PhoneType.HOME))
                        .build();
        Log.d("test",john.toString()+"");</span></strong><span style="color:#ffffff;">
    </span>






  • 相关阅读:
    算法面试题
    学习进度条(一)
    代码作业——四则运算
    构建之法阅读笔记01
    本学期的阅读计划与快速阅读《构建之法》后提出问题
    自我介绍及学期目标
    对天天开心消消乐(订餐系统)的建议
    《构建之法》阅读笔记01-快速阅读后的几个问题。
    二柱子之随机四则运算
    自我介绍
  • 原文地址:https://www.cnblogs.com/cynchanpin/p/6797385.html
Copyright © 2020-2023  润新知