• ProtocolBuffer 使用及 一些坑


    Protocol Buffers,是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面。

    ProtocolBuffer的优势

    跨平台: ProtoBuf支持多平台和语言, 包括C++/Java/Python等等

    序列化&反序列号: ProtoBuf支持直接将对象序列化成Data, 也支持直接将Data序列化为对象类型

    消息大小:一条消息数据,用protobuf序列化后的大小是json的10分之一,xml格式的20分之一,是二进制序列化的10分之一.

    对于即时通信消息来说, 减小数据量的大小非常有必要 

     

     

    使用地址: https://github.com/alexeyxo/protobuf-swift

    1.ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

    2.brew install automake

    3.brew install libtool

    4.brew install protobuf

    5.git clone git@github.com:alexeyxo/protobuf-swift.git

    6../scripts/build.sh

     

    syntax = "proto2";

     

    message msgName {

      required int32 age = 1;

      required string name = 2;

    }

     

    syntax = "proto2" 使用的版本号. 目前proto2/ proto3

    message 类定义的关键字(这里面称为'消息')

    msgName 类定义的名

    required 序列化, 反序列化时必须有值

    optional 序列化, 反序列化不一定有值

    repeated 经常用在数组中

    int32/ int64/ string/ 其他数据类型

    1. 2.... 代表当前字段在当前类中的位置, 方便在序列化, 反序列化中查找赋值

     

    数据类型

    bool 布尔类型 1字节 bool

    double 64位浮点数 N double

    float 32为浮点数 N float

    int32 32位整数、 N int

    uin32 无符号32位整数 N unsigned int

    int64 64位整数 N __int64

    uint64 64为无符号整 N unsigned __int64

    sint32 32位整数,处理负数效率更高 N int32

    sing64 64位整数 处理负数效率更高 N __int64

    fixed32 32位无符号整数 4 unsigned int32

    fixed64 64位无符号整数 8 unsigned __int64

    sfixed32 32位整数、能以更高的效率处理负数 4 unsigned int32

    sfixed64 64为整数 8 unsigned __int64

    string 只能处理 ASCII字符 N std::string

    bytes 用于处理多字节的语言字符、如中文 N std::string

    enum 可以包含一个用户自定义的枚举类型uint32 N(uint32) enum

    message 可以包含一个用户自定义的消息类型 N object of clas

     

    最后一步就是pod 'ProtocolBuffers-Swift'

     

     

    编译的时候遇到的坑

    // 后面必须有;
    syntax = "proto2";
     
    // msgName { 中间不能有=
    message msgName {
          // 数字一定要排序, 而且从1开始, 数字后面必须加; 最后一个数字也必须加;
      required int32 age = 1;
      required string name = 2;
    // } 后面可以加;
    }

     

     

  • 相关阅读:
    CodeForces 450
    CodeForces 400
    CodeForces 1
    [HDU POJ] 逆序数
    [HDU 1166] 敌兵布阵
    [转] 树状数组学习
    关于1月4日到1月7日
    [HDU 1565+1569] 方格取数
    [POJ 1459] Power Network
    [转] 网络流算法--Ford-Fulkerson方法及其多种实现
  • 原文地址:https://www.cnblogs.com/MrTao/p/7285702.html
Copyright © 2020-2023  润新知