RabbitMQ 2025/3/5
高性能异步通信组件。
同步调用
以支付为例:
可见容易发生雪崩。
异步调用
以支付为例:
支付服务当甩手掌柜了,不管后面的几个服务的结果。只管库库发,后面那几个服务想取的时候就取,因为消息代理里可以一直装,缓存消息。
消息代理(英文Broker)
消息代理相关的技术MQ技术
Erlang面向并发的语言
RabbitMQ安装部署
可直接采用Docker,方便。
RabbitMQ消息流转的过程(整体架构)
消费者监听队列,发送者不直接发给队列,而是发给exchange交换机,交换机会根据规则把消息路由给不同队列。
因为RabbitMQ的性能很强,每秒钟可以达到数万的并发,所以企业有多个项目的话,往往部署一套RabbitMQ就够了,多个项目可以共享RabbitMQ服务。但是大家一起的话,很可能交换机出现冲突,所以引出RabbitMQ的新概念virtual-host(虚拟主机),类似与MySQL里的database(众所周知,MySQL里可以创建多个database,每个database的表和其他database的表直接是相互隔离的),每个项目都创一个自己的virtual-host,就可以相互隔离开了。
例子:MQ入门-06.RabbitMQ-快速入门_哔哩哔哩_bilibili
交换机不存只负责转发。交换机和队列必须有一个关系,才能给队列发消息。binding绑定关系。
数据隔离
虚拟主机是实现了数据隔离。
不同的项目创建不同的用户。为新建用户建一个虚拟主机。
视频举例:MQ入门-07.RabbitMQ-数据隔离_哔哩哔哩_bilibili
RabbitMQ的java客户端
这里我们不采用Rabbit官方提供的java客户端,而是Spring AMQP,它是基于AMQP协议(消息收发与语言和平台无关),官方提供的java客户端使用起来繁琐,所以使用Spring AMQP。
4:00 MQ入门-08.Java客户端-快速入门_哔哩哔哩_bilibili
因为是简单入门案例,可以省去交换机这个步骤。
控制台创建队列->pom里引入spring-amqp依赖->yaml里配置RabbitMQ服务端信息(如地址主机名、端口、虚拟主机名、用户、密码),这样微服务才能连接到RabbitMQ->发送消息(SpringAMQP提供了RabbitTemplate工具类,方便我们发送消息)->接受消息
接收者接受消息的代码:加一个@Comonent把它注册成Spring的一个Bean,这个类的内部要有一个方法,这个方法要加上@RabbitListener(也就是消费者的监听者)的注解后面再带上队列名,现在只要队列有消息,方法就可以拿到了。方法参数自己设。
WorkQueues
任务模型,让多个消费者绑定到一个队列,共同消费队列中的消息。
那么队列中的消息会被哪个消费者收到呢?
模拟WorkQueue(实现一个队列绑定多个消费者)
MQ入门-09.Java客户端-WorkQueue_哔哩哔哩_bilibili
在RabbitMQ控制台建立一个队列->一个发消息的->2个消费者
下图两个消费者,一个发送者。
队列同一个消息只能被一个消费者处理,很多条消息的话均匀分配(默认轮询,1人1条)。(上图2个消费者结果有奇偶规律)
把很多消息平均分给消费者,可以加快消息处理速度。
每个消费者能力不一样(通过sleep(ms)修改),均匀分配消息(默认)肯定是不合理的,只需要修改application.yml,设置preFetch值为1,实现能者多劳。
Fanout交换机(广播交换机)
再看一下以前学的这个发消息的过程。带有交换机的完整模型。
交换机的作用是接受发送者发送的消息,并将消息路由到与其绑定的队列。
那么什么是Fanout交换器?
特征:把接收到的消息路由到每一个和他绑定的队列。(队列中的消息只能被一个消费者处理,有了Fanout交换机,发的消息就可以被多个消费者处理了。我们完全可以给每个微服务创建一个队列,然后队列绑到交换机上,fanout交换机想广播一样,给每个队列群发/复制消息。)
案例步骤:声明2个队列,一个交换机exhanges,然后banding绑定,第一种方法可以直接用控制台发消息然后查看,还有一种方法java代码,2段接受代码,1段发送代码(这回调3个参数的api,exchange,null,message,之前写的例子用到的都是两个参数,队列名和消息)。
Direct交换机(定向)
MQ入门-11.Java客户端-Direct交换机_哔哩哔哩_bilibili
和原来差不多,这回交换机选direct,队列设置bindingkey,发送时发送者的参数分别设好exchange,routingkey值,message。其余的步骤和原来一样。
所以两个key值一样,direct交换机也能实现Fanout交换机的功能。一个queue可以设多个bindingkey。
Topic交换机(话题)
队列bindingkey可以通过通配符简易设置。
topic和direct比除了多了一个统配符,功能差不多。
声明队列交换机
之前队列和交换机的创建都是依靠控制台,这次学习用代码声明队列交换机,这样项目一启动就会自己创建队列和交换机了。
可以用new的方式。(更简单)
也可以用builder方式。
发送者只管发,什么也不关心,所以通常我们在消费者这一端,声明队列交换机及绑定关系。
步骤(以Fanout交换机为例):创建FanoutConfiguration类,声明交换机,队列,绑定关系。可以new(比较简单),也可以builder构建(比较专业)。
上述基于JavaBean绑定太麻烦了,这回学习注解@RatbbitListener。
基于JavaBean还是基于注解,完全个人喜好了。(但是如果基于javabean,声明direct交换机好像没法写很多bindingKey)
消息转换器
以前我们发消息一直用到rabbitTemplate的convertAndSend方法。我们发消息是可以传任何java对象作为消息,网络传输其实是以字节传的,直接对象不行,因此传的时候要把java对象转换成字节。这个转换就是由消息转换器转的。
java里有一种JDK自带的序列化的一个工具(能把任一java对象序列化成字节的形式),所以这个消息转换的过程就是采用JDK自带的序列化方式。
ObjectOutputStream:对象流,jdk自带的序列化工具,能把任意java对象序列化成字节。
但是推荐使用JSON的消息转换器。
发送方和接收方一定要用相同的消息转换器。
pom配置好之后到MAVEN里刷新一下。
给发送方和接收方都配置一个消息转换类。
对比图(下边的JSON的消息转换器)
业务改造
把业务从OpenFeign的同步调用改成基于MQ的异步调用。
OpenFeign:02-基本概念_哔哩哔哩_bilibili
nacos可以抽取共享配置,不用重复进行同样的配置。
共同代码可以写到common里
消息可靠性
发送者的可靠性
发送者重连
yml
发送者确认
路由失败的两种原因:
exchange2交换机没连队列,路由失败。返回ACK(因为消息确实发出去了)
routingkey和bandingkey没有匹配上的。
如果返回NACK要重发消息。
none是关闭(默认)
simple是同步阻塞
correlated异步的
至此,ConfirmCallback和ReturnCallback全部写完了。
唯一,uuid,最简单的随机算法
MQ的可靠性
消息传到MQ也不一样可靠,因为MQ本身也可能把消息弄丢。
MQ内存储存的方式,可能弄丢消息,还有可能导致MQ性能下降和阻塞。
为此,产生两个方案:数据持久化(把数据提前持久化存到磁盘,提前的意思:不是等到满了再存到磁盘,提前就开始往磁盘存了)、LazyQueue
数据持久化
持久化的一种方法:写出到磁盘,这样就永久保存了。
交换机的持久化(默认都是持久的交换机、durable属性)(Spring的AMQP代码生成的交换机默认也是持久化的)
队列持久化(默认持久化durable属性)(Spring的AMQP代码生成的默认也是持久化的)
消息持久化(手动设置为Persistent)
LazyQueue
上节课写了数据持久化,当我们把交换机、队列、消息持久化了以后,就不用再担心MQ宕机而导致消息丢失了,不仅如此,RabbitMQ也不会再因为消息堆积配置out而出现阻塞了。但是数据持久化后,不仅要在内存里写,还要再磁盘里写一份,这样每条消息处理的耗时就增加了,这也就导致它的整体并发能力有点下降。为了解决这个问题,引入了一种新的队列模式,lazy Queue(消息直接写磁盘里)。它不仅仅具有数据持久化的优势,同时还解决了并发能力下降的问题。
那么怎样去设置一个队列变成Lazy Queue模式呢
第一种方法,控制台添加
第二种方法,代码添加(声明bean的方式或者注解都可以)
消费者的可靠性
消费者确认机制
三种状态(ack,nack,reject):不管哪种状态,都不能在刚收到消息的时候就返回,我们应该根据处理结果去做判断,也就是consumer处理完的时候。
注意:这回配置的是消费者下的application文件。
有个缺点:消息异常了就会像踢球一样反复被踢来踢去,下面学的失败重试机制就可以解决这个问题(设置最大尝试次数)
失败重试机制
第一种:重试次数耗尽后直接reject,不要了
第二种:重试次数耗尽后,返回nack,消息回到队列,再重试
第三种:重试次数耗尽后,消费者将失败消息扔进另一个交换机,这个交换机连着另一个队列
下面以第三种方式为例(相比于前两种更复杂,多了一个交换机和一个新队列)
业务幂等性
解决重复消费问题(比如事务发到消费者那了,本来消费者要给MQ返回一个ACK,因为断电没发送出去,MQ以为消费者宕机了,于是恢复电的时候,MQ又会重新给消费者发送一次,可消费者已经处理完这个事务了,如果这个事务涉及到支付,那消费者就会白白消费两次。)这时就用到业务幂等性了。
下面以消息重复提交导致业务被重复执行的这个场景为例的几个方案:
1.唯一id(我们可以给消息带上唯一的id)
这种方案存在业务侵入的问题:本来是没有id这个属性的,现在的消息都带了id属性,并且还放在了数据库里!!!!!
2.业务判断
加了一个业务判断,当订单来了后,不急着标记订单为已支付,而是每次都在标记前查询一下订单状态。
延迟消息
相关文章:
RabbitMQ 2025/3/5
高性能异步通信组件。 同步调用 以支付为例: 可见容易发生雪崩。 异步调用 以支付为例: 支付服务当甩手掌柜了,不管后面的几个服务的结果。只管库库发,后面那几个服务想取的时候就取,因为消息代理里可以一直装&#x…...
C#+Halcon 检测稳定性提升的方式
前言 众所周知,C#是一个带垃圾回收机制的语言,开发过程中不需要考虑垃圾回收,你就可劲造吧。但我们在设计图像处理软件时,应时刻对图像等大内存资源进行管控,做到自行管控,及时释放,不应将其交…...
第一个Hadoop程序
编写和运行第一个 Hadoop 程序是学习 Hadoop 的重要步骤。以下是一个经典的“WordCount”程序示例,它统计文本文件中每个单词出现的次数。我们将使用 Java 编写 MapReduce 程序,并在 Hadoop 集群上运行它。 一、WordCount 程序概述 WordCount 是 Hadoo…...
Leetcode 378-有序矩阵中第 K 小的元素
给你一个 n x n 矩阵 matrix ,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素。 请注意,它是 排序后 的第 k 小元素,而不是第 k 个 不同 的元素。 你必须找到一个内存复杂度优于 O(n2) 的解决方案。 示例 1࿱…...
python之爬虫入门实例
链家二手房数据抓取与Excel存储 目录 开发环境准备爬虫流程分析核心代码实现关键命令详解进阶优化方案注意事项与扩展 一、开发环境准备 1.1 必要组件安装 # 安装核心库 pip install requests beautifulsoup4 openpyxl pandas# 各库作用说明: - requests&#x…...
第一个 C++ 程序
文章目录 “Hello, World!” 程序代码示例程序基本结构详细解释头文件(#include <iostream>)命名空间(std)主函数(int main())输出语句(std::cout << "Hello, World!" &l…...
深度学习篇---不同框架下的图像通道
文章目录 前言一、核心概念NCHWNHWCCHW 二、主流框架的通道顺序1.PyTorch默认格式特点调整方法 2.TensorFlow默认格式特点调整方法 3.Keras默认格式特点 4.PaddlePaddle默认格式特点调整方法 5.MXNet默认格式调整方法 6.ONNX默认格式特点 三、通道顺序的影响性能差异NCHWNHWC 框…...
在 C++ 中,通常会使用 `#define` 来定义宏,并通过这种方式发出警告或提示。
在 C++ 中,通常会使用 #define 来定义宏,并通过这种方式发出警告或提示。 如何实现 GBB_DEPRECATED_MSG 宏: 你可以通过以下方式定义一个宏,显示弃用警告: #include <iostream>// 定义一个宏,用来打印弃用警告 #define GBB_DEPRECATED_MSG(msg...
10x Research:Secured Finance 基于 FIL 的美元稳定币如何推动 Filecoin 生态系统发展
“众多与 Filecoin 数据进行互动的参与者,将从全新灵活性与金融化的体系中受益。” 在 10X Research 的最新研究内容中,揭示了在 Filecoin 生态系统内推出以美元计价的稳定币为用户带来的巨大增益。 Filecoin 是 Web3 中增长最快的平台之一,…...
解决Spring Boot中LocalDateTime返回前端数据为数组结构的问题
在Spring Boot开发中,处理日期时间数据是一个常见的需求。Java 8 引入了新的日期时间API,如LocalDateTime,它提供了更强大的日期时间处理功能。然而,在将LocalDateTime对象序列化为JSON时,可能会遇到返回为数组结构的问…...
【Linux】进程间通信 续
目录 管道的原理(匿名管道) 核心原理 站在内核的角度看管道的本质 接口 创建管道文件 代码示例 管道的特征 管道读写端的四种情况 管道的应用场景 命令行的管道。 使用管道实现进程池 初始化 控制子进程 退出 命名管道 命名管道的理解 …...
心率提取,FFT
rPPG 信号提取: 从面部视频中提取 rPPG 信号,通常是通过对视频帧中的面部区域进行颜色通道分析,提取出反映血液容积变化的信号。 信号预处理: 对提取的 rPPG 信号进行滤波、归一化等预处理操作,以去除噪声和干扰。 心率…...
Data truncation: Out of range value for column ‘allow_invite‘ at row 1
由于前端传递的数值超过了mysql数据库中tinyint类型的取值范围,所以就会报错。 Caused by: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Out of range value for column allow_invite at row 1at com.mysql.cj.jdbc.exceptions.SQLExcept…...
ZYNQ-PL学习实践(二)按键和定时器控制LED闪烁灯
ZYNQ-PL学习实践(二)按键和定时器控制LED闪烁灯) 1 创建工程2 verilog 代码3 约束4 综合5 生成bit总结 1 创建工程 2 verilog 代码 添加key_led.v 文件, module key_led(input sys_clk , //系统时钟50MHzinput …...
【CXX】4.4 其他构建系统
你需要至少完成以下三件事: 生成CXX生成的C绑定代码。 编译生成的C代码。 将生成的目标文件与你的其他C和Rust目标文件链接在一起。 并非所有构建系统都是平等的。如果你希望使用90年代的构建系统,尤其是如果你希望覆盖2个或更多构建系统(…...
windows 上删除 node_modules
在 Windows 11 上,你可以通过命令行来删除 node_modules 文件夹并清除 npm 缓存。以下是具体步骤: 删除 node_modules 打开命令提示符(Command Prompt)或终端(PowerShell)。 导航到项目目录。你可以使用 …...
mysql之如何获知版本
你可以通过在 MySQL 命令行客户端执行简单的 SQL 查询来获取 MySQL 的版本信息。以下是获取 MySQL 版本的常见方法: 使用 SELECT VERSION(); 查询: SELECT VERSION();执行这个查询后,MySQL 会返回一个字符串,其中包含了 MySQL 服…...
PHP 将图片url,写入到文件夹中,导出到zip下载到桌面
一:将图片写入到文件内 文件url:比如 【https://image.baidu.com/search/detail?ct503316480&z0&ipnfalse&word%E5%9B%BE%E7%89%87%E5%A4%B4%E5%83%8F&hs0&pn1&spn0&di7466852183703552001&pi0&rn1&tnbaiduima…...
系统架构设计师—计算机基础篇—文件管理
文章目录 文件结构逻辑结构物理结构文件的索引直接索引间接索引做题的方法 文件存储空间管理位示图 文件结构 文件的结构是指文件的组织形式。 逻辑结构 从用户角度看到的文件的组织形式。 用户知道文件名就可以存取文件中的信息。 物理结构 文件在文件存储器上的存放方式…...
【MySQL】用MySQL二进制包构建docker镜像
一、实验背景 【MySQL&docker】基于CentOS7.5 编译制作MySQL5.7.28镜像 https://www.jianshu.com/p/71fd79b69a6b 用MySQL源码编译的docker镜像,体积过大,直奔3G了,你也不清楚,这点编译参数打出的体积怎么就这么大!…...
C++ std::vector 超详细指南:基础实践(手搓vector)
目录 一.基本概念 二.类的常用接口说明 1.类对象的常见构造 2. vector类空间变化 1).size()(获取数据个数) 2).capacity()(获取容量大小) 3).empty()(判断是否为空࿰…...
java面试复习巩固
韩顺平Java__哔哩哔哩_bilibili 1、Java中源文件中可以有多个类,最多只能有一个public类? 程序分为编译和执行两个阶段。 编译阶段 如果存在public类,那么一个源文件中只能够存在一个而且要与源文件的名字相同。----------否则编译会报错…...
《STL源码剖析》笔记记录
《STL源码剖析》笔记记录 2.空间适配器(allocator) 分配的是空间,而不一定是内存 为了精密分⼯,STL allocator 决定将这两个阶段操作区分开来。 1、对象构造由 ::construct() 负责;对象释放由 ::destroy() 负责。 2、内存配置由 alloc::al…...
《Linux C 智能 IO 矩阵:输入输出的自适应数据流转》
1. 标准库IO简介 标准库IO特点:通过操作系统提供的接口(API)和操作系统进行交互。(接近100个函数) 1.1. IO的过程 操作系统:向上为用户提供操作接口,向下为统筹控制硬件。 操作系统的组成&#…...
idea生成自定义Maven原型(archetype)项目工程模板
一、什么是Maven原型(Maven archetype) 引自官网的介绍如下: Maven原型插件官网地址 这里采用DeepSeek助手翻译如下: Maven 原型 什么是原型? 简而言之,原型是一个 Maven 项目模板工具包。原型被定义为一…...
CES Asia 2025增设未来办公教育板块,科技变革再掀高潮
作为亚洲消费电子领域一年一度的行业盛会,CES Asia 2025(第七届亚洲消费电子技术贸易展)即将盛大启幕。今年展会规模再度升级,预计将吸引超过500家全球展商参展,专业观众人数有望突破10万。除了聚焦人工智能、物联网、…...
(二 十 二)趣学设计模式 之 备忘录模式!
目录 一、 啥是备忘录模式?二、 为什么要用备忘录模式?三、 备忘录模式的实现方式四、 备忘录模式的优缺点五、 备忘录模式的应用场景六、 总结 🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式,…...
物联网同RFID功能形态 使用场景的替代品
在物联网(IoT)和自动识别技术领域,除了RFID标签外,还有一些其他技术产品可以在形态和大小上与RFID标签相似,同时提供类似或更强大的功能。以下是几种能够替代RFID标签的产品: 一、NFC标签 NFC(…...
蓝陵科技:以“数字底座”之力,全面布局影视行业工业化
“在数字技术与文化产业深度融合的今天,海南蓝陵数字科技有限公司(以下简称蓝陵科技)凭借其卓越的渲染实力和前瞻性的战略布局,正逐步成为推动中国影视行业工业化进程的重要力量。2025年2月,蓝陵科技不仅获得了陵水融媒…...
React + TypeScript 实战指南:用类型守护你的组件
TypeScript 为 React 开发带来了强大的类型安全保障,这里解析常见的一些TS写法: 一、组件基础类型 1. 函数组件定义 // 显式声明 Props 类型并标注返回值 interface WelcomeProps {name: string;age?: number; // 可选属性 }const Welcome: React.FC…...
本地部署大数据集群前置准备
1. 设置VMware网段 虚拟网络编辑器——更改设置——选择VMnet8——子网改成192.168.88.0——NAT设置——网关设置为192.168.88.2 2. 下载CentOS操作系统 下载CentOS 7.6(1810)版本 3. 在VMware中安装CentOS操作系统 创建新的虚拟机——典型——安装光盘映像文件——输入账…...
016.3月夏令营:数理类
016.3月夏令营:数理类: 中国人民大学统计学院: http://www.eeban.com/forum.php?modviewthread&tid386109 北京大学化学学院第一轮: http://www.eeban.com/forum.php?m ... 6026&extrapage%3D1 香港大学化学系夏令营&a…...
历年北京理工大学计算机复试上机真题
历年北京理工大学计算机复试上机真题 在线评测:https://app2098.acapp.acwing.com.cn/ 分段函数 题目描述 编写程序,计算下列分段函数 yf(x) 的值。 当 0< x <2,y -x2.5;当 2< x <4,y2-1.5(x-3)(x-3)…...
Linux的缓存I/O和无缓存IO
一、I/O缓存的背景 I/O缓存是指在内存里开辟一块区域,存放用来接收用户输入和用于计算机输出的数据,以减小系统开销和提高外设效率。linux对IO文件的操作分为不带缓存的IO操作和带缓存的IO操作(标准IO操作)。为什么存在C标准I/O库…...
题目 3216 ⭐团建⭐【DFS】蓝桥杯2024年第十五届省赛
小蓝正在和朋友们团建,有一个游戏项目需要两人合作,两个人分别拿到一棵大小为 n 和 m 的树,树上的每个结点上有一个正整数权值 c 1 , c 2 , ⋅ ⋅ ⋅ , c n c_1, c_2, , c_n c1,c2,⋅⋅⋅,cn, d 1 , d 2 , ⋅ ⋅ ⋅ , d m d_1, d_…...
从0到1入门Linux
一、常用命令 ls 列出目录内容 cd切换目录mkdir创建新目录rm删除文件或目录cp复制文件或目录mv移动或重命名文件和目录cat查看文件内容grep在文件中查找指定字符串ps查看当前进程状态top查看内存kill终止进程df -h查看磁盘空间存储情况iotop -o直接查看比较高的磁盘读写程序up…...
战略合作升级 | 大势智慧携手广西地测院,共绘智慧测绘新蓝图
2月26日,武汉大势智慧科技有限公司(以下简称“大势智慧”)与广西壮族自治区地理信息测绘院(以下简称“广西地测院”)在南宁举行战略合作升级签约仪式暨技术交流座谈会。 大势智慧董事长黄先锋与广西地测院党委书记、院…...
批量插入对比-mysql-oracle-sqlserver
单个插入mysql //单个 根据有值就插入,无值不改动 <insert id"insertOne" keyColumn"id" keyProperty"id"parameterType"com.test.log" useGeneratedKeys"true">insert into test_mysql_tab<trim p…...
jmeter阶梯式压测
1、安装plugins manager 链接 Install :: JMeter-Plugins.org 将下载下来的jar包放置在jemter文件的lib\ext下, 重启Jmeter 2、安装阶梯测试第三方插件 在Available Plugins中找到Custom Thread Groups,点击Apply Changes and Restart JMeter后等待插件…...
nginx.conf 完整配置总结概述
----------------------------------------------------------- /usr/local/nginx/sbin/nginx -s reload # 重新载入配置文件 /usr/local/nginx/sbin/nginx -s reopen # 重启 Nginx /usr/local/nginx/sbin/nginx -s stop # 停止 Nginx /usr/local/nginx/sbin/nginx …...
docker常规命令和高级用法
Docker 是一个强大的容器化平台,提供了丰富的命令和功能来管理容器、镜像、网络和存储等。以下是一些常用的 Docker 命令及其高级用法。 1. 容器管理 1.1 启动容器 基本用法: docker run <image_name>示例: docker run ubuntu高级用法…...
Spark核心之02:常用算子详解
1、RDD操作详解 # 启动spark-shell spark-shell --master local[2] 1.1 基本转换 1) map map是对RDD中的每个元素都执行一个指定的函数来产生一个新的RDD。 任何原RDD中的元素在新RDD中都有且只有一个元素与之对应。 举例: scala> val a sc.parallelize(1 …...
【CSS—前端快速入门】CSS 常用样式
CSS 常用 CSS 样式 1. 前端样式查询网站: MDN Web Docs (mozilla.org) w3school 2. border 2.1 借助 MDN 了解 border 我们借助 MDN 网站来学习 border 样式的使用: 2.2 border 常见属性 保存代码,打开页面: 对于标签不同样式的…...
探索DeepSeek-R1的核心秘诀:突破SFT技术的新篇章
摘要 近期,一种显著超越SFT(Sequence-to-Sequence with Teacher Forcing)的技术成为研究焦点。作为o1/DeepSeek-R1的核心秘诀,该技术不仅提升了模型性能,还成功应用于多模态大型模型中,实现了功能扩展。与传…...
DailyNotes 增加提醒功能
TODO:准备给 DailyNotes 增加一个提醒功能,准备接入 AI 来做一些事情。试了一下,非常靠谱。 具体 DailyNotes 和 Ollama 的交互方式,可以直接调用命令行,也可以走网络API。 rayuK2CD9WCYN4 ~ % ollama run deepseek-…...
[Computer Vision]实验六:视差估计
目录 一、实验内容 二、实验过程 2.1.1 test.py文件 2.1.2 test.py文件结果与分析 2.2.1 文件代码 2.2.2 结果与分析 一、实验内容 给定左右相机图片,估算图片的视差/深度;体现极线校正(例如打印前后极线对)、同名点匹配…...
软件测试基础:功能测试知识总结
🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 一、测试项目启动与研读需求文档 (一) 组建测试团队 1、测试团队中的角色 2、测试团队的基本责任 尽早地发现软件程序、系统或产品中…...
171. Excel 表列序号
Excel 表列序号 题目描述尝试做法推荐做法 题目描述 给你一个字符串 columnTitle ,表示 Excel 表格中的列名称。返回 该列名称对应的列序号 。 例如: A -> 1 B -> 2 C -> 3 … Z -> 26 AA -> 27 AB -> 28 … 示例 1: 输入: colum…...
03.05 QT事件
实现一个绘图工具,具备以下功能: 鼠标绘制线条。 实时调整线条颜色和粗细。 橡皮擦功能,覆盖绘制内容。 撤销功能,ctrl z 快捷键撤销最后一笔 程序代码: <1> Widget.h: #ifndef WIDGET_H #define WIDGET…...
es如何进行refresh?
在 Elasticsearch 中,refresh 操作的作用是让最近写入的数据可以被搜索到。以下为你介绍几种常见的执行 refresh 操作的方式: 1. 使用 RESTful API 手动刷新 你可以通过向 Elasticsearch 发送 HTTP 请求来手动触发 refresh 操作。可以针对单个索引、多个索引或者所有索引进…...