protobuf 下载 使用

2023-10-27

protobuf是谷歌开源的一种数据格式,适合高性能,对响应速度有要求的数据传输场景。因为profobuf是二进制数据格式,需要编码和解码。数据本身不具有可读性。因此只能反序列化之后得到真正可读的数据。  

优势:

1. 序列化后体积相比Json和XML很小,适合网络传输
2. 支持跨平台多语言
3. 消息格式升级和兼容性还不错
4. 序列化反序列化速度很快

第一步:下载通用编译器

  地址:https://github.com/protocolbuffers/protobuf/releases

根据不同的操作系统,下载不同的包,我是windows电脑,解压出来是protoc.exe

第二步:配置系统环境变量
在这里插入图片描述
第三步:安装go专用的protoc的生成器

GOPATH目录下执行

go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest

安装后会在GOPATH目录下的src下生成可执行文件,protobuf的编译器插件protoc-gen-go,执行protoc命令会自动调用这个插件
在这里插入图片描述
如何使用protobuf呢?

  1. 定义了一种源文件,扩展名为 .proto,使用这种源文件,可以定义存储类的内容(消息类型)
  2. protobuf有自己的编译器 protoc,可以将 .proto 编译成对应语言的文件,就可以进行使用了
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

protobuf 下载 使用 的相关文章

  • 关闭长度未知的通道

    当不了解频道时我无法关闭频道 length package main import fmt time func gen ch chan int var i int for time Sleep time Millisecond 10 ch
  • “http:多个response.WriteHeader调用”有什么不好的影响?

    尽管我发现 http 多个响应 WriteHeader 调用 例外 但我的服务器表现良好 此异常不会导致我的服务器出现恐慌或行为异常 我进行了很多搜索 但只找到了如何解决这个问题 没有文档描述异常的不良影响 有人可以帮我找出为什么 http
  • go json marshal 的默认大小写选项?

    我有以下结构要导出为 json type ExportedIncident struct Title string json title Host string json host Status string json status Dat
  • 运行最新版本时没有“最新”消息?

    我正在尝试使用Sparkle https sparkle project org与 Qt Go 的绑定 https github com therecipe qt app 闪光 m import
  • 如何将长 Go 模板函数拆分为多行?

    我有一个很长的printf调用 Go 模板 例子 printf mongodb s s s s authSource admin replicaSet s readPreference nearest w majority Values r
  • 如何在golang中获得两个切片的交集?

    Go 中有没有有效的方法来获取两个切片的交集 我想避免嵌套 for 循环之类的解决方案slice1 string foo bar hello slice2 string foo bar intersection slice1 slice2
  • 子字符串和 Go 垃圾收集器

    在 Go 中获取字符串的子字符串时 不会分配新的内存 相反 子字符串的底层表示包含一个数据指针 该指针是原始字符串的数据指针的偏移量 这意味着 如果我有一个大字符串并希望跟踪一个小子字符串 则垃圾收集器将无法释放任何大字符串 直到我释放对较
  • 重新设计循环依赖缺陷

    我有一堆小服务 它们共享一些常见的包 例如Logger Configuration and Net 我在单独的项目中编写了每个包 问题是我的Logger需求包Configuration用于设置 和我的Configuration not仅由L
  • 仅导出嵌入结构实现的方法子集

    是否可以仅导出嵌入结构实现的方法的子集 这是一种与减少代码复制和粘贴非常不同的方法吗 还有更惯用的方法吗 type A struct func a A Hello fmt Println Hello func a A World fmt P
  • []interface{}{} 中的双大括号是什么意思

    请注意 这是格式为 的双花括号 而不是嵌套花括号 我也不确定这是空接口问题 切片问题还是结构问题 我猜它至少是其中两个的组合 我正在学习 Golang 并且已经达到了空接口 我发现我需要将空接口声明为 interface 或者例如 inte
  • ioutil.ReadFile - 没有这样的文件或目录[重复]

    这个问题在这里已经有答案了 对于以下代码 package main import fmt io ioutil strings func main b err ioutil ReadFile shakespeare txt if err ni
  • 在 golang 中将 []uint32 转换为 []byte,反之亦然

    最有效的 性能 转换方式是什么 uint32向和从 byte在戈兰 例如 func main source uint32 1 2 3 dest make byte 4 len source source to dest check len
  • 如何在Google AppEngine上设置环境变量?

    我正在尝试在谷歌应用程序引擎上设置和使用环境变量 我的 app yaml 文件如下所示 但是 当我使用 os Getenv mytoken 时 我得到一个空字符串 而不是我设置的实际值 是GAE的bug吗 api version go1 h
  • 不支持的 Perl 语法:`(?<`

    我想解析 cmd gpg list keys 的结果以将其显示在浏览器上 cmd输出是这样的 pub rsa3072 2021 08 03 SC expires 2023 08 03 07C47E284765D5593171C18F00B1
  • 带有导出字段的私有类型

    在 Go 教程的第二天有这样的练习 为什么拥有带有导出字段的私有类型会很有用 例如 package geometry type point struct X Y int name string 请注意point是小写的 因此不会导出 而字段
  • Goroutine 是如何工作的? (或者:goroutines 和操作系统线程的关系)

    其他 goroutine 如何在调用系统调用时继续执行 当使用 GOMAXPROCS 1 时 据我所知 当调用系统调用时 线程会放弃控制权 直到系统调用返回 Go 如何在不为每个阻塞系统调用 goroutine 创建系统线程的情况下实现这种
  • 命名和未命名类型

    问题 我最近开始阅读Golang规格手册 https golang org ref spec并陷入试图理解的困境有名和无名类型在相关部分 https golang org ref spec Types 我来自动态语言 这让我有点头疼 手册指
  • 无法将字符串解组为 int64 类型的 Go 值

    我有结构 type tySurvey struct Id int64 json id omitempty Name string json name omitempty I do json Marshal在 HTML 页面中写入 JSON
  • 将 []string 传递给需要可变参数的函数

    为了不一遍又一遍地重复我的自我 我想创建一个处理运行一些命令的函数 func runCommand name string arg string error cmd exec Command name arg if err cmd Run
  • 无法封送,(实现encoding.BinaryMarshaler)。具有多个对象的 go-redis Sdd

    我有下面一段代码 我试图将一个数组添加到 redis 集中 但它给了我一个错误 package main import encoding json fmt github com go redis redis type Info struct

随机推荐

  • 数据结构之线性表(bsd, sys/queue.h)

    数据结构之线性表 Author Once Day Date 2023年5月27日 参考文档 Linux内嵌链表 sys queue h 详解 tissar的博客 CSDN博客 嵌入式大杂烩周记第 3 期 sys queue h 知乎 zhi
  • AIC(最小信息化准则)

    AIC信息准则 即Akaike information criterion 是用来衡量统计模型拟合优良性的一个标准 是是由日本统计学家赤池弘次创立和发展的 因此也称为赤池信息量准则 它建立在熵的概念基础上 可以权衡所估计模型的复杂度和模型拟
  • 去除vue顶部60px的空白

    问题 今天才注意到编译后的vue代码 在网站的顶部有一个margin top 60px的空白 有点不解 于是去看源码 代码 app font family Avenir Helvetica Arial sans serif webkit f
  • 概率统计21——指数分布和无记忆性

    指数分布 Exponential distribution 是一种连续型概率分布 可以用来表示独立随机事件发生的时间间隔的概率 比如婴儿出生的时间间隔 旅客进入机场的时间间隔 打进客服中心电话的时间间隔 系统出现bug的时间间隔等等 指数分
  • 给rhel9、centos-stream9 设置软件源

    我使用的是清华镜像源 https mirrors tuna tsinghua edu cn centos stream SIGs 9 stream 一 软件源添加 vim etc yum repos d CentOS Stream9 rep
  • typedef struct node的用法及与struct node的区别,为何要用typedef?

    typedef的作用是为已有的数据类型定义一个新名字 其主要目的是为了我们在使用时能用这个更加清晰简单的新名字 还有一个目的就是为了简化变量的声明 下面的几段代码具有相同的功能 都是用于链表结构体节点的定义和声明 第一种方式 struct
  • vue页面刷新或者后退参数丢失的问题

    在toB的项目中 会经常遇到列表数据筛选查询的情景 当要打开某一项的详情页或者暂时离开列表页 再返回 后退时 选择的筛选条件会全部丢失 辛辛苦苦选择好的条件全没了 还得重新选择 如果有分页的更头大 还得重新一页页翻到之前看到的那一页 用户体
  • 如何理解协方差矩阵(散布矩阵)

    这学期开了模式识别的学习课程 经常提到概率论与数理统计的一个概念 协方差矩阵 在模式识别中又叫散布矩阵 理解这个矩阵严格意义上来说其实不需要太多先导知识 我们只需要了解一些线性代数基本的概念 但是你如果不了解协方差矩阵 听模式识别的课程就会
  • 有深度的文章

    大家好 时隔半年 我将会继续更新推文 主发微信公众号 希望与大家一起交流学习 望大家多支持 你将在这里以最短的时间 获得最好的技术知识 图片是公众号二维码 谢谢大家
  • 第五章字符串总结

    5 1 String类 5 1 1 声明字符串 字符串是常量 它们可以显示任何文字信息 字符串的值在创建之后不能更改 在 Java 语言中 单引号中的内容表示字符 例如 s 而双引号中的内容则表示字符串 例如 我是字符串 123456789
  • vlc-android配置实录

    听说vlc底层也用的ffmpeg 免费开源的 业界做的不错的 就来看看 从网上找了很多例子 也从github上找了好多demo 好多都不全 或者下载下来编译失败 官网上下载的vlc android就编译失败 下面列两个可以用的 一 有vlc
  • JavaScript实现数组对应位置插入另一个数组

    系列文章目录 文章目录 系列文章目录 前言 一 使用循环遍历 二 使用concat和slice方法 三 使用splice方法 四 使用for循环 总结 前言 在JavaScript中 有时我们需要将一个数组的元素按照对应位置插入另一个数组中
  • Spring源码解析:BeanFactory深入理解

    现在一般都用ApplicantContext代替BeanFactory 说到Spring框架 人们往往大谈特谈一些似乎高逼格的东西 比如依赖注入 控制反转 面向切面等等 但是却忘记了最基本的一点 Spring的本质是一个bean工厂 bea
  • 使用思维导图快速了解 Eventbus

    详细源码解读可参考 Awsome Android
  • CentOS 上安装ClamAV

    安装epel yum y install epel release 安装ClamAV yum install y clamav clamav update 安装 yum load transaction tmp yum save tx 20
  • 医学图像分割:自动心脏诊断挑战赛项目数据集(ACDC)

    Local contrastive loss with pseudo label based self training for semi supervised medical image segmentation Krishna Chai
  • WSL2安装Docker

    推荐阅读知乎版 排版更好一点 WSL2安装Docker WSL2安装Docker比较简单 这里记录下 主要参考官方文章如下 Docker wsl2 1 确保已安装WSL2 首先确保你已经安装了WSL2 wsl l v 如果没有安装 请参考
  • 证书在手,认证无忧---证书浅析

    在IPSec VPN篇章中 我们介绍了IPSec隧道两端设备使用证书进行身份认证的内容 在刚刚推出的SSL VPN开篇中 也介绍了证书认证的相关内容 作为网络世界的 身份证 证书在身份认证的场景中已经得到了普遍应用 大家可能已经习惯了用户名
  • Ubuntu一键部署Open VN

    vpn咋就不能成为标题了 现在企业必备的技能不能用了 1 下载安装 1 1 登录root账户 su root 1 2 下载一键部署脚本 git clone https github com guoew openvpn install git
  • protobuf 下载 使用

    protobuf是谷歌开源的一种数据格式 适合高性能 对响应速度有要求的数据传输场景 因为profobuf是二进制数据格式 需要编码和解码 数据本身不具有可读性 因此只能反序列化之后得到真正可读的数据 优势 1 序列化后体积相比Json和X