部署LVS负载均衡集群架构

news2024/10/2 17:18:05

目录

一、ipvsadm 工具

二、NAT模式下部署LVS负载均衡

1、部署NFS共享存储服务器

1.1 安装NFS软件

1.2 新建共享目录和站点文件

1.3 设置共享策略

2、部署节点服务器1

2.1 安装并启动nginx软件

2.2 挂载共享目录到网页站点目录

2.3 修改网关

3、部署节点服务器2

3.1 安装并启动nginx软件

3.2 挂载共享目录到网页站点目录

3.3 修改网关

4、部署负载均衡调度服务器

4.1 添加新网卡并配置网卡信息

4.2 开启路由转发功能

4.3 搭建本地yum仓库安装ipvsadm

4.4 配置负载分配策略,

5、客户端测试

三、 DR模式下部署LVS负载均衡

1、部署节点服务器1

1.1 设置虚拟回环网卡

1.1.1 临时设置虚拟回环网卡

1.1.2 永久设置虚拟回环网卡 

1.2 设置路由

1.3 忽略arp请求

1.4 安装并启动nginx软件

1.5 新建网页站点文件

2、部署节点服务器2

2.1 设置虚拟回环网卡

2.1.1 临时设置虚拟回环网卡

2.1.2 永久设置虚拟回环网卡 

2.2 设置路由

2.3 忽略ARP请求

2.4 安装并启动nginx软件

2.5 新建网页站点文件

3、部署负载均衡调度服务器

3.1 设置虚拟网卡

3.1.1 临时设置虚拟网卡

3.1.2 永久设置虚拟网卡

3.2 调整/proc响应参数

3.3 搭建本地yum仓库安装ipvsadm

3.4 配置负载分配策略

4、客户端测试


一、ipvsadm 工具

ipvsadm是用于配置IP负载均衡的工具,实现LVS内核的工具,用于实现负载均衡,将传入的连接分发给一组后端服务器

选项说明
-A添加虚拟服务器
-D删除整个虚拟服务器
-s指定负载调度算法(轮询: rr、加权轮询: wrr、最少连接: lc、加权最少连接: wlc)
-a添加真实服务器(节点服务器)
-d删除某一个节点
-t指定VIP地址及TCP端口
-r指定RIP地址及TCP端口
-m表示使用NAT群集模式
-g表示使用DR模式
-j表示使用TUN模式
-w设置权重(权重为0时表示暂停节点)
-p-p 60 表示保持长连接60秒
-l列表查看 LVS虚拟服务器(默认为查看所有)
-n以数字形式显示地址、端口等信息,常与"-l“选项组合使用。ipvsadm -ln
#管理集群服务
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask] [--pe persistence_engine] [-b sched-flags]
ipvsadm -D -t|u|f service-address #删除
ipvsadm –C #清空
ipvsadm –R #重载,相当于ipvsadm-restore
ipvsadm -S [-n] #保存,相当于ipvsadm-save
#管理集群中的RS
ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight]  
ipvsadm -d -t|u|f service-address -r server-address
ipvsadm -L|l [options]
ipvsadm -Z [-t|u|f service-address]

选项:
lvs类型:
    -g: gateway, dr类型,默认
    -i: ipip, tun类型
    -m: masquerade, nat类型        
-w weight:权重

例子:
ipvsadm -A -t 12.0.0.1:80 -s rr
-A 新建代理服务器
-t tcp协议
12:0.0.1:80
-s 指定调度算法

ipvsadm -a -t 12.0.0.1:80 -r 192.168.80.11:80 -m
-r 真实服务器
-m 表示使用NAT群集模式
Unit File: ipvsadm.service
主程序:/usr/sbin/ipvsadm
规则保存工具:/usr/sbin/ipvsadm-save
规则重载工具:/usr/sbin/ipvsadm-restore
配置文件:/etc/sysconfig/ipvsadm-config
ipvs调度规则文件:/etc/sysconfig/ipvsadm

二、NAT模式下部署LVS负载均衡

前提:关闭所有设备的防火墙和核心防护

[root@localhost ~]#systemctl stop firewalld
[root@localhost ~]#setenforce 0

注:

  • 当客户端访问负载调度服务器,负载调度服务器会根据轮询的调度算法,将请求调度到节点服务器1或节点服务器2上(比例1:1)。
  • 然后节点服务器1和节点服务器2从NFS共享存储服务器上获取网页资源,然后再通过负载调度服务器返回给客户端

在现实环境中,节点服务器1和节点服务器2从NFS共享存储服务器上获取的网页资源内容是一样的,但这里,为了方便展示效果,就使用不同的网页资源,方便区分。

浏览器访问:

情况一:

http://172.16.12.10/  ---> 负载调度服务器 ---> 节点服务器1 ---> NFS共享存储服务器:welcome to web 1

情况二:

http://172.16.12.10/  ---> 负载调度服务器 ---> 节点服务器2 ---> NFS共享存储服务器:welcome to web 2

1、部署NFS共享存储服务器

NFS 是一种基于 TCP/IP 传输的网络文件系统协议,最初由 Sun 公司开发。通过使用 NFS

协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。对于大多数负载均衡

群集来说,使用 NFS 协议来共享数据存储是比较常见的做法,NFS 也是 NAS 存储设备必然支

持的一种协议

NFS 服务的实现依赖于 RPC(Remote Process Call,远端过程调用)机制,以完成远程

到本地的映射过程。在 CentOS 7 系统中,需要安装 nfs-utils、rpcbind 软件包来提供 NFS

共享服务,前者用于 NFS 共享发布和访问,后者用于 RPC 支持

1.1 安装NFS软件

[root@localhost ~]#yum install nfs-utils rpcbind -y
[root@localhost ~]#systemctl start rpcbind
[root@localhost ~]#systemctl start nfs

1.2 新建共享目录和站点文件

[root@localhost ~]#mkdir /opt/web1 /opt/web2
[root@localhost ~]#chmod 777 /opt/web1 /opt/web2
[root@localhost ~]#echo 'welcome to web 1' > /opt/web1/index.html
[root@localhost ~]#echo 'welcome to web 2' > /opt/web2/index.html

1.3 设置共享策略

[root@localhost ~]#vim /etc/exports
/opt/web1 172.16.12.0/24(rw,sync)
/opt/web2 172.16.12.0/24(rw,sync)
[root@localhost ~]#exportfs -r
[root@localhost ~]#exportfs -v
[root@localhost ~]#systemctl restart nfs

2、部署节点服务器1

2.1 安装并启动nginx软件

[root@localhost ~]#yum install epel-release.noarch -y
[root@localhost ~]#yum install -y nginx
[root@localhost ~]#systemctl start nginx

2.2 挂载共享目录到网页站点目录

[root@localhost ~]#showmount -e 172.16.12.13
[root@localhost ~]#mount 172.16.12.13:/opt/web1 /usr/share/nginx/html

2.3 修改网关

[root@localhost ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=172.16.12.11
NETMASK=255.255.255.0
GATEWAY=172.16.12.10
DNS1=8.8.8.8
DNS2=114.114.114.114
[root@localhost ~]#systemctl restart network

3、部署节点服务器2

3.1 安装并启动nginx软件

[root@localhost ~]#yum install epel-release.noarch -y
[root@localhost ~]#yum install -y nginx
[root@localhost ~]#systemctl start nginx

3.2 挂载共享目录到网页站点目录

[root@localhost ~]#showmount -e 172.16.12.13
[root@localhost ~]#mount 172.16.12.13:/opt/web2 /usr/share/nginx/html

3.3 修改网关

[root@localhost ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=172.16.12.12
NETMASK=255.255.255.0
GATEWAY=172.16.12.10
DNS1=8.8.8.8
DNS2=114.114.114.114
[root@localhost ~]#systemctl restart network

4、部署负载均衡调度服务器

4.1 添加新网卡并配置网卡信息

#添加新网卡并配置网卡信息,修改旧网卡网关
[root@localhost ~]#cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]#cp ifcfg-ens33 ifcfg-ens36
[root@localhost network-scripts]#vim ifcfg-ens36
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
NAME=ens36
DEVICE=ens36
ONBOOT=yes
IPADDR=11.0.0.10
NETMASK=255.255.255.0
GATEWAY=11.0.0.10
DNS1=8.8.8.8
DNS2=114.114.114.114
[root@localhost network-scripts]#vim ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=172.16.12.10
NETMASK=255.255.255.0
GATEWAY=172.16.12.10
DNS1=8.8.8.8
DNS2=114.114.114.114
[root@localhost network-scripts]#systemctl restart network
[root@localhost network-scripts]#ifconfig

4.2 开启路由转发功能

[root@localhost ~]#echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
[root@localhost ~]#sysctl -p
[root@localhost ~]#sysctl -a | grep ip_forward

4.3 搭建本地yum仓库安装ipvsadm

#加载模块
[root@localhost ~]#modprobe ip_vs
[root@localhost ~]#cat /proc/net/ip_vs

#搭建本地yum仓库安装ipvsadm
[root@localhost ~]#mount /dev/sr0 /mnt
[root@localhost ~]#cd /etc/yum.repos.d/
[root@localhost yum.repos.d]#mkdir bak
[root@localhost yum.repos.d]#mv *.repo bak
[root@localhost yum.repos.d]#vim local.repo
[local]
name=local
baseurl=file:///mnt
gpgcheck=0
[root@localhost yum.repos.d]#yum clean all
[root@localhost yum.repos.d]#yum makecache
[root@localhost ~]#yum install -y ipvsadm.x86_64
#开启ipvsadm服务
[root@localhost ~]#ipvsadm-save >/etc/sysconfig/ipvsadm
[root@localhost ~]#systemctl start ipvsadm.service
[root@localhost ~]#systemctl status ipvsadm.service

4.4 配置负载分配策略,

[root@localhost ~]#ipvsadm -C
[root@localhost ~]#ipvsadm -ln
[root@localhost ~]#ipvsadm -A -t 11.0.0.10:80 -s rr
[root@localhost ~]#ipvsadm -a -t 11.0.0.10:80 -r 172.16.12.11:80 -m
[root@localhost ~]#ipvsadm -a -t 11.0.0.10:80 -r 172.16.12.12:80 -m
[root@localhost ~]#ipvsadm -ln
[root@localhost ~]#ipvsadm-save >/etc/sysconfig/ipvsadm

5、客户端测试

[root@localhost ~]#curl 11.0.0.10

模拟节点服务器1宕机:

即关闭节点服务器1的nginx服务,那么NAT模式下的LVS负载调度服务器会有对后端节点服务器的健康检查机制吗?

客户端测试得知,当节点服务器1宕机,LVS负载调度服务器仍会调度到宕机的节点服务器1上,所以LVS负载调度服务器不会对后端的节点服务器进行健康检测,不会检测后端的服务器是否正常工作

注: 

在调度服务器可查看,当前系统上 IPVS 的配置信息

[root@localhost ~]#cat /proc/net/ip_vs
[root@localhost ~]#ipvsadm -ln

三、 DR模式下部署LVS负载均衡

前提:关闭所有设备的防火墙和核心防护

[root@localhost ~]#systemctl stop firewalld
[root@localhost ~]#setenforce 0

注:

  • 当客户端发送请求时,请求会首先到达负载调度服务器。负载调度服务器根据轮询的调度算法,将请求转发给节点服务器1或节点服务器2
  • 当节点服务器1或节点服务器2接收到请求后,处理并生成响应,直接将响应数据包发送回客户端,不需要经过负载调度服务器
  • 需要在负载调度服务器、所有的节点服务器上的配置虚拟IP(VIP),关闭所有节点服务器的arp广播

在现实环境中,从节点服务器1和节点服务器2获取的网页资源内容是一样的,但这里,为了方便展示效果,就使用不同的网页资源,方便区分。

浏览器访问:

情况一:

http://172.16.12.200/  ---> 负载调度服务器 ---> 节点服务器1 ---> welcome to web 1

                                                     客户端 <----

情况二:

http://172.16.12.200/  ---> 负载调度服务器 ---> 节点服务器2 ---> welcome to web 2

                                                      客户端 <----

1、部署节点服务器1

1.1 设置虚拟回环网卡

1.1.1 临时设置虚拟回环网卡
[root@localhost ~]#ifconfig lo:0 172.16.12.200/32
[root@localhost ~]#ip a

1.1.2 永久设置虚拟回环网卡 
[root@localhost ~]#cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]#cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]#vim ifcfg-lo:0
#修改回环网卡名,IP地址,子网掩码
DEVICE=lo:0
IPADDR=172.16.12.200
NETMASK=255.255.255.255
NETWORK=127.0.0.0
[root@localhost network-scripts]#systemctl restart network
[root@localhost network-scripts]#ip a

1.2 设置路由

[root@localhost network-scripts]#route add -host 172.16.12.200 dev lo:0
[root@localhost network-scripts]#route -n

1.3 忽略arp请求

#添加系统只响应目的IP为本地IP的ARP请求
#系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP
[root@localhost ~]#vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
[root@localhost ~]#sysctl -p

1.4 安装并启动nginx软件

[root@localhost ~]#yum install epel-release.noarch -y
[root@localhost ~]#yum install -y nginx
[root@localhost ~]#systemctl start nginx

1.5 新建网页站点文件

[root@localhost ~]#echo "welcome to web 1" > /usr/share/nginx/html/index.html
[root@localhost ~]#cat /usr/share/nginx/html/index.html

2、部署节点服务器2

2.1 设置虚拟回环网卡

2.1.1 临时设置虚拟回环网卡
[root@localhost ~]#ifconfig lo:0 172.16.12.200/32
[root@localhost ~]#ip a

2.1.2 永久设置虚拟回环网卡 
[root@localhost ~]#cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]#cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]#vim ifcfg-lo:0
#修改回环网卡名,IP地址,子网掩码
DEVICE=lo:0
IPADDR=172.16.12.200
NETMASK=255.255.255.255
NETWORK=127.0.0.0
[root@localhost network-scripts]#systemctl restart network
[root@localhost network-scripts]#ip a

2.2 设置路由

[root@localhost network-scripts]#route add -host 172.16.12.200 dev lo:0
[root@localhost network-scripts]#route -n

2.3 忽略ARP请求

#添加系统只响应目的IP为本地IP的ARP请求
#系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP
[root@localhost ~]#vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
[root@localhost ~]#sysctl -p

2.4 安装并启动nginx软件

[root@localhost ~]#yum install epel-release.noarch -y
[root@localhost ~]#yum install -y nginx
[root@localhost ~]#systemctl start nginx

2.5 新建网页站点文件

[root@localhost ~]#echo "welcome to web 2" > /usr/share/nginx/html/index.html
[root@localhost ~]#cat /usr/share/nginx/html/index.html

3、部署负载均衡调度服务器

3.1 设置虚拟网卡

3.1.1 临时设置虚拟网卡
[root@localhost ~]#ifconfig ens33:0 172.16.12.200/32
[root@localhost ~]#ip a

3.1.2 永久设置虚拟网卡
[root@localhost ~]#cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]#cp ifcfg-ens33 ifcfg-ens33:0
[root@localhost network-scripts]#vim ifcfg-ens33:0
#删除dns与网关,注意子网
NAME=ens33:0
DEVICE=ens33:0
IPADDR=172.16.12.200
NETMASK=255.255.255.255
[root@localhost network-scripts]#systemctl restart network
[root@localhost ~]#ip a

3.2 调整/proc响应参数

对于 DR 群集模式来说,由于 LVS 负载调度器和各节点需要共用 VIP 地址,应该关闭 Linux 内核的重定向参数响应服务器不是一台路由器,那么它不会发送重定向,所以可以关闭该功能

[root@localhost ~]#vim /etc/sysctl.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@localhost ~]#sysctl -p

3.3 搭建本地yum仓库安装ipvsadm

#加载模块
[root@localhost ~]#modprobe ip_vs
[root@localhost ~]#cat /proc/net/ip_vs

#搭建本地yum仓库安装ipvsadm
[root@localhost ~]#mount /dev/sr0 /mnt
[root@localhost ~]#cd /etc/yum.repos.d/
[root@localhost yum.repos.d]#mkdir bak
[root@localhost yum.repos.d]#mv *.repo bak
[root@localhost yum.repos.d]#vim local.repo
[local]
name=local
baseurl=file:///mnt
gpgcheck=0
[root@localhost yum.repos.d]#yum clean all
[root@localhost yum.repos.d]#yum makecache
[root@localhost ~]#yum install -y ipvsadm.x86_64
#开启ipvsadm服务
[root@localhost ~]#ipvsadm-save >/etc/sysconfig/ipvsadm
[root@localhost ~]#systemctl start ipvsadm.service
[root@localhost ~]#systemctl status ipvsadm.service

3.4 配置负载分配策略

[root@localhost ~]#ipvsadm -C
[root@localhost ~]#ipvsadm -ln
[root@localhost ~]#ipvsadm -A -t 172.16.12.200:80 -s rr
[root@localhost ~]#ipvsadm -a -t 172.16.12.200:80 -r 172.16.12.11:80 -g
[root@localhost ~]#ipvsadm -a -t 172.16.12.200:80 -r 172.16.12.12:80 -g
[root@localhost ~]#ipvsadm -ln
[root@localhost ~]#ipvsadm-save >/etc/sysconfig/ipvsadm

4、客户端测试

#客户端访问负载调度服务器的虚拟网卡
[root@localhost ~]#curl 172.16.12.200

模拟节点服务器1宕机:

即关闭节点服务器1的nginx服务,那么DR模式下的LVS负载调度服务器会有对后端节点服务器的健康检查机制吗?

客户端测试得知,当节点服务器1宕机,LVS负载调度服务器仍会调度到宕机的节点服务器1上,所以LVS负载调度服务器不会对后端的节点服务器进行健康检测,不会检测后端的服务器是否正常工作

注:

在调度服务器可查看,当前系统上 IPVS 的配置信息

[root@localhost ~]#cat /proc/net/ip_vs
[root@localhost ~]#ipvsadm -ln

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

植物病害识别:YOLO甘蔗叶片病害识别分类数据集

YOLO甘蔗叶片病害识别数据集, 包含尾孢菌叶斑病&#xff0c;眼斑病&#xff0c;健康&#xff0c;红腐病&#xff0c;锈病&#xff0c;黄叶病6个常见病类别&#xff0c;3300多张图像&#xff0c;yolo标注完整&#xff0c;全部原始图像&#xff0c;未应用增强。 适用于CV项目&…

GEE错误——Landsat9数据集进行去云操作后显示白板

问题 我遇到了一些有关 Landsat9 图像中的云遮蔽和图像处理的问题。我正在分享我所使用的代码以及我感兴趣的区域(资产)。请帮我解决这个问题。我是一名 GEE 学习者。问题:最终图像在大面积上有云状覆盖。 这里我们查看了搜索出的代码发现并不是没有数据集导致的,该区域有…

【Java探索之旅】数据类型与变量,字面常量,整型变量

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; Java入门到精通 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一、字面常量二、数据类型三、变量3.1 变量概念3.2 语法格式 四、整型变量4.1 整型变…

【C++ vector 类】

1. 标准库中的vector类 vector 类 的介绍&#xff1a; 注意&#xff1a; 1. vector是表示可变大小数组的序列容器。 2. 就像数组一样&#xff0c;vector 也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问&#xff0c;和数组一样高效。但是…

seo蜘蛛池的概念!蚂蚁SEO

蜘蛛池是一种特殊的网络营销技术&#xff0c;它的主要作用是吸引搜索引擎爬虫&#xff0c;提高网站的收录和排名&#xff0c;从而增加网站的流量和曝光度。 蚂蚁SEO是一个SEO工具&#xff0c;可以帮助您提高网站权重&#xff0c;吸引更多的搜索引擎爬虫&#xff0c;提高网站的…

物联网云原生云边协同

文章目录 一、物联网平台设计1.物联网平台设计2.物联网平台实现 二、部署环境1.节点配置2.版本信息 三、物联网平台部署1.部署 Kubernetes 集群2.部署 KubeEdge3.部署 ThingsBoard 集群4.部署 ThingsBoard Edge4.1.创建 Edge 实例4.2.部署 PostgreSQL4.3.创建数据库4.4.部署 Th…

Linux之生产消费者模型

(&#xff61;&#xff65;∀&#xff65;)&#xff89;&#xff9e;嗨&#xff01;你好这里是ky233的主页&#xff1a;这里是ky233的主页&#xff0c;欢迎光临~https://blog.csdn.net/ky233?typeblog 点个关注不迷路⌯▾⌯ 我们在条件满足的时候&#xff0c;唤醒指定的线程&a…

unity学习(53)——选择角色界面--分配服务器返回的信息

好久没写客户端了&#xff0c;一上手还不太适应 1.经过测试&#xff0c;成功登陆后&#xff0c;客户端请求list_request&#xff0c;成功返回&#xff0c;如下图&#xff1a; 可见此时model第三个位置的参数是1.也成功返回了所有已注册角色的信息。 2.之前已知创建的角色信息…

计算机服务器中了locked勒索病毒怎么解密,locked勒索病毒解密流程

科技的发展带动了企业生产&#xff0c;越来越多的企业开始利用计算机服务器办公&#xff0c;为企业的生产运营提供了极大便利&#xff0c;但随之而来的网络安全威胁也引起了众多企业的关注。近日&#xff0c;云天数据恢复中心接到许多企业的求助&#xff0c;企业的计算机服务器…

(每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)

项目建议与立项申请、初步可行性研究、详细可行性研究、评估与决策是项目投资前使其的四个阶段。在实际工作中&#xff0c;初步可行性研究和详细可行性研究可以依据项目的规模和繁简程度合二为一&#xff0c;但详细可行性研究是不可缺少的。升级改造项目制作初步和详细研究&…

【01背包与完全背包】Aswing

01 https://www.acwing.com/problem/content/description/2/ #include<bits/stdc.h>using namespace std;const int MAXN 1005; int v[MAXN]; // 体积 int w[MAXN]; // 价值 int f[MAXN][MAXN]; // f[i][j], j体积下前i个物品的最大价值 int main() {int n,…

大模型产业落地,安全运营能否迎来“自动驾驶”时刻?

科技云报道原创。 通过一段文字描述&#xff0c;就能生成60秒堪比大片的视频&#xff0c;来自大模型Sora的出色表现&#xff0c;让全球都为之震撼。 无论是ChatGPT还是Sora&#xff0c;都只是大模型走出实验室的第一步&#xff0c;大模型如何在产业中落地&#xff0c;为具体的…

PyTorch搭建LeNet训练集详细实现

一、下载训练集 导包 import torch import torchvision import torch.nn as nn from model import LeNet import torch.optim as optim import torchvision.transforms as transforms import matplotlib.pyplot as plt import numpy as npToTensor()函数&#xff1a; 把图像…

多维时序 | Matlab实现BiGRU-Mutilhead-Attention双向门控循环单元融合多头注意力机制多变量时序预测

多维时序 | Matlab实现BiGRU-Mutilhead-Attention双向门控循环单元融合多头注意力机制多变量时序预测 目录 多维时序 | Matlab实现BiGRU-Mutilhead-Attention双向门控循环单元融合多头注意力机制多变量时序预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.多维时序 …

C++笔记之给枚举类型的变量赋值

C++笔记之给枚举类型的变量赋值 —— 杭州 2024-03-10 code review! 在C++中,你可以在结构体内部定义一个枚举类型,并在创建结构体变量时给枚举类型的变量赋值。下面是一个简单的例子展示了如何做到这一点: 代码 #include <iostream>// 定义结构体 struct MyStru…

虚函数与纯虚函数有什么区别?

总的来说有两点区别&#xff1a; 1.虚函数的作用主要是矫正指针&#xff08;口语化的说法&#xff09; 2.虚函数不一定要重新定义&#xff0c;纯虚函数一定要定义&#xff08;口语化的说法&#xff09; 1&#xff09;. 虚函数的作用主要是矫正指针&#xff0c;使得基类的指针…

ArrayDeque集合源码分析

ArrayDeque集合源码分析 文章目录 ArrayDeque集合源码分析一、字段分析二、构造函数分析方法、方法分析四、总结 实现了 Deque&#xff0c;说面该数据结构一定是个双端队列&#xff0c;我们知道 LinkedList 也是双端队列&#xff0c;并且是用双向链表 存储结构的。而 ArrayDequ…

深入探讨AI团队的角色分工

目录 前言1. 软件工程师&#xff1a;构建系统基石的关键执行者2. 机器学习工程师&#xff1a;数据与模型的塑造专家3. 机器学习研究员&#xff1a;引领算法创新的智囊4. 机器学习应用科学家&#xff1a;理论与实践的巧妙连接5. 数据分析师&#xff1a;洞察数据&#xff0c;智慧…

如何在Linux上为PyCharm创建和配置Desktop Entry

在Linux操作系统中&#xff0c;.desktop 文件是一种桌面条目文件&#xff0c;用于在图形用户界面中添加程序快捷方式。本文将指导您如何为PyCharm IDE创建和配置一个 .desktop 文件&#xff0c;从而能够通过应用程序菜单或桌面图标快速启动PyCharm。 步骤 1: 确定PyCharm安装路…

力扣中档题:删除排序链表中的 重复元素

此题可以选择暴力解决&#xff0c;首先将链表中的元素放到数组中&#xff0c;然后将数组中的重复元素放到另一个数组中&#xff0c;最后再判断并将目标值放到第三个数组中排序再改链表&#xff0c;注意链表nextNULL的操作 struct ListNode* deleteDuplicates(struct ListNode*…