消息队列实战指南:三大MQ 与 Kafka 适用场景全解析

前言:在当今数字化时代,分布式系统和大数据处理变得愈发普遍,消息队列作为其中的关键组件,承担着系统解耦、异步通信、流量削峰等重要职责。ActiveMQ、RabbitMQ、RocketMQ 和 Kafka 作为市场上极具代表性的消息队列产品,各自拥有独特的功能特性与适用场景。
本博客旨在深入剖析这四种消息队列的适用场景,通过详细阐述与丰富实例,为技术人员在架构选型时提供清晰且实用的参考。无论你是初涉分布式开发领域的新手,还是经验丰富的架构师,都能从中获取到有价值的信息,帮助你在面对复杂的业务需求时,做出最适合的技术选择。
此前,我已发布了Kafka的搭建手册,在接下来的日子里,我将持续发力,陆续推出ActiveMQ、RabbitMQ以及RocketMQ这三大消息中间件的详细搭建与应用指南,以助力大家更全面、深入地掌握这些关键技术,满足不同业务场景下的需求。

一、什么是消息队列?

消息队列是在消息的传输过程中保存消息的容器,用于接收消息并以文件的方式存储。一个消息队列可以被一个或多个消费者消费,包含以下三个元素:

  • Producer:消息生产者,负责产生和发送消息到Broker。
  • Broker:消息处理中心,负责消息存储、确认、重试等,一般其中会包含多个Queue。
  • Consumer:消息消费者,负责从Broker中获取消息,并进行相应处理。

二、消息队列模式

  • 点对点模式:多个生产者可以向同一个消息队列发送消息,一个具体的消息只能由一个消费者消费。
  • 发布/订阅模式:单个消息可以被多个订阅者并发地获取和处理。

三、MQ 与 Kafka 的典型适用场景剖析

1、消息队列应用场景

  • 应用解耦
    • 消息队列减少了服务之间的耦合性,不同的服务可以通过消息队列进行通信,而不用关心彼此的实现细节。例如,在电商系统中,订单服务、库存服务和物流服务之间通过消息队列传递信息,当库存服务需要升级时,不会影响订单服务和物流服务的正常运行。
  • 异步处理
    • 消息队列本身是异步的,它允许接收者在消息发送很长时间后再取回消息。比如在用户注册场景中,注册成功后系统会发送欢迎邮件,但邮件发送可能耗时较长,将邮件发送任务放入消息队列,用户注册流程无需等待邮件发送完成,即可快速返回给用户注册成功的结果。
  • 流量削峰
    • 当上下游系统处理能力存在差距的时候,利用消息队列做一个通用的 “载体”,在下游有能力处理的时候,再进行分发与处理。以电商促销活动为例,瞬间大量的订单请求涌入,通过消息队列将这些订单请求暂存,下游订单处理系统按照自身处理能力从队列中逐步获取订单进行处理,避免系统因高并发请求而崩溃。
  • 日志处理
    • 日志处理是指将消息队列用在日志处理中,比如Kafka的应用,解决大量日志传输的问题。在大型分布式系统中,各个服务产生的海量日志可通过Kafka进行收集、传输和存储,方便后续的日志分析和系统监控。
  • 消息通讯
    • 消息队列一般都内置了高效的通信机制,因此也可以用在纯的消息通讯,比如实现点对点消息队列,或者聊天室等。像即时通讯软件中,用户发送的消息可通过消息队列进行高效传递,保证消息的实时性和可靠性。
  • 消息广播
    • 如果没有消息队列,每当一个新的业务方接入,我们都要接入一次新接口。有了消息队列,我们只需要关心消息是否送达了队列,至于谁希望订阅,是下游的事情,无疑极大地减少了开发和联调的工作量。例如在数据共享平台中,数据生产者将数据发送到消息队列,多个不同的业务方作为消费者从队列中订阅所需数据,无需为每个业务方单独开发和对接数据传输接口。

2、三大MQ 与 Kafka 的典型适用场景

ActiveMQ:

  • 企业应用集成:可用于在不同的应用程序之间进行可靠的消息传递,实现系统之间的集成和通信。比如在企业内部,不同部门的业务系统之间需要进行数据交互和协同工作,ActiveMQ可以作为消息中间件来保障消息的可靠传递。
  • 分布式系统:其可扩展性和高可用性特点,使其能够支持分布式系统的构建。在一些分布式架构中,各个节点之间需要进行消息的同步和通信,ActiveMQ可以满足这一需求,确保系统整体的稳定运行。
  • 大消息传输:相较于RabbitMQ在高并发短消息处理上的优势,ActiveMQ在大消息传输方面表现更好。当系统中需要传输较大的数据包,如文件传输、大数据量的报表数据等场景时,ActiveMQ能够更高效地处理。

RabbitMQ:

  • 异步处理:适用于多种异步处理任务,如用户注册后的邮件发送、订单处理等。在电商平台中,用户下单后,订单处理涉及库存管理、支付确认等多个步骤,通过RabbitMQ异步传递订单信息,可提高处理效率,避免用户等待。
  • 应用解耦:支持多种通信模式,如点对点、发布/订阅等,能帮助系统各部分保持低耦合度,便于独立扩展和维护。在微服务架构中,各个微服务之间可通过RabbitMQ进行消息交互,减少服务间的直接依赖。
  • 流量削峰:在面对高并发请求时,RabbitMQ可以作为缓冲层,将请求消息暂存于队列中,然后由后端服务逐步处理。例如在秒杀活动等场景下,大量用户同时发起请求,RabbitMQ能够有效缓解后端服务的压力,避免系统崩溃。
    对消息传递要求较高的业务场景:由于其采用AMQP协议,具备丰富的功能特性,如灵活的消息过滤、异步RPC调用、事务支持以及定时消息等,因此适合在线交易等对消息传递的可靠性、顺序性等要求较高的业务。

RocketMQ:

  • 实时消息处理:设计之初就是为了支持互联网在线业务,非常适合对实时性要求很高的应用场合,如金融交易系统、在线支付等。能够快速地将消息传递给消费者,保障业务的实时性。
  • 顺序消息处理:对于一些要求消息严格按照发送顺序进行消费的应用,如订单状态更新、电商业务中的Binlog消息分发等,RocketMQ通过其独特的设计保证了消息的顺序性。
    事务消息处理:支持分布式事务消息,这对于确保跨多个服务或数据库操作的一致性非常关键,例如在电子商务平台中完成订单创建的同时扣减库存的操作。
  • 大数据分析:虽然Kafka更常被提到用于大数据流处理,但RocketMQ同样可以应用于日志收集、监控数据上报等领域,为后续的数据分析提供支持。
    移动互联网与物联网:鉴于其高效的消息传递能力及可扩展性,广泛应用于移动互联网服务,如即时通讯,以及物联网设备间的通信。其对MQTT协议的支持,使其成为连接海量设备的理想选择之一。
    社交网络活动流:在社交平台中,用户行为产生的大量事件流可以通过RocketMQ快速传播给相关订阅者。

Kafka:

  • 大数据领域的实时计算、日志采集等场景:Kafka是业内标准的选择,社区活跃度高,已成为许多实时数据架构中不可或缺的部分,用于处理数据缓冲与分发任务。其基于磁盘顺序写入与读取的方式优化了I/O操作效率,能够在保持较低硬件成本的同时实现非常高的吞吐量。
  • 大规模数据流处理:其设计初衷就是为了解决大规模数据流处理中的挑战,如日志收集、事件源系统等。在需要处理大量数据的场景下,Kafka的高吞吐量特点尤为突出,能够轻松应对海量数据的持续摄入和处理。
  • 与其他大数据工具集成:Kafka拥有广泛的数据处理框架集成,如Spark、Flink等,这使其成为了构建高效数据管道的强大工具,便于简化整个数据管道架构的设计与实现过程。
    消息系统替代者:可作为传统消息系统的替代品,与传统消息系统相比,Kafka有更好的吞吐量、更好的可用性,这有利于处理大规模的消息。

四、MQ和Kafka的架构、工作原理和优缺点

ActiveMQ

  • 架构
    包含 Producer、Broker、Consumer 等基本组件。Broker 是消息处理中心,可独立部署或嵌入应用。支持多种协议如 STOMP、OpenWire、AMQP 等,可通过这些协议与不同系统交互。
  • 工作原理
    Producer 产生消息并发送到 Broker,Broker 存储消息,Consumer 从 Broker 获取消息进行处理。支持点对点和发布/订阅模式,在点对点模式下,消息被特定消费者接收;发布/订阅模式中,消息可被多个订阅者获取。
  • 优点
    成熟产品,在许多公司有应用(非大规模场景);有多重语言的成熟客户端;支持多种协议,文档丰富。
  • 缺点
    目前社区对 5.x 维护减少,不适合大规模吞吐场景;据用户反馈会出现莫名问题且可能丢失消息;在大规模应用中存在性能瓶颈,如上千个队列的应用场景表现不佳。

RabbitMQ

  • 架构
    基于 AMQP 协议,主要组件有 Producer、Consumer、Broker(包含 Exchange、Queue、Channel 等),由生产者、消费者和服务端组成。Exchange 接收消息并按路由规则将消息路由到 Queue,Channel 是消息读写的操作通道,客户端可建立多个 Channel 进行不同会话任务。生产者连接到Server,建立连接并开启信道,声明交换器和队列,设置属性并通过路由键绑定。消费者也需建立连接和信道以接收消息。
  • 工作原理
    生产者连接到Server,建立连接并开启信道。
    生产者声明交换器和队列,设置相关属性,并通过路由键将交换器和队列进行绑定。
    消费者建立连接,开启信道,便于接收消息。
    生产者发送消息到服务端中的虚拟主机。
    虚拟主机中的交换器根据路由键选择路由规则,将消息发送到不同的消息队列中。
    订阅了消息队列的消费者获取到消息并进行消费。常用交换器类型有 direct、topic、fanout、headers 四种。
  • 优点
    支持几乎所有受欢迎的编程语言,如Java、C、C++、C#、Ruby、Perl、Python、PHP等。
    支持消息路由,可通过不同交换器支持不同种类的消息路由。
    支持消息时序,可通过延时队列指定消息的延时时间和过期时间TTL等。
    支持容错处理,通过交付重试和死信交换器(DLX)来处理消息处理故障。
    提供易用的用户界面,方便用户监控和管理消息Broker。
    社区活跃度高。
  • 缺点
    用 Erlang 用Erlang开发,源码难以理解,不利于二次开发和维护,基本依赖开源社区维护和修复bug。
    吞吐量相对较低,实现机制较重。
    不支持消息有序、持久化较差、不支持消息回溯、伸缩性一般。

RocketMQ

  • 架构
    技术架构中有四大角色NameServer、Broker、Producer和Consumer。NameServer充当注册中心,Broker用于存放Queue,一个Broker可配置多个Topic,一个Topic中存在多个Queue。Broker通过集群部署,提供master/slave结构,slave定时从master同步数据,master宕机时,slave提供消费服务但不能写入消息。
  • 工作原理
    消息模型按主题模型实现,包括Producer Group、Topic、Consumer Group三个角色。
    一个Topic包含多个Queue,生产者组根据主题将消息放入对应Topic,采用轮询等方式找到Queue。
    消费群组和Queue的关系类似Kafka中的消费群组和Partition,不同消费者组互不干扰,一个Queue只能被一个消费者消费,一个消费者可消费多个Queue,通过偏移量记录消费位置。
  • 优点
    高吞吐,借鉴Kafka设计,单一队列有百万消息的堆积能力。
    高伸缩性,有灵活的分布式横向扩展部署架构,整体架构与Kafka类似。
    高容错性,通过ACK机制保证消息正常消费。
    消息可持久化到磁盘中,支持消息回溯。
    在一个队列中能可靠地实现先进先出(FIFO)和严格的顺序传递。
    支持发布/订阅和点对点消息模型,支持拉、推两种消息模式。
    提供docker镜像用于隔离测试和云集群部署,提供配置、指标和监控等功能丰富的Dashboard。
  • 缺点
    不支持消息路由。
    支持的客户端语言不多,目前主要是Java和C++,且C++版本不成熟。
    部分支持消息有序,需将同类消息hash到同一Queue中才能支持顺序,若散落到不同Queue则不能保证顺序。
    社区活跃度一般。

Kafka

  • 架构
    一个典型的Kafka集群包含Producer、broker、Consumer Group、Zookeeper集群。Kafka通过Zookeeper管理集群配置,选举leader,以及在Consumer Group发生变化时进行rebalance。Producer使用push模式将消息发布到broker,Consumer使用pull模式从broker订阅并消费消息。
  • 工作原理
    消息经序列化后,通过不同分区策略(顺序轮询、随机轮询和 key hash 等)找到对应分区,相同主题和分区的消息存放在同一批次里,由独立线程发送到Kafka Broker上。
    分区是Kafka读写数据的最小粒度,可通过分区实现伸缩性。主题的分区可部署在多个不同机器上,消费者通过消费群组完成消费,一个消费者可消费多个分区,但一个分区只能被一个消费者消费。消费者增加会触发Rebalance,不同消费群组互不干涉。
    优点
    高吞吐、低延迟,每秒可处理几十万条消息,最低延迟仅几毫秒。
    高伸缩性,每个主题含多个分区,分区可分布在不同主机的broker中。
    高稳定性,是分布式系统,数据有多个副本,某节点宕机时集群仍能正常工作。
    消息可持久化存储,支持数据备份防丢失,能保证所有消息被消费且仅被消费一次,支持消息回溯。
    有优秀的第三方Kafka Web管理界面Kafka-Manager,在日志领域较成熟,被多家公司和多个开源项目使用。
  • 缺点
    单机超过64个队列/分区时,Load会明显飙高,队列越多,load越高,发送消息响应时间变长。
    不支持消息路由、延迟发送和消息重试。
    社区更新较慢。

五、MQ 与 Kafka 适用场景实例展示:

  • ActiveMQ:适用于企业级应用集成,对多种消息协议兼容,支持分布式事务,消息持久化能力强。例如,在一个银行系统中,涉及多个子系统之间的交互,如账户系统、交易系统、清算系统等,当进行一笔跨行转账时,需要保证各个系统之间的数据一致性,ActiveMQ可以通过支持XA事务来确保整个转账过程的原子性和完整性。
  • RabbitMQ:适合高并发异步处理、微服务通信及分布式任务调度,具备灵活的路由机制和强大的消息队列管理能力。例如,在一个电商网站中,当用户提交订单后,系统需要同时进行库存扣减、订单状态更新、积分计算等多个操作,这些操作可以通过RabbitMQ将任务异步发送到不同的队列中,由相应的消费者进行处理,从而提高系统的响应速度和吞吐量。
  • RocketMQ:常用于电商、金融等大型分布式系统,支持分布式事务消息和消息顺序性。例如,在电商系统的订单处理流程中,从订单创建、支付、发货到确认收货等环节,需要保证消息的顺序性,RocketMQ可以确保这些消息按照正确的顺序被处理,避免出现订单状态混乱的情况。
  • Kafka:主要用于大规模数据实时处理、流计算平台以及数据共享和交换,具有高吞吐量和可扩展性。例如,在一个互联网公司的日志收集系统中,每天会产生大量的用户访问日志、系统日志等,Kafka可以快速地接收和存储这些日志数据,并将其分发给不同的消费者进行实时分析,如统计用户行为、监控系统性能等。

六、MQ 与 Kafka 适用场景总结归纳

  • ActiveMQ 常用于企业级应用集成,它支持多种协议以及分布式事务。以银行多系统转账场景为例,在涉及储蓄系统、支付系统、清算系统等多个系统间的资金流转时,ActiveMQ 能够确保各环节数据的一致性。
  • RabbitMQ 适用于高并发异步处理场景。在电商业务中,当用户下单后,系统需同时执行如库存扣减、生成订单快照、发送下单通知邮件等多个任务。借助 RabbitMQ 灵活的路由策略,以及其对直连、主题、扇出等多种消息模式的支持,系统可以将不同类型的任务消息精准分发给对应的处理模块,高效实现复杂业务逻辑下的消息分发。例如,通过主题模式,将库存相关消息发送到库存管理模块,将邮件通知消息发送到邮件服务模块。
  • RocketMQ 在顺序消息处理和事务消息支持方面表现突出,在电商、金融等大型分布式系统中优势显著。在电商订单流程里,从用户下单、支付成功到商家发货、物流配送及最终的订单完成确认,每个环节都需要严格按照顺序处理消息。以支付成功后的流程为例,RocketMQ 能确保先发送资金到账消息给商家账户系统,再触发库存减少消息给仓储系统,保证整个流程有条不紊。在金融交易系统中,如股票买卖,RocketMQ 的事务消息支持可以保证交易的原子性,确保买卖双方资金和股票的交割准确无误。
  • Kafka 则擅长处理大规模数据实时处理场景。互联网公司每天会产生海量的用户行为日志、系统运行日志等数据。Kafka 凭借其强大的吞吐量和扩展性,能够快速收集这些日志数据,并将其高效分发给实时分析系统。比如,通过 Kafka 将用户在网站上的浏览、点击等行为日志实时传输给数据分析平台,用于实时统计热门商品、用户活跃度等信息,为运营决策提供及时支持。在这里插入图片描述在这里插入图片描述
消息队列技术
├── ActiveMQ
│   ├── 企业应用集成
│   │   ├── 多协议支持
│   │   └── 分布式事务
│   ├── 分布式系统
│   │   ├── 可扩展性
│   │   └── 高可用性
│   └── 大消息传输
│       ├── 文件传输
│       └── 大数据量报表数据
├── RabbitMQ
│   ├── 异步处理
│   │   ├── 用户注册邮件发送
│   │   └── 订单处理
│   ├── 应用解耦
│   │   ├── 点对点通信
│   │   └── 发布/订阅模式
│   ├── 流量削峰
│   │   └── 秒杀活动请求缓冲
│   └── 高要求业务场景
│       ├── 消息过滤
│       ├── 异步RPC调用
│       ├── 事务支持
│       └── 定时消息
├── RocketMQ
│   ├── 实时消息处理
│   │   ├── 金融交易系统
│   │   └── 在线支付
│   ├── 顺序消息处理
│   │   ├── 订单状态更新
│   │   └── Binlog消息分发
│   ├── 事务消息处理
│   │   └── 订单创建与库存扣减
│   ├── 大数据分析
│   │   ├── 日志收集
│   │   └── 监控数据上报
│   ├── 移动互联网与物联网
│   │   ├── 即时通讯
│   │   └── 物联网设备通信
│   └── 社交网络活动流
│       └── 用户行为事件流传播
└── Kafka
    ├── 大数据实时计算
    │   ├── 日志采集
    │   └── 数据缓冲与分发
    ├── 大规模数据流处理
    │   ├── 高吞吐量
    │   └── 海量数据持续摄入
    ├── 大数据工具集成
    │   ├── Spark
    │   └── Flink
    └── 消息系统替代
        ├── 高吞吐量
        └── 高可用性

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/957691.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

win32汇编环境,怎么得到磁盘的盘符

;运行效果 ;win32汇编环境,怎么得到磁盘的盘符 ;以下代码主要为了展示一下原理,应用GetLogicalDrives、GetLogicalDriveStrings函数、屏蔽某些二进制位、按双字节复制内容等。以下代码最多查8个盘,即返回值中的1个字节的信息 ;直接抄进RadAsm可编译运行。…

微软预测 AI 2025,AI Agents 重塑工作形式

1月初,微软在官网发布了2025年6大AI预测,分别是:AI模型将变得更加强大和有用、AI Agents将彻底改变工作方式、AI伴侣将支持日常生活、AI资源的利用将更高效、测试与定制是开发AI的关键以及AI将加速科学研究突破。 值得一提的是,微…

网络编程套接字(二)

目录 TCP网络程序 服务端初始化 创建套接字 服务端绑定 服务端监听 服务端启动 服务端获取连接 服务端处理请求 客户端初始化 客户端启动 发起连接 发起请求 网络测试 多进程版TCP网络程序 捕捉SIGCHLD信号 孙子进程提供服务 多线程版TCP网络程序 线程池版TC…

网站HTTP改成HTTPS

您不仅需要知道如何将HTTP转换为HTTPS,还必须在不妨碍您的网站自成立以来建立的任何搜索排名权限的情况下进行切换。 为什么应该从HTTP转换为HTTPS? 与非安全HTTP于不同,安全域使用SSL(安全套接字层)服务器上的加密代…

渗透测试--攻击常见的Web应用

本文章咱主要讨论,常见Web应用的攻击手法,其中并不完全,因为Web应用是在太多无法囊括全部,但其中的手法思想却值得我们借鉴,所以俺在此做了记录,希望对大家有帮助!主要有以下内容: 1…

外包公司名单一览表(成都)

大家好,我是苍何。 之前写了一篇武汉的外包公司名单,评论区做了个简单统计,很多人说,在外包的日子很煎熬,不再想去了。 有小伙伴留言说有些外包会强制离职,不行就转岗,让人极度没有安全感。 这…

2025 最新flutter面试总结

目录 1.Dart是值传递还是引用传递? 2.Flutter 是单引擎还是双引擎 3. StatelessWidget 和 StatefulWidget 在 Flutter 中有什么区别? 4.简述Dart语音特性 5. Navigator 是什么?在 Flutter 中 Routes 是什么? 6、Dart 是不是…

Spring Boot安全加固:基于Spring Security的权限管理

引言 在当今数字化时代,随着企业信息化程度的不断提高,应用程序的安全性成为了一个至关重要的问题。Spring Boot 作为 Java 生态系统中广泛使用的开发框架,以其简洁、高效的特点深受开发者的喜爱。然而,仅仅依靠 Spring Boot 的默…

论文笔记(六十二)Diffusion Reward Learning Rewards via Conditional Video Diffusion

Diffusion Reward Learning Rewards via Conditional Video Diffusion 文章概括摘要1 引言2 相关工作3 前言4 方法4.1 基于扩散模型的专家视频建模4.2 条件熵作为奖励4.3 训练细节 5 实验5.1 实验设置5.2 主要结果5.3 零样本奖励泛化5.4 真实机器人评估5.5 消融研究 6 结论 文章…

工业缺陷检测实战——基于深度学习YOLOv10神经网络PCB缺陷检测系统

基于深度学习YOLOv10神经网络PCB缺陷检测系统,其能识别六种PCB缺陷:names {0:missing_hole, 1:mouse_bite, 2:open_circuit, 3:short, 4:spur, 5:spurious_copper} CH_names [缺失孔,鼠标咬伤,开路,短路,杂散,伪铜] 具体图片见如下: 第一步…

React+AntDesign实现类似Chatgpt交互界面

以下是一个基于React和Ant Design搭建的简单ChatGPT风格前端交互界面代码框架示例,该示例实现了基本的用户输入、发送请求以及展示回复的功能。假设后端有一个模拟接口来处理请求并返回回复。 1. 项目初始化: 确保你已经安装了Node.js和npm。通过以下命…

FANUC机器人系统镜像备份与恢复的具体步骤(图文)

FANUC机器人系统镜像备份与恢复的具体步骤(图文) 镜像备份: 如下图所示,进入文件—工具—切换设备,找到插入的U盘UT1, 如下图所示,进入U盘目录后,创建目录,这里目录名称为11, 如下图所示࿰

MongoDB 备份与恢复综述

目录 一、基本概述 二、逻辑备份 1、全量备份 2、增量备份 3、恢复 三、物理备份 1、cp/tar/fsync 2、WiredTiger 热备份 3、恢复 四、快照备份 一、基本概述 MongoDB 是一种流行的 NoSQL 数据库,它使用文档存储数据,支持丰富的查询语言和索引…

【Qt 常用控件】显示类控件——QLabel

目录 1.QLabel 1.1 textFormat 文本类型 普通文本和富文本 Markdown格式 1.2 alignment 文本对齐方式 1.3 wordWrap 自动换行 1.4 indent 文本缩进 1.5 margin 边距 1.6 buddy,qlabel伙伴 1.7 pixmap图片 和 scaledContents自动填充 1.QLabel 功能&#x…

npm install 报错:Command failed: git checkout 2.2.0-c

[TOC](npm install 报错:Command failed: git checkout 2.2.0-c) npm install 报错:Command failed: git checkout 2.2.0-c export NODE_HOME/usr/local/node-v14.14.0-linux-x64 npm config set registry https://registry.npmmirror.com 使用如上环…

Oracle 创建并使用外部表

目录 一. 什么是外部表二. 创建外部表所在的文件夹对象三. 授予访问外部表文件夹的权限3.1 DBA用户授予普通用户访问外部表文件夹的权限3.2 授予Win10上的Oracle用户访问桌面文件夹的权限 四. 普通用户创建外部表五. 查询六. 删除 一. 什么是外部表 在 Oracle 数据库中&#x…

戴尔电脑用u盘重装系统_戴尔电脑用u盘重装win10系统教程

戴尔电脑用u盘重装系统?戴尔电脑这几年默认预装win10家庭版和win11家庭版。有的用户用上了预装win11家庭版的戴尔电脑,使用一段时间依然不习惯,于是想退回win10。但不知道怎么重装win10,这几年的戴尔电脑建议采用U盘方式安装系统比…

【动态规划】--- 斐波那契数模型

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏: 算法Journey 🏠 第N个泰波那契数模型 📌 题目解析 第N个泰波那契数 题目要求的是泰波那契数,并非斐波那契数。 &…

wps数据分析000002

目录 一、快速定位技巧 二、快速选中技巧 全选 选中部分区域 选中部分区域(升级版) 三、快速移动技巧 四、快速录入技巧 五、总结 一、快速定位技巧 ctrl→(上下左右)快速定位光标对准单元格的上下部分双击名称单元格中…

常用集合-数据结构-MySql

目录 java核心: 常用集合与数据结构: 单例集合: 双列集合: 线程安全的集合: ConcurrentHashMap集合: HashTable集合: CopyOnWriteArrayList集合: CopyOnWriteArraySet集合: ConcurrentLinkedQueue队列: ConcurrentSkipListMap和ConcurrentSkipListSet&…