当前位置: 首页 > news >正文

工作日志- 不定期更新

1. protobuf中使用import引用其他proto文件,生成后在go语言的go modules中import 包名报错问题。

public.proto文件

//protoc --go_out=plugins=grpc:. public.proto
syntax = "proto3";package public;option go_package = "self/game-service/msg/public";message AwardItem {int32 prop_id = 1;int64 prop_num = 2;
}

third_s.proto 文件

syntax = "proto3";
package third;import "public.proto";option go_package = "self/game-service/msg/third";message ThirdTakeCornucopiaBonusResp {int32 code = 1;string message = 2;int32 take_cnt = 3;int32 take_cnt_max = 4;repeated public.AwardItem awards = 5;
}

生成后,指定的go_package 就是我们go 代码中import的包名:

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.33.0
// 	protoc        v5.26.0
// source: third_s.protopackage thirdimport (protoreflect "google.golang.org/protobuf/reflect/protoreflect"protoimpl "google.golang.org/protobuf/runtime/protoimpl"reflect "reflect"public "self/game-service/msg/public"sync "sync"
)// 其他代码 .....

由于 import public "self/game-service/msg/public" 在我们代码里面是能正常识别的,所以改动go_package即可,改动后生成:
.\protoc.exe --go_out=. --go-grpc_out=. *.proto
会在当前目录下生成:
./self/game-service/msg/public/public.pb.go 
./self/game-service/msg/third_s/third_s.pb.go

然后拷贝生成后的文件到项目代码目录即可正常参加编译
xcopy .\self\game-service\msg\* ..\game-server\msg\ /e /y /h /r /q
 

2. Windows安装构建golang protobuf + grpc 环境记录

1)下载protoc编译器。 直接上github.com下载,
        https://github.com/protocolbuffers/protobuf/tags
    下载后解压,拷贝到指定目录,或设置环境变量path指向protoc目录下bin
    cmd命令行执行 protoc -v  查看版本,可以识别命令表示成功。
2)## 安装 protoc-gen-go 插件
    go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
3)## 安装 protoc-gen-go-grpc 插件
    go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
4)写一个proto文件测试。
    protoc --go_out=. --go-grpc_out=. ./test.proto
5)安装完成后,应该会有两个文件(可执行文件exe)在环境变量GOPATH指向位置的bin/目录下
        protoc-gen-go-grpc.exe
        protoc-gen-go.exe
    如果没有需要去对应目录执行
        go install .

    如,我没有protoc-gen-go-grpc.exe,于是切换目录到
        C:\Users\Administrator\go\pkg\mod\google.golang.org\grpc\cmd\protoc-gen-go-grpc@v1.3.0
    在此目录打开cmd命令行,执行 go install .

        

相关文章:

工作日志- 不定期更新

1. protobuf中使用import引用其他proto文件,生成后在go语言的go modules中import 包名报错问题。 public.proto文件 //protoc --go_outpluginsgrpc:. public.proto syntax "proto3";package public;option go_package "self/game-service/msg/pu…...

Qt使用opencv打开摄像头

1.效果图 2.代码 #include "widget.h"#include <QApplication>#include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp>#include <QImage> #include <QLabel> #incl…...

Redis的Hash数据结构中100万对field和value,field是自增时如何优化?优化Hash结构。

ZipList使用是有条件的&#xff0c;当entry数据量太大时就会启用哈希结构&#xff0c;占用内存空间 1.设置bigkey的上限 在redis.config中设置 2.拆分为string类型 String底层结果没有太多优化&#xff0c;占用内存多 想要批量获取数据麻烦 3.拆分为小的hash 将id/100作为…...

二十四种设计模式与六大设计原则(一):【策略模式、代理模式、单例模式、多例模式、工厂方法模式、抽象工厂模式】的定义、举例说明、核心思想、适用场景和优缺点

目录 策略模式【Strategy Pattern】 定义 举例说明 核心思想 适用场景 优缺点 代理模式【Proxy Pattern】 定义 举例说明 核心思想 适用场景 优缺点 单例模式【Singleton Pattern】 定义 举例说明 核心思想 适用场景 优缺点 多例模式【Multition Pattern】…...

mac怎么删除python

mac 默认安装了python2&#xff1b;自己后面又安装了python3&#xff1b;为了方便&#xff0c;现在想将python3换成Anaconda3。 Anaconda是一个开源的Python发行版本&#xff0c;其包含了conda、Python等180多个科学包及其依赖项。 Python3安装之后&#xff0c;在系统中不同目…...

【笔记】Android U RILJ 中与运营商名称SPN显示相关的日志分析

源码阅读&#xff1a;AOSPXRef 常用日志关键字 Note&#xff1a;">"下发MD&#xff0c;"<"MD上报&#xff0c;[]中的id有请求和返回的对应关系 KEYComment> OPERATOR下发MD&#xff0c;请求运营商信息< OPERATORMD上报运营商注册信息> DA…...

蓝桥杯【奇怪的捐赠】c语言

我会将这题的解题的核心思路解为将10进制转化成7进制&#xff0c;毕竟题目上说的很清楚7的几次方 然后附上我认为的最优解 #include<stdio.h> int main() {int n 1000000;int sum 0;while (n ! 0){int a;a n % 7;n n / 7;sum a ;}printf("%d", sum);retu…...

【3月比赛合集】5场可报名的「创新应用」、「数据分析」和「程序设计」大奖赛,任君挑选!

CompHub[1] 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…&#xff09;比赛。本账号会推送最新的比赛消息&#xff0c;欢迎关注&#xff01; 以下信息仅供参考&#xff0c;以比赛官网为准 目录 创新应用赛&#xff08;2场比赛&#xff09;数据分析赛&#…...

vue3 视频播放功能整体复盘梳理

回顾工作中对视频的处理&#xff0c;让工作中处理的问题的经验固化成成果&#xff0c;不仅仅是完成任务&#xff0c;还能解答任务的知识点。 遇到的问题 1、如何隐藏下载按钮&#xff1f; video 标签中的controlslist属性是可以用来控制播放器上空间的显示&#xff0c;在原来默…...

vue-ueditor-wrap上传图片报错:后端配置项没有正常加载,上传插件不能正常使用

如图所示&#xff0c;今天接收一个项目其中富文本编辑器报错 此项目为vue2项目&#xff0c;富文本编辑器为直接下载好的资源存放在public目录下的 经过排查发现报错的函数在ueditor.all.min.js文件内&#xff0c;但是ueditor.all.min.js文件夹是经过压缩的 所以直接&#xff…...

数据仓库的发展历程

数据仓库的概念可以追溯到20世纪60年代,但真正形成理论并被企业广泛应用还需要一个较长的发展过程。大致可以分为以下几个阶段: 决策支持系统(DSS)时期(1960s-1970s) 这一时期,随着管理信息系统(MIS)和电子计算机的兴起,企业开始尝试构建面向决策的数据处理系统。最初的决策支…...

MySQL开窗函数

测试环境&#xff1a;mysql8.0.18 官方文档&#xff1a;https://dev.mysql.com/doc/refman/8.0/en/window-functions.html 一、窗口函数介绍二、语法结构三、自定义窗口1.rows&#xff08;重点&#xff09;2.range3.默认窗口 四、常用窗口函数示例1.row_number & rank &…...

Java学习笔记(23)

多线程 并发 并行 多线程实现方式 1.继承Thread类 自己创建一个类extends thread类 Start方法开启线程&#xff0c;自动执行重写之后的run方法 2.实现runable接口 自己创建一个类implements runnable Myrun不能直接使用getname方法&#xff0c;因为这个方法是thread类的方法…...

nodejs下载安装以及npm、yarn安装及配置教程

1、nodejs下载安装 ​ 1.1、使用nodejs版本管理工具下载安装&#xff0c;可一键安装、切换不同nodejs版本&#xff0c; nvm-setup.zip&#xff1a;安装版&#xff0c;推荐使用 本次演示的是安装版。 1、双击安装文件 nvm-setup.exe 选择nvm安装路径 例如&#xff1a;E:\Soft…...

Playwright库page.evaluate()方法执行JavaScript 表达式

page.evaluate() 方法是 Playwright 中常用的方法之一&#xff0c;用于在页面上下文中执行 JavaScript 代码。它允许在浏览器环境中执行各种操作&#xff0c;如操作 DOM 元素、获取页面数据、执行复杂的计算等&#xff0c;并将结果返回到 Node.js 或 Python 代码中。 在 Playw…...

【微服务】OpenFeign+Sentinel集中处理远程调用异常

文章目录 1.微服务基本环境调整1.对10004模块的application.yml调整2.启动nacos以及一个消费者两个提供者3.测试1.输入http://localhost:8848/nacos/index.html 来查看注册情况2.浏览器访问 http://localhost:81/member/nacos/consumer/get/13.结果 2.使用OpenFeign实现微服务模…...

集合嵌套,Collections,斗地主案例,日志框架

文章目录 集合嵌套List嵌套ListList嵌套MapMap嵌套Map Collections类方法排序 sort 乱序 shuffle 斗地主案例需求思路代码 日志框架介绍优势体系结构Logback概述快速入门配置详解 集合嵌套 List嵌套List public static void main(String[] args){//一个年级有许多班级&#xf…...

maven pom relativePath属性的作用

maven pom relativePath属性的作用 文章目录 maven pom relativePath属性的作用一、relativePath出现的地方二、relativePath默认值三、四、<relativePath>一个pom路径 一、relativePath出现的地方 搭建maven项目&#xff0c;子模块指定父模块试&#xff0c;经常会在par…...

【STM32 HAL库SPI/QSPI协议学习,基于外部Flash读取。】

1、SPI协议 简介 SPI 协议是由摩托罗拉公司提出的通讯协议 (Serial Peripheral Interface)&#xff0c;即串行外围设备接口&#xff0c;是 一种高速全双工的通信总线。它被广泛地使用在 ADC、LCD 等设备与 MCU 间&#xff0c;要求通讯速率 较高的场合。 SPI 物理层 SPI 通讯…...

Nginx入门--初识Nginx的架构

一、概述 Nginx的架构设计旨在高效处理并发的网络请求。它采用了事件驱动的、非阻塞的IO模型&#xff0c;可以同时处理成千上万个并发连接&#xff0c;而不会消耗太多的系统资源。 二、主要组件 Nginx的主要组件包括&#xff1a; Master Process&#xff08;主进程&#xf…...

高性能PDF转SVG矢量转换架构解析:基于Poppler与Cairo的技术实现

高性能PDF转SVG矢量转换架构解析&#xff1a;基于Poppler与Cairo的技术实现 【免费下载链接】pdf2svg A simple PDF to SVG converter using the Poppler and Cairo libraries 项目地址: https://gitcode.com/gh_mirrors/pd/pdf2svg 在数字化文档处理领域&#xff0c;PD…...

告别手动重命名!Win10下用CMD脚本批量给照片加001-999编号(保姆级教程)

告别手动重命名&#xff01;Win10下用CMD脚本批量给照片加001-999编号&#xff08;保姆级教程&#xff09; 每次整理上百张照片时&#xff0c;最痛苦的就是一张张手动重命名。作为一名经常需要处理大量素材的自媒体创作者&#xff0c;我试过各种方法——从资源管理器的F2快捷键…...

紫光同创Logos系列FPGA的PCB设计避坑指南:从BGA扇出到配置管脚,新手必看

紫光同创Logos系列FPGA的PCB设计避坑指南&#xff1a;从BGA扇出到配置管脚实战解析 第一次接触紫光同创Logos系列FPGA的硬件设计时&#xff0c;面对密密麻麻的BGA封装和复杂的配置电路&#xff0c;多数工程师都会感到无从下手。我在设计第一块PGL22G开发板时&#xff0c;就曾因…...

从“能用”到“可靠”:基于SonarQube与Jenkins的代码质量防线构建实战

当测试覆盖率不再只是一串数字&#xff0c;而是合并代码前的“一票否决权” 1. 为什么你的“质量门禁”只是个摆设&#xff1f; 在很多团队的CI/CD流水线中&#xff0c;SonarQube的集成往往停留在“能跑就行”的阶段。流水线里确实有代码扫描这一步&#xff0c;日志里也打印出…...

别再只会拖模块了!手把手教你用Simulink封装打造自己的‘智能积木’

从零构建你的Simulink智能积木库&#xff1a;封装技术实战指南 在工程建模领域&#xff0c;Simulink就像数字世界的乐高积木箱&#xff0c;但大多数用户只停留在拖拽现成模块的初级阶段。真正的高手都掌握了一项核心技能——模块封装。这就像把一堆散乱的乐高零件组装成功能完整…...

dotUI设计系统生成器:基于品牌配置一键生成React组件库

1. 项目概述&#xff1a;dotUI&#xff0c;一个为品牌而生的设计系统在当今的Web开发领域&#xff0c;尤其是基于React的生态中&#xff0c;我们常常面临一个两难的选择&#xff1a;是使用现成的UI组件库快速搭建界面&#xff0c;还是投入大量时间从零开始构建一套完全符合品牌…...

基于浏览器自动化的高级爬虫框架autoclaw实战指南

1. 项目概述与核心价值最近在折腾自动化脚本时&#xff0c;发现了一个挺有意思的GitHub项目&#xff0c;叫jmoraispk/autoclaw。乍一看名字&#xff0c;可能会联想到“自动爪子”或者“爬虫”&#xff0c;实际上&#xff0c;它也确实是一个专注于自动化网页交互和数据抓取的工具…...

5步快速搭建微信机器人:WeixinBot完整使用指南

5步快速搭建微信机器人&#xff1a;WeixinBot完整使用指南 【免费下载链接】WeixinBot 网页版微信API&#xff0c;包含终端版微信及微信机器人 项目地址: https://gitcode.com/gh_mirrors/we/WeixinBot 在当今自动化办公和智能交互的时代&#xff0c;拥有一个能够自动处…...

99%人开发Agent的致命误区!6大避坑指南助你从“调参怪”变“落地王”

本文揭示了开发Agent最常见的认知陷阱——将模型能力等同于系统能力&#xff0c;并提供了6大避坑指南&#xff1a;1. 掌握四层架构&#xff08;Persona、CoT、Skill、MCP&#xff09;&#xff1b;2. 选择合适的执行模型&#xff08;ReAct、Plan-and-Execute、Reflection&#x…...

HX711终极指南:如何用24位ADC打造专业级电子秤系统

HX711终极指南&#xff1a;如何用24位ADC打造专业级电子秤系统 【免费下载链接】HX711 An Arduino library to interface the Avia Semiconductor HX711 24-Bit Analog-to-Digital Converter (ADC) for Weight Scales. 项目地址: https://gitcode.com/gh_mirrors/hx/HX711 …...