RabbitMQ---面试题
常见面试题
1.MQ的作用及应用场景
类似问题:项目什么情况下用到了MQ,为什么要用MQ
MQ的主要应用场景,消息队列的应用场景,为什么说消息队列可以削峰
首先MQ是一种用来接收和转发消息的队列,常见的应用常见如下:
1)异步解耦:在业务中,一些操作需要消耗大量时间,但是并不需要我们立刻返回结果,我们就可以使用MQ来把操作异步化
2)流量削峰:在访问量突增的情况下,我们应用仍然要保证持续处理请求,但是突然把大量请求发送过来会导致我们的应用崩溃,我们也不可能按照最大访问量来配置机器,所以我们就可以使用MQ来控制流量,把请求排队,等系统根据自己的能力来逐渐处理请求
3)消息分发:当多个系统需要对同一数据做出响应,我们就可以使用MQ进行消息分发,我们这里可以用到广播模式
4)延迟通知:当我们想让对方过一段时间收到消息时,我们可以使用MQ的延迟消息功能,就比如在支付过程中,用户多久没有支付,就会自动取消订单
2.你了解过那些MQ,他们的区别是什么
类似问题:kafka和RabbitMQ的对比,对比其他MQ,不同MQ分别用在什么场景
kafka和rocketmq比较,消息队列除了可以使用RabbitMQ,可以使用RocketMQ吗
首先业界有很多MQ产品,我们这里简单介绍三种,RabbitMQ,RocketMQ,kafka
1)kafka:kafka的功能比较简单,但是效率很高,吞吐量大,可以达到单机10w的吞吐量,主要用来做大数据处理,和日志相关操作的
2)RabbitMQ:使用Erlang开发支持大部分主流语言,功能比较全面,效率虽不如kafka但是也很高,同时吞吐量虽然不大但也达到了单机万级的吞吐量,同时开源提供界面,社区活跃,对于新手十分友好,比较适合于一些并发量和数据量不大的情况
3)RocketMQ:采用Java开发,在可用性,功能以及稳定性方面比较突出,吞吐量能达到单机10w,但是支持的语言不多,且社区活动一般,适用于一些可靠性高,并发量大的场景
3.介绍下RabbitMQ的核心概念及工作流程
相关面试题:RabbitMQ的核心流程简单介绍下,讲下RabbitMQ的结构
RabbitMQ负责接收消息并且转发消息
核心概念:
Producer:生产者,向RabbitMQ发送消息的 Consumer:消费者,从RabbitMQ中获取消息
Broker:消息队列服务器 Vistual Host:虚拟机,逻辑上隔离的,可以用来做业务区分
Connection:网络连接,允许客户端和RabbitMQ进行通信 Channel:信道,发送消息和接收都是通过信道
Exchange:交换机,负责接收生产者的消息,并且根据Routingkey 映射到不同的队列
Queue:队列,用来存储消息直到被消费者消费
工作流程:创建连接,生产者连接到Broker(建立一个Connection和Channel) 声明交换机和队列 发布消息到Broker,消息处理(Broker接收消息并且存入相应队列,如果没有队列可根据return模式进行处理) 消费消息(消费者监听队列,消息到达,从队列获取消息,处理后给MQ返回是否确认)消息删除(确认就删除,不确认或者拒绝,可以重试或者有死信队列放入死信队列,否则丢失消息)
4.RabbitMQ如何保证消息的可靠性
相关面试题:RabbitMQ消息丢失原因及解决方案 , 如何保证消息不丢失,消息写入失败怎么办, 消息消费失败如何处理, MQ的主动ack和被动ack有什么区别,RabbitMQ怎么解决数据丢失问题,如何保证一致性 , 消息队列怎么保证消费者消息不丢失的
这个问题我们要从生产者的可靠性,MQ的可靠性,消费者的可靠性三方面回答
1)生产者的可靠性保障通过confirm模式来保证消息能够正确到达交换机(可能是网络原因也可能是交换机不存在),如果没到达可以选择重新发送或者不发送等等,通过return模式来确保如果消息没有被成功映射到队列上要怎么处理(映射不到队列上可能是Routingkey的原因也有可能是没有这个队列)我们可以加上一个死信队列,这样我们如果映射到的队列满了,也可以在死信队列找到我们的消息不至于丢失
2)MQ的可靠性保障通过消息的持久化,队列的持久化,交换机的持久化来保证,首先就是交换机要设置持久化,否则重启MQ后,该交换机信息就没了,我们需要重新声明,但是我们的消息是不会丢失的,因为消息是存储队列中的,队列的持久化也要记得设置,因为消息存储在队列上,如果队列没有持久化,那么重启MQ消息也会消失,最后就是消息持久化,我们设置消息持久化的前提是要设置队列持久化,否则队列丢了即使消息是持久化的,也会丢失(但是即使我们都设置持久化,也有极小的概率会丢失数据,因为我们队列上的消息写入硬盘,并不是来一个消息写一个,而是有一个缓冲区,我们缓冲区到达一定限制才会一次性写入硬盘,这样也能保证我们的效率)
3)消费者的可靠性主要有自动确认和手动确认两种方式,自动确认是不可靠的,因为自动确认是只要消息到达了消费者就确认,如果我们消费者消费失败,那么我们消息就会丢失,我们可以使用手动确认保证消费者的可靠性,这样如果我们业务有异常或者有网络问题,我们可以不进行确认,我们可以选择重试,或者直接把这条消息放到死信队列,我们可以进行人工处理
5.RabbitMQ怎么保证消息顺序性
相关面试题:RabbitMQ怎么保证消息的顺序性? 如何保证消息能够有序消费?
我们要先说RabbitMQ的顺序性分为局部顺序性和全局顺序性
全局顺序性很难保障而且使用场景很少,我们可以类似于TCP使用序号+消费者缓冲区来实现,通过序号在消费者缓冲区来排列实现有序
那么局部有序就比较好保障,我们可以使用单队列单消费者(这个由我们RabbitMQ自动保障不需要我们额外做处理) 如果我们嫌这样吞吐量比较低,我们可以使用分区消费,我们可以引入一个id,把同样的id(这个同样id是一个概念,也可以是hash过后同样的id)的放到一个队列,然后给这个队列分一个消费者,本质上也是单队列单消费者
但是RabbitMQ本身不支持分区消费,所以需要业务逻辑实现,我们可以使用Spring-cloud-stream来实现
也可以通过业务逻辑判断,比如在消费端内部实现消息排序顺序
6.如果保证消息消费时的幂等性
相关面试题:RabbitMQ怎么保证消息不被重复消费? 消息或者请求存在重复消费问题吗?
怎么解决MQ重复消费的问题?
解决方法:
1) 通过引入全局唯一ID:可以是UUID也可以是自增ID,只要保证ID不重复即可,这样我们消费一个消息,就把消息的ID放到数据库中
然后我们每次消费消息时,我们要判断消息的ID是否存在于数据库中,如果不存在,我们就把消息消费后把ID放到数据库,如果存在,我们放弃消费这一条消息
2) 业务逻辑判断:在业务逻辑层面实现消息处理的幂等性,就比如我们先判断数据库中是否有相关数据记录,或者使用乐观锁机制避免已被其他事务更改的数据,或者检查相关业务的状态,如果是未处理,我们再进行处理
7.RabbitMQ有那些特性?
1)发送方确认
2)持久化
3)消费者确认
4)重试机制
5)TTL
6)死信队列
7)延迟队列
8.介绍下RabbitMQ的死信队列
相关面试题:RabbitMQ的死信队列以及应用场景
回答问题从以下三个方面来:死信队列的概念,死信的来源,死信队列的应用场景
死信是一种因为一些特殊原因(消息过期,消息被消费者拒绝或者队列满了)而无法被正常消费的消息,死信队列就是用来存储死信的队列
死信的应用场景可以应用在支付场景中
我们用户支付订单,支付系统会给我们订单系统返回当前订单的支付状态
为了保障支付信息不丢失,需要使用死信队列机制,当消息消费异常时,会放到死信队列中(有可能存在用户支付,但是消息没有被消费或者异常拒绝的情况),此时我们放到死信队列中,再对这个数据进行处理(可能是人工确认)
我们也可以通过死信队列来做错误日志收集,或者我们可以使用TTL+死信队列来实现延迟队列的效果
9.介绍下RabbitMQ延迟队列
相关面试题:RabbitMQ延迟队列的实现
我们也可以从三个方面回答:概念 应用场景 实现方式
延迟队列是一种特殊的队列,在消息发送后消费者并不会立刻收到消息,等过一段时间,才让消费者接收并处理消息
我们可以将延迟队列应用到定时发布场景,比如我们要定时发送一篇博客,我们就可以使用延迟队列来发布,也可以用在订单支付,我们用户在点击购买时,我们会设置一个延迟的消息放到延迟队列中,等时间到了用户还没有支付成功,那么就会销毁这个订单,也可用于只能家电的定时功能
我们可以通过TTL+死信队列的方式来实现,也就是通过TTL设置延迟时间,但是用户并不订阅正常的队列,而是订阅死信队列,这样过期时间到了,消息过期会放到死信队列中,然后我们用户就可以在死信队列中拿到消息,实现延迟功能(但是这样会有一些缺陷,也就是顺序问题,这样我们在TTL那篇博客有讲)
我们也可以使用延迟插件来解决 这个插件会给我们提供一个新的交换机,这个交换机可以实现延迟功能
问:TTL+死信和延迟插件的优缺点
TTL+死信:优点:比较灵活,不需要我们引入其他插件
缺点:有消息的顺序问题,可能会有错误
延迟插件:优点:没有消息的顺序问题
缺点:需要我们引入插件,同时会有一些版本问题,需要运维人员
10.介绍下RabbitMQ的工作模式
相关面试题:RabbitMQ的几种模式有哪些
我们看一张图就可以解决
同时我们要知道交换机是有多种的,有dirct(定向),topic(通配符),fanout(广播),headers
11.消息积压的原因,如果处理
相关面试题:MQ消息堆积问题,如何解决MQ的数据囤积
消息积压的原因:消息生产过快,消费者消费能力不足,网络问题,RabbitMQ服务配置低
消费者消费能力不足可能是因为:业务逻辑太复杂,代码的逻辑性能低,消费者异常处理问题,系统资源问题
解决办法:
我们可以通过限制消息的生产速率减轻消息生产速度,设置ttl,把消息转入死信队列等有空时再进行处理
我们消费者优化代码,或者多加几个队列共同消费设置消息分发,当一个消费者阻塞,把消息分发给其他消费者消息发生异常,设置重试策略,或者转入死信队列
如果是资源问题,就只能提高配置
12.RabbitMQ是推模式还是拉模式
RabbitMQ支持推模式(队列把消息主动给消费者)和拉模式(消费者从队列中主动获取消息)
但是主要是基于推模式来工作的(推模式会把队列的所有消息都给消费者),它的核心设计是让消息队列中的消费者接收到生产者生产的所有消息,使用channel.basicConsume方法订阅队列,RabbitMQ就会把消息推送到订阅该队列的消费者,如果只是想获取单条消息,而不是持续订阅就使用我们的拉模式,使用channel.basicGet
总结:
推模式:能够一次性获取到所有的消息,对消息获取更加实时,适合对数据实时性要求比较高的场景,就比如监控系统,报表系统
拉模式:一次只能够拉取到队列的一条消息,可以按照自己的速度来拉取消息,避免消息积压,适合需要流量控制的场景
相关文章:
RabbitMQ---面试题
常见面试题 1.MQ的作用及应用场景 类似问题:项目什么情况下用到了MQ,为什么要用MQ MQ的主要应用场景,消息队列的应用场景,为什么说消息队列可以削峰 首先MQ是一种用来接收和转发消息的队列,常见的应用常见如下&…...
CSS中相对定位和绝对定位详解
文章目录 CSS中相对定位和绝对定位详解一、引言二、相对定位1、相对定位的概念1.1、代码示例 三、绝对定位1、绝对定位的概念1.1、代码示例 四、相对定位与绝对定位的区别五、使用示例六、总结 CSS中相对定位和绝对定位详解 一、引言 在CSS布局中,定位是一种强大的…...
【深度学习基础】多层感知机 | 权重衰减
【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上,结合当代大数据和大算力的发展而发展出来的。深度学习最重…...
[cg] 使用snapgragon 对UE5.3抓帧
最近想要抓opengl 的api,renderdoc在起应用时会闪退(具体原因还不知道),试了下snapgraon, 还是可以的 官网需要注册登录后下载,官网路径:Developer | Qualcomm 为了方便贴上已经下载好的exe安装包&#x…...
Java 集合框架介绍
Java学习资料 Java学习资料 Java学习资料 在 Java 编程中,集合框架是一个强大且常用的工具,它为存储和操作一组对象提供了统一的体系结构。通过集合框架,我们能够高效地管理数据,提升程序的灵活性和可维护性。 一、集合框架的概…...
【博客之星】2024年度创作成长总结 - 面朝大海 ,春暖花开!
没关系的,大家都会做错选择,会 莫名其妙掉眼泪,走在路上会突然崩溃, 但这并不影响我们去看看晚霞, 再次爱上这个世界。 面朝大海 ,春暖花开! about meReviewLife about me 现在我是一名24级计算机类的…...
windows11关闭系统更新详细操作步骤
文章目录 1.打开注册表2.修改注册表内容2.1 新建文件2.2 修改值 3.修改设置 1.打开注册表 winR输入regedit(如下图所示) 2.修改注册表内容 进HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings 2.1 新建文件 右侧界面右键即可 2.2 修改值 重命名为如下…...
医学图像分析工具09.1:Brainstorm安装教程
1. 安装前准备 **官方安装包和数据:**https://neuroimage.usc.edu/bst/download.php **官方安装教程:**https://neuroimage.usc.edu/brainstorm/Installation Matlab 版本要求: 有 Matlab: R2009b (7.9) 或更高版本没有 Matlab&…...
蚁群算法 (Ant Colony Optimization) 算法详解及案例分析
蚁群算法 (Ant Colony Optimization) 算法详解及案例分析 目录 蚁群算法 (Ant Colony Optimization) 算法详解及案例分析1. 引言2. 蚁群算法 (ACO) 算法原理2.1 蚂蚁觅食行为2.2 算法步骤2.3 数学公式3. 蚁群算法的优势与局限性3.1 优势3.2 局限性4. 案例分析4.1 案例1: 旅行商…...
鸿蒙next 自定义日历组件
效果图预览 20250124-113957 使用说明 1.选择日期左右箭头,实现每月日历切换,示例中超出当前月份,禁止进入下一月,可在代码更改 2.日历中显示当前选择的日期,选中的日期颜色可自定义 3.日历中可展示历史记录作为数据…...
Android BitmapShader简洁实现马赛克,Kotlin(二)
Android BitmapShader简洁实现马赛克,Kotlin(二) 这一篇 Android BitmapShader简洁实现马赛克,Kotlin(一)-CSDN博客 遗留一个问题,xml定义的MyView为wrap_content的宽高,如果改成其…...
MATLAB编写遗传算法【Genetic Algorithm(GA)】求解函数最大值
一、遗传算法基础知识 来自B站视频的笔记: 【超容易理解】手把手逐句带你解读并实现遗传算法的MATLAB编程(结合理论基础)_哔哩哔哩_bilibili 1、遗传算法 使用“适者生存”的原则,在遗传算法的每一代中,…...
remove和delete应用场景
"Remove" 和 "delete" 都有“移除、去除”的意思,但它们在使用时有一些细微的区别,通常根据上下文来决定使用哪一个。以下是它们的主要区别: 1. Remove "Remove" 是一个相对通用的词,指的是从某个…...
Redis 详解
简介 Redis 的全称是 Remote Dictionary Server,它是一个基于内存的 NoSQL(非关系型)数据库,数据以 键值对 存储,支持各种复杂的数据结构 为什么会出现 Redis? Redis 的出现是为了弥补传统数据库在高性能…...
亲测有效!解决PyCharm下PyEMD安装报错 ModuleNotFoundError: No module named ‘PyEMD‘
解决PyCharm下PyEMD安装报错 PyEMD安装报错解决方案 PyEMD安装报错 PyCharm下通过右键自动安装PyEMD后运行报错ModuleNotFoundError: No module named ‘PyEMD’ 解决方案 通过PyCharm IDE python package搜索EMD-signal,选择版本后点击“install”执行安装...
Java 设计模式 二 单例模式 (Singleton Pattern)
单例模式 (Singleton Pattern) 是一种常见的设计模式,属于创建型模式。它的核心思想是确保一个类只有一个实例,并提供一个全局访问点来获取该实例。通常用于那些需要全局控制的场景,比如配置管理、日志系统、数据库连接池等。 1. 单例模式的…...
golang网络编程
socket编程 socket图解 Socket是BSD UNIX的进程通信机制,通常也称作”套接字”,用于描述IP地址和端口,是一个通信链的句柄。Socket可以理解为TCP/IP网络的API,它定义了许多函数或例程,程序员可以用它们来开发TCP/IP网…...
kotlin内联函数——takeIf和takeUnless
1.takeIf 当对一个对象调用takeIf时,如果对象满足给定的判断条件,则返回该对象;否则,返回null。因此,takeIf是对单个对象进行过滤的函数。例如, class User {var name: String? nullvar age 99fun set…...
计算机网络 (54)系统安全:防火墙与入侵检测
前言 计算机网络系统安全是确保网络通信和数据不受未经授权访问、泄露、破坏或篡改的关键。防火墙和入侵检测系统(IDS)是维护网络系统安全的两大核心组件。 一、防火墙 定义与功能 防火墙是一种用来加强网络之间访问控制的特殊网络互联设备,它…...
第38周:猫狗识别 (Tensorflow实战第八周)
目录 前言 一、前期工作 1.1 设置GPU 1.2 导入数据 输出 二、数据预处理 2.1 加载数据 2.2 再次检查数据 2.3 配置数据集 2.4 可视化数据 三、构建VGG-16网络 3.1 VGG-16网络介绍 3.2 搭建VGG-16模型 四、编译 五、训练模型 六、模型评估 七、预测 总结 前言…...
【力扣Hot 100】矩阵1
矩阵置零:1. 开两个数组判断该行/该列是否有0;2. 用第0行/第0列分别判断该列/该行是否有0 螺旋矩阵:记录方向,一直按某方向前进,遇到障碍方向就变一下 1. 矩阵置零 给定一个 *m* x *n* 的矩阵,如果一个元…...
量子编程语言:Qiskit 与 Cirq
在量子计算的领域,开发者已经可以使用一些专门为量子计算设计的编程语言和框架。其中,Qiskit 和 Cirq 是两个非常流行的选择,它们为不同的量子计算机提供编程接口,帮助开发者理解量子电路的设计和执行。 1. Qiskit Qiskit 是 IBM…...
leetcode 124. 二叉树中的最大路径和
题目:124. 二叉树中的最大路径和 - 力扣(LeetCode) 定义一个节点的“最大单向路径和”是single,single有以下几种情况: 只有该节点该节点左儿子的single该节点右儿子的single 设答案是节点 node 为根节点࿰…...
程序员转型测试:解锁漏洞挖掘新旅程
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 程序…...
基于Springboot用axiospost请求接收字符串参数为null的解决方案
问题 今天在用前端 post 请求后端时发现,由于是以 Json对象的形式传输的,后端用两个字符串形参无法获取到对应的参数值 前端代码如下: axios.post(http://localhost:8083/test/postParams,{a: 1, b:2} ,{Content-Type: application/jso…...
# AI绘图中的Embedding、CLIP、Flux中的Clip与LCM SDXL加速生成解析
AI绘图中的Embedding、CLIP、Flux中的Clip与LCM SDXL加速生成解析 在现代AI绘图和深度学习中,涉及了多个复杂的概念和技术,这些技术在图像生成、训练加速以及多模态学习等方面起着至关重要的作用。在这篇博客中,我们将讨论几个关键概念&…...
警企联动齐发力、共筑反诈“防护墙”
2025年1月10日是第五个中国人民警察节,南通移动联合南通公安反诈中心,深入社区商圈,开展防范电信网络诈骗宣传活动,进一步增强广大人民群众的反诈意识和能力,全力守护好群众的“钱袋子”。 当日,活动现场一大早就呈现出一片忙碌景象,工作人员支起摊位,将各类精心制作的反诈宣传…...
Node.js HTTP模块详解:创建服务器、响应请求与客户端请求
Node.js HTTP模块详解:创建服务器、响应请求与客户端请求 Node.js 的 http 模块是 Node.js 核心模块之一,它允许你创建 HTTP 服务器和客户端。以下是一些关键知识点和代码示例: 1. 创建 HTTP 服务器 使用 http.createServer() 方法可以创建…...
Alibaba Spring Cloud 十七 Sentinel熔断降级
概述 在微服务架构中,熔断与降级是保证系统稳定性的重要机制,能有效防止故障蔓延或雪崩效应。当某个服务出现异常、延迟过高或错误率过高时,触发熔断保护,将该服务“隔离”一段时间,避免影响整体系统的吞吐和可用性。 …...
linux——网络基础
文章目录 目录 文章目录 踏入网络世界:探索 Linux 网络的无垠天地 一、网络发展 早期单机处理模式 网络发展的需求催生 网络发展后的优势对比 二、局域网or广域网 典型局域网架构 广域网连接多个局域网 二者关系 三、协议 语言层与汉语协议 通信设备层与电话机协议 …...
Spring Boot 集成 WebClient 实战教程 实现同步、异步请求处理以及响应式编程、响应式流、响应式Mono
该项目介绍springboot集成WebClient 实现服务的请求操作 示例中演示了,如何配置WebClient的请求头,请求参数等相关参数,实现同步、异步请求处理以及响应式编程、响应式流、响应式Mono。 为什么使用WebClient 不用RestTemplate 在 Spring Framework 5.0 及更高版本中,Res…...
健身房项目 Uniapp+若依Vue3版搭建!!
本次系统实现主要负责前端前端功能的实现。其中系统前端主要分为三大部分,首页,教练列表页,我的页面。 首页 首页的实现效果如图 1.会员卡组件 首页的Vip会员卡部分,团课活动的DataPicker,团课选择都采用了组件化封…...
(2)STM32 USB设备开发-USB虚拟串口
例程:STM32USBdevice: 基于STM32的USB设备例子程序 - Gitee.com 本篇为USB虚拟串口教程,没有知识,全是实操,按照步骤就能获得一个STM32的USB虚拟串口。本例子是在野火F103MINI开发板上验证的,如果代码中出现一些外设的…...
ubuntu上python setup.py install报错:error: expected initializer before ‘__s128’
问题场景:安装torchsparse时候执行python setup.py install 报错: /usr/include/linux/types.h:12:27: error: expected initializer before ‘__s128’12 | typedef __signed__ __int128 __s128 __attribute__((aligned(16)));| …...
解锁.NET Standard库:从0到1的创建与打包秘籍
一、引言 在当今的软件开发领域,跨平台开发已成为一种趋势。随着不同操作系统和设备的多样化,开发人员需要确保他们的代码能够在多个平台上运行,以满足更广泛的用户需求。.NET Standard 库应运而生,它定义了一组公共 API…...
Mac 查看 Java SDK 和 Android SDK 的路径
1. Mac 如何查看 JavaSDK的路径 /usr/libexec/java_home -V2. Mac 如何查看 Android SDK 的路径 在 Android Studio 中按 cmd,打开设置,然后如下方式,第三步如果有值就是第三步的信息。 第三步如果没有值,点开Edit,值在下方&…...
6. 马科维茨资产组合模型+政策意图AI金融智能体(DeepSeek-V3)增强方案(理论+Python实战)
目录 0. 承前1. 幻方量化 & DeepSeek1.1 What is 幻方量化1.2 What is DeepSeek 2. 重写AI金融智能体函数3. 汇总代码4. 反思4.1 不足之处4.2 提升思路 5. 启后 0. 承前 本篇博文是对上一篇文章,链接: 5. 马科维茨资产组合模型政策意图AI金融智能体(Qwen-Max)增…...
freeswtch目录下modules.conf各个模块的介绍【freeswitch版本1.6.8】
应用模块(applications) mod_abstraction: 为其他模块提供抽象层,有助于简化模块开发,让开发者能在统一框架下开发新功能,减少与底层系统的直接交互,提高代码可移植性和可维护性。 mod_av&#…...
Spark/Kafka
文章目录 项目地址一、Spark1. RDD1.1 五大核心属性1.2 执行原理1.3 四种创建方式二、Kafka2.1 生产者(1)分区器(2)生产者提高吞吐量(3) 生产者数据可靠性数据传递语义幂等性和事务数据有序2.2 Broker(1)Broker工作流程(2)节点服役和退役2.3 副本(1)Follower故障细…...
【Linux】华为服务器使用U盘安装统信操作系统
目录 一、准备工作 1.1 下载UOS官方系统 1.2制作启动U盘 1.3 服务器智能管理系统iBMC 二、iBMC设置U盘启动 一、准备工作 1.1 下载UOS官方系统 服务器CPU的架构是x86-64还是aarch64),地址:统信UOS生态社区 - 打造操作系统创…...
数据库性能优化(sql优化)_SQL执行计划02_yxy
数据库性能优化_SQL执行计划详解02 常用操作符解读1.1 表扫描类型操作符1.1.1 CSCN 聚集索引扫描1.1.2 CSEK 聚集索引数据定位1.1.3 SSEK 二级索引数据定位1.1.4 SSCN 直接使用二级索引进行扫描1.2 其他常见操作符1.2.1 BLKUP 二次扫描1.2.2 SLCT 选择1.2.3 PRJT 投影1.2.4 NSE…...
02.05、链表求和
02.05、[中等] 链表求和 1、题目描述 给定两个用链表表示的整数,每个节点包含一个数位。 这些数位是反向存放的,也就是个位排在链表首部。 编写函数对这两个整数求和,并用链表形式返回结果。 2、解题思路 本题要求对两个链表表示的整数…...
FPGA实现光纤通信(3)——光纤8b/10b编码数据回环
前言 光纤通信属于高速串行通信,具有较高的数据传输速率,通常用于服务器以及通信设备之间用于高速数据交换,对于xilinx 7系列的FPGA,内部具有集成的高速接口用于实现光纤通信。本次就来实现8b/10b编码数据回环。 测试环境:vivado版本:2020.02 FPGA芯片:XC7K70T 测试说…...
Python!从0开始学爬虫:(一)HTTP协议 及 请求与响应
前言 爬虫需要基础知识,HTTP协议只是个开始,除此之外还有很多,我们慢慢来记录。 今天的HTTP协议,会有助于我们更好的了解网络。 一、什么是HTTP协议 (1)定义 HTTP(超文本传输协议ÿ…...
神经网络基础详解
神经元结构 在探讨神经网络的基础时,神经元结构是一个关键概念。神经元是神经网络的基本组成单元,模拟了生物神经元的功能。其结构包括: 细胞体 :负责处理和整合输入信息 树突 :接收来自其他神经元的输入信号 轴突 :将处理后的信息传递给其他神经元 神经元通过加权求和和…...
使用Chrome和Selenium实现对Superset等私域网站的截图
最近遇到了一个问题,因为一些原因,我搭建的一个 Superset 的 Report 功能由于节假日期间不好控制邮件的发送,所以急需一个方案来替换掉 Superset 的 Report 功能 首先我们需要 Chrome 浏览器和 Chrome Driver,这是执行数据抓取的…...
2025展望:“安全计算”平价时代加速到来,数据流通产业兴起
大数据产业创新服务媒体 ——聚焦数据 改变商业 2024年,数据要素产业元年开启。 这是建章立制的一年:从年初《“数据要素”三年行动计划(2024—2026年)》开始,这一年政策密集出台,涵盖公共数据资源开发利用…...
达梦拷贝DM_HOME的复制安装
近期一个项目需求,需要在没有安装包的情况下,将达梦数据库安装到虚机上(生产机上安装了达梦),故采用直接打包生产机DM_HOME的方式拷贝至虚机,再依次执行达梦的部分指令完成安装。以下为验证的步骤ÿ…...
九、CSS工程化方案
一、PostCSS介绍 二、PostCSS插件的使用 项目安装 - npm install postcss-cli 全局安装 - npm install postcss-cli -g postcss-cli地址:GitHub - postcss/postcss-cli: CLI for postcss postcss地址:GitHub - postcss/postcss: Transforming styles…...
二叉树的最大深度(C语言详解版)
一、摘要 嗨喽呀大家,leetcode每日一题又和大家见面啦,今天要讲的是104.二叉树的最大深度,思路互相学习,有什么不足的地方欢迎指正!好啦让我们开始吧!!! 二、题目简介 给定一个二…...