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. 串联所有单词的子串题目描述代码 …...

玄机-日志分析-IIS日志分析
1.phpstudy-2018站点日志.(.log文件)所在路径,提供绝对路径 2.系统web日志中状态码为200请求的数量是多少 3.系统web日志中出现了多少种请求方法 4.存在文件上传漏洞的路径是什么(flag{/xxxxx/xxxxx/xxxxxx.xxx} 5.攻击者上传并且利用成功的webshell的文件名是什…...

物联网嵌入式开发实训室建设方案探讨(高职物联网应用技术专业实训室建设)
一、建设背景与目标 在当今数字化时代,物联网技术正以前所未有的速度改变着人们的生活和工作方式。从智能家居到工业自动化,从智能交通到环境监测,物联网的应用场景无处不在。根据市场研究机构的数据,全球物联网设备连接数量预计…...
c++算法学习5——贪心算法
一、贪心算法的原理 贪心算法(Greedy Algorithm)是一种在每一步选择中都采取当前最优决策的策略,通过局部最优解的累积逼近全局最优解。其核心思想是“着眼当前,忽略整体”,适用于满足最优子结构和贪心选…...

【Python 算法零基础 4.排序 ⑨ 堆排序】
目录 一、问题描述 二、算法对比 1.朴素算法 ① 数组模拟容器 ② 有序数组模拟容器 2.二叉堆 ① 二叉堆特点 ② 数组表示二叉树 ③ 堆 ④ 大顶堆 ⑤ 小顶堆 ⑥ 元素插入 ⑦ 获取堆顶 ⑧ 堆顶元素删除 三、代码分析 1.工具函数 2.调整大顶堆函数 Ⅰ、计算子节点索引 Ⅱ、找出最…...
Cursor 1.0 的核心功能亮点及技术价值分析
Cursor 1.0 的核心功能亮点及技术价值分析 结合官方更新和开发者实测整理: 🛠️ 一、BugBot:智能自动化代码审查 功能亮点:深度集成 GitHub,自动扫描 Pull Request(PR)中的潜在 Bug(…...
使用glide 同步获取图片
在 Glide 中,可以使用asBitmap()方法来获取图片的Bitmap对象,进而同步地加载图片。以下是具体示例: String imageUrl "https://example.com/image.jpg"; Bitmap bitmap Glide.with(context).asBitmap().load(imageUrl).apply(ne…...
【Python 算法零基础 4.排序 ⑪ 十大排序算法总结】
目录 一、选择排序回顾 二、冒泡排序回顾 三、插入排序回顾 四、计数排序回顾 五、归并排序回顾 六、快速排序回顾 七、桶排序回顾 八、基数排序 九、堆排序 十、希尔排序 十一、十大排序算法对比 十二、各算法详解与应用场景 1. 选择排序(Selection Sortÿ…...
【Linux基础知识系列】第十四篇-系统监控与性能优化
一、简介 随着信息技术的飞速发展,Linux系统在服务器领域占据着重要地位。无论是web服务器、数据库服务器还是文件服务器,都需要高效的运行以满足业务需求。系统监控与性能优化是确保Linux系统稳定、高效运行的关键任务。通过实时监测系统资源的使用情况…...

手机如何防止ip关联?3种低成本方案
在当今数字化时代,手机已成为人们日常生活中不可或缺的工具,无论是社交、购物、支付还是工作,都离不开手机。然而,随着网络技术的不断发展,网络安全问题也日益突出,其中IP关联问题尤为常见。那么࿰…...
从微积分到集合论(1630-1910)(历史简介)——第4章——现代积分理论的起源(Thomas Hawkins)
第 4 章 现代积分理论的起源 (The Origins of Modern Theories of Integration) Thomas Hawkins 目录 4.1 引言(Introduction) 4.2 Fourier分析与任意函数(Fourier analysis and arbitrary functions) 4.3 对Fourier问题的回应(Responses to Fourier)(1821-1854)…...