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

RabbitMQ学习笔记

目录

尚硅谷mq视频学习笔记

1.1. MQ 的相关概念

1.1.1. 什么是MQ

1.1.2. 为什么要用MQ

1.1.3. MQ 的分类

1.ActiveMQ

2.Kafka

3.RocketMQ

4.RabbitMQ

1.1.4. MQ 的选择

1.Kafka

2.RocketMQ

3.RabbitMQ

1.2. RabbitMQ

1.2.1. RabbitMQ 的概念

1.2.2. 四大核心概念

1.2.3. RabbitMQ 核心部分

1.2.4. 各个名词介绍

1.2.5. 安装

安装包安装(比较麻烦)

docker安装(比较快捷方便)


尚硅谷mq视频学习笔记

尚硅谷RabbitMQ教程丨快速掌握MQ消息中间件_哔哩哔哩_bilibili

1.1. MQ 的相关概念

1.1.1. 什么是MQ

MQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是

message 而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ 是一种非常常

见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了 MQ 之后,消息发送上游只需要依赖 MQ,不

用依赖其他服务。

1.1.2. 为什么要用MQ

1.流量消峰

举个例子,如果订单系统最多能处理一万次订单,这个处理能力应付正常时段的下单时绰绰有余,正

常时段我们下单一秒后就能返回结果。但是在高峰期,如果有两万次下单操作系统是处理不了的,只能限

制订单超过一万后不允许用户下单。使用消息队列做缓冲,我们可以取消这个限制,把一秒内下的订单分

散成一段时间来处理,这时有些用户可能在下单十几秒后才能收到下单成功的操作,但是比不能下单的体

验要好。

2.应用解耦

以电商应用为例,应用中有订单系统、库存系统、物流系统、支付系统。用户创建订单后,如果耦合

调用库存系统、物流系统、支付系统,任何一个子系统出了故障,都会造成下单操作异常。当转变成基于

消息队列的方式后,系统间调用的问题会减少很多,比如物流系统因为发生故障,需要几分钟来修复。在

这几分钟的时间里,物流系统要处理的内存被缓存在消息队列中,用户的下单操作可以正常完成。当物流

系统恢复后,继续处理订单信息即可,中单用户感受不到物流系统的故障,提升系统的可用性。

3.异步处理

有些服务间调用是异步的,例如 A 调用 B,B 需要花费很长时间执行,但是 A 需要知道 B 什么时候可

以执行完,以前一般有两种方式,A 过一段时间去调用 B 的查询 api 查询。或者 A 提供一个 callback api, B 执行完之后调用 api 通知 A 服务。这两种方式都不是很优雅,使用消息总线,可以很方便解决这个问题,

A 调用 B 服务后,只需要监听 B 处理完成的消息,当 B 处理完成后,会发送一条消息给 MQ,MQ 会将此消

息转发给 A 服务。这样 A 服务既不用循环调用 B 的查询 api,也不用提供 callback api。同样B 服务也不用

做这些操作。A 服务还能及时的得到异步处理成功的消息。

1.1.3. MQ 的分类

1.ActiveMQ

优点

单机吞吐量万级,时效性 ms 级,可用性高,基于主从架构实现高可用性,消息可靠性较

低的概率丢失数据

缺点:

官方社区现在对 ActiveMQ 5.x 维护越来越少,高吞吐量场景较少使用

尚硅谷官网视频: http://www.gulixueyuan.com/course/322

2.Kafka

大数据的杀手锏,谈到大数据领域内的消息传输,则绕不开 Kafka,这款为大数据而生的消息中间件,

以其百万级 TPS 的吞吐量名声大噪,迅速成为大数据领域的宠儿,在数据采集、传输、存储的过程中发挥

着举足轻重的作用。目前已经被 LinkedIn,Uber, Twitter, Netflix 等大公司所采纳。

优点:

性能卓越,单机写入 TPS 约在百万条/秒,最大的优点,就是吞吐量高。时效性 ms 级可用性非

常高,kafka 是分布式的,一个数据多个副本,少数机器宕机,不会丢失数据,不会导致不可用,消费者采

用 Pull 方式获取消息, 消息有序, 通过控制能够保证所有消息被消费且仅被消费一次;有优秀的第三方Kafka

Web 管理界面 Kafka-Manager;在日志领域比较成熟,被多家公司和多个开源项目使用;功能支持: 功能

较为简单,主要支持简单的 MQ 功能,在大数据领域的实时计算以及日志采集被大规模使用

缺点

Kafka 单机超过 64 个队列/分区,Load 会发生明显的飙高现象,队列越多,load 越高,发送消

息响应时间变长,使用短轮询方式,实时性取决于轮询间隔时间,消费失败不支持重试;支持消息顺序,

但是一台代理宕机后,就会产生消息乱序,社区更新较慢

3.RocketMQ

RocketMQ 出自阿里巴巴的开源产品,用 Java 语言实现,在设计时参考了 Kafka,并做出了自己的一

些改进。被阿里巴巴广泛应用在订单,交易,充值,流计算,消息推送,日志流式处理,binglog 分发等场

景。

优点:

单机吞吐量十万级,可用性非常高,分布式架构,消息可以做到 0 丢失,MQ 功能较为完善,还是分

布式的,扩展性好,支持 10 亿级别的消息堆积,不会因为堆积导致性能下降,源码是 java 我们可以自己阅

读源码,定制自己公司的 MQ

缺点

支持的客户端语言不多,目前是 java 及 c++,其中 c++不成熟;社区活跃度一般,没有在MQ

核心中去实现 JMS 等接口,有些系统要迁移需要修改大量代码

4.RabbitMQ

2007 年发布,是一个在AMQP(高级消息队列协议)基础上完成的,可复用的企业消息系统,是当前最

主流的消息中间件之一

优点:

由于 erlang 语言的高并发特性,性能较好;吞吐量到万级,MQ 功能比较完备,健壮、稳定、易

用、跨平台、支持多种语言 如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP

等,支持 AJAX 文档齐全;开源提供的管理界面非常棒,用起来很好用,社区活跃度高;更新频率相当高

https://www.rabbitmq.com/news.html

缺点

商业版需要收费,学习成本较高

1.1.4. MQ 的选择

1.Kafka

Kafka 主要特点是基于Pull 的模式来处理消息消费,追求高吞吐量,一开始的目的就是用于日志收集

和传输,适合产生大量数据的互联网服务的数据收集业务。大型公司建议可以选用,如果有日志采集功能,

肯定是首选 kafka 了。尚硅谷官网 kafka 视频连接http://www.gulixueyuan.com/course/330/tasks

2.RocketMQ

天生为金融互联网领域而生,对于可靠性要求很高的场景,尤其是电商里面的订单扣款,以及业务削

峰,在大量交易涌入时,后端可能无法及时处理的情况。RoketMQ 在稳定性上可能更值得信赖,这些业务

场景在阿里双 11 已经经历了多次考验,如果你的业务有上述并发场景,建议可以选择 RocketMQ。

3.RabbitMQ

结合 erlang 语言本身的并发优势,性能好时效性微秒级社区活跃度也比较高,管理界面用起来十分

方便,如果你的数据量没有那么大,中小型公司优先选择功能比较完备的 RabbitMQ。

1.2. RabbitMQ

1.2.1. RabbitMQ 的概念

RabbitMQ 是一个消息中间件:它接受并转发消息。你可以把它当做一个快递站点,当你要发送一个包 裹时,你把你的包裹放到快递站,快递员最终会把你的快递送到收件人那里,按照这种逻辑 RabbitMQ 是 一个快递站,一个快递员帮你传递快件。RabbitMQ 与快递站的主要区别在于,它不处理快件而是接收, 存储和转发消息数据。

1.2.2. 四大核心概念

生产者

产生数据发送消息的程序是生产者

交换机

交换机是 RabbitMQ 非常重要的一个部件,一方面它接收来自生产者的消息,另一方面它将消息

推送到队列中。交换机必须确切知道如何处理它接收到的消息,是将这些消息推送到特定队列还是推

送到多个队列,亦或者是把消息丢弃,这个得有交换机类型决定

队列

队列是 RabbitMQ 内部使用的一种数据结构,尽管消息流经 RabbitMQ 和应用程序,但它们只能存

储在队列中。队列仅受主机的内存和磁盘限制的约束,本质上是一个大的消息缓冲区。许多生产者可

以将消息发送到一个队列,许多消费者可以尝试从一个队列接收数据。这就是我们使用队列的方式

消费者

消费与接收具有相似的含义。消费者大多时候是一个等待接收消息的程序。请注意生产者,消费

者和消息中间件很多时候并不在同一机器上。同一个应用程序既可以是生产者又是可以是消费者。

1.2.3. RabbitMQ 核心部分

1.2.4. 各个名词介绍

Broker

接收和分发消息的应用,RabbitMQ Server 就是 Message Broker

Virtual host

出于多租户和安全因素设计的,把 AMQP 的基本组件划分到一个虚拟的分组中,类似

于网络中的 namespace 概念。当多个不同的用户使用同一个 RabbitMQ server 提供的服务时,可以划分出

多个 vhost,每个用户在自己的 vhost 创建 exchange/queue 等

Connection

publisher/consumer 和 broker 之间的 TCP 连接

Channel

如果每一次访问 RabbitMQ 都建立一个 Connection,在消息量大的时候建立 TCP

Connection 的开销将是巨大的,效率也较低。Channel 是在 connection 内部建立的逻辑连接,如果应用程 序支持多线程,通常每个 thread 创建单独的 channel 进行通讯,AMQP method 包含了 channel id 帮助客 户端和 message broker 识别 channel,所以 channel 之间是完全隔离的。Channel 作为轻量级的Connection 极大减少了操作系统建立 TCP connection 的开销

Exchange

message 到达 broker 的第一站,根据分发规则,匹配查询表中的 routing key,分发

消息到 queue 中去。常用的类型有:direct (point-to-point), topic (publish-subscribe) and fanout

(multicast)

Queue

消息最终被送到这里等待 consumer 取走

Binding

exchange 和 queue 之间的虚拟连接,binding 中可以包含 routing key,Binding 信息被保

存到 exchange 中的查询表中,用于 message 的分发依据

1.2.5. 安装

安装包安装(比较麻烦)

1.官网地址

https://www.rabbitmq.com/download.html

2.文件上传

上传到/usr/local/software 目录下(如果没有 software 需要自己创建)

3.安装文件(分别按照以下顺序安装)

rpm -ivh erlang-21.3-1.el7.x86_64.rpm

yum install socat -y

rpm -ivh rabbitmq-server-3.8.8-1.el7.noarch.rpm

4.常用命令(按照以下顺序执行)

添加开机启动 RabbitMQ 服务

chkconfig rabbitmq-server on

启动服务

/sbin/service rabbitmq-server start

查看服务状态

/sbin/service rabbitmq-server status

停止服务(选择执行)

/sbin/service rabbitmq-server stop

开启 web 管理插件

rabbitmq-plugins enable rabbitmq_management

用默认账号密码(guest)访问地址 http://47.115.185.244:15672/出现权限问题

4.添加一个新的用户

创建账号

rabbitmqctl add_user admin 123

设置用户角色

rabbitmqctl set_user_tags admin administrator

设置用户权限

set_permissions [-p <vhostpath>] <user> <conf> <write> <read>

rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"

用户 user_admin 具有/vhost1 这个 virtual host 中所有资源的配置、写、读权限

当前用户和角色

rabbitmqctl list_users

5.再次利用 admin 用户登录

6. 重置命令

关闭应用的命令为

rabbitmqctl stop_app

清除的命令为

rabbitmqctl reset

重新启动命令为

rabbitmqctl start_app

docker安装(比较快捷方便)

我们在 Centos7 虚拟机中使用 Docker 来安装

1.在线拉取镜像

docker pull rabbitmq:3-management

2.执行下面的命令来运行MQ容器

docker run \-e RABBITMQ_DEFAULT_USER=admin \-e RABBITMQ_DEFAULT_PASS=123456 \--name mq \--hostname mq1 \-p 15672:15672 \-p 5672:5672 \-d \rabbitmq:3-management

3.启动成功后访问地址:http://192.168.211.128:15672

相关文章:

Xpath使用教程

一、安装Xpath解析库-scrapy中的selector win+r打开cmd,输入pip install wheel,先安装wheel库了才能安装.whl文件。安装lxml库 到https://pypi.org/project/lxml/#files下载对应python版本的lxml库 切到lxml下载位置,安装lxml安装Twisted库 到https://pypi.org/project/Twi…...

【HFSS】看多个频点的三维方向图

1.扫频设置 扫频种类为Discrete,记得要保存场,Save Fields2.查看结果solution选择Sweep1,就是刚才新建的扫频设置即可在选项卡Families里面可以选择要查看的频点...

读人工智能时代与人类未来笔记07_人工智能往何处去

读人工智能时代与人类未来笔记07_人工智能往何处去1. 人工智能的限制和管理 1.1. 在前几代人工智能中,人们将社会对现实的某种理解提炼为程序代码,而当下的机器学习人工智能与之不同,它们在很大程度上是靠自己对现实进行建模 1.2. 虽然开发人员可以检…...

AtCoder Beginner Contest 354

rating++A - Exponential Plant (abc354 A) 题目大意 某星球上的植物,初始高\(0\),然后每天依次增长 \(1,2,4,8,...\),问哪天就高过身高为\(h\)的高桥。 解题思路 因为是指数级别长高,枚举一下天数即可,由于\(h \leq 10^9\),因此天数不会超过 \(32\)天。神奇的代码 #incl…...

因更懂你而更热爱,智慧PC助力当代每一位“霞客”行

“大丈夫当朝碧海而暮苍梧”,从小就立志游历天下的徐霞客,自公元1613年5月19日这天开始了一生的披荆斩棘。三十年时间素履而往,所有足迹凝练出了一本《徐霞客游记》,在地理学、地质学、文学、历史学中都占有重要一席。因热爱而出发,如果他生在当下,一定是中国最大的旅游博…...

Markdown的学习笔记

Markdown (#+空格输入后回车自动形成大标题) 字体 (##+空格输入回车形成二级标题,以此类推,最多6级) hello world!(两边加两个*好为粗体) hello world!(两边一个*号为斜体) hello world!(三个*号斜体加粗) hello world!(两边两个~号删除线) 引用(大于>+空格形…...

RabbitMQ学习笔记

目录 尚硅谷mq视频学习笔记 1.1. MQ 的相关概念 1.1.1. 什么是MQ 1.1.2. 为什么要用MQ 1.1.3. MQ 的分类 1.ActiveMQ 2.Kafka 3.RocketMQ 4.RabbitMQ 1.1.4. MQ 的选择 1.Kafka 2.RocketMQ 3.RabbitMQ 1.2. RabbitMQ 1.2.1. RabbitMQ 的概念 1.2.2. 四大核心概念…...

Java安全-CC1

CC1 这里用的是组长的链子和yso好像不太一样&#xff0c;不过大体上都是差不多的。后半条的链子都是一样的&#xff0c;而且这条更短更易理解。yso的CC1过段时间再看一下。 环境 Maven依赖&#xff1a; <dependencies><dependency><groupId>commons-colle…...

【得到日期对象NSDate的各个部分 Objective-C语言】

一、得到日期对象NSDate的各个部分,年月日时分秒 1.例如,我这儿有1个NSDate对象, NSDate *date = [NSDate date]; 这个日期里面是不是有年、有月、有日、有时、有分、有秒 我想单独的拿到这个日期里面的年,该怎么拿 用date.year属性,行吗,不行,因为没有这个属性 用…...

前端面试常考 | CSS垂直居中解决方案

文章目录一. 前言二. flx布局实现三. Grid布局实现四. 绝对定位transform五. 绝对定位负margin五. 绝对定位calc六. 定位加margin一. 前言 前段时间刷到一篇帖子&#xff0c;说面试竟然遇到了CSS的考点&#xff0c;让回答CSS实现垂直居中的方式有哪些?&#xff0c;都2022年了…...

Flink中的UDF的实现

Flink 的 Table API 和 SQL 提供了多种自定义函数的接口&#xff0c;以抽象类的形式定义。当前 UDF 主要有以下几类&#xff1a; 标量函数&#xff08;Scalar Functions&#xff09;&#xff1a;将输入的标量值转换成一个新的标量值&#xff1b;表函数&#xff08;Table Funct…...

Linux教程

Linux 目录结构 /bin&#xff1a;&#xff08;binary&#xff09;存放的是一些二进制文件&#xff0c;但是在Linux中二进制文件是可以被执行的。这个目录中的命令文件是给普通用户使用&#xff08;非超级管理员用户&#xff09;。 /etc&#xff1a;Linux下所有的配置文件都会…...

1.3 Apache Hadoop的重要组成-hadoop-最全最完整的保姆级的java大数据学习资料

文章目录1.3 Apache Hadoop的重要组成1.3 Apache Hadoop的重要组成 HadoopHDFS(分布式文件系统)MapReduce(分布式计算框架)Yarn(资源协调框架)Common模块 Hadoop HDFS&#xff1a;&#xff08;Hadoop Distribute File System &#xff09;一个高可靠、高吞吐量的分布式文件系统…...

【蓝桥杯】第十四届模拟赛第一期及第二期填空汇总

目录 1.A题&#xff08;进制位数&#xff09; 位运算符 第一期 问题描述 解析 第二期 解析 代码 2.B题&#xff08;日期问题&#xff09; 第一期 问题描述 解析 代码实现 执行结果 第二期 问题描述 解析 3.C题&#xff08;数学问题&#xff09; 第一期 问题…...

Go学习之路-环境搭建

默认运行设备系统&#xff1a;MacOS 安装 安装包下载地址&#xff08;下面3个都可以&#xff09;&#xff1a; https://studygolang.com/dl https://golang.google.cn/dl/ https://golang.org/dl/ 我这里选择 pkg包、一键安装、默认的安装路径 /usr/local/go 环境 设置go语言…...

Siamese Neural Network (SNN: 孪生神经网络)

【学习参考】&#xff1a; https://blog.csdn.net/MyArrow/article/details/122539749https://blog.csdn.net/MyArrow/article/details/122539749 Siamese network 孪生神经网络--一个简单神奇的结构 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/35040994 【Siamese和Ch…...

22个每个程序员都应该知道的 Git 命令

在这篇文章中&#xff0c;我写了一个快速学习 git 命令的备忘单。它将包括开发人员每天使用的命令&#xff0c;如 git add、git commit、git pull、git fetch&#xff0c;并共享其他有用的 git 命令。 我一直使用Git的一些命令&#xff0c;今天这个列表清单&#xff0c;希望也…...

Android动画——使用动画启动Activity

1、使用动画启动Activity概述 我们在Android开发应用时&#xff0c;会遇到一个页面跳转到另一个页面的情况&#xff0c;这时候我们如果使用动画过渡会使得页面更加的流畅。这是一个滑动式的进入和退出的动画可以看到Android的过渡动画可以在不同状态之间建立视觉联系。您可以为…...

【YOLO系列改进NO.46】改进激活函数为ACON

文章目录 前言一、解决问题二、基本原理三、​添加方法四、总结前言 作为当前先进的深度学习目标检测算法YOLOv7,已经集合了大量的trick,但是还是有提高和改进的空间,针对具体应用场景下的检测难点,可以不同的改进方法。此后的系列文章,将重点对YOLOv7的如何改进进行详细…...

JavaScript -- 09. 内置对象的介绍

文章目录内置对象1 解构赋值1.1 保留默认值1.2 接受剩余的所有参数1.3 对函数执行结果解构1.4 交换两个变量的值1.5 二维数组结构2 对象的解构2.1 声明对象同时解构对象2.2 先声明再解构2.3 解构不存在的属性2.4 设置解构别名2.5 设置解构默认值3 对象的序列化3.1 对象的序列化…...

Spring核心与设计思想

⭐️前言⭐️ 这篇文章作为Spring篇目的开篇&#xff0c;带领大家认识Spring&#xff0c;知道为什么要用Spring框架&#xff0c;以及了解Spring的核心与设计思想。 &#x1f349;博客主页&#xff1a; &#x1f341;【如风暖阳】&#x1f341; &#x1f349;精品Java专栏【Jav…...

Java的字符串String

文章目录什么是字符串String类的声明为什么我们的String是不可变的为什么String类用final修饰String的创建字符串比较相等关于Java中的比较关于字符串不同赋值操作对应的内存分配那对象如何进行比较内容字符串常量池StringTalbe的位置字符串常见的操作拼接操作获得字符串的子串…...

net-java-php-python-网络安全教育学习网站计算机毕业设计程序

net-java-php-python-网络安全教育学习网站计算机毕业设计程序 net-java-php-python-网络安全教育学习网站计算机毕业设计程序本源码技术栈&#xff1a; 项目架构&#xff1a;B/S架构 开发语言&#xff1a;Java语言 开发软件&#xff1a;idea eclipse 前端技术&#xff1a;…...

git分支详解——记住这些指令能帮助你解决大部分git的分支问题

Github 之 分支 branch 操作之 查看分支/创建分支/切换分支/提交分支/删除分支/合并分支 等操作 一、简单介绍 二、查看分支 1、查看本地所有分支&#xff1a;git branch 2、查看远程有哪些分支&#xff1a;git branch -r 3、查看所有分支&#xff08;本地和远程的&#xff09;…...

jdk11新特性——JShell交互性工具

目录一、jshell概述二、jshell位置三、jshell示例3.1、示例一&#xff08;声明变量并赋值&#xff09;3.2、示例二&#xff08;输出打印内容&#xff09;3.3、示例三&#xff08;帮助命令&#xff09;一、jshell概述 java9引入了jshell这个交互性工具&#xff0c;让Java也可以…...

Git全套,从简到细

Git DravenGit一、git工具引入二、git本地工具2.1、下载2.2、使用2.3、修改2.4、查看历史版本2.5、回退历史版本2.6、起死回生三、git远程仓库3.1、使用gitee3.2、配置本地仓库参数3.3、查看gitee仓库3.4、修改后推送四、git两人协作-非冲突小智小杨五、git两人协作-冲突六、gi…...

【分布式能源的选址与定容】基于非支配排序多目标遗传优化算法求解分布式能源的选址与定容(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…...

基于PHP+MySQL托管中心管理系统的设计与实现

随着在校学生人数的不断增加,学生的数量也在不断的增加,但是很多时候因为父母工作忙没时间,以及一些其他的原因没办法对学生间辅导,这就诞生了托管中心这一行业,但是传统的托管中心多是人工手动的模式进行管理的,这很不科学也不合理,为了改变这一现状,我们开发了托管中心管理系…...

【算法】排序——直接排序

内部排序的全部过程都是在内存中进行的。按排序策略的不同可以将内部排序划分为直接插入排序、冒泡排序、简单选择排序、希尔排序、快速排序、堆排序、归并排序、基数排序等。其中前三种排序方法属于简单的排序方法&#xff0c;其特点是排序过程直观、易于理解和实现&#xff0…...

华为高级技术专家多年经验分享微服务治理体系、架构及实践文档

前言 都说程序员工资高、待遇好&#xff0c; 2022 金九银十到了&#xff0c;你的小目标是 30K、40K&#xff0c;还是 16薪的 20K&#xff1f;作为一名 Java 开发工程师&#xff0c;当能力可以满足公司业务需求时&#xff0c;拿到超预期的 Offer 并不算难。然而&#xff0c;提升…...

HTML+CSS网页设计期末课程大作业 【茶叶文化网站设计题材】web前端开发技术 web课程设计 网页规划与设计

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…...

数据结构与算法(六) 贪心算法

这篇文章来讲贪心算法&#xff08;Greedy Algorithm&#xff09;&#xff0c;这是一种特殊的动态规划算法 1、本质 我们在之前的文章中讲过&#xff0c;动态规划可以解决一类具有最优子结构和重叠子问题特征的问题 贪心算法本质上是一种特殊的动态规划算法&#xff0c;因此在…...

LeetCode-1774. 最接近目标价格的甜点成本【数组,背包问题,优化暴力,回溯】

LeetCode-1774. 最接近目标价格的甜点成本【数组&#xff0c;背包问题&#xff0c;优化暴力&#xff0c;回溯】题目描述&#xff1a;解题思路一&#xff1a;转化为0-1背包求解。一&#xff1a;因为每种配料最多可以用两次&#xff0c;所以直接把每种辅料变成两个。二&#xff1…...

Python封装机制及实现方法

大部分语言都具备 3 个典型特征&#xff0c;即封装、继承和多态。 简单的理解封装&#xff08;Encapsulation&#xff09;&#xff0c;即在设计类时&#xff0c;刻意地将一些属性和方法隐藏在类的内部&#xff0c;这样在使用此类时&#xff0c;将无法直接以“类对象.属性名”&…...

Flet 教程大全合集

Flet是什么 Flet 是一个框架,使您能够轻松地以您喜欢的语言构建实时 Web、移动和桌面应用程序,并与您的团队安全地共享它们。无需前端经验。 Flet有什么优势 Flet有什么特点 在几分钟内从想法到应用程序 用于您的团队、周末项目、数据输入表单、信息亭应用程序或高保真原型…...

mongodb整合springbootQ

SpringBoot整合MongoDB_一个冬天的童话的博客-CSDN博客_mongodb的依赖SpringBoot整合MongoDB的过程https://blog.csdn.net/m0_53563908/article/details/1268980981&#xff0c;环境配置 1.引入依赖 <dependency><groupId>org.springframework.boot</groupId&g…...

【吴恩达机器学习笔记】十一、聚类

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 &#x1f4e3;专栏定位&#xff1a;为学习吴恩达机器学习视频的同学提供的随堂笔记。 &#x1f4da;专栏简介&#xff1a;在这个专栏&#xff0c;我将整理吴恩达机器学习视频的所有内容的笔记&…...

BUUCTF Misc 黑客帝国 [MRCTF2020]你能看懂音符吗 [HBNIS2018]caesar [HBNIS2018]低个头

黑客帝国 下载文件 一长串16进制&#xff0c;复制到在线16进制转文本 很明显是一个RAR文件&#xff0c;使用脚本将16进制转换成文件 import binasciihex_data这里填十六进制数据 outopen(res.rar,wb) out.write(binascii.unhexlify(hex_data)) out.close() 需要密码&#xff…...

基于多目标灰狼算法的冷热电联供型微网低碳经济调度(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…...

Linux系统启动过程总结

Linux系统启动过程总结 1、Linux 中 rc.local、init.d、rc.x、init 这几个文件(夹)各有什么作用?启动执行的脚本应该均放在 rc.local 中吗? - 知乎 2、/etc/inittab文件详解_muxi01lingyi的博客-CSDN博客_/etc/inittab /etc/inittab文件详解 - 莘莘学子 - 博客园 3、Li…...

防火墙ssh详解讲解

♥️作者&#xff1a;小刘在C站\ ♥️每天分享云计算网络运维课堂笔记&#xff0c;一起努力&#xff0c;共赴美好人生&#xff01; ♥️夕阳下&#xff0c;是最美的&#xff0c;绽放。 目录 一.防火墙配置对外的默认 二.防火墙配置内部ospf 三.防火墙远程管理 四.远程管理…...

Java【String】【StringBuilder】【StringBuffer】你都会用吗

文章目录前言一、常用的方法1、字符串构造2、字符串比较3、字符串查找4、字符串转化5、字符串替换6、字符串分割7、字符串截取二、字符串的不可变性三、StringBuilder、StringBuffer总结前言 在校招和笔试过程中&#xff0c;字符串是相当频繁被问到的话题&#xff0c;在之前的…...

Himall商城Xml帮助类 XML序列化 OSS策略

#region XML序列化 OSS策略 /// <summary> /// XML序列化 /// </summary> /// <param name="obj">序列对象</param> /// <param name="filePath">XML文件路径</param> /// …...

【人民币识别】人民币序列号识别【含GUI Matlab源码 908期】

⛄一、简介 本文描述的人民币序列号识别系统实现了从图像预处理到识别结果的过程, 而序列号识别是本文的重要内容.以序列号区域为研究对象, 主要包括图像预处理、图像分割以及序列号识别等过程。 1 图像预处理 人民币图像总体上来说灰度偏高, 灰度值基本上都大于150 (对8位25…...

html静态网站基于动漫网站网页设计与实现共计4个页面

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置&#xff0c;有div的样式格局&#xff0c;这个实例比较全面&#xff0c;有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 ⚽精彩专栏推荐&#x1…...

Himall商城Zip帮助类压缩文件(Zip)

public class ZipInfo { /// <summary> /// 解/压缩成功状态 /// </summary> public bool Success { get; set; } /// <summary> /// 解/压缩结果信息 /// <…...

MyBatis-Plus条件构造器[常用的模糊查询、排序查询、逻辑查询和指定字段查询案例]

系列文章目录 Mybatis-Plus知识点[MyBatisMyBatis-Plus的基础运用]_心态还需努力呀的博客-CSDN博客 Mybatis-PlusSpringBoot结合运用_心态还需努力呀的博客-CSDN博客MyBaits-Plus中TableField和TableId用法_心态还需努力呀的博客-CSDN博客 MyBatis-Plus中的更新操作&#x…...

cubeIDE开发, 如何结合FreeRTOS开发STM32程序

一、STM32CubeIDE使用内置的FreeRTOS 不同于STM32CubeIDE使用像RTThread这些第三方物联网系统&#xff0c;STM32CubeIDE在安装时就已经在MiddleWare中间件一栏直接支持了FreeRTOS操作系统。 既然STM32CubeIDE已经把FreeRTOS深度整合到了自家的系统中&#xff0c;所以移植及使用…...

写给儿子的一封信

最近听闻你成绩有点不理想&#xff0c;爸爸想跟你讲几个想法。 之前学羽毛球的时候&#xff0c;我往往带有期望&#xff0c;希望你能学成像林丹一样。每次你去上课&#xff0c;我也在旁边盯着&#xff0c;后来我发现效果不好&#xff0c;你好像很害怕我说你&#xff0c;学的也不…...

eclipse导入svn项目,项目有红色的感叹号/叉号

eclipse导入svn项目&#xff0c;项目左下角有红色的感叹号/叉号 1.首先调出Problems ( window -> show view-> Problems ) 查看报错信息 其次&#xff0c;看看Project是否开启了项目自动构建&#xff08;Build Automatically&#xff09; 2.根据报错信息逐一解决 3.…...

基于 Serverless 架构的 CI/CD 框架:Serverless-cd

近日&#xff0c;Serverless 开发者平台 Serverless Devs 重磅发布基于 Serverless 架构的轻量级 CI/CD 框架 ——Serverless-cd。Serverless-cd 是一款运行在 Serverless 架构上的功能强大而灵活&#xff0c;安全&#xff0c;低成本的 CI/CD 开源框架。该框架基于 Serverless …...

Vue Class与Style绑定

Vue Class与Style绑定1 Class绑定1.1 字符串写法1.2 数组写法1.3 对象写法2 Style绑定2.1 对象写法2.2 数组写法1 Class绑定 在Vue中&#xff0c;如果要为某个元素动态添加某个类&#xff0c;并不会使用document.getElementById等选择器将该元素获得&#xff0c;而是使用v-bin…...

制作一个谷歌浏览器插件,实现网页数据爬虫

一、什么是浏览器插件 浏览器插件&#xff0c;基于浏览器的原有功能&#xff0c;另外增加新功能的工具&#xff0c;是可定制浏览体验的小型软件程序&#xff0c;让用户可以根据个人需要或偏好来定制浏览器。 如拦截网页中的广告、划词翻译、倍速视频等等。 Chrome、edge等浏…...

Java实验七

文章目录前言一、判断E盘指定目录下是否有后缀名为.jpg的文件&#xff0c;如果有就输出此文件名称。二、分别使用字节流和字节缓冲流的两种读取方式实现对图片文件的复制操作并比较两种方式在复制时间上的效率。三、编写一个程序&#xff0c;分别使用转换流、字符流和缓冲字符流…...

Linux文件系统——文件系统、挂载点、目录结构

目录 一、目录结构 1.1 基本介绍 1.2 详细说明目录作用 二、挂载点 一、目录结构 1.1 基本介绍 Linux是一切皆文件&#xff0c;将所用的东西当做文件处理 目录结构就是一个单一的树状结构 整个的目录树只有一个树根&#xff1a;/ 根目录 文件夹分门别类的放到根目录…...

Linux——匿名管道、命名管道及进程池概念和实现原理

目录 一.什么是匿名管道 二.如何使用匿名管道 &#xff08;一&#xff09;.pipe原理 &#xff08;二&#xff09;.pipe使用 三.命名管道概念及区别 &#xff08;一&#xff09;.什么是命名管道 &#xff08;二&#xff09;.与匿名管道的联系和区别 四.命名管道的使用 &…...

青春先锋,西财力量:优秀!颁奖!

熠熠青春逢盛世,莘莘学子灼其华。5月15日晚,西南财经大学第十三届国家奖学金暨校园奖学金颁奖典礼在柳林校区学生活动中心举行。学校党委书记赵建军,党委副书记、校长李永强,党委常委、副校长史代敏,党委原副书记、学校关心下一代工作委员会副主任曾道荣,成都铸信企业(集…...

登录页面后数据库返回信息失败

在登录之后 页面反馈 找不到数据库用户信息,请重新登录 并且服务器日志显示 之前以为是数据库哪里设置问题 然后检查后主键设置正确的 但是这个insert user info failed 很奇怪 因为实在登录成功之后出错 不应该出现插入用户信息才对 然后检查用户登录函数 发现 本来是_ut.…...

Python--常见运算符

在编程中&#xff0c;赋值运算符、比较运算符以及逻辑运算符是基础而重要的概念之一。它们在处理变量赋值、数据比较和逻辑操作时发挥着关键作用。了解它们的功能和使用方法对于编写清晰、有效的代码至关重要。让我们逐一了解这些运算符的作用及示例。 1. 赋值运算符 赋值运算…...

MySQL是如何选择索引的?

2.3.5. 索引选择 MySQL是如何选择索引的&#xff1f; 优化器决定了具体某一索引的选择&#xff0c;也就是常说的执行计划。而优化器的选择是基于成本&#xff08;cost&#xff09;&#xff0c;哪个索引的成本越低&#xff0c;优先使用哪个索引。 SQL 优化器会分析所有可能的执…...

前端面试题日常练-day06 【面试题】

题目 希望这些选择题能够帮助您进行前端面试的准备&#xff0c;答案在文末。 1. 下列哪个 CSS 单位用于相对于视口宽度的长度计算&#xff1f; A) pxB) emC) remD) vw2. 在 JavaScript 中&#xff0c;以下哪个方法可以用于将字符串转换为整数&#xff1f; A) parseInt()B) pa…...

10道C++ STL高频面试题[21-30](附带完整参考答案)

C STL高频面试题[21-30] 21. lower_bound()和upper_bound()有什么用处&#xff1f;应用场景示例 22. STL中的allocator有什么作用&#xff1f;23.什么是RAII原则&#xff0c;它在STL中如何应用&#xff1f;24.什么是智能指针&#xff0c;它有什么作用&#xff1f;25.unique_ptr…...

武汉星起航推出亚马逊一站式孵化服务,助力卖家轻松拓展全球市场

亚马逊作为全球最大的电商平台之一&#xff0c;以其全球化的销售平台和完善的物流体系&#xff0c;吸引了众多卖家的目光。通过亚马逊平台&#xff0c;卖家可以轻松地将产品销往世界各地&#xff0c;无需担心复杂的国际贸易流程。而在这个充满机遇的市场中&#xff0c;武汉星起…...

linux利用yum下载rpm离线包

下载到仓库 通过--downloadonly参数可以只下载不安装&#xff0c;下载后的rpm包保存在目录 /var/cache/yum/x86_64/[centos/fedora-version]/[repository]/packages$ sudo yum install --downloadonly <package-name>下载到指定目录 yum install --downloadonly --dow…...

失而复得:揭秘删除照片恢复的技巧!

我们的生活与照片紧密相连。每一张照片都承载着一段独特的记忆&#xff0c;记录着我们的喜怒哀乐。然而&#xff0c;有时候我们会因为误操作、存储设备损坏或是文件管理不当而失去这些宝贵的照片。别担心&#xff01;现在&#xff0c;我们将揭示删除照片恢复的神秘面纱&#xf…...

24长三角B题1-5问完整代码+15页保姆级思路已更新

比赛题目的完整版思路可执行代码数据参考论文都会在第一时间更新上传的&#xff0c;大家可以参考我往期的资料&#xff0c;所有的资料数据以及到最后更新的参考论文都是一次付费后续免费的。注意&#xff1a;&#xff08;建议先下单占坑&#xff0c;因为随着后续我们更新资料数…...

Ubuntu 安装 eclipse 的详细过程及工程创建和编译配置

目录 一、安装环境二、下载依赖 java jdk三、下载 eclipse四、安装4.1 java 环境4.2 eclipse 安装4.3 打开 eclipse 五、配置 eclipse5.1 新建 C 工程5.2 工具链 配置5.3 头文件路径5.4 链接库5.5 编译 一、安装环境 Ubuntu 版本&#xff1a;22.04.3 位数&#xff1a;64-bit 二…...

C++ | Leetcode C++题解之第92题反转链表II

题目&#xff1a; 题解&#xff1a; class Solution { public:ListNode *reverseBetween(ListNode *head, int left, int right) {// 设置 dummyNode 是这一类问题的一般做法ListNode *dummyNode new ListNode(-1);dummyNode->next head;ListNode *pre dummyNode;for (i…...