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

RabbitMQ 全面详解(附面试重点)


RabbitMQ 全面详解(附面试重点)


一、RabbitMQ 与其他消息队列对比
特性RabbitMQKafkaRocketMQActiveMQ
设计定位企业级消息中间件(传统业务场景)高吞吐分布式流处理平台(日志、大数据)金融级高可靠消息中间件轻量级 JMS 实现(传统企业集成)
协议支持AMQP、STOMP、MQTT自定义协议(基于 TCP)自定义协议、JMSAMQP、STOMP、OpenWire
吞吐量中等(万级 QPS)极高(百万级 QPS)高(十万级 QPS)低(万级 QPS)
消息顺序队列级别顺序分区级别顺序队列级别顺序队列级别顺序
消息持久化支持(磁盘持久化)支持(分段日志存储)支持支持
事务支持支持不支持(但支持幂等)支持支持
典型场景订单处理、支付回调日志采集、实时流处理金融交易、事务消息企业级系统集成

类比解释

  • RabbitMQ 像“快递公司”:保证每个包裹(消息)准确送达,适合对可靠性要求高的场景。
  • Kafka 像“高速公路”:允许大量车辆(数据)高速通过,适合日志流和大数据管道。
  • RocketMQ 像“银行运钞车”:强调安全与事务,适合金融等高敏感场景。

二、RabbitMQ 核心架构与底层原理
1. 核心组件
组件作用类比
Producer消息生产者,发送消息到 Exchange快递员(发送包裹)
Exchange接收消息并根据规则路由到队列(类似邮局分拣中心)邮局分拣员
Queue存储消息的缓冲区,等待 Consumer 消费快递仓库
Binding定义 Exchange 和 Queue 的绑定规则(路由键匹配)快递配送路线表
Consumer消息消费者,从队列获取消息处理收件人
Channel复用 TCP 连接的虚拟通道(轻量级,避免频繁创建连接)高速公路上的多条车道
2. AMQP 协议工作原理
  1. 生产者发布消息 → Exchange
  2. Exchange 路由消息 → 根据类型和 Binding 规则投递到 Queue
  3. 消费者订阅 Queue → 通过 Channel 拉取或推送消息
  4. 消息确认(ACK) → 确保消息可靠消费

底层原理

  • Erlang 语言:基于 Erlang 的 OTP 框架,天生支持高并发和分布式。
  • 消息持久化:通过磁盘存储(消息和队列均可持久化)防止数据丢失。
  • 预取机制(Prefetch):控制消费者每次获取的消息数量,避免过载。

三、Exchange 类型详解
类型路由规则场景示例代码示例
Direct精确匹配 Routing Key订单状态更新(按订单ID路由)channel.exchangeDeclare("order", "direct")
Topic通配符匹配(* 匹配一个词,# 匹配多个词)日志分类(如 logs.error.*channel.exchangeDeclare("logs", "topic")
Fanout广播到所有绑定队列系统通知(全员广播)channel.exchangeDeclare("alerts", "fanout")
Headers匹配消息头(键值对)复杂条件路由(如设备类型过滤)channel.exchangeDeclare("devices", "headers")

类比

  • Direct:快递员按详细地址(Routing Key)送货。
  • Topic:按地区关键词(如“上海.浦东.*”)批量配送。
  • Fanout:小区广播通知,每家每户都能收到。
  • Headers:根据包裹上的标签(Headers)选择配送方式。

四、Spring Cloud 集成 RabbitMQ
1. 添加依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
2. 配置连接参数(application.yml)
spring:rabbitmq:host: localhostport: 5672username: guestpassword: guestvirtual-host: /
3. 创建交换机、队列与绑定
@Configuration
public class RabbitConfig {// 创建直连交换机@Beanpublic DirectExchange orderExchange() {return new DirectExchange("order.exchange");}// 创建队列@Beanpublic Queue orderQueue() {return new Queue("order.queue", true); // 持久化队列}// 绑定交换机与队列@Beanpublic Binding orderBinding() {return BindingBuilder.bind(orderQueue()).to(orderExchange()).with("order.routingKey");}
}
4. 发送消息
@Service
public class OrderService {@Autowiredprivate RabbitTemplate rabbitTemplate;public void sendOrderMessage(String orderId) {rabbitTemplate.convertAndSend("order.exchange", "order.routingKey", "订单创建: " + orderId);}
}
5. 消费消息
@Component
public class OrderListener {@RabbitListener(queues = "order.queue")public void processOrder(String message) {System.out.println("收到订单消息: " + message);}
}

五、面试高频问题与答案
问题 1:如何保证消息不丢失?
  • 答案
    1. 生产者确认:启用 publisher confirms 机制。
    2. 消息持久化:设置 deliveryMode=2(持久化消息)。
    3. 消费者手动 ACK:消费成功后手动确认(AcknowledgeMode.MANUAL)。
问题 2:如何避免重复消费?
  • 答案
    1. 幂等性设计:业务逻辑天然幂等(如更新操作)。
    2. 唯一标识:记录消息 ID,消费前检查是否已处理。
    3. Redis 去重:用 SETNX 命令记录已消费消息。
问题 3:如何实现延迟队列?
  • 答案
    1. 死信队列(DLX):消息 TTL 过期后转发到 DLX。
    2. 插件实现:使用 RabbitMQ 官方 rabbitmq_delayed_message_exchange 插件。

六、高级特性与最佳实践
1. 集群与高可用
  • 镜像队列:通过 ha-mode=all 实现队列镜像复制。
  • 负载均衡:使用 HAProxy 或 Nginx 做负载均衡。
2. 消息确认机制
  • 自动 ACK:消息发送后立即删除(风险高)。
  • 手动 ACK:业务处理成功后手动确认(推荐)。
3. 流量控制
  • QoS 预取:设置 spring.rabbitmq.listener.simple.prefetch=10 控制并发。

总结

RabbitMQ 作为企业级消息中间件,核心优势在于 灵活的路由规则高可靠性。面试中需重点掌握:

  1. Exchange 类型与路由机制
  2. 消息可靠性保障手段(持久化、ACK)。
  3. Spring Boot 集成方式(配置、发送与监听)。
  4. 集群与高可用方案(镜像队列、负载均衡)。

实战口诀

  • 交换机是路由,绑定是规则。
  • 队列是仓库,消费要确认。
  • 持久化防丢,幂等防重复。

相关文章:

RabbitMQ 全面详解(附面试重点)

RabbitMQ 全面详解&#xff08;附面试重点&#xff09; 一、RabbitMQ 与其他消息队列对比 特性RabbitMQKafkaRocketMQActiveMQ设计定位企业级消息中间件&#xff08;传统业务场景&#xff09;高吞吐分布式流处理平台&#xff08;日志、大数据&#xff09;金融级高可靠消息中间…...

浏览器好用的去广告插件和暗黑模式护眼插件

提升浏览体验&#xff1a;Edge浏览器的Adblock和Dark Mode扩展 Adblock&#xff1a;告别广告干扰 功能&#xff1a;高效拦截弹窗、横幅和视频广告&#xff0c;提升网页整洁度&#xff0c;加快加载速度&#xff0c;节省流量。安装链接&#xff1a;安装Adblock Dark Mode for E…...

VBA第二十七期 数据录入中验证格式有效性

Excel的数据有效性验证是一个有用的工具&#xff0c;但会需要我们向使用数据单元格提前设定有效性验证规则。这样一来使数据的有效性验证功能不能使用在VBA编程中。下面介绍如何在工作表中使用Change事件来创建数据有效性验证过程。监视单元格区域验证数据输入的有效性&#xf…...

基于 Verilog 的时序设计:从理论到实践的深度探索

在数字电路设计领域,时序设计是一个至关重要的环节,它涉及到组合逻辑电路与时序逻辑电路的设计差异、时钟信号的运用以及触发器的工作原理等多个方面。本文将围绕基于 Verilog 的时序设计实验展开,详细阐述实验过程、代码实现以及结果分析,帮助读者深入理解时序设计的核心概…...

[JAVASE] 反射

一. 反射概念 反射&#xff08;Reflection&#xff09;允许程序在运行时查询、访问和修改类、接口、字段和方法的信息。反射提供了一种动态操作类的能力。 二. Java反射的基本使用和应用 java.lang.reflect 是 Java 反射机制的核心包 &#xff0c;提供了操作类及其成员&…...

C++11智能指针简述

一、实现原理 在智能指针对象中有一个裸指针&#xff0c;此指针存储的是动态创建对象的地址&#xff0c;用于生存期控制&#xff0c;能够确保智能指针对象离开所在作用域时&#xff0c;自动正确地销毁动态创建的对象&#xff0c;防止内存泄漏。 使用裸指针存在的问题&#xff…...

【spring boot 实现图片验证码 前后端】

导入hutool依赖 <!--hutool--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.36</version>获取验证码接口 Autowiredprivate Captcha captcha;private final static Long VALIDA…...

QT中读取QSetting文件

1.ini文件的格式 头文件 #include <QSettings> #include <QStringList> #include <QtCore> #include <QDebug>2.读文件 //ini文件的读取 void iniTest::readIniFile(QString filePath) {//1.打开ini文件QSettings m_iniFile(filePath, QSettings::I…...

网络安全 --- 基于网络安全的 Linux 最敏感目录及文件利用指南

目录 基于网络安全的 Linux 最敏感目录及文件利用指南 Linux 中最敏感的目录及文件 1. /etc 2. /root 3. /var/log 4. /proc 5. /tmp 6. /home 7. /boot 8. /dev 如何利用这些敏感文件 你可能没想到的知识点 总结 Linux 中最敏感的目录及文件 1. /etc 存放内容&a…...

操作系统八股文整理(一)

操作系统八股文整理 一、进程和线程的区别二、进程与线程的切换过程一、进程切换进程切换的步骤&#xff1a; 二、线程切换线程切换的步骤&#xff1a; 三、进程切换与线程切换的对比四、上下文切换的优化 三、系统调用一、系统调用的触发二、从用户空间切换到内核空间三、执行…...

ssh转发笔记

工作中又学到了&#xff0c;大脑转不过来 现有主机A&#xff0c;主机B&#xff0c;主机C A能访问B&#xff0c;B能访问C&#xff0c;A不能访问C C上80端口有个服务&#xff0c;现在A想访问这个服务&#xff0c;领导让用ssh转发&#xff0c;研究半天没找到理想的语句&#xf…...

[从零开始学SSM] Bean的配置

bean基础配置 bean别名配置 bean的作用范围配置 由运行结果可知&#xff0c;Spring创建的bean默认是单例的 那么如果我想创建非单例的bean怎么办&#xff0c;这时候就需要用到配置的方式完成了&#xff1a;在<bean>的属性中添加一个scope属性&#xff0c;该属性默认是si…...

CML(Current Mode Logic)电平详解

一、CML的定义与核心特性 CML&#xff08;Current Mode Logic&#xff0c;电流模式逻辑&#xff09; 是一种基于 电流驱动 的高速差分信号标准&#xff0c;专为 10Gbps以上超高速传输 设计。其核心原理是通过恒定的尾电流源切换电流路径&#xff0c;生成低摆幅差分信号&#x…...

【链表世界的深度探索:从基础到高阶的算法解读】—— LeetCode

文章目录 反转链表链表的中间结点合并两个有序链表相交链表两数相加两两交换链表中的节点重排链表合并K个升序链表K个一组翻转链表 反转链表 这道题目的意思很好理解&#xff0c;即将链表给反转即可 方法一&#xff1a; 利用双指针进行操作&#xff0c;定义两个变量 prev 以及…...

JMeter 性能测试

Jmeter 用户手册 名词解释&#xff1a; RPS&#xff1a;每秒请求数-每秒向服务器发送多少请求数&#xff08;一个场景&#xff0c;系统面临多大的压力&#xff09; TPS&#xff1a;每秒事务数-每秒能够处理多少请求/事务数性能评价标准&#xff08;其中的一个核心指标&#x…...

LCR 159. 库存管理 III

这道题虽然简单&#xff0c;但是可以有多种解法&#xff0c;适合练习各种解法。 可以用基于快速排序思想的快速选择算法&#xff1a; class Solution { public:vector<int> inventoryManagement(vector<int>& stock, int cnt) {vector<int> res;int le…...

Spring IOC(五个类注解)

controller、service、Repository、Component 、Configurationpackage com.java.ioc;import com.java.ioc.Controller.HelloController; import com.java.ioc.rep.UserRepository; import com.java.ioc.service.UserService; import org.springframework.boot.SpringApplicatio…...

JavaScript 中的包装类型:概念、作用与使用场景

文章目录 引言1. 什么是包装类型&#xff1f;1.1 包装类型的定义1.2 包装类型的作用 2. 包装类型的使用2.1 自动装箱&#xff08;Autoboxing&#xff09;示例 2.2 手动创建包装对象示例 3. 包装类型的特性3.1 包装对象的生命周期示例 3.2 基本类型与包装对象的区别示例 4. 包装…...

Linux 如何上传本地文件以及下载文件到本地命令总结

如果你希望在 Shell 终端中将远程服务器上的文件下载到本地电脑&#xff0c;可以使用以下工具和命令&#xff1a; 1. rz / sz&#xff08;用于 Xshell、MobaXterm 等终端&#xff09; 如果你使用的是Xshell、SecureCRT、MobaXterm等支持 rz/sz 的终端&#xff0c;可以使用 rz …...

CentOS 上扩展 Swap 分区的大小

在 CentOS 上扩展 Swap 分区的大小可以通过以下几种方式实现&#xff1a; 方法 1&#xff1a;增加 Swap 文件&#xff08;推荐&#xff09; 如果你的 Swap 是基于文件的&#xff08;而不是分区&#xff09;&#xff0c;你可以增加 Swap 文件的大小&#xff0c;而不需要修改磁盘…...

清晰易懂的Miniconda安装教程

小白也能看懂的 Miniconda 安装教程 Miniconda 是一个轻量级的 Python 环境管理工具&#xff0c;适合初学者快速搭建 Python 开发环境。本教程将手把手教你如何在 Windows 系统上安装 Miniconda&#xff0c;并配置基础环境&#xff0c;确保你能够顺利使用 Python 进行开发。即…...

算法016——最小覆盖子串

力扣——最小覆盖子串&#xff08;点击跳转&#xff09; 分析题目 我们先随便从一个位置开始&#xff0c;让 right 右移&#xff0c;直到找到符合题目的位置停下 之后&#xff0c;让 left 右移&#xff0c;此时会出现两种情况 仍然符合要求&#xff0c;right 不需要动不符合…...

DeepSeek-R1大模型微调技术深度解析:架构、方法与应用全解析

1. DeepSeek-R1大模型架构设计与技术特性 1.1 架构设计 DeepSeek-R1作为超大规模语言模型,其核心架构设计包含以下创新: 专家混合架构(MoE) 采用6710亿参数的混合专家架构(MoE),每个推理过程仅激活370亿参数,实现计算效率与资源利用率的突破性提升。 Transformer框架…...

二阶近似 是什么意思

二阶近似 是什么意思 一、二阶近似的概念与举例 二阶近似是数学分析中通过泰勒展开对函数进行近似的方法,保留到二阶项(即包含一阶导数和二阶导数)。在优化问题(如模型训练)中,常用于近似损失函数,帮助更精准地更新模型参数。 举例: 假设损失函数为 L ( θ ) \mathc…...

STM32U575RIT6单片机(四)

作业: 使用I2C获取SHT20传感器温湿度 使用I2C获取AP3216C三合一传感器: 光照, 接近, 红外 三个功能 合并的传感器 #ifndef SHT20_H #define SHT20_H#include "stdint.h" #include "i2c.h" #include "stdio.h" //1、确定从机的设备地址(代码不…...

deepseek内网离线部署手册

前言 在当下 AI 浪潮汹涌的时代&#xff0c;DeepSeek 以其卓越的性能和出色的表现&#xff0c;迅速成为了众多专业人士和科技爱好者热议的焦点工具。在众多AI大模型的比拼中&#xff0c;DeepSeek 展现出了优越的实力。然而&#xff0c;对于许多企业和组织而言&#xff0c;出于…...

第七次作业,网络防御高级

拓扑&#xff1a;1 接口ip配置和区域划分&#xff1a; fw1&#xff1a; [fw1]interface GigabitEthernet 0/0/0 [fw1-GigabitEthernet0/0/0]service-manage all permit ​ [fw1]firewall zone trust [fw1-zone-trust]add interface GigabitEthernet 1/0/0 ​ ​ [fw1]securi…...

“AIGC”狂飙:一场正在撕裂传统产业链的“智能革命”

前言 在过去的几年中&#xff0c;人工智能技术经历了飞速的发展&#xff0c;深刻地改变了全球科技产业的格局。2023年被称为“AI元年”&#xff0c;这一年的标志性事件包括ChatGPT的发布和大语言模型的快速崛起&#xff0c;这些技术突破不仅引发了全球范围内的关注&#xff0c…...

【鸿蒙开发】Hi3861学习笔记- 定时器中断

00. 目录 文章目录 00. 目录01. 概述02. 定时器相关API2.1 hi_timer_create2.2 hi_timer_start2.3 hi_timer_stop2.4 hi_timer_delete 03. 硬件设计04. 软件设计05. 实验现象06. 附录 01. 概述 定时器&#xff0c;顾名思义就是用来计时的&#xff0c;我们常常会设定计时或闹钟…...

GB9706.1-2020部分定义

一、可拆卸的网电源连接器 1、器具耦合器 2、设备电源输入插口 3、可拆卸电源软电线 4、ME 设备 5、固定的网电源插座/多位插座(MSO) 6、网电源连接器 7、网电源插头 二、可拆卸的网电源连接 1、器具输入插座 2、患者连接 3、电线管 4、可拆卸电源软电线 5、外壳 6、固定…...

PCL 多项式拟合点法线(二维)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 这个思路其实很简单,假设我们有一组曲线点,我们可以对其拟合曲线并计算其导数来获取每个点的法向量,当然这一思路也可以扩展至三维。具体过程如下所示: 二、实现代码 PolyFit.h #pragma once/* ** 基于最小二乘…...

docker中安装Ghost报错Error: connect ECONNREFUSED 127.0.0.1:3306

今天尝试在docker中运行ghost报错 "Unknown database error"Error ID:500Error Code: ECONNREFUSED----------------------------------------Error: connect ECONNREFUSED 127.0.0.1:3306at /var/lib/ghost/versions/5.112.0/node_modules/knex-migrator/lib/datab…...

Java创造型模式之原型模式详解

设计模式是面向对象设计中的一种标准方法&#xff0c;用于解决常见的设计问题。原型设计模式&#xff08;Prototype Pattern&#xff09;是23种经典设计模式之一&#xff0c;属于创建型模式&#xff0c;它允许通过复制现有对象来创建新对象&#xff0c;而不是通过构造函数或工厂…...

3.17日Man2Marine

上游任务 vs. 下游任务 任务类型作用你的研究中的例子上游任务(Upstream Task)训练通用的音频表示,提供特征在大规模人类语音数据集上进行自监督学习下游任务(Downstream Task)利用上游任务学到的特征进行具体任务微调模型进行海洋哺乳动物叫声分类在 NLP(自然语言处理)…...

Fisher信息、梯度方差与学习率调度器的计算流程

Fisher信息、梯度方差与学习率调度器的计算流程 目录 Fisher信息、梯度方差与学习率调度器的计算流程**步骤1:定义模型与数据集****步骤2:计算梯度与Fisher信息****步骤3:计算梯度方差****步骤4:定义学习率调度器****步骤5:参数更新流程****示例输出****关键概念说明**步骤…...

209、不大于n的数的组合(python)

题目 已知一个数n和可组合的数字集合s&#xff0c;通过组合数字集合构成一个数x&#xff0c;使其不大于n。 例如&#xff1a; n 22356789 a [2, 3, 4, 8, 9] x 22349999 代码实现 n 22356789 a [2, 3, 4, 8, 9] a.sort() s str(n) tag True res [] for i in range…...

Matlab 汽车电子驻车系统仿真分析

1、内容简介 Matlab 176-汽车电子驻车系统仿真分析 可以交流、咨询、答疑 2、内容说明 略 摘 要&#xff1a; 论述了电子驻车制动控制系统的基本结构 、 组成及功能&#xff0c;并基于 Matlab/Simulink &#xff0c;构建了包括直流电机 、 丝杠螺母及其内部 零件和相关摩擦力…...

蓝桥杯备考----模拟算法 phone number

嗯。这道题可以在两个和三个数字加-&#xff0c;我们只要随便输出一个奏行 那么&#xff01;我们规范一下&#xff0c;我们尽可能的只在两个数字之间加&#xff0c;但是如果一共奇数个的话&#xff0c;我们就让最后三个成一组&#xff0c;也就是说&#xff0c;我们用的是个小贪…...

Unity WebGL IIS报错无法使用

Unity WebGL IIS报错无法使用 原因1&#xff1a;WebGL文件夹无访问权限 右键WebGL文件夹-属性 点击安全-编辑-添加 输入ever点击确定-应用即可...

【算法学习之路】11.并查集

并查集 前言一.简介二.基础并查集三.基础并查集题目12 四.种类并查集&#xff08;扩展域并查集&#xff09;五.种类并查集的题目 前言 我会将一些常用的算法以及对应的题单给写完&#xff0c;形成一套完整的算法体系&#xff0c;以及大量的各个难度的题目&#xff0c;目前算法也…...

第三课:Python递归编程艺术(从基础到优化)

递归&#xff0c;作为编程中一种优雅而强大的技术&#xff0c;以其简洁的代码风格和强大的问题解决能力&#xff0c;在算法设计中占据着举足轻重的地位。然而&#xff0c;递归的奥秘不仅仅在于其表面的简洁&#xff0c;更在于其背后的逻辑深度与优化技巧。本文将深入探讨递归编…...

插入排序程序并行化

一 插入排序 插入排序是稳定的原地排序算法,核心思想是逐步构建有序序列。对于未排序部分的每个元素,在已排序序列中从后向前扫描,找到合适位置插入。 二 并行化思路 1 分块排序 将数组分成多个子块,每个线程使用插入排序处理一块。 2 归并合并 将各有序子块归并成最终数…...

【系统架构设计师】操作系统 - 文件管理 ③ ( 树形目录结构 | 文件属性 | 绝对路径 与 相对路径 )

文章目录 一、树形目录结构1、树形目录结构 概念简介2、树形目录结构 组成3、文件属性4、树形目录结构 示例 二、绝对路径 与 相对路径1、绝对路径2、相对路径3、绝对路径 与 相对路径 对比 一、树形目录结构 1、树形目录结构 概念简介 " 树形目录结构 “ 又称为 ” 多级目…...

【量化科普】Standard Deviation,标准差

【量化科普】Standard Deviation&#xff0c;标准差 &#x1f680;量化软件开通 &#x1f680;量化实战教程 在量化投资领域&#xff0c;标准差&#xff08;Standard Deviation&#xff09;是一个非常重要的统计指标&#xff0c;用于衡量一组数据的离散程度。简单来说&#…...

实验三 Python 数据可视化 Python 聚类-K-means(CQUPT)

一、实验目的 Python 数据可视化&#xff1a; 1、学习使用 jieba、wordcloud 等类库生成词云图。 2、学习使用 Matplotlib 库进行数据可视化。 Python 聚类-K-means&#xff1a; 1、理解聚类非监督学习方法的基本原理。 2、掌握 Python、numpy、pandas、sklearn 实现聚类…...

东方通TongHttpServer:企业级服务代理中间件的卓越之选

随着信息技术的飞速发展&#xff0c;企业对于高性能、高安全性的中间件需求日益增长。东方通作为中国中间件领域的领军企业&#xff0c;凭借其在“安全”、“数据”和“智慧”三大产品体系上的深厚积累&#xff0c;推出了TongHttpServer&#xff08;简称THS&#xff09;&#x…...

EB-Cable许可证的常见问题及解决方案

在使用EB-Cable软件时&#xff0c;许可证问题可能是用户经常遇到的挑战之一。为了帮助用户更好地理解和解决许可证相关的问题&#xff0c;本文将列举一些常见的EB-Cable许可证问题&#xff0c;并提供相应的解决方案。 常见问题一&#xff1a;许可证激活失败 问题描述&#xff…...

ZED X系列双目3D相机的耐用性与创新设计解析

在工业自动化和学术研究领域&#xff0c;高精度的视觉设备正成为提升效率和质量的关键。ZED X系列AI立体相机&#xff0c;凭借其先进的技术和耐用的设计&#xff0c;为这一领域带来了新的可能。 核心技术&#xff1a;深度感知与精准追踪 ZED X系列的核心技术之一是Neural Dept…...

深入解析Java面向对象三大特征之多态、final、抽象类与接口

面向对象编程&#xff08;OOP&#xff09;的三大核心特征为封装、继承、多态&#xff0c;其中多态是最具灵活性和扩展性的特性。本文将从多态的本质出发&#xff0c;结合final关键字、抽象类与接口的设计&#xff0c;深入探讨这些概念的应用场景及其在代码中的实现细节&#xf…...

jmeter 循环控制器遍历列表中的数据

jmeter遍历列表中的数据并使用if控制器做相应的处理 测试场景请求获取列表接口发送请求JSON Extractor 提取对应字段 Loop Controller计数器If Controller 测试场景 请求获取列表接口使用循环控制器遍历接口&#xff0c;根据state字段判断是否发起其他请求 请求获取列表接口 …...