首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Go - 关于 protoc 工具的小疑惑

本文主要讨论通过 protoc 生成 Golang 代码,例如我们常见的命令: protoc -I . --go_out=xxx 想了解更多参数,执行 protoc --help 查看。...疑惑 一、如何知道 protoc 使用的什么插件? 例如:--go_out 使用的是什么插件?最终了解到使用的是 protoc-gen-go 插件。...我能想到两个方案解决: 通过两个环境去完成,例如,打两个 docker 环境,新项目在一个环境中生成,旧项目在另一个环境中生成。...当使用参数 --go_out=plugins=grpc:xxx 生成时,生成的文件 *.pb.go 包含消息序列化代码和 gRPC 代码。...当使用参数 --go_out=xxx --go-grpc_out=xxx 生成时,会生成两个文件 *.pb.go 和 *._grpc.pb.go ,它们分别是消息序列化代码和 gRPC 代码。

1.1K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    基于protobuf的代码生成

    基于protobuf rpc的代码生成 现有的组件或者框架里,基于 protobuf rpc 的代码生成多是提供了 protoc 插件的形式。比如 grpc ,这种方式有好有坏。...使用 libprotoc 使用 protoc 插件的话官方的文档是缺失的,但是可以从一些代码文档和其他的工具里去找一些sample。如果是使用C++,可以直接使用官方的 libprotoc 。...于是我们自己写了 protoc 插件去给生成的C++代码插入对 fmt.dev 的支持。...完全没有走 protoc 的那一套。缺点就是没法很方便地直接侵入官方生成的代码;好处也很明显,主要有以下几点: 我们使用了模板引擎来“渲染”生成的代码。...在执行工具生成代码时,先构建好符号库,然后从这个YAML配置文件里读每个服务的模板生成规则,复用同一个符号库。这样就把所有服务和接口的总代码生成的时间又缩短到了3秒以内。

    1.6K21

    基于protobuf的代码生成

    基于protobuf rpc的代码生成 现有的组件或者框架里,基于 protobuf rpc 的代码生成多是提供了 protoc 插件的形式。比如 grpc ,这种方式有好有坏。...使用 libprotoc 使用 protoc 插件的话官方的文档是缺失的,但是可以从一些代码文档和其他的工具里去找一些sample。如果是使用C++,可以直接使用官方的 libprotoc 。...于是我们自己写了 protoc 插件去给生成的C++代码插入对 fmt.dev 的支持。...完全没有走 protoc 的那一套。缺点就是没法很方便地直接侵入官方生成的代码;好处也很明显,主要有以下几点: 我们使用了模板引擎来“渲染”生成的代码。...在执行工具生成代码时,先构建好符号库,然后从这个YAML配置文件里读每个服务的模板生成规则,复用同一个符号库。这样就把所有服务和接口的总代码生成的时间又缩短到了3秒以内。

    92030

    强大的 IDEA 代码生成

    对于这种小范围的代码生成,我们可以利用 IDEA 提供的 Live Templates功能。刚开始觉得它只是一个简单的Code Snippet,后来发现它支持变量函数配置,可以支持很复杂的代码生成。...基本使用 IDEA 自带很多常用的动态模板,在 Java 代码中输入fori,回车就会出现 for (int i = 0; i < ; i++) { } 按Tab可以在各个空白处跳转,手动填值。...下面列举几个我常用的简单模板 ========== out> ---------- System.out.println($END$) ========== ---------- private..._n`, 在 Groovy 代码中使用。| 下面我们来看一下它的实际应用。...最后推广一波我写的代码生成插件CodeMaker,好好利用也能节省很多重复编写代码的时间。 - END - 往期推荐 华为最美小姐姐,被外派墨西哥后... 比Visio快10倍的画图工具来了!

    50420

    GCC生成的汇编代码

    一、查看GCC生成的汇编代码 在命令行上用“-S”选项,就能看到C编译器产生的汇编代码: #gcc -S code.c  注意:这里是大写的-S,如果用小写gcc会说找不到main函数 会在当前目录下生成...二、用GDB查看目标文件的字节表示   首先,我们用反汇编器来确定函数sum的代码长度是19字节。...从这里可以看出函数sum的代码长度正好是19字节。 四、生成实际可执行的代码   这需要对一组目标文件运行链接器,而这一组目标代码文件中必须包含有一个Main函数。...在 main.c 中有这样的函数:   int main()   {        return sum(1,2);   } 然后,我们用如下方法生成可执行文件: #gcc -O2 -o prog...code.c反汇编产生的代码几乎完全一样。

    2.2K10

    编写你的专属 MSBuild C# 代码生成器:在保存文件时自动实时生成你的代码

    我之前的博客中有介绍如何在项目中生成额外的代码,也有介绍制作一个生成代码的 NuGet 包。...而本文是在此基础上更进一步,可以让生成代码变成实时的;更准确的说,是在保存文件时即生成代码,而无需完整编译一次项目。...一天,头像全白昵称空格的“wuweilai”童鞋问我为什么 GRPC 的 NuGet 包能自动在 .proto 文件保存时更新生成的代码,怎么才能做到像它那样。...然后,我研究了下 Grpc.Tools 包里的代码,外加跟他反复讨论,摸清了自动生成代码的方法。 背景知识 本文的知识非常简单,如果只是希望知道怎么实时生成代码的话,把本文后面的代码复制一下就可以了。...我们即将实现的是:在保存 Test.txt 文件时,会立即执行我们的编译流程,这样,我们便能基于 Test.txt 来实时生成一些代码。

    41610

    Java|在 IDEA 里自动生成 MyBatis 模板代码

    背景 基于 MyBatis 开发的项目,新增数据库表以后,总是需要编写对应的 Entity、Mapper 和 Service 等等 Class 的代码,这些都是重复的工作,我们可以想一些办法来自动生成这些代码...近几年版本的 IDEA 里已经自带了 Database Tools and SQL 插件,可以连接数据库进行常用的操作,并且,它还自带了数据库表对应 POJO 类的代码生成器:在 Database 面板里配置好数据源以后...,即可生成期望的模板代码了。...后续如果有一些个性化的代码生成需求,可以根据实际情况修改、新增脚本来完成。...其它 本文代码生成器脚本已上传至 GitHub,仓库地址:https://github.com/mzlogin/code-generator,以后如果有更新,或者新的代码生成脚本,也会放在这个仓库里。

    19410

    Golang 语言 gRPC 使用的接口设计语言 protobuf

    4; } 08 protoc 编译器 我们需要安装 protoc 编译器,编译我们编写的 proto 文件,生成指定编程语言的代码。...protoc 命令选项: # 指定 proto 文件的目录 -IPATH, --proto_path=PATH # 指定 go 文件输出目录 --go_out=dir_name 使用 protoc 编译...示例代码: protoc --proto_path dir_name/ --go_out=dir_name/ dir_name/xx.proto 09 总结 本文我们介绍 gRPC 使用的接口设计语言...protobuf,需要注意的是 proto 文件中字段的编号必须保证唯一,使用 protoc 编译器编译 proto 文件生成指定编程语言的代码,protoc 原生不支持生成 golang 代码,需要安装一个包...protoc 编译 proto 文件生成的指定编程语言的代码不可以直接修改,如果需要修改,可以修改 proto 文件,然后使用 protoc 重新编译。

    1K30

    在 Apache IoTDB 中使用编译时代码生成

    首先,想要在文章的开头明确一个概念:查询引擎中提到的代码生成可以分为运行时代码生成和编译时代码生成。...编译时代码生成是指在编译时,将一份模版文件生成多份源代码一起打包编译,用来解决向量化引擎带来的代码爆炸问题。 本文主要针对二者中的编译时代码生成进行介绍。...说实话,这段话写的挺好的,但是,只有已经懂的人能看懂 :D 看一段代码大家应该更好理解: // 这是 IoTDB 在进行 Sum 聚合计算时的一段代码(实际有所不同) @Override public...因此,我们考虑如果能够根据一份代码,自动生成其他所有的代码就好了。这就是基于模版的代码生成。 在经过选型后,我们决定使用 Apache FreeMarker 来作为我们的模版引擎,接下来进行介绍。...通过这个插件,在 maven 编译时,会在 codegen 阶段根据模版生成代码,并和其他的源代码一起打包编译,生成代码就和普通源代码的处理方式一模一样。 <!

    43320

    CodeGeeX:一款强大的 copilot 之外可以免费使用的 AI 代码生成工具

    CodeGeeX 是一个由清华大学的知识工程实验室团队开发的 AI 代码生成工具,它采用了华为开发的 AI 框架 MindSpore,它可以帮助程序员自动生成代码、翻译代码、重构代码、编写文档以及回答编程问题...这使得 CodeGeeX 可以更容易地使用 Mindspore 来生成代码。 CodeGeeX 的主要功能 自动代码生成:CodeGeeX 可以根据用户的输入,自动生成代码。...CodeGeeX 的优势 准确性:CodeGeeX 在大量数据上进行训练,可以生成高质量的代码。 高效率:CodeGeeX 可以自动完成重复性任务,提高程序员的效率。...CodeGeeX 的未来发展 CodeGeeX2 是基于 ChatGLM2 架构加入代码预训练实现,得益于 ChatGLM2 的更优性能,CodeGeeX2 在多项指标上取得性能提升,包括但不限于更强大的代码能力...开源免费 CodeGeeX 的模型代码是开源在 github 上的,任何用户都可以下载进行本地部署和调试优化。

    4.1K120

    图像结构样式分开生成的生成模型论文代码

    然而,这些方法忽略图像形成的最基本的原理:图像的产物:(a)结构:底层三维模型;(二)风格:纹理映射到结构。在本文中,我们因式分解图像 生成过程并提出体例结构生成对抗性网(S2-GAN)。...代码 https://github.com/xiaolonw/ss-gan 我们的训练结果迁移到物体分类识别及对象detection的识别上的效果也不错。 先上图,然后论文部分解读 ? ? ? ?...在本文中,我们建立在这一原则IM101 成像和因子的生成对抗网络(GAN)划分为两个 生成过程如图。...我们相信,有融通的优势四倍 式和结构在图像生成处理。首先,保理和风格 结构简化了整个生成过程,并导致更逼真 高分辨率的图像。这也导致高度稳定的和强大的学习过程。...人们甚至可以在因素的错误和理解 当表面正常生成失败相比,纹理生成的。 第三,我们的结果表明,S2-GAN可以让我们学习RGBD表示 在无人监督的方式。这可用于许多机器人和图形关键 应用程序。

    65820

    代码生成模式:未来的代码模式会是怎样的?

    这篇文章的草稿差不多在我的 todo 列表里躺了一年,直到最近,看到我的同事在吐槽手动创建步骤的繁琐性。...我才想起来,我曾经想写一篇这样的文章,但是我在我的博客( https://www.phodal.com ) 上找了好久,也没有发现。然后,我终于在我的 To-Do 应用中看到了它的身影。...创建时:模板化代码生成 模板化代码生成,即在代码 or IDE 中内置特定系统、团队的代码范式,随后通过特定的参数,来生成适合于该团队和该系统的代码。...创建时:DSL 生成代码 DSL 生成代码,顾名思义就是通过 DSL 的方式,来生成代码,再集成到系统中开发。 最常见的一个例子就是我最近使用基于 Antlr 编写的 Chapi,便是这种模式。...构建时:DSL / 代码生成代码 构建时代码生成代码,即在构建的时候,才进行代码生成。 对于稳定的系统来说,可以只在构建时才运行代码生成。平时的时候,都是通过生成临时代码的方式。

    40110

    Go微服务(二)——Protobuf详细入门

    --go_out=. hello.proto 如果这样执行的话,他的结果是在你go_out目录(这里是当前目录)存放,并且按照你定义的go_package的名称,在你go_out目录下创建一个目录结构:...--go_out=..../:proto-gen-go插件编译产物的存放目录,这里是存放到当前目录,注意生成 的.pb.go文件的最终位置是你的--go_out=?位置+go_package=?...位置,后者是在--go_out位置之后,进一步指定生成的.pb.go文件的存放路径。 -I ../:--proto_path=PATH的缩写 表示引入文件的目录路径,这里有坑。...的时候,假设当前在 my_project/protocol/bbb 目录下,则执行: protoc -I ../ -I ./ --go_out=./ bbb.proto # -I ../ : 在上一层目录中寻找引入的

    3.5K20

    代码自动生成在重构中的一次探索

    不过,工作量肯定和插件的个数,以及插件的代码规模肯定是成正比的,我只需要把这两点统计出来,估计一个大概的工作量还是可以的。于是,有下面的统计表: 图 3 横坐标是代码行数,纵坐标是在插件个数。...关于注解解析相关的知识可参看我的另一篇KM《apt与JavaPoet 自动生成代码》,由于篇幅限制,这里不做讲解。...除此之外,还有AudioEvent、PageEvent等)。...String args,以及其方法体: 图 11 可以看到,即使是System.out.print(LocalDateTime.now());这么一句代码,也可以完整的描述成一颗树。...图 12 图 13 图 14 总结 本文主要记述了我如何通过编写工具自动生成代码的方式,提高代码重构的效率。原本计划需要共计60人日的工作量,实际一个人只用了不到三周的时间便完成了任务。

    2.9K10
    领券