热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Protobuf笔记

一、什么是ProtobufProtobuf是一个序列化工具,可以进行高效的序列化,可以将类结构体(structureddata)序列化成二进制。其实
一、什么是Protobuf

Protobuf是一个序列化工具,可以进行高效的序列化,可以将类/结构体(structured data)序列化成二进制。

其实,Protobuf就是一个编译器,它将我们写好的.proto文件进行编译,得到目标语言的代码文件,文件中包括根据.proto文件生成的structured data,以及对这些structured data进行系列化和反序列化的函数。

二、Python使用Protobuf
三、Golang使用Protobuf

使用步骤:

  1. 下载Protobuf 编译器:protoc
  2. 安装Golang的Protobuf插件:protoc-gen-go

$ go install google.golang.org/protobuf/cmd/protoc-gen-go
protoc程序要调用protoc-gen-go,所以要加入到$PATH


  1. 运行protoc,编译.proto

$ protoc -I=. --go_out=. ./helloworld.proto

  • -I, -IPATH: 指定查找.proto文件中的import的路径
  • --go_out:生成Go文件,后面指定生成文件的路径
  • helloworld.proto: 要编译的.proto文件的路径
    如果要生成grpc需要的代码,则--go_out要指定使用grpc插件,这样写:--go_out=plugins=grpc:$OUTPUT_DIR


推荐阅读
  • IDApro反编译exe时生成的C文件中#include的defs.h文件在IDA目录下plugins文件夹内*Thisfilecontainsdefinition ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 本文介绍了在Windows系统下安装Python、setuptools、pip和virtualenv的步骤,以及安装过程中需要注意的事项。详细介绍了Python2.7.4和Python3.3.2的安装路径,以及如何使用easy_install安装setuptools。同时提醒用户在安装完setuptools后,需要继续安装pip,并注意不要将Python的目录添加到系统的环境变量中。最后,还介绍了通过下载ez_setup.py来安装setuptools的方法。 ... [详细]
  • FILETYPE*filetype.txt*ForVimversion6.4.文件类型*filetype**file-type*1.文件类型|filetypes|2.文件类型插 ... [详细]
  • 工具下载:1.jad.exe下载:http:varaneckas.comjad2.jadclipse下载:https:sourceforge.net ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 如何优化Webpack打包后的代码分割
    本文介绍了如何通过优化Webpack的代码分割来减小打包后的文件大小。主要包括拆分业务逻辑代码和引入第三方包的代码、配置Webpack插件、异步代码的处理、代码分割重命名、配置vendors和cacheGroups等方面的内容。通过合理配置和优化,可以有效减小打包后的文件大小,提高应用的加载速度。 ... [详细]
  • npminstall-Dbabelcorebabelpreset-envbabelplugin-transform-runtimebabelpolyfillbabel-loader ... [详细]
  • Vue cli2.0 项目中使用Monaco Editor编辑器
    monaco-editor是微软出的一条开源web在线编辑器支持多种语言,代码高亮,代码提示等功能,与VisualStudioCode功能几乎相同。在项目中可能会用带代码编 ... [详细]
  • WordPress更新时遇到429 too many requests错误,如何解决?
    近段时间不管是更新WordPress版本或主题插件,又或者是访问WordPress官网大多数都是出现“429TooManyRequests”,哪怕是多次刷新偶尔1次显示正常下载速度也十分龟速。对于这种情况确实让使用WordPress的站长非常恼火 ... [详细]
author-avatar
2012张小雷_812
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有