• Google ProtocolBuffers2.4.1应用说明(一)


    1.概念

    Protocol buffers是一个用来序列化结构化数据的技术,支持多种语言诸如C++、Java以及Python语言,可以使用该技术来持久化数据或者序列化成网络传输的数据。相比较一些其他的XML技术而言,该技术的一个明显特点就是更加节省空间(以二进制流存储)、速度更快以及更加灵活。

    如何使用?

    a. 工具protoc.exe

    b.创建.proto 文件

    c.将.proto文件编译java类

    d.message 的名称不能与java_outer_classname 名称相同,不然编译不过。

    创建Person.proto文件

    package com.xishinet.net.bean;

    option java_package = "com.leehongee.net.bean";

    option java_outer_classname = "Request";

    message Person {

         optional int64 id=1;

         optional string name=2;

         optional string sex=3;

         optional string tel=4;

    }

    Person 为定义一个消息类型为Person

    Person共有三个字段

    都为optional(可选的)

    int64对应java的long

    string对应java的String

    在消息定义中,每个字段都有唯一的一个标识符,可以理解为索引,用于识别各个字段

    id=1,name=2,sex=3,tel=4,1,2,3,4并不是默认值

    默认值可以这样设置:optional int32 result_per_page = 3 [default = 10];

    required:一个格式良好的消息一定要含有1个这种字段。表示该值是必须要设置的;

    optional:消息格式中该字段可以有0个或1个值(不超过1个)

    repeated:在一个格式良好的消息中,这种字段可以重复任意多次(包括0次)。

    重复的值的顺序会被保留。表示该值可以重复,相当于java中的List。

    由于一些历史原因,基本数值类型的repeated的字段并没有被尽可能地高效编码。在新的代码中,用户应该使用特殊选项[packed=true]来保证更高效的编码

    repeated int32 samples = 4 [packed=true];

    备注:可以讲Person.proto放到你解压的protoc-2.4.1-win32.zip里面的protoc.exe同一级目录

    然后cmd cd到该目录 执行protoc.exe --java_out=./ Person.proto,此时在这个目录下回生成Person.java文件

    protoc.exe -I=.   --java_out=.  Request.proto

    protoc.exe -proto_path=SRC --cpp_out=DST SRC/Request.proto

    //此段代码是令 生成的java代码 继承GeneratedMessageLite
    //继承GeneratedMessageLite的好处是  可以使用jboss提供的 编解码器
    //可以认为是 比写项
    option optimize_for = LITE_RUNTIME;

  • 相关阅读:
    c++ ShellExecuteEx调用java打包的exe程序
    麻省理工学院公开课-第四讲:快速排序 及 随机化 算法
    Win10的IIS与以前版本的一个区别
    干就行了!!!写程序就像珊瑚,分支太多,哪有那么多复用!
    NPoco的使用方法
    为什么前端要写标准代码?
    对于委托、事件、观察者模式最一目了然的代码段
    delphi处理消息的几种方式
    哎呀妈呀,吓死我了,幸好服务器没崩溃。
    Delphi的Hint介绍以及用其重写气泡提示以达到好看的效果
  • 原文地址:https://www.cnblogs.com/leehongee/p/3323776.html
Copyright © 2020-2023  润新知