zoukankan      html  css  js  c++  java
  • Protobuf

    什么是protobuf


     protobuf全称是**Protocol Buffers**。是QQ等IM采用的协议,比XML,JSON,结构体的传输效率都高的一种传输协议,由Google发明。与XML相比,protobuf序列化后的更短,速度更快,反序列化只需要一行代码。

    protobuf的工作流程


    syntax = "proto3";
     
    message SearchRequest {
      string x = 1;
      int32 xxx = 2;
      int32 XXXX = 3;
    }
    • 第一行表示使用proto3语法,如果没有指定,编译器会默认使用proto2语法。这个指定语法行必须是文件的非空非注释的第一行
    • 然后表明了消息的格式,有一些常见的类型,消息类型中可以嵌套其他的消息类型
    • 向.proto中添加注释,和c++一样用双斜杠表示//

    .proto文件生成了什么


    当用protocol buffer编译器来运行.proto文件时,编译器将生成所选择语言的代码,这些代码可以操作在.proto文件中定义的消息类型,包括获取、设置字段值,将消息序列化到一个输出流中,以及从一个输入流中解析消息。

    • 对C++来说,编译器会为每个.proto文件生成一个.h文件和一个.cc文件,.proto文件中的每一个消息有一个对应的类。
    • 对Java来说,编译器为每一个消息类型生成了一个.java文件,以及一个特殊的Builder类(该类是用来创建消息类接口的)。
    • 对Python来说,有点不太一样——Python编译器为.proto文件中的每个消息类型生成一个含有静态描述符的模块,,该模块与一个元类(metaclass)在运行时(runtime)被用来创建所需的Python数据访问类。

    这里有一个各种语言的API文档

    参考文档:

    https://www.cnblogs.com/tohxyblog/p/8974763.html

    https://www.cnblogs.com/chenyangyao/p/5422044.html

  • 相关阅读:
    04 UUID
    MD5加密算法(信息摘要算法)、Base64算法
    03 MD5加密、Base64处理
    MVC分层思想、SSM编程架构
    1网络编程基本概念
    Tomcat闪退的解决办法
    win10下的jdk1.8安装
    枚举练习
    1000元买物品分配
    win10解决vc++6.0不兼容问题方法
  • 原文地址:https://www.cnblogs.com/lalalatianlalu/p/10943116.html
Copyright © 2011-2022 走看看