RabbitMQ搭建集群环境、配置镜像集群、负载均衡
RabbitMQ集群搭建
- Linux安装RabbitMQ
- 下载
- 安装
- 基本操作命令
- 开启管理界面及配置
- RabbitMQ集群搭建
- 确定rabbitmq安装目录
- 启动第一个节点
- 启动第二个节点
- 停止命令
- 创建集群
- 查看集群
- 集群管理
- RabbitMQ镜像集群配置
- 启用HA策略
- 创建一个镜像队列
- 测试镜像队列
- 负载均衡-HAProxy
- 安装HAProxy
- 配置haproxy
- 启动HAProxy服务
- 查看HAProxy监控
- Java代码连接MQ集群
Linux安装RabbitMQ
下载
RabbitMQ官方下载页:https://www.rabbitmq.com/download.html
RabbitMQ下载:https://github.com/rabbitmq/rabbitmq-server/tags
erlang下载:https://github.com/rabbitmq/erlang-rpm/releases
下载RabbitMQ与erlang: https://packagecloud.io/rabbitmq
安装
注意:在下载 rabbitmq-server
与erlang
包时,若包名含el8
代表需要Centos8才能安装!例如: rabbitmq-server-3.11.13-1.el8.noarch.rpm
,否则安装将出现如下类似异常:
[root@node01 ~]# rpm -ivh erlang-25.3-1.el8.x86_64.rpm
警告:erlang-25.3-1.el8.x86_64.rpm: 头V4 RSA/SHA256 Signature, 密钥 ID cc4bbe5b: NOKEY
错误:依赖检测失败:libcrypto.so.1.1()(64bit) 被 erlang-25.3-1.el8.x86_64 需要libcrypto.so.1.1(OPENSSL_1_1_0)(64bit) 被 erlang-25.3-1.el8.x86_64 需要libcrypto.so.1.1(OPENSSL_1_1_1)(64bit) 被 erlang-25.3-1.el8.x86_64 需要libstdc++.so.6(CXXABI_1.3.9)(64bit) 被 erlang-25.3-1.el8.x86_64 需要libtinfo.so.6()(64bit) 被 erlang-25.3-1.el8.x86_64 需要libz.so.1(ZLIB_1.2.7.1)(64bit) 被 erlang-25.3-1.el8.x86_64 需要
由于服务器时CentOS7,故寻找包名带el7
的软件包,这里使用如下包
rabbitmq-server-3.6.5-1.noarch.rpmerlang-18.3-1.el7.centos.x86_64.rpm
下载地址:https://download.csdn.net/download/qq_38628046/87697057
1.安装或更新依赖环境
yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc
gcc-c++ kernel-devel m4 ncurses-devel tk tc xzyum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel
readline-devel tk-devel gcc make -y
2.安装erlang
[root@node01 ~]# rpm -ivh erlang-18.3-1.el7.centos.x86_64.rpm
准备中... ################################# [100%]
正在升级/安装...1:erlang-18.3-1.el7.centos ################################# [100%]
3.安装rabbitmq
[root@node01 ~]# rpm -ivh rabbitmq-server-3.6.5-1.noarch.rpm
警告:rabbitmq-server-3.6.5-1.noarch.rpm: 头V4 RSA/SHA1 Signature, 密钥 ID 6026dfca: NOKEY
错误:依赖检测失败:socat 被 rabbitmq-server-3.6.5-1.noarch 需要
访问:https://mirrors.aliyun.com/centos/7.9.2009/os/x86_64/Packages/
下载依赖
wget http://mirrors.aliyun.com/centos/7.9.2009/os/x86_64/Packages/socat-1.7.3.2-2.el7.x86_64.rpm
[root@node01 ~]# rpm -ivh socat-1.7.3.2-2.el7.x86_64.rpm
警告:socat-1.7.3.2-2.el7.x86_64.rpm: 头V4 RSA/SHA1 Signature, 密钥 ID 87e360b8: NOKEY
错误:依赖检测失败:tcp_wrappers 被 socat-1.7.3.2-2.el7.x86_64 需要
接着再访问:https://mirrors.aliyun.com/centos/7.9.2009/os/x86_64/Packages/
下载依赖
wget http://mirrors.aliyun.com/centos/7.9.2009/os/x86_64/Packages/tcp_wrappers-7.6-77.el7.x86_64.rpm
[root@node01 ~]# rpm -ivh tcp_wrappers-7.6-77.el7.x86_64.rpm
准备中... ################################# [100%]
正在升级/安装...1:tcp_wrappers-7.6-77.el7 ################################# [100%]
[root@node01 ~]# rpm -ivh socat-1.7.3.2-2.el7.x86_64.rpm
警告:socat-1.7.3.2-2.el7.x86_64.rpm: 头V4 RSA/SHA1 Signature, 密钥 ID 87e360b8: NOKEY
准备中... ################################# [100%]
正在升级/安装...1:socat-1.7.3.2-2.el7 ################################# [100%]
[root@node01 ~]# rpm -ivh rabbitmq-server-3.6.5-1.noarch.rpm
警告:rabbitmq-server-3.6.5-1.noarch.rpm: 头V4 RSA/SHA1 Signature, 密钥 ID 6026dfca: NOKEY
准备中... ################################# [100%]
正在升级/安装...1:rabbitmq-server-3.6.5-1 ################################# [100%]
注意:rabbitmq默认安装位置:/usr/lib/rabbitmq/bin
基本操作命令
检查RabbitMQ 的状态
systemctl status rabbitmq-server
启动RabbitMQ 服务
systemctl start rabbitmq-serversystemctl restart rabbitmq-server
停止RabbitMQ 服务
systemctl stop rabbitmq-server
将RabbitMQ设置为开机自启动
systemctl enable rabbitmq-server
开启管理界面及配置
开启管理界面
rabbitmq-plugins enable rabbitmq_management
修改默认配置信息
vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/ebin/rabbit.app
或者创建配置文件,在其中进行配置以覆盖默认配置信息
cd /usr/share/doc/rabbitmq-server-3.6.5/cp rabbitmq.config.example /etc/rabbitmq/rabbitmq.config
RabbitMQ安装好后,访问http://ip:15672
,使用guest用户名那与密码登录。
在3.3.1以后的版中,处于安全的考虑,guest这个默认的用户只能通过localhost来登录,其他的IP无法直接使用这个账号
编辑配置文件vim /etc/rabbitmq/rabbitmq.config
,在其中添加以下内容:
[{rabbit, [{loopback_users, []}]}]
注意:只需要在合适的位置添加{loopback_users, []}]
即可
%% -*- mode: erlang -*-
%% ----------------------------------------------------------------------------
%% RabbitMQ Sample Configuration File.
%%
%% See http://www.rabbitmq.com/configure.html for details.
%% ----------------------------------------------------------------------------
[{rabbit,[%%{loopback_users, []}%% Network Connectivity%% ====================%%%% By default, RabbitMQ will listen on all interfaces, using%% the standard (reserved) AMQP port.%%%% {tcp_listeners, [5672]},%% To listen on a specific interface, provide a tuple of {IpAddress, Port}.%% For example, to listen only on localhost for both IPv4 and IPv6:%%%% {tcp_listeners, [{"127.0.0.1", 5672},%% {"::1", 5672}]},
保存后重启rabbitmq-server即可使用guest用户名和密码来登录
RabbitMQ集群搭建
官方文档:https://www.rabbitmq.com/clustering.html
确定rabbitmq安装目录
查找rabbitmq的安装目录
[root@node01 rabbitmq-server-3.6.5]# whereis rabbitmq
rabbitmq: /usr/lib/rabbitmq /etc/rabbitmq
[root@node01 rabbitmq-server-3.6.5]# cd /usr/lib/rabbitmq/bin
[root@node01 bin]# ls
rabbitmqctl rabbitmq-defaults rabbitmq-env rabbitmq-plugins rabbitmq-server
确保RabbitMQ正常运行
rabbitmqctl status
然后停止rabbitmq服务
systemctl stop rabbitmq-server
启动第一个节点
[root@node01 bin]# RABBITMQ_NODE_PORT=5673 RABBITMQ_NODENAME=mq1 rabbitmq-server startRabbitMQ 3.6.5. Copyright (C) 2007-2016 Pivotal Software, Inc.## ## Licensed under the MPL. See http://www.rabbitmq.com/## ############ Logs: /var/log/rabbitmq/mq1.log###### ## /var/log/rabbitmq/mq1-sasl.log##########Starting broker...completed with 6 plugins.
启动第二个节点
web管理插件端口占用,所以还要指定其web插件占用的端口号。
[root@node01 bin]# RABBITMQ_NODE_PORT=5674 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15673}]" RABBITMQ_NODENAME=mq2 rabbitmq-server startRabbitMQ 3.6.5. Copyright (C) 2007-2016 Pivotal Software, Inc.## ## Licensed under the MPL. See http://www.rabbitmq.com/## ############ Logs: /var/log/rabbitmq/mq2.log###### ## /var/log/rabbitmq/mq2-sasl.log##########Starting broker...completed with 6 plugins.
停止命令
[root@node01 ~]# rabbitmqctl -n mq1 stop
Stopping and halting node mq1@node01 ...[root@node01 ~]# rabbitmqctl -n mq2 stop
Stopping and halting node mq2@node01 ...
创建集群
mq1操作作为主节点:
注意:操作节点前,确保mq处于运行状态
[root@node01 ~]# rabbitmqctl -n mq1 stop_app
Stopping node mq1@node01 ...
[root@node01 ~]# rabbitmqctl -n mq1 reset
Resetting node mq1@node01 ...
[root@node01 ~]# rabbitmqctl -n mq1 start_app
Starting node mq1@node01 ...
mq2操作为从节点:
[root@node01 ~]# rabbitmqctl -n mq2 stop_app
Stopping node mq2@node01 ...
[root@node01 ~]# rabbitmqctl -n mq2 reset
Resetting node mq2@node01 ...
[root@node01 ~]# rabbitmqctl -n mq2 join_cluster mq1@'node01'
Clustering node mq2@node01 with mq1@node01 ...
[root@node01 ~]# rabbitmqctl -n mq2 start_app
Starting node mq2@node01 ...
查看集群
[root@node01 ~]# rabbitmqctl cluster_status -n mq1
Cluster status of node mq1@node01 ...
[{nodes,[{disc,[mq1@node01,mq2@node01]}]},{running_nodes,[mq2@node01,mq1@node01]},{cluster_name,<<"mq1@node01">>},{partitions,[]},{alarms,[{mq2@node01,[]},{mq1@node01,[]}]}]
查看web监控
集群管理
将节点加入指定集群中
注意:需停止RabbitMQ应用并重置节点
rabbitmqctl join_cluster {cluster_node} [–ram]
显示集群的状态
rabbitmqctl cluster_status
修改集群节点的类型
注意:需要停止RabbitMQ应用
rabbitmqctl change_cluster_node_type {disc|ram}
将节点从集群中删除,允许离线执行
rabbitmqctl forget_cluster_node [–offline]
在集群中的节点应用启动前咨询clusternode节点的最新信息,并更新相应的集群信息
这个和join_cluster不同,它不加入集群。考虑这样一种情况,节点A和节点B都在集群中,当节点A离线了,节点C又和节点B组成了一个集群,然后节点B又离开了集群,当A醒来的时候,它会尝试联系节点B,但是这样会失败,因为节点B已经不在集群中了。
rabbitmqctl update_cluster_nodes {clusternode}
取消队列queue同步镜像的操作
rabbitmqctl cancel_sync_queue [-p vhost] {queue}
设置集群名称。集群名称在客户端连接时会通报给客户端。Federation和Shovel插件也会有用到集群名称的地方。集群名称默认是集群中第一个节点的名称,通过这个命令可以重新设置。
rabbitmqctl set_cluster_name {name}
RabbitMQ镜像集群配置
RabbitMQ 的默认集群模式可以让交换机、绑定等元数据复制到集群中的所有节点,从而保证这些元数据在整个集群中都是可用的。
但是,队列内容并不会被自动复制到集群中的其他节点上。这意味着,如果一个节点宕机或出现故障,就会导致该节点上的队列内容无法被消费者读取。
为了解决这个问题,需要创建镜像队列。镜像队列是一种特殊的队列类型,它会将队列的消息复制到集群中的其他节点上,从而保证在任何情况下都能够正常地消费队列的消息。
当需要构建高可用性的 RabbitMQ 集群时,通常会采用镜像队列来保证消息的传递和持久化。
启用HA策略
镜像队列是基于普通的集群模式的,然后再添加一些策略,所以还是得先配置普通集群,然后才能设置镜像队列。
设置镜像队列有2种方式:
1.通过命令设置镜像队列
rabbitmqctl set_policy ha "^" '{"ha-mode":"all"}'
2.通过网页管理端设置镜像队列
Name:策略名称Pattern:匹配的规则,如果是匹配所有的队列,是^Definition:使用ha-mode模式中的all,也就是同步所有匹配的队列。问号链接帮助文档
创建一个镜像队列
创建一个队列,然后可以看到队列开始进行同步
同步完成,mq1@node01
节点上的队列数据向mq2@node01
节点上同步
测试镜像队列
在mq1@node01
节点,向队列发送消息
查看mq2@node01
节点的队列,发现消息已同步
负载均衡-HAProxy
HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可
靠的一种解决方案,包括Twitter,Reddit,StackOverflow,GitHub在内的多家知名互联网公司在使用。
HAProxy实现了一种事件驱动、单一进程模型,此模型支持非常大的并发连接数。
官方下载:https://www.haproxy.org/download/
安装HAProxy
下载HAProxy的tar.gz安装包
wget https://www.haproxy.org/download/2.7/src/haproxy-2.7.6.tar.gz
解压缩安装包
tar xvfz haproxy-2.7.6.tar.gz
cd haproxy-2.7.6
查看内核版本
[root@node01 ~]# uname -r
3.10.0-1160.88.1.el7.x86_64
编译并安装HAProxy
ARGET=linux310:内核版本ARCH=x86_64:系统位数PREFIX=/usr/local/haproxy:haprpxy安装路径
make TARGET=linux310 PREFIX=/usr/local/haproxy ARCH=x86_64make install PREFIX=/usr/local/haproxy
配置haproxy
建一个名为"haproxy"的用户组
# -r 将该用户组设置为系统级别的组
groupadd -r haproxy
创建一个名为"haproxy"的用户
# -g 将该用户添加到上面创建的"haproxy"用户组中
# -r 将该用户设置为系统级别用户
useradd -r -g haproxy haproxy
创建haproxy配置文件
mkdir -p /etc/haproxy# 源码目录下执行
cp examples/quick-test.cfg /etc/haproxy/haproxy.cfg
修改配置文件/etc/haproxy/haproxy.cfg
,按照需要进行配置,参考如下示例
# 全局配置参数,属于进程级的配置
global# 日志配置 local0:日志设备 info:日志记录级别log 127.0.0.1 local0 info# haproxy工作目录chroot /usr/local/haproxy# haproxy启动后进程的pid文件路径pidfile /usr/local/haproxy/haproxy.pid# 每个haproxy进程可接受的最大并发连接数maxconn 4000user haproxy group haproxy # haproxy启动时可创建的进程数,默认1个,值应小于服务器的CPU核数,高版本已弃用# nbproc 1# haproxy在后台运行daemon# 默认参数配置
defaultsmode tcplog globaloption abortoncloseoption redispatch# 配置连接后端服务器失败重试次数,超过3次后会将失败的后端服务器标记为不可用retries 3# 配置成功连接到一台服务器的最长等待时间,默认单位是毫秒,也可自己指定单位timeout connect 10000# 配置连接客户端发送数据时的最长等待时间,默认单位是毫秒,也可自己指定单位timeout client 1m# 配置服务器端回应客户端数据发送时最长等待时间,默认单位是毫秒,也可自己指定单位timeout server 1m# 配置对后端服务器的检测超时时间,默认单位是毫秒,也可自己指定单位timeout check 10s# 最大连接数maxconn 3000# 定义服务叫"proxy_status "名字的虚拟节点
# haproxy代理的两个mq
listen proxy_status # 配置监听5672端口bind 0.0.0.0:5672# tcp模式 mode tcp# 轮询访问mq1与mq2balance roundrobin# mq真实IP:端口server node01 192.168.10.13:5673 check inter 10sserver node02 192.168.10.13:5674 check inter 10s# 定义服务叫"admin_stats"名字的虚拟节点
# haproxy管理页面
frontend admin_stats # 监听地址和端口bind *:8888# http模式 mode http# 配置在客户端和服务器完成一次连接请求后,haproxy主动关闭此TCP连接option httpclose# 配置后端服务器需要获得客户端的真实IP,通过增加"X-Forwarded-For"来记录客户端IPoption forwoardfor# 启用日志来记录http请求,默认只对tcp日志进行日志记录option httplogmaxconn 10stats enablestats refresh 30s# 统计页面路径stats uri /admin# 设置统计页面认证的用户和密码stats auth admin:123123stats hide-versionstats admin if TRUE
启动HAProxy服务
/usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg
查看haproxy进程状态
[root@node01 haproxy]# ps -ef|grep haproxy
haproxy 6061 1 0 22:51 ? 00:00:00 /usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg
root 6318 27966 0 22:51 pts/8 00:00:00 grep --color=auto haproxy
查看HAProxy监控
访问http://192.168.10.13:8888/admin
查看HAProxy监控
Java代码连接MQ集群
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;import java.io.IOException;
import java.util.concurrent.TimeoutException;/*** 发送消息*/
public class HelloWorld {public static void main(String[] args) throws IOException, TimeoutException {// 创建连接工厂ConnectionFactory factory = new ConnectionFactory();// 设置参数factory.setHost("192.168.10.13");// HaProxy的ipfactory.setPort(5672); //端口 HaProxy的监听的端口// 创建连接 ConnectionConnection connection = factory.newConnection();// 创建ChannelChannel channel = connection.createChannel();// 创建队列Queuechannel.queueDeclare("hello_queue",true,false,false,null);String body = "hello rabbitmq";// 发送消息channel.basicPublish("","hello_queue",null,body.getBytes());// 释放资源channel.close();connection.close();System.out.println("send success....");}
}
相关文章:

RabbitMQ搭建集群环境、配置镜像集群、负载均衡
RabbitMQ集群搭建 Linux安装RabbitMQ下载安装基本操作命令开启管理界面及配置 RabbitMQ集群搭建确定rabbitmq安装目录启动第一个节点启动第二个节点停止命令创建集群查看集群集群管理 RabbitMQ镜像集群配置启用HA策略创建一个镜像队列测试镜像队列 负载均衡-HAProxy安装HAProxy…...

leetcode:457. 环形数组是否存在循环
环形数组是否存在循环 存在一个不含 0 的 环形 数组 nums ,每个 nums[i] 都表示位于下标 i 的角色应该向前或向后移动的下标个数: 如果 nums[i] 是正数,向前(下标递增方向)移动 |nums[i]| 步 如果 nums[i] 是负数&…...

Kafka集成springboot
安装kafka,直接到官网下载bin文件,本文使用windows进行使用kafka。 下载之后,第一步,启动zookeeper: zookeeper-server-start.bat ..\..\config\zookeeper.properties 第二步,启动kafka: kafka…...

Unity中实现ShaderToy卡通火(移植篇)
文章目录 前言一、准备好我们的后处理基础脚本1、C#:2、Shader: 二、开始逐语句对ShaderToy进行转化1、首先,找到我们的主函数 mainImage2、其余的方法全部都是在 mainImage 函数中调用的方法3、替换后的代码(已经没报错了,但是效…...

指针相关知识(进阶)
前面的入门中已经介绍了指针的基础知识,接下来,让我们继续学习吧! 一. 字符指针变量 char* 一般形式 int main() {char n w;char* pa &n;*pa w;return 0; } 这并不是把字符串hello world放在n中,而是把第一个字符的地址…...

怎么将文件变为可执行文件
怎么将文件变为可执行文件 在Unix/Linux系统中,要将一个文件变为可执行文件,你需要使用chmod命令。以下是基本的步骤: 打开终端:使用你系统中的终端或命令行界面。 使用 cd 命令切换到包含你的文件的目录。例如: bash …...

5373. 中等计算
文章目录 QuestionIdeasCode Question 给定一个长度为 n 的非负整数序列 a1,a2,…,an 。 对于 1≤i≤n ,有 biai⊕(imod1)⊕(imod2)⊕…⊕(imodn) 。 请你计算并输出 b1⊕b2⊕…⊕bn 的值。 ⊕ 表示按位异或。 输入格式 第一行包含整数 n 。 第二行包含 n 个整…...

极智一周 | 两系列汇总、MI300X、H100、特供芯片、GPT-4、火灾检测、酷睿Ultra And so on
欢迎关注我的公众号 [极智视界],获取我的更多技术分享 大家好,我是极智视界,带来本周的 [极智一周],关键词:两系列汇总、MI300X、H100、特供芯片、GPT-4、火灾检测、酷睿Ultra And so on。 邀您加入我的知识星球「极智…...

leetcode刷题日志-383赎金信
思路:分别用两个map记录ransomNote和magazine中的字符以及出现的次数。最后遍历记录ransomNote的map,如果ransomNote的map中出现的magazine的map中没有出现或者出现的次数小于ransomNote的map则返回false,否则返回true; class So…...

K8s(九)—volume.md
目录 volumeconfigMap介绍官网例子基于文件生成 ConfigMap使用 ConfigMap 数据定义容器环境变量使用单个 ConfigMap 中的数据定义容器环境变量 EmptyDirhostPathhostPath 配置示例 nfspersistentVolumeClaim volume https://kubernetes.io/zh-cn/docs/concepts/storage/volume…...

python N个人围成一圈报数 报到3出列 直到只剩下最后一人
公司聚会上,N名员工围成一圈,按1—N顺序编号(要求N<40)。 然后从队头开始1,2,3报数,数3的出列,剩下的员工再从头开始1,2,3报数……直到剩下最后一名员工时, 这员工就是…...

RFC4861 中文版下
10. 协议常量 路由器常量: MAX_INITIAL_RTR_ADVERT_INTERVAL 16 秒MAX_INITIAL_RTR_ADVERTISEMENTS 3 次发送MAX_FINAL_RTR_ADVERTISEMENTS 3 次发送MIN_DELAY_BETWEEN_RAS 3 秒MAX_RA_DELAY_TIME .5 秒主机常量: MAX_RTR_SOLICITATION_…...

用友时空 KSOA 多处SQL注入漏洞复现
0x01 产品简介 用友时空 KSOA 是建立在 SOA 理念指导下研发的新一代产品,是根据流通企业前沿的 IT 需求推出的统一的IT基础架构,它可以让流通企业各个时期建立的 IT 系统之间彼此轻松对话。 0x02 漏洞概述 用友时空 KSOA 系统 PayBill、QueryService、linkadd.jsp等接口处…...

[AutoSar]基础部分 RTE 介绍
目录 关键词平台说明一、什么是RTE二、RTE的主要功能 关键词 嵌入式、C语言、autosar、EcuM、wakeup、flex 平台说明 项目ValueOSautosar OSautosar厂商vector芯片厂商TI编程语言C,C编译器HighTec (GCC) 一、什么是RTE RTE(Run-Time Environment&…...

Logstash访问安全访问Elasticsearch集群
生成logstash证书: opensal pkcs12 -in elastic-stack-ca.p12 -clcerts -nokeys > logafash.cer openssl x509 -in logstash.cer -out logstash.pem 编排配置文件...

加密的艺术:对称加密的奇妙之处(下)
🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…...

异常检测 | MATLAB实现BiLSTM(双向长短期记忆神经网络)数据异常检测
异常检测 | MATLAB实现BiLSTM(双向长短期记忆神经网络)数据异常检测 目录 异常检测 | MATLAB实现BiLSTM(双向长短期记忆神经网络)数据异常检测效果一览基本介绍模型准备模型设计参考资料效果一览 基本介绍 训练一个双向 LSTM 自动编码器来检测机器是否正常工作。 自动编码器接受…...

2023“楚怡杯”湖南省赛“信息安全管理与评估“--数字取证调查(高职组)
2023“楚怡杯”湖南省“信息安全管理与评估”(高职组)任务书 2023“楚怡杯”湖南省“信息安全管理与评估”(高职组)任务书第一阶段竞赛项目试题第二阶段竞赛项目试题第二部分 数字取证调查:需要环境私聊博主:2023“楚怡杯”湖南省“信息安全管理与评估”(高职组)任务书…...

C++ list常用操作
目录 一、介绍 二、list的常用操作 1、构造 2、迭代器 3、元素访问 4、容量操作 一、介绍 std::list文档链接 list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个…...

MILP加速运算技巧——模型对称性的预处理
文章目录 整数规划的对称性什么是对称性对称性的影响 对称性的预处理方法 整数规划的对称性 什么是对称性 许多整数规划问题存在对称性,这种对称性是指问题解空间的对称,即在对称的解空间当中解的优化目标值上是相同的。这种对称性并不会改变问题的最优…...

JavaScript中的生成器与迭代器详解
一、迭代器与可迭代对象 1.什么是迭代器 迭代器(iterator),使用户在容器对象(container,例如链表或数组)上遍访的对象,使用该接口无需关心对象的内部实现细节。 其行为像数据库中的光标&…...

WebLangChain_ChatGLM:结合 WebLangChain 和 ChatGLM3 的中文 RAG 系统
WebLangChain_ChatGLM 介绍 本文将详细介绍基于网络检索信息的检索增强生成系统,即 WebLangChain。通过整合 LangChain,成功将大型语言模型与最受欢迎的外部知识库之一——互联网紧密结合。鉴于中文社区中大型语言模型的蓬勃发展,有许多可供利…...

hive常用SQL函数及案例
1 函数简介 Hive会将常用的逻辑封装成函数给用户进行使用,类似于Java中的函数。 好处:避免用户反复写逻辑,可以直接拿来使用。 重点:用户需要知道函数叫什么,能做什么。 Hive提供了大量的内置函数,按照其特…...

分页操作中使用LIMIT和OFFSET后出现慢查询的原因分析
事情经过 最近在做批量数据处理的相关业务,在和下游对接时,发现拉取他们的业务数据刚开始很快,后面会越来越慢,40万数据一个小时都拉不完。经过排查后,发现对方用了很坑的分页查询方式 —— LIMIT OFFSET,…...

Java八股文面试全套真题【含答案】- Redis篇
请看下面列举的50个关于Redis的经典面试问题和简短答案: Redis是什么?简要介绍一下Redis的特点。 Redis是一个开源的高性能键值存储数据库,支持多种数据结构,如字符串、列表、集合、哈希和有序集合等。 特点包括快速、可持久化、支…...

【C++11特性篇】一文助小白轻松理解 C++中的【左值&左值引用】【右值&右值引用】
前言 大家好吖,欢迎来到 YY 滴C系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! 目录 一.【左值&左值引用】&…...

动态规划——OJ题(一)
📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、第N个泰波那契数1、题目讲解2、思路讲解3、代码实现 二、三步问题1、题目讲解2、思路讲解…...

六:爬虫-数据解析之BeautifulSoup4
六:bs4简介 基本概念: 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据官方解释如下: Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。 它是一个工具箱…...

音频筑基:总谐波失真THD+N指标
音频筑基:总谐波失真THDN指标 THDN含义深入理解 在分析音频信号中,THDN指标是我们经常遇到的概念,这里谈谈自己的理解。 THDN含义 首先,理解THD的定义: THD,Total Harmonic Distortion,总谐波…...

自动驾驶技术:驶向未来的智能之路
导言 自动驾驶技术正引领着汽车产业向着更安全、高效、智能的未来演进。本文将深入研究自动驾驶技术的核心原理、关键技术、应用场景以及对交通、社会的深远影响。 1. 简介 自动驾驶技术是基于先进传感器、计算机视觉、机器学习等技术的创新,旨在实现汽车在不需要人…...