返回顶部
首页 > 资讯 > 前端开发 > VUE >怎么使用Protobuf
  • 871
分享到

怎么使用Protobuf

2024-04-02 19:04:59 871人浏览 薄情痞子
摘要

怎么使用Protobuf,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在以前的文章中,我们讲到了什么时候用 Yaml,什么时候用 JSON,什

怎么使用Protobuf,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

在以前的文章中,我们讲到了什么时候用 Yaml,什么时候用 JSON,什么时候用 Protobuf:

  • 人写机器读,用 Yaml

  • 机器写,人读,用 jsON

  • 机器写,机器读,用 JSON 或者 Protobuf

JSON 作为几乎每一个语言都支持的序列化格式,在很多地方都得到了广泛应用。但有个弊端,JSON  里面充斥了大量的大括号、中括号和双引号,导致冗余的字符太多,数据量非常大,在对传输速度有高要求的场景下,数据量越大,占用的传输带宽就越大,单位时间传输的数据也就越少。

Protobuf 是 Google 开发的一个二进制序列化格式,与 JSON 相比,Protobuf  的数据非常精简,甚至连数据的字段名都没有。例如有这样一段数据:

a = {'name': 'kingname', 'salary': 99999, 'address': '上海', 'skill': ['python', '爬虫', 'golang']}

如果用 Protobuf 来表示,那么数据的二进制形式是这样的:

怎么使用Protobuf

这个二进制数据只有值,但没有字段名,所以要解析这些数据,必须在代码里面额外把字段名带上。所以需要定义一个xxx.proto文件,在里面标记每一个字段的信息。在任何时候任何语言中,需要序列化和反序列化的地方,都要提前使用protoc命令,基于这个.proto文件,生成一个xxx_pb2文件,通过从这个  xxx_pb2文件中导入数据对象来对数据进行处理。

因此,我们说,proto 格式,虽然确实精简了网络中的数据传输量,但却给开发者增加了相当大的工作量。

而最近,又新出来一种二进制序列化格式:CBOR,它的数据比 JSON 小,但是开发起来又比 Protobuf 简单得多。

我们来看看使用 CBOR 对上面的数据进行序列化操作。首先在 Python 中安装CBOR:

python3 -m pip install cbor2

安装完成以后,我们来对数据进行序列化:

import cbor2 a = {'name': 'kingname', 'salary': 99999, 'address': '上海', 'skill': ['Python', '爬虫', 'Golang']}  result = cbor2.dumps(a) print(result)

运行效果如下图所示:

怎么使用Protobuf

注意,打印出来的是二进制数据,不是字符串。可以看到,数据是自带字段名的,字段名与值之间会有特殊的字符进行分割,CBOR  能够自动识别这些特殊符号,从而区分字段名和字段值。

经过我的测试,一个150MB 的大 JSON文件,读入到内存,然后重新通过 CBOR 序列化以后写文件,这个文件大小可以缩减到60MB  左右。虽然压缩比例不如 Protobuf,可读性不如 JSON;但是压缩比例比 JSON 高,可读性比 Protobuf 好,而且几乎不增加额外工作量。

大家在写微服务或者网站前后端通信的时候,可以考虑试一试 CBOR — Concise Binary Object Representation |  Overview[1]。

看完上述内容,你们掌握怎么使用Protobuf的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网VUE频道,感谢各位的阅读!

--结束END--

本文标题: 怎么使用Protobuf

本文链接: https://lsjlt.com/news/83436.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么使用Protobuf
    怎么使用Protobuf,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在以前的文章中,我们讲到了什么时候用 Yaml,什么时候用 JSON,什...
    99+
    2024-04-02
  • 怎么在Vue中使用protobuf
    本篇内容主要讲解“怎么在Vue中使用protobuf”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么在Vue中使用protobuf”吧!protobuf是由google推出的和语言无关和平台无...
    99+
    2023-06-29
  • Android中的Protobuf怎么使用
    本篇内容介绍了“Android中的Protobuf怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言Protobuf,类似于json...
    99+
    2023-06-29
  • python 如何使用 protobuf
    一、protobuf是什么 protocol buffer(简称protobuf)是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了多种语言的实现:java、c#、c++、go 和 python,每一...
    99+
    2023-01-31
    如何使用 python protobuf
  • 69.Protobuf进阶——使用Pyt
    定义addressbookproto 编译Protocol buffer 使用Python的Protobuf API 枚举 标准message方法 序列化和解析 将message写入文件 从文件读取message对象 me...
    99+
    2023-01-31
    进阶 Protobuf Pyt
  • 在java程序中使用protobuf
    目录在java程序中使用protobuf1、为什么使用protobuf2、定义.proto文件3、编译协议文件4、详解生成的文件5、Builders 和 Messages6、序列化和...
    99+
    2024-04-02
  • 如何在Vue中使用protobuf
    protobuf是由google推出的和语言无关和平台无关,可扩展的序列化数据结构协议,类似于XML,但是比XML更小、更快、更简单。protobuf几乎支持当前的大部分语言,如Ja...
    99+
    2024-04-02
  • 如何使用Protobuf序列化
    这篇文章给大家介绍如何使用Protobuf序列化,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。java自带的序列化机制效率太低,有很多缺点。因此涌现出了很多优秀的系列化框架,比如说protobuf、protostuff...
    99+
    2023-06-15
  • 怎么在python中使用Protobuf创建一个服务端
    这期内容当中小编将会给大家带来有关怎么在python中使用Protobuf创建一个服务端,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python是什么意思Python是一种跨平台的、具有解释性、编译性、...
    99+
    2023-06-14
  • ubuntu中怎么安装protobuf
    本篇内容介绍了“ubuntu中怎么安装protobuf”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!protobuf简单介绍Protobuf...
    99+
    2023-07-04
  • ubuntu下怎么安装protobuf
    这篇文章主要介绍“ubuntu下怎么安装protobuf”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“ubuntu下怎么安装protobuf”文章能帮助大家解决问题。protobuf简单介绍&nbs...
    99+
    2023-07-04
  • php中如何操作使用protobuf
    这篇文章主要介绍“php中如何操作使用protobuf”,在日常操作中,相信很多人在php中如何操作使用protobuf问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php中如何操作使用protobuf”的疑...
    99+
    2023-06-25
  • python基础--protobuf的使
    protobuf2/3语法介绍 protobuf2语法介绍 protobuf3语法介绍 安装 linux安装 Mac安装 一个完整的例子 一个完整的例子(进阶版) protobuf2/3语法介绍 P...
    99+
    2023-01-31
    基础 python protobuf
  • 怎么在php中安装protobuf
    怎么在php中安装protobuf?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。官网下载protobuf文件选择哪一个都可以,我这里选择的是tar.gz结尾的将...
    99+
    2023-06-14
  • Android中Protobuf的基本使用介绍
    目录前言一、Proto文件示例二、在Android中的使用1、 plugin配置2.、基本调用总结前言 Protobuf,类似于json和xml,是一种序列化结构数据机制,可以用于数...
    99+
    2024-04-02
  • go语言怎么用Protobuf做数据交换
    这篇文章主要讲解了“go语言怎么用Protobuf做数据交换”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“go语言怎么用Protobuf做数据交换”吧!协议缓冲区(Protobufs)像 &...
    99+
    2023-06-16
  • Protobuf工具在C#中的使用方法是什么
    这篇文章主要讲解了“Protobuf工具在C#中的使用方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Protobuf工具在C#中的使用方法是什么”吧!protobuf是一个语言无关...
    99+
    2023-06-21
  • SpringBoot使用protobuf格式的接口方式
    SpringBoot使用protobuf格式的接口 建立SpringBoot项目,pom.xml内容如下: <?xml version="1.0" encoding...
    99+
    2024-04-02
  • Goland中Protobuf的安装、配置和使用
    目录引言1、安装protobuf编译器2、下载protobuf的golang支持库,安装protoc-gen-go3、protobuf使用示例引言 本文记录了mac环境下protob...
    99+
    2024-04-02
  • c++中protobuf的作用是什么
    在C++中,Protobuf(Protocol Buffers)的作用是用于序列化结构化数据,以便在不同系统之间进行数据交换或持久化...
    99+
    2024-03-05
    c++
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作