gRPC-初识Protocol Buffers

简介

gRPC gRPC是一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP/2 设计。gRPC 基于 HTTP/2 标准设计,带来双向流、流控、头部压缩、单 TCP 连接上的多复用请求等特性。这些特性使得其在移动设备上表现更好,更省电和节省空间占用。

特点

协议

基于 HTTP/2 标准设计,带来双向流、流控、头部压缩、单 TCP 连接上的多复用请求等特性。这些特性使得其在移动设备上表现更好,更省电和节省空间占用。

序列化

gRPC 默认使用 Protocol Buffers 作为 RPC 序列化框架。Protocol Buffers 是由Google开发的一种数据序列化协议。序列化内容更小,更快更简洁。而且一次定义,可生成多种语言的代码。

Protocol Buffers

一般使用 proto3 的新风格的 protocol buffers,它拥有轻量简化的语法、一些有用的新功能,并且支持更多新语言。

proto3语法

文件格式

* .proto 为文件后缀名

版本

syntax = "proto3";

注释

//    单行注释/*多行注释
*/

Java相关

// 一个源文件还是多个源文件
option java_multiple_files = true;
// 源文件放置的包名
option java_package = "com.agi.grpc";
// Java外部类名字,[内部类用于开发]
option java_outer_classname = "Demo";

逻辑包

// 便于内容管理
package demo;

导入

import "Demo.proto";

枚举 enum

 枚举必须0开始

enum SEASON{SPRING = 0;SUMMER = 1;AUTUMN = 2;WINTER = 3;
}

消息 message

message Resp{//成员变量类型 成员变量名字 序列化顺序(不能重复,范围1-2^29-1)string msg = 1;int32 code = 2;
}

repeatedly

message Resp{// 多个数据,相当于Java中的Listrepeated string list= 1;
}

多个消息

message Resp{//成员变量类型 成员变量名字 序列化顺序(不能重复,唯一即可,范围1-2^29-1)string msg = 1;int32 code = 2;
}message Resp{// 多个数据,相当于Java中的Listrepeated string list= 1;
}

嵌套消息

message Resp{message Data{int64 id = 1;string name = 2;}//成员变量类型 成员变量名字 序列化顺序(不能重复)string msg = 1;int32 code = 2;// List<Data>repeated Data data = 3;
}

oneof

可取值为其中一个

message Response{oneof test{int64 id = 1;string name = 2;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/14661.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Linux]进程控制详解!!(创建、终止、等待、替换)

hello&#xff0c;大家好&#xff0c;这里是bang___bang_&#xff0c;在上两篇中我们讲解了进程的概念、状态和进程地址空间&#xff0c;本篇讲解进程的控制&#xff01;&#xff01;包含内容有进程创建、进程等待、进程替换、进程终止&#xff01;&#xff01; 附上前2篇文章…

使用Beego和MySQL实现帖子和评论的应用,并进行接口测试(附源码和代码深度剖析)

文章目录 小项目介绍源码分析main.gorouter.gomodels/user.gomodels/Post.gomodels/comment.gocontrollers/post.gocontrollers/comment.go 接口测试测试增加帖子测试查看帖子测试增加评论测试查看评论 小项目介绍 经过对需求的分析&#xff0c;我增加了一些额外的东西&#x…

Open3D (C++) ISS特征点提取

目录 一、算法原理1、原理概述2、参考文献二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。爬虫网站自重,把自己当个人 一、算法原理 1、原理概述 内部形状描述子(ISS)是一种表示立体几何形状的方法,该算法含有丰富的几何特征信息,可以完成高质量的点云配准。设…

禁用右键菜单AMD Software: Adrenalin Edition

本文参考链接&#xff1a; 删除win11右键一级菜单的AMD驱动栏 - 哔哩哔哩 windows11 求助删除右键菜单方法_windows11吧_百度贴吧 Windows安装最新的AMD显卡驱动后&#xff0c;右键菜单会多出AMD Software: Adrenalin Edition。使用一些右键菜单管理工具也没能屏蔽禁用掉该功…

Java8 两个List求差

一、需求背景 有两个List实体对象如下&#xff1a; List实体1 List<Long> exitList mapper.selectXXX();//从中间表中查出已经存在的用户id列表List实体2List<SysUser> userList mapper.selectXXX();//从系统用户表中查询符合条件是用户listSysUser的属性大致如…

2023年全网电视盒子无线ADB修改桌面(无需ROOT)

前言 1.主要是为了解决电视盒子等安卓设备无法卸载或者停用原始桌面导致无法选用第三方桌面。 解决方案 1.首先自行下载我提供的网盘APK 2.点击打开中国移动云盘 3.不管你是通过U盘还是局域网共享能够让你的电视安装第三方应用&#xff0c;毕竟每个品牌的安装方法不尽相同…

mybatis-config.xml-配置文件详解

文章目录 mybatis-config.xml-配置文件详解说明文档地址:配置文件属性解析properties 属性应用实例 settings 全局参数定义应用实例 typeAliases 别名处理器举例说明 typeHandlers 类型处理器environments 环境environment 属性应用实例 mappers配置 mybatis-config.xml-配置文…

C语言字符串的处理

用惯了Java C#这些语言&#xff0c;C语言中处理字符串还是有些不习惯的&#xff0c;所以这里写一下学习笔记。 C中字符串就是字符数组&#xff0c;是指向字符的指针&#xff0c;并且以空字符 \0 结尾&#xff0c;字符串作为函数的参数传递时一般使用指针类型&#xff0c;使用数…

运维高级--shell脚本完成分库分表

为什么要进行分库分表 随着系统的运行&#xff0c;存储的数据量会越来越大&#xff0c;系统的访问的压力也会随之增大&#xff0c;如果一个库中的表数据超过了一定的数量&#xff0c;比如说MySQL中的表数据达到千万级别&#xff0c;就需要考虑进行分库分表&#xff1b; 其…

解决kite在jupyter lab中显示not running问题

1、问题描述 在anaconda中启动jupyter lab前&#xff0c;安装了jupyterlab-kite。重启jupyter lab&#xff0c;不可以正常使用kite&#xff0c;显示not running。 尝试过重装jupyterlab、jupyterlab-kite等各种方式&#xff0c;但都不管用。经过多次试验与网上查找了诸多文献…

iOS-持久化

目的 1.快速展示&#xff0c;提升体验 已经加载过的数据&#xff0c;用户下次查看时&#xff0c;不需要再次从网络&#xff08;磁盘&#xff09;加载&#xff0c;直接展示给用户 2.节省用户流量&#xff08;节省服务器资源&#xff09; 对于较大的资源数据进行缓存&#xf…

c语言重定向stdout 到 /dev/null 及恢复

------------------------------------------------------------ author: hjjdebug date: 2023年 07月 27日 星期四 17:49:49 CST descriptor: c语言重定向stdout 到 /dev/null 及恢复 ------------------------------------------------------------ #include <stdio.h&g…

【Matlab】基于长短期记忆网络的数据回归预测(Excel可直接替换数据)

【Matlab】基于长短期记忆网络的数据回归预测(Excel可直接替换数据) 1.模型原理2.数学公式3.文件结构4.Excel数据5.分块代码6.完整代码7.运行结果1.模型原理 “基于长短期记忆网络(Long Short-Term Memory, LSTM)的数据回归预测”是一种利用LSTM神经网络进行数据回归预测的…

ClickHouse(六):Clickhouse数据类型-1

进入正文前&#xff0c;感谢宝子们订阅专题、点赞、评论、收藏&#xff01;关注IT贫道&#xff0c;获取高质量博客内容&#xff01; &#x1f3e1;个人主页&#xff1a;含各种IT体系技术&#xff0c;IT贫道_Apache Doris,Kerberos安全认证,大数据OLAP体系技术栈-CSDN博客 &…

从电容到晶体管的基本介绍

​随着科技的不断进步&#xff0c;元器件在现代电子学中扮演着至关重要的角色。从电容器到晶体管&#xff0c;各种元器件都具有不同的特性和用途。本文将从基础知识出发&#xff0c;介绍电子学中常见的元器件&#xff0c;以及它们在电路中的作用和应用。 电容器 电容器是一种…

Docker复杂命令便捷操作

启动所有状态为Created的容器 要启动所有状态为"created"的Docker容器&#xff0c;可以使用以下命令&#xff1a; docker container start $(docker container ls -aq --filter "statuscreated")上述命令执行了以下步骤&#xff1a; docker container l…

深度学习论文: Q-YOLO: Efficient Inference for Real-time Object Detection及其PyTorch实现

深度学习论文: Q-YOLO: Efficient Inference for Real-time Object Detection及其PyTorch实现 Q-YOLO: Efficient Inference for Real-time Object Detection PDF: https://arxiv.org/pdf/2307.04816.pdf PyTorch代码: https://github.com/shanglianlm0525/CvPytorch PyTorch代…

HttpClient常用操作及封装工具类

目录 介绍核心API 案例GET方式请求POST方式请求 工具类 介绍 HttpClient 是Apache Jakarta Common 下的子项目&#xff0c;可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包&#xff0c;并且它支持 HTTP 协议最新的版本和建议。 HttpClient作用&…

Spring Boot学习路线1

Spring Boot是什么&#xff1f; Spring Boot是基于Spring Framework构建应用程序的框架&#xff0c;Spring Framework是一个广泛使用的用于构建基于Java的企业应用程序的开源框架。Spring Boot旨在使创建独立的、生产级别的Spring应用程序变得容易&#xff0c;您可以"只是…

C#..上位机软件的未来是什么?

C#是一种流行的编程语言&#xff0c;广泛应用于桌面应用程序和上位机软件开发。未来&#xff0c;C#上位机软件将继续不断发展和创新&#xff0c;以满足用户日益增长的需求。以下是我认为C#上位机软件未来可能会涉及的一些方向&#xff1a; 更加智能化&#xff1a;随着人工智能…