搭建RabbitMQ消息服务,整合SpringBoot实现收发消息
作者主页:Designer 小郑
作者简介:3年JAVA全栈开发经验,专注JAVA技术、系统定制、远程指导,致力于企业数字化转型,CSDN博客专家,蓝桥云课认证讲师。
目录
- 一、前言
- 1.1 什么是消息队列
- 1.2 RabbitMQ 是什么
- 1.3 为什么需要用到 RabbitMQ
- 1.4 RabbitMQ 相比 Kafka 的优势
- 二、搭建 RabbitMQ 环境
- 2.1 安装 Erlang
- 2.1.1 下载
- 2.1.2 安装
- 2.1.3 环境变量配置
- 2.2 安装 RabbitMQ
- 2.2.1 下载
- 2.2.2 安装
- 2.2.3 初始化
- 2.2.4 验证
- 2.3 配置外网访问
- 2.3.1 添加新用户
- 2.3.2 Virtual Host 配置
- 三、整合 RabbitMQ 消息服务
- 3.1 创建新的 SpringBoot 项目
- 3.2 引入依赖
- 3.3 配置文件
- 3.4 创建消息发送工具类
- 3.5 发消息功能测试
- 3.6 创建消息接收工具类
- 3.7 收消息功能测试
- 四、总结
一、前言
1.1 什么是消息队列
消息队列是一种在应用程序之间传递数据的通信机制,它基于 发布-订阅
模式,将消息发送者(发布者)和消息接收者(订阅者)解耦,使得它们可以独立地进行消息的发送和接收。
在消息队列中,消息发送者将消息发送到队列中,而消息接收者则从队列中获取消息进行处理。消息队列提供了一种异步的通信方式,即发送者发送消息后不需要等待接收者的回复,而可以立即继续执行其他操作。同时,消息队列还可以实现消息的持久化存储,确保消息在发送和接收过程中的可靠性。
消息队列的应用场景非常广泛,例如:
- 在分布式系统中,可以用消息队列来实现不同模块之间的解耦;
- 在高并发系统中,可以利用消息队列来缓解系统压力;
- 在实时数据处理中,可以将数据存储在消息队列中,再由数据处理模块进行处理。
1.2 RabbitMQ 是什么
RabbitMQ是一个开源的消息队列中间件,它实现了高级消息队列协议),并提供了可靠的消息传递机制。
RabbitMQ使用Erlang语言编写,具有高度可靠、可扩展、灵活和可插拔的特性,被广泛应用于分布式系统、微服务架构、异步任务处理等场景。
RabbitMQ基于生产者和消费者模型工作。生产者将消息发送到RabbitMQ的交换机,然后交换机将消息路由到一个或多个队列,消费者从队列中获取消息并进行处理。
RabbitMQ 支持多种消息传递模式,同时还提供了消息的持久化、消息优先级、消息确认机制等特性,确保消息的可靠性和可靠传输。
RabbitMQ是一个成熟、可靠的消息队列中间件,提供了强大的消息传递机制和丰富的特性,被广泛应用于分布式系统和异步消息处理中。
1.3 为什么需要用到 RabbitMQ
-
解耦:RabbitMQ通过消息队列实现了生产者和消费者的解耦。生产者将消息发送到队列中,而消费者从队列中获取消息并进行处理。这种解耦使得系统中的不同模块能够独立进行开发和部署,提高了系统的灵活性和可维护性。
-
异步通信:RabbitMQ提供了一种异步通信机制。生产者发送消息到队列后,不需要等待消费者立即处理,而可以继续执行其他操作。这种异步通信能够提升系统的并发性能和响应速度。
-
缓冲和削峰:RabbitMQ可以作为一个缓冲区,用于存储来自生产者的消息。这样可以避免生产者和消费者之间的直接耦合,同时也能够应对瞬时的高并发请求,减轻系统压力。
-
可靠性和可恢复性:RabbitMQ提供了持久化消息的功能,即使在消息队列或消费者故障的情况下,消息也可以得到保留和恢复。这种可靠性保证了消息的不丢失和可靠传递。
-
扩展性:RabbitMQ是一个可扩展的消息队列中间件,可以在需要的时候增加更多的消息队列和消费者节点,以应对不断增长的业务需求。
-
多语言支持:RabbitMQ提供了多种编程语言的客户端,如Java、Python、C#等,使得开发者可以选择合适自己的编程语言与RabbitMQ进行交互。
1.4 RabbitMQ 相比 Kafka 的优势
RabbitMQ 提供了简单易用的 API 和管理界面,使得开发者可以快速上手并进行配置和管理,相比之下,Kafka 的配置和管理相对复杂一些。
RabbitMQ 支持多种消息传递模式和消息的路由选择机制,可以根据需求进行灵活的消息处理,而Kafka更适用于大规模的高吞吐量流式处理,通常使用发布-订阅模式。
RabbitMQ 具备持久化消息、消息确认机制等特性,可以确保消息的可靠传输,而 Kafka 通过多副本机制和消息日志的方式,提供了高度可靠性的消息传递。
RabbitMQ 可以通过设置队列的限流策略和消费者的消费速率来进行流量控制和削峰处理,能够保护消费者免受过多的消息推送,而Kafka则将消费者的消费速率控制交给消费者自身,在高并发场景下可能需要额外处理。
RabbitMQ 提供了多种编程语言的客户端,开发者可以根据自己的编程需求选择合适的客户端进行交互,而Kafka的客户端主要集中在Java语言上,对其他语言的支持相对较少。
RabbitMQ 拥有庞大的开源社区和丰富的生态系统,提供了丰富的插件和集成工具,方便开发者进行扩展和集成,Kafka的生态系统相对较小,但在大数据领域有广泛的应用和支持。
二、搭建 RabbitMQ 环境
2.1 安装 Erlang
Erlang 是 RabbitMQ 消息服务的基础环境,就像 Java 的 JDK 一样,是必须安装的。
2.1.1 下载
Erlang 官网下载地址:下载地址。
因为我们要把 RabbitMQ 服务装在服务器上,所以同学们可以在服务器上下载 Erlang 安装包,或者下载后手动上传至服务器。
2.1.2 安装
下载完成后双击安装包,按照提示流程正常安装即可,截图如下所示。
2.1.3 环境变量配置
变量名如下,变量值是安装的路径,如下图所示。
ERLANG_HOME
验证命令如下:
erl -v
2.2 安装 RabbitMQ
2.2.1 下载
RabbitMQ 需要在 Github 中下载,下载地址。
RabbitMQ 版本需要和 Erlang 对应,本文安装的是
3.9.5
版本。
2.2.2 安装
安装流程如下图所示。
2.2.3 初始化
安装完成后,使用 cmd 窗口,进入 RabbitMQ 的 sbin 目录,如下图所示。
接着输入以下命令,完成初始化安装。
rabbitmq-plugins enable rabbitmq_management
2.2.4 验证
打开浏览器,输入:
http://localhost:15672
账号密码都是:
guest
2.3 配置外网访问
2.3.1 添加新用户
RabbitMQ 默认端口为15672,用户名和密码都为guest,是不允许外部访问的。
所以我们要添加新用户,实现外网访问,操作流程如下图所示。
点击添加后,输入新用户的账号和密码,如下图所示。
2.3.2 Virtual Host 配置
Virtual Host 需要允许添加的用户访问,如下图所示。
进入子界面后,选择用户后提交,如下图所示。
然后,我们就完成了外网访问的配置。
三、整合 RabbitMQ 消息服务
3.1 创建新的 SpringBoot 项目
打开 IDEA 工具,新建项目,如下图所示。
新项目创建完成后,如下图所示。
3.2 引入依赖
首先,请在 pom.xml
中引入依赖,代码如下。
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
3.3 配置文件
application.yml 配置如下。
spring:rabbitmq:host: 118.126.82.167port: 5672username: zwzpassword: 123456listener:simple:retry:enabled: truemax-attempts: 5initial-interval: 2s
3.4 创建消息发送工具类
请同学们创建
SimpleProducer
工具类,代码如下。
package cn.zwz.send;import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;public class SimpleProducer {public static void main(String[] args) {//1. 创建连接工程ConnectionFactory connectionFactory = new ConnectionFactory();//1.1 设置连接IPconnectionFactory.setHost("118.126.82.167");//1.2 设置连接端口connectionFactory.setPort(5672);//1.3 设置用户名connectionFactory.setUsername("zwz");//1.4 设置密码connectionFactory.setPassword("123456");//1.5 设置虚拟访问节点,就是消息发送的目标路径connectionFactory.setVirtualHost("/");Connection connection = null;Channel channel = null;try {//2. 创建连接Connectionconnection = connectionFactory.newConnection("ZWZ-Connection");//3. 通过连接获取通道Channelchannel = connection.createChannel();//4. 通过通道创建交换机,声明队列,绑定关系,路由key,发送消息,接收消息String queueName = "ZWZ-TOPIC";/*** channel.queueDeclare有5个参数* params1: 队列的名称* params2: 是否要持久化, false:非持久化 true:持久化* params3: 排他性,是否独占队列* params4: 是否自动删除,如果为true,队列会随着最后一个消费消费完后将队列自动删除,false:消息全部消费完后,队列保留* params5: 携带的附加参数*/channel.queueDeclare(queueName, true, false, false, null);//5. 消息内容String message = "HELLO World!";//6. 将消息发送到队列channel.basicPublish("", queueName, null, message.getBytes());System.out.println("消息发送成功");} catch (Exception e) {e.printStackTrace();} finally {//7. 关闭通道if (channel != null && channel.isOpen()) {try {channel.close();} catch (Exception e) {e.printStackTrace();}}//8. 关闭连接if (connection != null && connection.isOpen()) {try {connection.close();} catch (Exception e) {e.printStackTrace();}}}}
}
3.5 发消息功能测试
发消息很简单,运行 main
函数即可。
发送成功后,后台可以接收到数据,如下图所示。
3.6 创建消息接收工具类
请同学们创建
SimpleConsumer
工具类,代码如下。
package cn.zwz.send;import com.rabbitmq.client.*;import java.io.IOException;public class SimpleConsumer {public static void work() {//1. 创建连接工程ConnectionFactory connectionFactory = new ConnectionFactory();//1.1 设置连接IPconnectionFactory.setHost("118.126.82.167");//1.2 设置连接端口connectionFactory.setPort(5672);//1.3 设置用户名connectionFactory.setUsername("zwz");//1.4 设置密码connectionFactory.setPassword("123456");//1.5 设置虚拟访问节点,就是消息发送的目标路径connectionFactory.setVirtualHost("/");Connection connection = null;Channel channel = null;try {//2. 创建连接Connectionconnection = connectionFactory.newConnection("ZWZ-Connection");//3. 通过连接获取通道Channelchannel = connection.createChannel();//4. 通过通道创建交换机,声明队列,绑定关系,路由key,发送消息,接收消息String queueName = "ZWZ-TOPIC";//5. 接收消息并消费消息channel.basicConsume(queueName, true, new DeliverCallback() {@Overridepublic void handle(String consumerTag, Delivery message) throws IOException {System.out.println("接收到的消息内容是:" + new String(message.getBody(), "UTF-8"));}}, new CancelCallback() {@Overridepublic void handle(String consumerTag) throws IOException {System.out.println("消息接收失败。。。");}});System.out.println("开始接受消息。。。。");//阻断程序System.in.read();} catch (Exception e) {e.printStackTrace();} finally {//7. 关闭通道if (channel != null && channel.isOpen()) {try {channel.close();} catch (Exception e) {e.printStackTrace();}}//8. 关闭连接if (connection != null && connection.isOpen()) {try {connection.close();} catch (Exception e) {e.printStackTrace();}}}}
}
接着在启动类上配置运行,代码如下。
package cn.zwz.send;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class SendApplication {public static void main(String[] args) {new SimpleConsumer().work();SpringApplication.run(SendApplication.class, args);}
}
3.7 收消息功能测试
请同学们运行 SpringBoot 启动类,然后再次发送消息,就可以看到消息内容了,如下图所示。
四、总结
本文首先简单介绍了 RabbitMQ,然后和 Kafka 等热门消息队列进行对比,最后演示了 RabbitMQ 的完整安装配置整合流程,帮助零基础的小白入门 RabbitMQ 开发。
相关文章:
![](https://img-blog.csdnimg.cn/3a01dc60e62c415b812015851343f1c0.png#pic_center)
搭建RabbitMQ消息服务,整合SpringBoot实现收发消息
作者主页:Designer 小郑 作者简介:3年JAVA全栈开发经验,专注JAVA技术、系统定制、远程指导,致力于企业数字化转型,CSDN博客专家,蓝桥云课认证讲师。 目录 一、前言1.1 什么是消息队列1.2 RabbitMQ 是什么1.…...
![](https://img-blog.csdnimg.cn/9312a9ffb1164dc6bd7622d97934f702.png)
Web framework-Gin(二)
目录 一、Gin 1、Ajax 2、文件上传 2.1、form表单中文件上传(单个文件) 2.2、form表单中文件上传(多个文件) 2.3、ajax上传单个文件 2.4、ajax上传多个文件 3、模板语法 4、数据绑定 5、路由组 6、中间件 一、Gin 1、Ajax AJAX 即“Asynchronous Javascript And XM…...
![](https://img-blog.csdnimg.cn/3f3044efc49d4972ad276cfff3de2afd.png)
【聚类】K-Means聚类
cluster:簇 原理: 这边暂时没有时间具体介绍kmeans聚类的原理。简单来说,就是首先初始化k个簇心;然后计算所有点到簇心的欧式距离,对一个点来说,距离最短就属于那个簇;然后更新不同簇的簇心&a…...
![](https://img-blog.csdnimg.cn/img_convert/cf9973dd1206edeae99010f28dc50815.png)
超图聚类论文阅读2:Last-step算法
超图聚类论文阅读2:Last-step算法 《使用超图模块化的社区检测算法》 《Community Detection Algorithm Using Hypergraph Modularity》 COMPLEX NETWORKS 2021, SCI 3区 具体实现源码见HyperNetX库 工作:提出了一种用于超图的社区检测算法。该算法的主要…...
![](https://www.ngui.cc/images/no-images.jpg)
React 防抖与节流用法
在React中,防抖和节流是优化性能和提升用户体验的常用技术。下面是它们的用法: 防抖(Debounce):防抖是指在某个事件触发后,等待一段时间后执行回调函数。如果在等待时间内再次触发该事件,将重新…...
![](https://img-blog.csdnimg.cn/cdc256e784064e38ae8a1250cabf4db7.png#pic_center)
发布 VectorTraits v1.0,它是 C# 下增强SIMD向量运算的类库
发布 VectorTraits v1.0, 它是C#下增强SIMD向量运算的类库 VectorTraits: SIMD Vector type traits methods (SIMD向量类型的特征方法). NuGet: https://www.nuget.org/packages/VectorTraits/1.0.0 源代码: https://github.com/zyl910/VectorTraits 用途 总所周知&#x…...
![](https://img-blog.csdnimg.cn/5a11cf71b5d8460983868f653f2d15a2.png)
HCIA自学笔记01-冲突域
共享式网络(用同一根同轴电缆通信)中可能会出现信号冲突现象。 如图是一个10BASE5以太网,每个主机都是用同一根同轴电缆来与其它主机进行通信,因此,这里的同轴电缆又被称为共享介质,相应的网络被称为共享介…...
![](https://img-blog.csdnimg.cn/eec26648339c4459bc33a89ccae81a74.png)
3D封装技术发展
长期以来,芯片制程微缩技术一直驱动着摩尔定律的延续。从1987年的1um制程到2015年的14nm制程,芯片制程迭代速度一直遵循摩尔定律的规律,即芯片上可以容纳的晶体管数目在大约每经过18个月到24个月便会增加一倍。但2015年以后,芯片制…...
![](https://www.ngui.cc/images/no-images.jpg)
探讨下live555用的编程设计模式
这个应该放到这里 7.live555mediaserver-第1阶段小结(完整对象图和思维导图) https://blog.csdn.net/yhb1206/article/details/127330771 但是想想,还是拿出来吧。 从这第1阶段就能发现,它实质用到了reactor网络编程模式。...
![](https://img-blog.csdnimg.cn/img_convert/80f44ef5bd4b0cccd11870c55d82e650.png)
LeetCode 1123. Lowest Common Ancestor of Deepest Leaves【树,DFS,BFS,哈希表】1607
本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...
![](https://img-blog.csdnimg.cn/a79c0073360b4f67a0eca18a207a56ea.png)
centroen 23版本换界面了
旧版本 新版本 没有与操作系统一起打包的ISO文件了,要么先安装系统,再安装Centreon,要么用pve导入OVF文件...
![](https://www.ngui.cc/images/no-images.jpg)
Postman 调用 Microsoft Graph API (InsCode AI 创作助手)
官方配置参考网址: https://learn.microsoft.com/zh-cn/graph/use-postman 获取 Azure AD 应用程序凭据: 在 Azure AD 中注册你的应用程序,并获取客户端ID和客户端密钥。这些凭据将允许你的应用程序与 Microsoft Graph 进行身份验证和访问权限…...
![](https://www.ngui.cc/images/no-images.jpg)
MySql 游标 触发器
游标 1.什么是游标 MySQL游标是一种数据库对象,它用于在数据库查询过程中迭代访问结果集中的每一行。游标可以被看作是一个指向查询结果集的指针,通过移动游标,可以按行读取和处理结果集的数据。在MySQL中,游标可以用于在存储过程…...
![](https://img-blog.csdnimg.cn/img_convert/4f568294846dce3918dc8bbf0088e8d7.jpeg)
浅谈数据治理中的智能数据目录
在数字化转型的战略实施中,很多企业都在搭建自己的业务、数据及人工智能的中台。在同这些企业合作和交流中,越来越体会到数据目录是中台建设的核心和基础。为了更好地提供数据服务,发挥数据价值,用户需要先理解数据和信任数据。 企…...
![](https://img-blog.csdnimg.cn/85e6ec30b94948a88bcc10eaf2f4292c.png)
算法通关村第十七关:青铜挑战-贪心其实很简单
青铜挑战-贪心其实很简单 1. 难以解释的贪心算法 贪心学习法则:直接做题,不考虑贪不贪心 贪心(贪婪)算法 是指在问题尽心求解时,在每一步选择中都采取最好或者最优(最有利)的选择,从而希望能够导致结果最…...
![](https://img-blog.csdnimg.cn/6c620ff6412a47a3aa7f84afffff885e.png)
[Vue3 博物馆管理系统] 使用Vue3、Element-plus的Layout 布局构建组图文章
系列文章目录 第一章 定制上中下(顶部菜单、底部区域、中间主区域显示)三层结构首页 第二章 使用Vue3、Element-plus菜单组件构建菜单 第三章 使用Vue3、Element-plus走马灯组件构建轮播图 第四章 使用Vue3、Element-plus tabs组件构建选项卡功能 第五章…...
![](https://img-blog.csdnimg.cn/dd0ea7dd4aa3430ab0a1f8d8af279aa2.png)
【LeetCode算法系列题解】第36~40题
CONTENTS LeetCode 36. 有效的数独(中等)LeetCode 37. 解数独(困难)LeetCode 38. 外观数列(中等)LeetCode 39. 组合总和(中等)LeetCode 40. 组合总和 II(中等)…...
![](https://img-blog.csdnimg.cn/a0927ac8fe9748d688b861919c1d199c.png)
java+ssm+mysql电梯管理系统
项目介绍: 使用javassmmysql开发的电梯管理系统,系统包含管理员,监管员、安全员、维保员角色,功能如下: 管理员:系统用户管理(监管员、安全员、维保员);系统公告&#…...
![](https://img-blog.csdnimg.cn/bb3a8b2233cc45d2a866f194f9a9a3a1.png#pic_center)
最近读书了吗?林曦老师与你分享来自暄桐课堂的读书方法
近来,大家有在开心读书吗?对于读书,有一个很生动的说法:“无事常读书,一日是四日。若活七十年,便二百八十。”读书帮助我们超越个体生命经验的限制,此时此地的我们,也可借由书本&…...
![](https://img-blog.csdnimg.cn/abf71497c3054b53aa39181bd045a4a2.png)
【AI理论学习】语言模型:从Word Embedding到ELMo
语言模型:从Word Embedding到ELMo ELMo原理Bi-LM总结参考资料 本文主要介绍一种建立在LSTM基础上的ELMo预训练模型。2013年的Word2Vec及2014年的GloVe的工作中,每个词对应一个vector,对于多义词无能为力。ELMo的工作对于此,提出了…...
![](https://img-blog.csdnimg.cn/img_convert/3a68004de26eddf4e6e32ca9461fe6aa.jpeg)
多功能透明屏,在智能家居领域中,有哪些功能特点?显示、连接
多功能透明屏是一种新型的显示技术,它能够在透明的表面上显示图像和视频,并且具有多种功能。 这种屏幕可以应用于各种领域,如商业广告、智能家居、教育等,为用户提供更加便捷和多样化的体验。 首先,多功能透明屏可以…...
![](https://img-blog.csdnimg.cn/bbf53fb288f3467ea3381d7616f9cc32.png)
【List篇】ArrayList 详解(含图示说明)
Java中的ArrayList是一个动态数组,可以自动扩展容量以适应数据的添加和删除。它可以用来存储各种类型的数据,例如String,Integer,Boolean等。ArrayList实现了List接口,可以进行常见的List操作,例如添加、插…...
![](https://img-blog.csdnimg.cn/a25f304d4f204597b42bfb619757c15c.png)
SSL证书只有收费的吗?有没有免费使用的?
首先明白SSL证书是什么SSL英文全称:英文全称: Secure Socket Layer Certificate,中文全称:安全套接字层证书。 SSL是一种由数字证书颁发机构(CA) 签发的数字证书。它用于建立安全的加密连接,确保通过网络传输的数据在客户端和服务器之间的安全性和完整性…...
![](https://www.ngui.cc/images/no-images.jpg)
48V轻混技术
文章目录 48V轻混技术的主要特点和优势48V轻混技术的优缺点优点:缺点: 48V轻混技术的主要特点和优势 48V轻混技术(48V Mild Hybrid Technology)是一种汽车动力系统技术,它结合了内燃机和电动机的优势,以提…...
![](https://img-blog.csdnimg.cn/de824b036abc402fbe76436cb598e88b.png)
机器学习基础算法--回归类型和评价分析
目录 1.数据归一化处理 2.数据标准化处理 3.Lasso回归模型 4.岭回归模型 5.评价指标计算 1.数据归一化处理 """ x的归一化的方法还是比较多的我们就选取最为基本的归一化方法 x(x-x_min)/(x_max-x_min) """ import numpy as np from sklea…...
![](https://www.ngui.cc/images/no-images.jpg)
MATLAB 软件功能简介
MATLAB 的名称源自 Matrix Laboratory,1984 年由美国 Mathworks 公司推向市场。 它是一种科学计算软件,专门以矩阵的形式处理数据。MATLAB 将高性能的数值计算和可 视化集成在一起,并提供了大量的内置函数,从而被广泛的应用于科学计算、控制…...
![](https://img-blog.csdnimg.cn/718ee63b31d040ea8cea14f3f535c5cb.png)
deepfm内容理解
对于CTR问题,被证明的最有效的提升任务表现的策略是特征组合(Feature Interaction); 两个问题: 如何更好地学习特征组合,进而更加精确地描述数据的特点; 如何更高效的学习特征组合。 DNN局限 :当我们使…...
![](https://img-blog.csdnimg.cn/b77ad53121c045dc82e9c2c45b7e9287.png)
postgresql-集合运算
postgresql-集合运算 并集交集差集集合运算符的优先级 并集 create table excellent_emp( year int not null, emp_id integer not null, constraint pk_excellent_emp primary key(year,emp_id) );insert into excellent_emp values(2018,9); insert into excellent_emp value…...
![](https://www.ngui.cc/images/no-images.jpg)
[持续更新]计算机经典面试题基础篇Day2
[通用]计算机经典面试题基础篇Day2 1、单例模式是什么,线程安全吗 单例模式是一种设计模式,旨在确保一个类只有一个实例,并提供全局访问点。通过使用单例模式,可以避免多次创建相同的对象,节省内存资源,同…...
![](https://img-blog.csdnimg.cn/6bcc757c28c44d429084cb526037034a.png)
C++:类和对象(二)
本文主要介绍:构造函数、析构函数、拷贝构造函数、赋值运算符重载、const成员函数、取地址及const取地址操作符重载。 目录 一、类的六个默认成员函数 二、构造函数 1.概念 2.特性 三、析构函数 1.概念 2.特性 四、拷贝构造函数 1.概念 2.特征 五、赋值…...
![](/images/no-images.jpg)
asp作业做购物网站代码/网页关键词排名优化
使用MMKV替代SharedPreferences,好处:MMKV是微信应用程序中使用的一种高效、小巧、易用的移动键值存储框架。目前在iOS、macOS、Android和Windows上都可以使用。一、在app的build.gradle中引入implementation com.tencent:mmkv:1.0.19二、在application里…...
![](/images/no-images.jpg)
订阅号登陆平台/seo学徒招聘
添加链接描述 找到第一个起点 也就是没有入度的点 然后遍历即可 要看清题意 注意题目求的是遍历的顺序,而不是编号 第一个程序是从尾到头 第二个是结束了写的从头到尾 Now let’s number these nodes in order, starting from the first node, by numbers from 1 to…...
![](/images/no-images.jpg)
网络营销模式下品牌推广研究论文/谷歌网站优化
chage命令_Linux chage命令使用详解:修改帐号与密码的有效期限chage命令是用来修改帐号与密码的有效期限。语法:chage [选项] 用户名。选项:-m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。-M:密码保持有…...
![](/images/no-images.jpg)
深圳网站建设网站制作网站推广/湖南关键词优化首选
在启动IOC容器的时候,容器自动装载了一个AutowiredAnnotationBeanPostProcessor后置处理器,当容器扫描到Autowied、Resource或Inject时,就会在IOC容器中自动查找需要的Bean,并装配给该对象的属性。在使用Autowired时,首…...
wordpress主题需要ftp/制作公司网站的步骤
weblogic8.1 5 ip 限制 报错信息如图所示: 解决办法:此weblogic 未破解,去网上下载破解包,然后放到 copy weblogic_sp.jar to $WL_HOME/server/lib/ copy license.bea to $BEA_HOME 此目录下即可。 本人资源里面有 weblogic 8.…...
![](https://img-blog.csdnimg.cn/img_convert/be8dca3dcfec1c741cf1b9605a793b96.png)
wordpress.com nginx/哪家竞价托管专业
如果说求职是人生的一座山,那面试就是最难跨越的一道沟。有时候好不容易被通知去面试,结果被面试官虐得体无完肤,还有很多技术精湛、经验丰富的求职者屡次在面试环节被拒,一直没能拿到心仪的大厂高薪offer。说实话,面试…...