WEB集群——LVS-DR 群集、nginx负载均衡
1、基于 CentOS 7 构建 LVS-DR 群集。
2、配置nginx负载均衡。
一、 LVS-DR 群集
1、LVS-DR工作原理
LVS-DR(Linux Virtual Server Director Server)
| 名称 | 缩写 | 说明 |
| 虚拟IP地址(Virtual IP Address) | VIP | Director用于向客户端计算机提供服务的IP地址 |
| 真实IP地址(Real Server IP Address) | RIP | 在集群下面节点上使用IP地址 |
| Director的IP地址(Director IP Address) | DIP | Director用于连接内外网络的IP地址 |
| 客户端主机IP地址(Client IP Address) | CIP | 客户端用户计算机请求集群服务器的IP地址,该地址用作发送集群的请求的源IP地址 |

首先,来自客户端计算机 CIP 的请求被发送到 Director 的 VIP 。
接着,Director 使用相同的 VIP 目的 IP 地址将 请求发送到集群节点或真实服务器。
然后,集群某个节点将回复该数据包,并将该数据包直接发送到客户端计算机(不经过director ),并且以此回复数据包使用的目的 VIP 地址作为源 IP 地址。
因此,实际上 是客户计算机被“ 欺骗 ” 了,客户计算机始终认为它正与同一台计算机对话,而实际上它正在发送请求数 据包给一台计算机(LB ),并从另一台计算机( RS )接收回复的数据包。
2、LVS-DR模式的特点
(1)所有集群节点 RS 必须和 Director 在相同的物理网段(即同一个局域网中);
(2)所有客户端入站(而不是出站)请求由 Director 首先接收,并转发给集群节点 RS ;
(3)集群节点 RS 通常来说最好带外部 IP ,而不使用 Director 及某固定机器作为默认网关,以便将数据包直 接回复给客户端计算机,且不会产生回包的瓶颈;
(4)所有集群节点 RS 上必须在 lo 网卡上绑定 VIP 地址,以便验证通过目的 IP 非 RS 的数据包;
(5)由于所有集群节点 RS 上必须在 lo 网卡上绑定 VIP 地址,因此,带来 arp 问题,即集群节点 RS 默认会相 应发往Director VIP 的数据包。因此要对所有集群节点 RS 做 ARP 抑制处理,把响应 VIP 的请求交给 LVS Director;
(6)很多操作系统都可以用在集群内部的 RS 真实服务器上只要该操作系统能够实现 ARP 隐藏,如: Windows, linux , unix ;
(7) LVS/DR 模式不需要开启调度器转发功能,这点和 LVS/NAT 模式是不同的。
(8) LVS/DR Director (服务器数量 100 台)可以比 LVS-NAT Director (服务器数量 10-20 台)承受更多的 并发请求和转发更多的服务器数量。
3、部署LVS-DR集群
| 主机 | IP地址 |
| DR服务器 | 192.168.186.100 |
| web服务器1 | 192.168.186.103 |
| web服务器2 | 192.168.186.102 |
| 客户端 | 192.168.206.100 |
| vip(虚拟换回) | 192.168.186.200 |
(1)配置负载调度器(192.168.186.100)
#关闭防火墙
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0#安装ipvsadm工具
[root@localhost ~]# yum install ipvsadm -y#配置虚拟IP地址(VIP:192.168.186.200)
[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
#删除UUID,dns与网关,注意子网
NAME=ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.186.200
NETMASK=255.255.255.255#重启网络服务、启动网卡
[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# ifup ifcfg-ens33:0##调整/proc响应参数 对于 DR 群集模式来说,由于 LVS 负载调度器和各节点需要共用 VIP 地址,应该关闭 Linux 内核的重定向参数响应服务器不是一台路由器,那么它不会发送重定向,所以可以关闭该功能
[root@localhost network-scripts]# 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 network-scripts]# sysctl -p
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 network-scripts]# modprobe ip_vs
[root@localhost network-scripts]# cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn#配置负载分配策略,并启动服务
[root@localhost network-scripts]# ipvsadm-save > /etc/sysconfig/ipvsadm
[root@localhost network-scripts]# systemctl start ipvsadm#手工执行配置添加LVS服务并增加两台RS
##添加真实服务器-a
##指定VIP地址及TCP端口-t
##指定RIP地址及TCP端口 -r
##指定DR模式-g
[root@localhost network-scripts]# ipvsadm -C
[root@localhost network-scripts]# ipvsadm --set 30 5 60
[root@localhost network-scripts]# ipvsadm -A -t 192.168.186.200:80 -s rr
[root@localhost network-scripts]# ipvsadm -a -t 192.168.186.200:80 -r 192.168.186.103:80 -g
[root@localhost network-scripts]# ipvsadm -a -t 192.168.186.200:80 -r 192.168.186.102:80 -g#保存设置
[root@localhost network-scripts]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.186.200:80 wlc-> 192.168.186.103:80 Route 1 0 0 -> 192.168.186.102:80 Route 1 0 0
(2)第一台web节点服务器(192.168.186.103)
#关闭防火墙
[root@web1 ~]# systemctl stop firewalld
[root@web1 ~]# setenforce 0#安装httpd,开启服务
[root@web1 ~]# yum install httpd -y
[root@web1 ~]# systemctl start httpd #创建一个站点文件并写入内容
[root@web1 ~]# echo "this is 192.168.186.103" > /var/www/html/index.html #添加环回网卡,修改环回网卡名,IP地址,子网掩码
[root@web1 ~]# cd /etc/sysconfig/network-scripts/
[root@web1 network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@web1 network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.186.200
NETMASK=255.255.255.255
NETWORK=127.0.0.0#重启网络
[root@web1 network-scripts]# systemctl restart network##添加路由
[root@web1 network-scripts]# ifup lo:0
[root@web1 network-scripts]# ifconfig lo:0
lo:0: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 192.168.186.200 netmask 255.255.255.255loop txqueuelen 1000 (Local Loopback)
[root@web1 network-scripts]# route add -host 192.168.169.200 dev lo:0##调整proc相应参数
[root@web1 network-scripts]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[root@web1 network-scripts]sysctl -p
(3)第二台web节点服务器(192.168.186.102)
#关闭防火墙
[root@web2 ~]# systemctl stop firewalld
[root@web2 ~]# setenforce 0#安装httpd,开启服务
[root@web2 ~]# yum install httpd -y
[root@web2 ~]# systemctl start httpd#创建站点文件
[root@web2 ~]# echo "this is 192.168.186.102" > /var/www/html/index.html#添加环回网卡,修改环回网卡名,IP地址,子网掩码
[root@web2 ~]# cd /etc/sysconfig/network-scripts/
[root@web2 network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@web2 network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.185.200
NETMASK=255.255.255.255
NETWORK=127.0.0.0#设置路由
[root@web2 network-scripts]# route add -host 192.168.186.200 dev lo:0
[root@web2 network-scripts]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.186.2 0.0.0.0 UG 100 0 0 ens33
192.168.186.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
192.168.186.200 0.0.0.0 255.255.255.255 UH 0 0 0 lo#开机执行命令
[root@web2 network-scripts]# vim /etc/rc.d/rc.local
/usr/sbin/route add -host 192.168.59.188 dev lo:0#调整 proc 响应参数
[root@web2 network-scripts]# vim /etc/sysctl.conf
[root@web2 network-scripts]# sysctl -p
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
(4)客户端测试

(5)测试


二、nginx负载均衡
1、反向代理工作过程

从图 6-2可知,若用户A 、用户B 、用户C 同时对反向代理服务器发送请求,反向代理服务器则根据其内部的具体配置,将用户的请求分发给后端服务器进行处理,并将后端服务器处理后的响应结果作为自己的响应结果返回给用户。 反向代理服务器的整个处理过程,用户并不知情 。因此,从上述对代理和反向代理的介绍可以总结出两者的特性,主要有以下几点:
(1)安全性: 正向代理的客户端能够在隐藏自身信息的同时访问任意网站,这给网络安 全带来了极大的威胁。因 此, 在使用时必须采取安全措施以确保仅为经过授权的客 户端用户提供服务 而反向代理的客户端用户只能通过外网来访问代理服务器,并且用户并不知道自己访问的是一个代理服务器,好处就是反向代理将真正的处理放在内网中,有效地提高了网络安全性。
(2)功能性 : 正 向代理的主要用途是为在防火墙内的局域网用户提供访问 Int rnet途径 而反向代理的主要用途是将防火墙后的服务器提供给 Internet 用户访问,还可以为多个后端服务器提供负载均衡功能、缓存功能等。
2、反向代理服务配置
| 主机 | IP地址 |
| 反向代理服务器 | 192.168.186.100 |
| web服务器1 | 192.168.186.101 |
| web服务器2 | 192.168.186.102 |
(1)安装Nginx
#配置虚拟机ip,网卡等
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33#安装C语言编译库和依赖包,使用gcc
[root@localhost ~]# yum install gcc gcc-c++ -y
[root@localhost ~]# yum install pcre-devel openssl-devel -y#解压,执行安装即可
[root@localhost ~]# tar zxvf nginx-1.22.0.tar.gz
[root@localhost nginx-1.22.0]# ./configure --prefix=/usr/local/nginx
[root@localhost nginx-1.22.0]# make
[root@localhost nginx-1.22.0]# make install#启动nginx及配置nginx开机启动
[root@localhost nginx-1.22.0]# cd /usr/local/nginx/sbin/
[root@localhost sbin]# ./nginx #编写一个脚本称谓系统服务
[root@localhost sbin]# vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx - web server
After=network.target remote-fs.target nss-lookup.target[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload #重启nginx
ExecStop=/usr/local/nginx/sbin/nginx -s stop #停止
ExecQuit=/usr/local/nginx/sbin/nginx -s quit #优雅停止nginx
PrivateTmp=true[Install]
WantedBy=multi-user.target#重新加载系统服务
[root@localhost sbin]# systemctl daemon-reload #启动服务
[root@localhost sbin]# systemctl status nginx

(2)配置反向代理
[root@localhost sbin]# vim /etc/nginx/conf.d/vhost.conf
#配置域名为www.wangp.com的虚拟主机
server {listen 80;server_name www.wangp.com;#域名www.wangp.com的请求全部转发到Web服务器192.168.186.101location / {proxy_pass http://192.168.186.101;}
}#配置域名为www.openlab.com的虚拟主机
server {listen 80;server_name www.openlab.com;#域名www.openlab.com的请求全部转发到Web服务器192.168.186.102location / {proxy_pass http://192.168.186.102;}
}
(3)配置hosts文件
编辑 C: \ Window s\Sys t em32\drivers \etc 目录下的 hosts 文件,实现网站的域名访问
(4)在web1服务器和web2服务器编写index.html
[root@web1 ~]# mkdir /www/
[root@web1 ~]# echo "Welcome to web1 server:192.168.186.101" > /www/index.html
[root@web1 ~]# cd /www/
[root@web1 www]# ls
index.html
[root@web1 www]# cat index.html
Welcome to web1 server:192.168.186.101[root@web2 ~]# mkdir /www/
[root@web2 ~]# echo "Welcome to web2 server:192.168.186.102" > /www/index.html
[root@web2 ~]# cd /www/
[root@web2 www]# ls
index.html
[root@web2 www]# cat index.html
Welcome to web2 server:192.168.186.102
3、负载均衡

负载均衡( load balance )就是将负载分摊到多个操作单元上执行,从而提高服务的可用性和响应速度,带给用户更好的体验。
图6-5演示了负载均衡服务器地工作方式,其中客户端用户A和B同时请求了域名为test. ng. test 的网站,负载均衡服务器 (192. 168. 78. )会根据具体配置进行不同的分配。
这里假设用户 的请求被分配到 Web 服务器 1(192. 168. 78. 128 )中处理,用户 的请求被 分配到另一个闲置的 Web 服务器 2(192. 168. 78. 200 )中处理 通过负载均衡,可以将一台 服务器的工作扩展到多台服务器中执行,提高整个网站的负载能力
4、负载均衡地配置
(1)准备服务器
| 主机 | IP地址 |
| 负载均衡服务器 | 192.168.186.100 |
| web服务器1 | 192.168.186.101 |
| web服务器2 | 192.168.186.102 |
(2)配置一般轮询负载均衡
#配置域名为www.openlab1.com的虚拟主机
[root@localhost ~]# vim /etc/nginx/conf.d/nginx.confserver{listen 80;server_name www.openlab1.com;location /{proxy_pass http://web_server;}
}
#配置负载均衡服务器组
upstream web_server{server 192.168.186.101;server 192.168.186.102;
}
(3)在web1服务器和web2服务器编写index.html
[root@web1 ~]# echo "Welcome to web1 server:192.168.186.101" > /root/index.html
[root@web1 ~]# echo "Welcome to web2 server:192.168.186.102" > /root/index.html
(4)配置hosts文件

(5)测试
相关文章:
WEB集群——LVS-DR 群集、nginx负载均衡
1、基于 CentOS 7 构建 LVS-DR 群集。 2、配置nginx负载均衡。 一、 LVS-DR 群集 1、LVS-DR工作原理 LVS-DR(Linux Virtual Server Director Server) 名称缩写说明 虚拟IP地址(Virtual IP Address) VIPDirector用于向客户端计算机提供服务的IP地址真实…...
倒计时87天!软考初级信息处理技术员2023下半年报名考试攻略
软考初级信息处理技术员2023下半年报名条件: 1、凡遵守中华人民共和国宪法和各项法律,恪守职业道德,具有一定计算机技术应用能力的人员,均可根据情况报名参加相应专业类别、级别的考试。 2、获准在中华人民共和国境内就业的外籍…...
【腾讯云 Cloud Studio 实战训练营】使用Cloud Studio构建SpringSecurity权限框架
1.Cloud Studio(云端 IDE)简介 Cloud Studio 是基于浏览器的集成式开发环境(IDE),为开发者提供了一个永不间断的云端工作站。用户在使用 Cloud Studio 时无需安装,随时随地打开浏览器就能在线编程。 Clou…...
c语言每日一练(4)
五道选择题 1、有以下代码,程序的输出结果是( ) #include <stdio.h> int main() {int a 0, b 0;for (a 1, b 1; a < 100; a){if (b > 20) break;//1if (b % 3 1)//2{b b 3;continue;}b b-5;//3}printf("%d\n", a);return 0; } A.1…...
VB字符转换
都是类型转换,转换成数值类型 VAL是根据情况来系统自动决定转换成什么类型, CDbl是转换成双精度浮点数据类型 VB中C带头的强制转换函数有: CBool(expression) ---- 转换成布尔型 CByte(expression) ---- 转换成字节型 CCur(expression) --…...
【C++进阶之路】map与set的基本使用
文章目录 一、set系列1.set①insert②find③erase④lower_bound与upper_bound 2.multiset①count②equal_range 二、map系列1.map①insert1.插入pair的四种方式2.常用两种方式 ②[]2.multimap①count②equal_range 一、set系列 1.set ①insert 函数分析(C98&…...
代码随想录算法训练营day56
文章目录 Day56两个字符串的删除操作题目思路代码 编辑距离题目思路代码 Day56 两个字符串的删除操作 583. 两个字符串的删除操作 - 力扣(LeetCode) 题目 给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数&#…...
通话降噪算法在手机和IOT设备上的应用和挑战
随着电子产品的升级换代,用户对通话质量的要求也越来越高。通话降噪算法对通话质量起到了关键核心的作用。计算资源的提升使得深度学习模型在便携式的低功耗芯片上面跑起来了,器件成本降低让IoT设备开始使用骨导传感器,,那怎么样才…...
Pet Detection System (PDS)
宠物医院检验设备物联系统...
【OpenCV常用函数:颜色空间转换、阈值化】cv2.cvtColor()+cv2.threshold()
1、cv2.cvtColor() 对图像进行颜色空间的转换 cv2.cvtColor(src, code[, dst[, dstCn]])1) src: 输入图像 2) code: 颜色空间转换编码,常使用的GRAY和RGB之间的转换 cv2.COLOR_BGR2GRAY, cv2.COLOR_RGB2GRAY, cv2.COLOR_GRAY2BGR, cv2.COLOR_GRAY2RGB 3) dst: 输出…...
一键登录和短信验证登录,到底有什么区别?
一键登录是什么? 本机号码一键登录验证是一种登录认证方式,通过获取用户手机上的本机号码来验证用户身份,从而实现快捷登录和简化登录流程的目的。 在使用一键登录时,首先需要用户在登录页面选择使用本机号码一键登录࿰…...
史上最精简Android RecyclerView实现拖拽排序改变位置代码
要实现RecyclerView的长按拖动改变位置,可以使用ItemTouchHelper类来处理拖动和滑动的操作。下面演示如何实现长按拖动改变位置: 首先,在你的Activity或Fragment中,初始化RecyclerView和ItemTouchHelper: RecyclerVi…...
centos 7 系统上重启 mysql 时报错 Failed to restart mysqld.service: Unit not found.
在 centos 7 系统上,使用常规命令:systemctl restart mysql 或 service mysqld restart 重启 mysql 时都会报如下错误: Failed to start mysqld.service: Unit not found. 根据所报错误,在网上搜罗了一圈,未果&#x…...
时间复杂度空间复杂度相关练习题
1.消失的数字 【题目】:题目链接 思路1:排序——》qsort快排——》时间复杂度O(n*log2n) 不符合要求 思路2:(0123...n)-(a[0]a[1][2]...a[n-2]) ——》 时间复杂度O(N)空间复杂度…...
Linux | Ubuntu18.04安装RTX 4060显卡驱动完整教程
文章目录 概述一、定义介绍二、操作教程(一)、前期准备1.进入终端界面2.关闭界面显示器3.禁用其他显卡驱动4.卸载残余显卡驱动5.下载驱动(二)、安装驱动1.给驱动程序赋予权限2.安装驱动3.检查结果(三)、后续问题1.黑屏问题概述 本节详细介绍了如何在ubuntu18系统安装4060显卡的…...
Mermaid语法使用
Mermaid语法使用 1. 基础类1.1 流程图1.2 时序图 2. 工程图2.1 类图2.2 Git图 1. 基础类 1.1 流程图 graph TBid1(圆角矩形)--普通线-->id2[矩形];subgraph 子图id2粗线>id3{菱形}id3-. 虚线.->id4>右向旗帜]id3--无箭头---id5((圆形))end方向定义 用词含义TB从…...
[OnWork.Tools]系列 05-系统工具
简介 系统工具主要是将Window常用工具的快捷启动的集合 双击快速启动 计算器,记事本,截图,画图工具 控制面板,服务管理,关闭显示器,关机 启动文件夹,我的电脑,管理工具 右键菜单 添加快捷方式到桌面...
SOME/IP学习笔记1
SOA概念 在SOA中,每个服务就好像我们每一个人在社会中扮演的角色,在对别人提供着服务的同时,同时也享受着别人提供出来的服务,人与人之间,既是彼此独立的,又是需要互相通讯的。服务提供者将功能具象为一组接口,这样使用者就能知道如何调用服务,完成某件事情,得到某个…...
Effective Java笔记(26)请不要使用原生态类型
首先介绍一些术语 。 声明中具有一个或者多个类型参数( type parameter )的类或者接口,就是泛型( generic )类或者接口 。 例如,List 接口就只有单个类型参数 E ,表示列表的元素类型 。这个接口…...
linux 内存 - KO内存占用
说明 KO(kernel module)占用的内存分为两部分: 静态占用 :ko insmod时系统固定分配的内存。动态申请 :代码中动态申请的内存,由于申请方式不同,统计的方式也可能不同,例如:使用vmalloc和kmall…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
