dubbogo-1 基础rpc服务
文章目录
- 基本环境处理
- 编译pb接口
- 开启rpc调用
- 业务观察
- qa1 能取出protoc里面的字段值吗?
基本环境处理
https://cn.dubbo.apache.org/zh-cn/overview/quickstart/go/install/

这里没有 protoc-gen-go --version
执行
go get -u github.com/golang/protobuf/protoc-gen-go

进入到这个目录执行
go build
go install
这样就会出现在 go/bin 目录里面了,如果已经增加了这个环境变量了,就可以使用该命令了

分别验证
protoc --version
libprotoc 22.2
protoc-gen-go-triple --version
protoc-gen-go-triple 1.0.8
protoc-gen-go --version
protoc-gen-go: unknown argument “–version” (this program should be run by protoc, not directly)
这个错误先不管。
编译pb接口
protoc --go_out=. --go-triple_out=. ./samples_api.proto
- –go_out=. 用到protoc-gen-go插件,生成文件到当前目录
- –go-triple_out=. 使用 protoc-gen-go-triple插件,生成文件到当前目录
当然默认的样例工程其实已经包含了编译好的文件
开启rpc调用
回到项目根目录
go mod tidy
分别启动server端和client端
cd go-server/cmd
go run .
cd go-client/cmd
go run .
服务端效果

客户端效果

业务观察

这个的提供的样例模块
protoc的定义是
message HelloRequest {string name = 1;
}
翻译出来的go代码对应核心的地方就是这里

client代码增加注释
package mainimport ("context"
)import ("dubbo.apache.org/dubbo-go/v3/common/logger""dubbo.apache.org/dubbo-go/v3/config"_ "dubbo.apache.org/dubbo-go/v3/imports""helloworld/api"
)// 创建一个grpc的实例
var grpcGreeterImpl = new(api.GreeterClientImpl)// export DUBBO_GO_CONFIG_PATH= PATH_TO_SAMPLES/helloworld/go-client/conf/dubbogo.yaml
func main() {config.SetConsumerService(grpcGreeterImpl)if err := config.Load(); err != nil {panic(err)}logger.Info("start to test dubbo")// 传递参数req := &api.HelloRequest{Name: "laurence",}// grpc的调用reply, err := grpcGreeterImpl.SayHello(context.Background(), req)if err != nil {logger.Error(err)}logger.Infof("client response result: %v\n", reply) // reply是具体响应的信息
}
qa1 能取出protoc里面的字段值吗?
可以直接用reply.xxx 取值
package mainimport ("context"
)import ("dubbo.apache.org/dubbo-go/v3/common/logger""dubbo.apache.org/dubbo-go/v3/config"_ "dubbo.apache.org/dubbo-go/v3/imports""helloworld/api"
)// 创建一个grpc的实例
var grpcGreeterImpl = new(api.GreeterClientImpl)// export DUBBO_GO_CONFIG_PATH= PATH_TO_SAMPLES/helloworld/go-client/conf/dubbogo.yaml
func main() {config.SetConsumerService(grpcGreeterImpl)if err := config.Load(); err != nil {panic(err)}logger.Info("start to test dubbo")// 传递参数req := &api.HelloRequest{Name: "laurence",}// grpc的调用reply, err := grpcGreeterImpl.SayHello(context.Background(), req)if err != nil {logger.Error(err)}logger.Infof("client response result: %v\n", reply) // reply是具体响应的信息logger.Infof("Name is %v \n", reply.Name)logger.Infof("Age is %v \n", reply.Age)logger.Infof("Id is %v \n", reply.Id)
}
相关文章:
dubbogo-1 基础rpc服务
文章目录 基本环境处理编译pb接口开启rpc调用业务观察qa1 能取出protoc里面的字段值吗? 基本环境处理 https://cn.dubbo.apache.org/zh-cn/overview/quickstart/go/install/ 这里没有 protoc-gen-go --version 执行 go get -u github.com/golang/protobuf/protoc…...
分布式缓存Spring Cache
一、缓存里的数据如何和数据库的数据保持一致? 缓存数据一致性1)、双写模式2)、失效模式1、缓存数据一致性-双写模式 2、 缓存数据一致性-失效模式 我们系统的一致性解决方案: 1、缓存的所有数据都有过期时间,数据过期下一次查询触发主动更新 2、读写数据…...
CI2454 2.4g无线MCU芯片应用
Ci2454集成MCU芯片 | Ci2454是一款集成无线收发器和 8 位 RISC(精简指令集)MCU 的SOC芯片。 #Ci2454芯片 集成MCU芯片# 中国芯片# 无线收发器特性: 工作在 2.4GHz ISM 频段 调制方式:GFSK/FSK 数据速率:2Mbps/1Mbps…...
生成包含10个随机字母或数字的字符串,然后统计每个字符的出现次数
from random import choices from string import ascii_letters, digitsx .join(choices(ascii_lettersdigits, k10)) d dict() # 创建空字典 for ch in x:d[ch] d.get(ch, 0) 1 # x中有ch字符,个数1,并作为字典的值 print(x) print(d)也可以使用collections模块的defaul…...
huggingface 模型推理几个重要到类
pipeline 它可以让您方便地使用预训练的模型进行各种任务。当您用pipeline函数创建一个图像分割的pipeline时,它会自动加载和初始化一个SegformerForSemanticSegmentation的实例,并且封装了一些预处理和后处理的逻辑,例如将图像转换为张量&a…...
qml之动态元素类型
文章目录 动画例子 应用动画例子 缓动曲线例子 动画分组例子 嵌套动画代码 状态和转换代码 动画 QMlL使用插值的方式控制属性的更改。动画是在指定的时间内一些列属性的持续变化。 常用的动画类型元素动画:PropertyAnimation:属性值改变播放动画NumberAnimation:qr…...
超详细 | 差分进化算法原理及其实现(Matlab/Python)
差分进化(Differential Evolution,DE)算法是由美国学者Storn和 Price在1995年为求解Chebyshev多项式拟合问题而提出的。算法主要通过基于差分形式的变异操作和基于概率选择的交叉操作进行优化搜索,虽然其操作名称和遗传算法相同,但实现方法有…...
大二第三周总结(算法+生活)
算法: 题目:有效的括号 这个题目也是做过很多回了。主要就是数据结构中”栈“的应用,先进后出。 解题思路: 1.创建 Map 哈希表形成键值对映射 2.进行遍历字符串 在遍历过程中 如果 遍历到的字符c 是左括号,则入栈 pu…...
Lake Formation 和 IAM 之间的区别与联系
IAM 和 Lake Formation 都是 AWS 上的权限管理服务,且默认都是自动开启并生效的,只是如果你没有特别配置过它们,可能感觉不到它们的存在,特别是Lake Formation(后文简写为 LF),通常情况下都是“透明”的,但它确实在每次请求时进行了权限检查。本文会详细介绍一下两者之…...
音频抓取代码示例
以下是一个使用DefaultsKit库的简单爬虫程序,用于爬取音频。代码中使用了https://www.duoip.cn/get_proxy的API获取代理服务器。 import Foundation import DefaultsKit let url "https://www.douban.com/music" // 目标网站URL let proxyUrl "…...
Hexo搭建个人博客系列之环境准备
环境准备 Git Git官网,安装过程,就是一直下一步,详细的看这篇文章 Git的安装 Node.js Node.js官网 Node.js的安装 注册一个GitHub账号 安装hexo 新建一个文件夹(位置任意),运行cmd(若出现了operation not permitted,就以管理员的权限来运行cmd),运行…...
小程序技术在信创操作系统中的应用趋势:适配能力有哪些?
小程序技术在信创操作系统中的应用前景非常广阔,但也面临着一些挑战和问题。开发者需要积极应对这些挑战和问题,为信创操作系统的发展和推广做出贡献。同时,开发者也需要关注小程序技术在信创操作系统中的应用趋势,积极探索新的应…...
word修改公式默认字体并打出漂亮公式
文章目录 word公式简介传统方法1——mathtype传统方法2——word自带公式编辑器最简洁方法——更改word自带公式字体快捷方式效果展示 word公式简介 word自带的公式字体Cambria Math不可否认很丑,要打出latex格式的漂亮字体很困难。使用Markdown工具很多只能导出为不…...
Day 08 python学习笔记
函数 作用域 作用域:变量的访问权限 全局变量与局部变量 声明在函数外边的变量----全局变量 ----》全局作用域 函数内部的变量------局部变量 ----》局部作用域顶格创建的函数也是全局的 例: a 100def test_01():a 0b 110print…...
Qt Designer如何安装,打开方式
Qt Designer分为PyQt5 Qt Designer、PySide6 Qt Designer,下面分别介绍各自的安装方式和打开方式 首先,检查是否安装了python,使用cmd打开命令行窗口,输入: python --version若出现python的版本号,则已安…...
《Effective C++》知识点(1)--让自己习惯C++
多年前看过的这本书(侯捷翻译的),忘得差不多了,重温复习一下。 1. 视C为一个语言联邦 C并不只是一个带有一组守则的一体语言;它是从四个次语言组成的联邦(federation)政府,每个次语言都有自己的规约。 次语言说明CC是C的基础&am…...
UVM 验证方法学之interface学习系列文章(八)《interface不小心引入X态问题》
前面的文章学习,想必大家都对interface 有了深入了解。大家可不要骄傲哦,俗话说:小心驶得万年船。今天,再给大家介绍一个工作中,不是经常遇到,但是一旦遇到,会让你纠结很久的事情。 前面文章提到,随着验证复杂度的不断增加,interface 的bind 的操作,是必不可少的用法…...
BBR算法的几种状态
BBR(Bottleneck Bandwidth and Round-trip propagation time)算法根据互联网的拥塞行为定义了四种状态:STARTUP、DRAIN、PROBE_BW和PROBE_RTT。下面对每种状态进行详细解释,并说明它们之间的区别: STARTUP(…...
利用jupyter进行分类
Jupyter Notebook是一个非常强大的工具,可以用于各种数据分析和机器学习任务,包括分类问题。在Jupyter Notebook中进行分类通常需要以下步骤: 导入所需的库:首先,你需要导入必要的Python库,例如NumPy、Pand…...
【LeetCode 算法专题突破】滑动窗口(⭐)
文章目录 前言1. 长度最小的子数组题目描述代码 2. 无重复字符的最长子串题目描述代码 3. 最大连续1的个数 III题目描述代码 4. 将 x 减到 0 的最小操作数题目描述代码 5. 水果成篮题目描述代码 6. 找到字符串中所有字母异位词题目描述代码 7. 串联所有单词的子串题目描述代码 …...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
Razor编程中@Html的方法使用大全
文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...
Windows安装Miniconda
一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...
