自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(201)
  • 收藏
  • 关注

原创 八大排序算法总结Java代码实现(建议收藏后食用)

排序也称排序算法(Sort Algorithm),排序是将一组数据,依指定的顺序进行排列的过程。假设含有n个记录的序列为{r1,r2,·······,rn},,其相应的关键字分别为{k1,k2,·······,kn}。需要确定1,2·····,n的一种排列 p1,p2,·······,pn,使其相应的关键字满足kp1≤ kp2···· ≤kpn非递增(非递减)关系,即使得序列成为一个按关键字有序的序列{r1,r2,·······,rn},这样的操作称为排序。......

2022-08-05 13:58:09 1142 4

原创 八皇后问题(Java代码实现)

八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即:任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法(92)。注:理论上应该创建一个二维数组来表示棋盘,但是实际上可以通过算法,用一个一维数组即可解决问题. ar[8]={0 ,4,7,5,2,6,1,3/1对应 arr 下标表示第几行,即第几个皇后,a[i]= val , val表示第i+1个皇后,放在第i+1行的第val

2022-06-26 14:07:12 2875

原创 数据结构之递归的应用场景迷宫问题

简单的说:递归就是方法自己调用自己,每次调用的时传入不同的变量。递归有助于开发解决复杂的问题,同时可以使代码变的简洁。直接上代码,用案例说明,我觉得在学校老师好像讲过很多遍了,但是过一端时间自己又写不出来。看一下输出结果吧输出结果迷宫问题是栈这一块很经典的问题。迷宫大致可分为三种,简单迷宫、多通路迷宫:通路间不带环、多通路迷宫:通路间带环,其中带环多通路迷宫是最复杂的,解决它,要把栈与递归结合起来,下来我们来一个一个分析吧,先从简单迷宫开始。给定一个迷宫Maze,并给定迷宫的路口和出口,用递归的方式

2022-06-21 23:53:34 331

原创 中缀表达式转换为后缀表达式Java实现

后缀表达式适合计算机进行计算,但是并不适合我们日常计算习惯,特别是碰到表达式特别长的情况下,因此我们使用栈,我们将中缀表达式准成后缀表达式来进行计算。将中缀表达式“1+((2+3)×4)-5”转换为后缀表达式的过程如下因此结果为: 1 23+4 ×+5-......

2022-06-19 21:35:14 777

原创 数据结构之栈使用逆波兰表达式实现计算

逆波兰表达式又叫做后缀表达式。逆波兰表达式,就是一种将平时我们所写的算术表达式(即中缀表达式)按照一定的规则进行转换后形成的一种表达式形式后编译计算机进行计算。举例中缀表达式:(3+4)×5-6 对应的后缀表达式就是34+5× 6 -,针对后缀表达式求值步骤如下:输出结果...

2022-06-15 23:28:12 362

原创 数据结构之使用栈实现计算器

可以先看这篇中缀表达式转换后缀表达式

2022-06-13 10:05:38 655

原创 SpringBoot整合MongoDB

创建一个SpringBoot应用添加连接配置集合操作创建集合若插入的集合已经存在,则会抛出异常删除集合文档操作相关注解@Document修饰范围:用在类上作用: 用来映射这个类的一个对象为mongo中一条文档数据属性:(value . collection )用来指定操作的集合名称@Id**修饰范围:**用在成员变量、方法上**作用:**用来将成员变量的值映射为文档的_id的值@Field修饰范围:用在成员变量、方法上。作用:用来将成员变量以及值映射为文档中一

2022-06-12 17:23:21 1732 1

原创 MongoDB 之聚合查询

MongoDB 中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。有点类似 SQL 语句中的 count(*)。聚合的表达式:测试一下插入测试数据MongoDB中聚合的方法使用aggregate()。计算每个作者写的文章数$group:以id进行分组num_tutorial :结果别名sum :是否求和,1为真...

2022-06-11 23:29:04 702

原创 MongoDB之索引的操作

首先上官方官方索引连接地址索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录。这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可以要花费几十秒甚至几分钟,这对网站的性能是非常致命的。索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构从根本上说,MongoDB中的索引与其他数据库系统中的索引类似。MongoDB在集合层面上定义了索引,并支持对MongoDB

2022-06-11 22:43:06 304

原创 MongoDB之$type操作符按照类型查询

$type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果。MongoDB 中可以使用的类型如下表所示:插入测试数据使用find()命令查看数据:查询col集合中title为string的数据

2022-06-11 18:29:55 240

原创 MongoDB之查询文档

MongoDB查询文档使用find()方法,find(0方法以结构化的的方式来显示所有文档。query: 可选参数,使用操作符指定查询条件。projection 可选参数,使用投影操作符指定返回的键。查询时返回文档中所有的键,只需要省略改参数即可(默认为省略)。若你需要以结构化的方式来读取数据,可以使用pretty()方法。pretty()方法以结构化的方式来显示所有的文档。并不会对所有的数据数据格式化。只会对文档按照一定的长度进行格式化。如果你熟悉常规的 SQL 数据,通过下表可以更好的理

2022-06-11 17:59:03 419

原创 数据结构之栈的应用场景

如题:请输入一个表达式表达式 7 * 2 * 2 - 5 + 1 - 5 + 3 - 3试问:计算机底层是如何得到结果的?但是计算机是理解这个算式的,对于计算机来说,他收到的是一个字符串,因此就要想一个办法,把他的数组拆出来,然后还得运算符是什么,还要考虑运算符的优先级。要解决这个问题就需要用到栈。元素入栈如下如所示元素出栈如下图所示栈的一下应用场景因为栈是一种有序表,当然可以使用数组的结构来存储栈的数据内容,如下代码演示数组模拟栈的出栈和入栈操作。输出结果...

2022-06-11 11:53:33 1436

原创 单向环形链表之约瑟夫问题

约瑟夫问题,是一个计算机科学和数学中的问题,在计算机编程的算法中,类似问题又称为约瑟夫环,又称“丢手绢问题”。约瑟夫问题是个有名的问题:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。例如N=6,M=5,被杀掉的顺序是:5,4,6,2,3。分析:用一个不带头结点的循环链表来处理Josephus 问题,首先构成一个有n个结点的单循环链表。由k结点起从1开始计数,记到m时,对应结点从链表删除。然后从被删除结点的下一个节点又从1开始计数,直到最后一个节点从链表中删除。对于单链

2022-06-09 20:56:35 1044

原创 数据结构之双向链表(Java代码)

首先要明白单链表,对单链表还比较朦胧的可以去下面的链接扫一眼。数据结构之单链表超详细说明:分析双向链表的遍历,添加,修改,删除的操作思路===》代码实现l)遍历方和单链表一样,只是可以向前,也可以向后查找添加(默认添加到双向链表的最后)(1)先找到双向链表的最后这个节点(2) temp.next = newHeroNode(3) newHeroNode.pre = temp;修改思路和原来的单向链表一样删除(1)因为是双向链表,因此,我们可以实现自我删除某个节点(2)直接找到要删除的这个节点

2022-06-06 22:58:25 110

原创 数据结构之单链表超详细

链表是有序的列表,它在内存中存储结构如下:下图是带头结点的链表简单的描述一下:头指针head 指向地址150的data域a1,a1的next域指向110的地址的data域a2,,依次类推。从上图我们可以得到如下信息:单链表(带头结点)逻辑结构示意图如下:使用带 head头的单向链表实现–水浒英雄排行榜管理完成对英雄人物的增删改查操作。输出结果目前insert插入没有考虑编号,怎么根据no排序了?添加结点的时候,根据排名将结点插入到指定的位置(如果这个位置有人,则添加失败,并提示。)输出结果

2022-06-05 19:41:36 979 1

原创 队列的应用场景和实现

队列是一个有序列表,可以用数组或者是链表来实现。队列的两端都"开口",要求数据只能从一端进,从另一端出。通常,称进数据的一端为 “队尾”,出数据的一端为 “队头”,数据元素进队列的过程称为 “入队”,出队的过程称为 “出队”。队列中数据的进出要遵循 “先进先出” 的原则,即最先进队列的数据元素,同样要最先出队列队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front 队头)进行删除操作,而在表的后端(rear 队尾)进行插入操作拿排队买票来说,所有的人排成一队,先到者排的就靠前,后到者只能从队尾

2022-06-03 11:48:35 1417

原创 稀疏数组SparseArray 的应用场景

看一个实际的需求。将下图的棋盘保存。可以看着这个棋盘是11*11的棋盘,棋盘中现在有两个棋子。有一个最简单的办法就是使用二维数组,将棋盘保存下来。那么这个二维数组就有11行11列。假设右图中1表示黑子,2表示蓝色的棋子。第二行第三列是一个黑子,第三行的第四列是蓝色棋子。那么问题来了哦把这个棋盘转换成二维数组,应该很简单吧,右图中可以看到该二维数组中的很多默认值都是0,因此记录了很多没有意义的数据。怎么办呢?上图中,第一行记录数组的行和列为6行7列,值记录数组中一共有多少个不同的值。下面的每一行记录每一个

2022-06-01 23:04:40 306

原创 MongoDB文档的CRUD操作

注意:在mongodb中每个文档都会有一个_id作为唯一标识,_id默认会自动生成如果手动指定将使用手动指定将使用手动指定的值作为_id 的值。参数说明:query:可选 删除的文档的条件。justOne:可选 如果设置为true或者1,则只删除一条文档,如果不设置改参数,或使用默认值false,则删除所有匹配条件的文档。writeConcern:可选 抛出异常的级别.这样写是删除全部?no只要要穿一个空参数,这里我就不执行了。参数说明:query : update的查询条件,类似sql u

2022-05-31 23:27:40 163

原创 MongoDB集合的相关操作

新建一个数据库xiang查看数据库xiang中的集合可以看到数据库xiang中没有集合。那就创建一个集合新建一个集合useroptions参数注意:如果我们向一个不存在的集合插入数据的时候,集合也会自动创建。

2022-05-31 21:46:31 138

原创 MongoDB的核心概念以及查询的一些基操

库(DataBase)MongoDB中的库就类似于传统关系型数据库中库的概念,用来通过不同的库隔离不同的应用数据。MongoDB中可以建立多个数据库。每一个数据库都有自己的集合和权限,不同的数据库也放置在不同的文件中。默认的数据库为test,数据库存储在启动指定的data目录中。集合(Collection)集合就是MongoDB文档组,类似于RDBMS(关系数据库管理系统:Relation DataBase Management System)中表的概念。集合存在于数据库中,一个库中可以创建多个集

2022-05-30 23:20:01 272

原创 MongoDB在centos7安装

安装传统方式安装下载MongDB前往下载上传MongoDB到CcentOS解压启动MongoDB./mongod --port=27017 --dbpath=../data --logpath=../logs/mongo.log--port 指定服务监听端口号 默认为27017--dbpath 指定MongoDB数据存放目录 启动要求目录必须存在 默认/data/db--logpath 指定MongoDB的日志存放位置客户端连接 ./mongo --port=27017

2022-03-26 14:57:43 622

原创 MongoDB 是什么v5.0

简介官方文档地址 MongoDBMongoDB是一个文档数据库,旨在简化应用程序开发和扩展。MongoDB是一个基于分布式文件存储 的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实

2022-03-26 13:38:24 152

原创 JWT令牌是什么

什么是JWT令牌JWT是JSON Web Token的缩写,即JSON Web令牌,是一种自包含令牌。JWT的使用场景:1、一种情况是webapi,类似之前的阿里云播放凭证的功能2、另一种情况是多web服务器下实现无状态分布式身份验证JWT官网有一张图描述了JWT的认证过程JWT的作用JWT 最重要的作用就是对 token信息的防伪作用JWT的原理:1、一个JWT由三个部分组成:JWT头、有效载荷、签名哈希2、最后由这三者组合进行base64编码得到JWTJWT令牌的组成典

2022-03-13 21:37:14 1248

原创 RabbitMQ集群实现镜像队列(高可用)

镜像队列为什么要使用镜像?如果 RabbitMQ 集群中只有一个 Broker 节点,那么该节点的失效将导致整体服务的临时性不可用,并且也可能会导致消息的丢失。可以将所有消息都设置为持久化,并且对应队列的durable属性也设置为true,但是这样仍然无法避免由于缓存导致的问题:因为消息在发送之后和被写入磁盘井执行刷盘动作之间存在一个短暂却会产生问题的时间窗。通过 publisherconfirm 机制能够确保客户端知道哪些消息己经存入磁盘,尽管如此, 一般不希望遇到因单点故障导致的服务不可用。引入镜

2021-12-14 17:24:35 3622

原创 基于CentIOS7搭建RabbitMQ 集群

集群(clustering)为什么要使用clustering最开始我们介绍了如何安装及运行 RabbitMQ 服务,不过这些是单机版的,无法满足目前真实应用的要求。如果 RabbitMQ 服务器遇到内存崩溃、机器掉电或者主板故障等情况,该怎么办?单台 RabbitMQ服务器可以满足每秒 1000 条消息的吞吐量,那么如果应用需要 RabbitMQ 服务满足每秒 10 万条消息的吞吐量呢?购买昂贵的服务器来增强单机 RabbitMQ 务的性能显得捉襟见肘,搭建一个 RabbitMQ 集群才是解决实际问题

2021-12-12 18:55:30 1442

原创 Springboot整合RabbitMQ之惰性队列

使用场景RabbitMQ 从 3.6.0 版本开始引入了惰性队列的概念。惰性队列会尽可能的将消息存入磁盘中,而在消费者消费到相应的消息时才会被加载到内存中,它的一个重要的设计目标是能够支持更长的队列,即支持更多的消息存储。当消费者由于各种各样的原因(比如消费者下线、宕机亦或者是由于维护而关闭等)而致使长时间内不能消费消息造成堆积时,惰性队列就很有必要了。默认情况下,当生产者将消息发送到 RabbitMQ 的时候,队列中的消息会尽可能的存储在内存之中,这样可以更加快速的将消息发送给消费者。即使是持久化的

2021-12-12 17:02:14 540

原创 Springboot整合RabbitMQ优先级队列

使用场景在我们订单系统中有一个订单催付的场景,我们的客户在天猫下的订单,会及时将订单推送给我们,如果在用户设定的时间内未付款那么就会给用户推送一条短信提醒,很简单的一个功能对吧,但是,天猫商家对我们来说,肯定是要分大客户和小客户的对吧,比如像苹果,小米这样大商家一年起码能给我们创造很大的利润,所以理应当然,他们的订单必须得到优先处理,而曾经我们的后端系统是使用 redis 来存放的定时轮询,大家都知道 redis 只能用 List 做一个简简单单的消息队列,并不能实现一个优先级的场景,所以订单量大了后采用

2021-12-12 11:00:16 938 16

原创 RabbitMQ备份交换机

接上一篇SpringBoot整合RabbitMQ消息发布确认(二)生产者获得了对无法投递消息的感知能力,能够在生产者的消息无法被投递时发现并处理。但有时候,我们并不知道该如何处理这些无法路由的消息,最多打个日志,然后触发报警,再来手动处理。而通过日志来处理这些无法路由的消息是很不优雅的做法,特别是当生产者所在的服务有多台机器的时候,手动复制日志会更加麻烦而且容易出错。而且设置 mandatory 参数会增加生产者的复杂性,需要添加处理这些被退回的消息的逻辑。如果既不想丢失消息,又不想增加生产者的复杂性,

2021-12-11 13:08:22 1330

原创 SpringBoot整合RabbitMQ消息发布确认(二)

前面有一篇文章测试一下发布确认RabbitMQ消息发布确认现在有一个问题:在生产环境中由于一些不明原因,导致 rabbitmq 重启,在 RabbitMQ 重启期间生产者消息投递失败,导致消息丢失,需要手动处理和恢复。 于是,我们开始思考,如何才能进行 RabbitMQ 的消息可靠投递呢?特别是在这样比较极端的情况, RabbitMQ 集群不可用的时候,无法投递的消息该如何处理呢?确认机制方案代码架构图配置文件在配置文件当中需要添加spring.rabbitmq.publisher-co

2021-12-10 22:39:11 1186 4

原创 使用RabbitMQ 插件实现延迟队列

接着上一篇。SpringBoot整合RabbitMQ实现延迟队列了解到在消息属性上设置 TTL 的方式,消息可能并不会按时“死亡“,因为 RabbitMQ 只会检查第一个消息是否过期,如果过期则丢到死信队列,如果第一个消息的延时时长很长,而第二个消息的延时时长很短,第二个消息并不会优先得到执行,这就是用死信做延迟队列的一个缺陷。如果不能实现在消息粒度上的 TTL,并使其在设置的 TTL 时间及时死亡,就无法设计成一个通用的延时队列。那如何解决呢,接下来我们就去解决该问题。安装延时队列插件在官网上下

2021-12-10 16:49:37 4904 6

原创 SpringBoot整合RabbitMQ实现延迟队列

延迟队列是什么延时队列的队列内部是有序的,最重要的特性就体现在它的延时属性上,延时队列中的元素是希望在指定时间到了以后或之前取出和处理,简单来说,延时队列就是用来存放需要在指定时间被处理的元素的队列。延迟队列使用场景订单在十分钟之内未支付则自动取消新创建的店铺,如果在十天内都没有上传过商品,则自动发送消息提醒。用户注册成功后,如果三天内没有登陆则进行短信提醒。用户发起退款,如果三天内没有得到处理则通知相关运营人员。预定会议后,需要在预定的时间点前十分钟通知各个与会人员参加会议这些场景都有

2021-12-08 22:44:10 1421 2

原创 RabbitMQ的死信队列

什么是死信先从概念解释上搞清楚这个定义,死信,顾名思义就是无法被消费的消息,字面意思可以这样理解,一般来说, producer 将消息投递到 broker 或者直接到 queue 里了, consumer 从 queue 取出消息进行消费,但某些时候由于特定的原因导致 queue 中的某些消息无法被消费,这样的消息如果没有后续的处理,就变成了死信,有死信自然就有了死信队列。应用场景:为了保证订单业务的消息数据不丢失,需要使用到 RabbitMQ 的死信队列机制,当消息消费发生异常时,将消息投入死信队列

2021-12-06 22:36:25 537

原创 RabbitMQ交换机的类型

在前几篇文章中,我们创建了一个工作队列。 我们假设的是工作队列背后, 每个任务都恰好交付给一个消费者(工作进程)。在这一次,我们将做一些完全不同的事情-我们将消息传达给多个消费者。这种模式称为 ”发布/订阅”。为了说明这种模式,我们将构建一个简单的日志系统。它将由两个程序组成:第一个程序将发出日志消息,第二个程序是消费者。 其中我们会启动两个消费者,其中一个消费者接收到消息后把日志存储在磁盘,另外一个消费者接收到消息后把消息打印在屏幕上,事实上第一个程序发出的日志消息将广播给所有消费者。Exchang

2021-12-05 23:13:20 615

原创 RabbitMQ消息发布确认

发布确认原理生产者将信道设置成 confirm 模式,一旦信道进入 confirm 模式, 所有在该信道上面发布的消息都将会被指派一个唯一的 ID(从 1 开始),一旦消息被投递到所有匹配的队列之后, broker就会发送一个确认给生产者(包含消息的唯一 ID),这就使得生产者知道消息已经正确到达目的队列了,如果消息和队列是可持久化的,那么确认消息会在将消息写入磁盘之后发出, broker 回传给生产者的确认消息中 delivery-tag 域包含了确认消息的序列号,此外 broker 也可以设置basi

2021-12-05 13:50:42 2410 1

原创 RabbitMQ消息和队列的持久化

持久化的概念上一篇测试已经看到了如何处理任务不丢失的情况,但是如何保障当 RabbitMQ 服务停掉以后消息生产者发送过来的消息不丢失。默认情况下 RabbitMQ 退出或由于某种原因崩溃时,它忽视队列和消息,除非告知它不要这样做。确保消息不会丢失需要做两件事: 我们需要将队列和消息都标记为持久化。队列持久化前几次的测试我们创建的队列都是非持久化的, rabbitmq 如果重启的化,该队列就会被删除掉,如果要队列实现持久化 需要在声明队列的时候把 durable 参数设置为持久化。但是需要

2021-12-04 20:48:37 3462

原创 测试RabbitMQ消息应答(手动档,自动挡)

概念消费者完成一个任务可能需要一段时间,如果其中一个消费者处理一个长的任务并仅只完成了部分突然它挂掉了,会发生什么情况。 RabbitMQ 一旦向消费者传递了一条消息,便立即将该消息标记为删除。在这种情况下,突然有个消费者挂掉了,我们将丢失正在处理的消息。以及后续发送给该消费这的消息,因为它无法接收到。为什么会有这个概念?为了保证消息在发送过程中不丢失, rabbitmq 引入消息应答机制,消息应答就是:消费者在接收到消息并且处理该消息之后,告诉 rabbitmq 它已经处理了, rabbitmq 可

2021-12-02 21:55:55 1531

原创 测试RabbitMQ工作队列是如何工作的

Work Queues工作队列(又称任务队列)的主要思想是避免立即执行资源密集型任务,而不得不等待它完成。相反我们安排任务在之后执行。我们把任务封装为消息并将其发送到队列。在后台运行的工作进程将弹出任务并最终执行作业。 当有多个工作线程时,这些工作线程将一起处理这些任务。一条消息只能被处理一次,不可以处理多次。代码实现-轮训分发消息在这个案例中我们会启动两个工作线程,一个消息发送线程,我们来看看他们两个工作线程是如何工作的。抽取工具类import com.rabbitmq.client.Ch

2021-12-01 22:09:35 129

原创 快速搭建RabbitMQ的Java环境测试生产和消费

POM文件 <!--指定 jdk 编译版本--> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId>

2021-11-30 23:05:25 1031

原创 CentOS7安装RabbitMQ 详细步骤

安装下载地址 https://www.rabbitmq.com/download.html基于Docker安装就特别简单了,就不做演示了复制下面你的代码即可运行。# for RabbitMQ 3.8,# 3.8.x support timeline: https://www.rabbitmq.com/versions.htmldocker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.8-manageme

2021-11-30 21:30:56 1617

原创 RabbitMQ是什么?一些简单的概念

概念RabbitMQ 是一个消息中间件:它接受并转发消息。你可以把它当做一个快递站点,当你要发送一个包裹时,你把你的包裹放到快递站,快递员最终会把你的快递送到收件人那里,按照这种逻辑 RabbitMQ 是一个快递站,一个快递员帮你传递快件。 RabbitMQ 与快递站的主要区别在于,它不处理快件而是接收,存储和转发消息数据。四大核心概念生产者产生数据发送消息的程序是生产者交换机交换机是 RabbitMQ 非常重要的一个部件,一方面它接收来自生产者的消息,另一方面它将消息推送到队列中。交换机必须

2021-11-29 22:08:38 2658

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除