LVS详细介绍及常见模式(NAT,DR,防火墙标记)实验详解

news2024/9/23 1:37:49

目录

一、什么是LVS

二、LVS的核心思想

三、 LVS的优势

四、LVS的调度算法

 4.1. LVS的调度算法类型

4.2. LVS静态调度算法

4.3. LVS动态调度算法

 4.4.在4.15版本内核以后新增调度算法

 五、LVS软件相关信息

六、ipvsadm命令

七、 LVS的NAT模式实验详解

7.1实验环境

7.2实验要求

7.3实验步骤

1.环境搭建

2. Lvs中打开内核路由功能

3.webserver1和webserver2配置

4.webserver1和webserver2下载httpd模块并写页面内容

5. LVS中测试,保证可以正常访问后端两台真实服务器

 6. LVS中安装软件

7. LVS添加服务和算法规则(-s rr表示调度算法是:轮询算法)

8.客户机访问测试

7.4 nat模式数据逻辑

八、LVS的DR模式实验详解

8.1实验环境

8.2实验要求

8.3实验步骤

1.环境搭建

2.路由器开启内核路由功能

3.配置rs主机中使vip不对外响应(webserver1和webserver2)

4.在LVS主机中和rs主机中添加VIP

5.客户机测试

6.Wireshark抓包查看MAC地址变化

8.4 DR模式数据逻辑

九、LVS-火墙mark标记解决调度问题

9.1实验环境:

9.2实验要求:

9.3实验步骤

1.RS安装mod_ssl模块,让RS支持https

2.查看端口,确保端口都存在

3.LVS主机中为端口做标记

 4.客户端访问测试

十、LVS的TUN模式(不常用了解一下)

10.1转发方式

10.2 TUN模式数据传输过程

10.3 TUN详解

十一、LVS的fullnet模式(了解)

11.1 fullnet模式简介

11.2 fullnet模式详解


一、什么是LVS

LVS(Linux Virtual Server)是一个开源的负载均衡软件项目,它是基于Linux操作系统的网络负载均衡解决方案。LVS通过将网络请求分发到不同的服务器上,以实现负载均衡和高可用性。

二、LVS的核心思想

LVS的核心思想是将前端的请求通过一个负载均衡器分发给多个后端服务器进行处理。负载均衡器可以使用多种技术实现,如IP负载均衡、NAT负载均衡和DR负载均衡。其中,IP负载均衡是LVS的核心功能,它通过将前端IP地址替换为负载均衡器的IP地址,然后根据负载均衡算法将请求转发给后端的真实服务器。

三、 LVS的优势

LVS的优势在于高性能、高可扩展性和高可用性,它可以实现请求的平衡分发,提高系统的处理能力和可用性。同时,LVS具有稳定性和可靠性,可以通过故障检测和故障转移机制,实现故障切换和容错处理。 

四、LVS的调度算法

 4.1. LVS的调度算法类型

ipvs scheduler:根据其调度时是否考虑各RS当前的负载状态被分为两种:静态方法动态方法

静态方法:仅根据算法本身进行调度,不考虑RS的负载情况

动态方法:主要根据每RS当前的负载状态及调度算法进行调度Overhead=value较小的RS将被调度

4.2. LVS静态调度算法

1、RR:roundrobin 轮询 RS分别被调度,当RS配置有差别时不推荐

2、WRR:Weighted RR,加权轮询根据RS的配置进行加权调度,性能差的RS被调度的次数少

3、SH:Source Hashing,实现session sticky,源IP地址hash;将来自于同一个IP地址的请求始终发往 第一次挑中的RS,从而实现会话绑定

4、DH:Destination Hashing;目标地址哈希,第一次轮询调度至RS,后续将发往同一个目标地址的请 求始终转发至第一次挑中的RS,典型使用场景是正向代理缓存场景中的负载均衡,如:宽带运营商

4.3. LVS动态调度算法

原理:

主要根据RS当前的负载状态及调度算法进行调度Overhead=value较小的RS会被调度

1、LC:least connections(最少链接发)

适用于长连接应用Overhead(负载值)=activeconns(活动链接数) x 256+inactiveconns(非活 动链接数)

2、WLC:Weighted LC(权重最少链接) 默认调度方法Overhead=(activeconns x 256+inactiveconns)/weight

3、SED:Shortest Expection Delay,

初始连接高权重优先Overhead=(activeconns+1+inactiveconns) x 256/weight 但是,当node1的权重为1,node2的权重为10,经过运算前几次的调度都会被node2承接

4、NQ:Never Queue,第一轮均匀分配,后续SED 5、LBLC:Locality-Based LC,动态的DH算法,使用场景:根据负载状态实现正向代理

6、LBLCR:LBLC with Replication,带复制功能的LBLC,解决LBLC负载不均衡问题,从负载重的复制 到负载轻的RS

 4.4.在4.15版本内核以后新增调度算法

1.FO(Weighted Fai Over)调度算法:常用作灰度发布 在此FO算法中,遍历虚拟服务所关联的真实服务器链表,找到还未过载(未设置IP_VS_DEST_F OVERLOAD标志)的且权重最高的真实服务器,进行调度 当服务器承接大量链接,我们可以对此服务器进行过载标记(IP_VS_DEST_F OVERLOAD),那么vs调度 器就不会把链接调度到有过载标记的主机中。

  2.OVF(Overflow-connection)调度算法基于真实服务器的活动连接数量和权重值实现。将新连接调度到权重值最高的真实服务器,直到其活动 连接数量超过权重值,之后调度到下一个权重值最高的真实服务器,在此OVF算法中,遍历虚拟服务相关 联的真实服务器链表,找到权重值最高的可用真实服务器。一个可用的真实服务器需要同时满足以下条 件:

未过载(未设置IP_VS_DEST_F OVERLOAD标志)

真实服务器当前的活动连接数量小于其权重值 其权重值不为零

 五、LVS软件相关信息

  • 程序包:ipvsadm Unit File: ipvsadm.service
  • 主程序:/usr/sbin/ipvsadm
  • 规则保存工具:/usr/sbin/ipvsadm-save
  • 规则重载工具:/usr/sbin/ipvsadm-restore
  • 配置文件:/etc/sysconfig/ipvsadm-config ipvs
  • 调度规则文件:/etc/sysconfig/ipvsadm

六、ipvsadm命令

核心功能:

  • 集群服务管理:增、删、改
  • 集群服务的RS管理:增、删、改
  • 查看

部分命令展示:

命令描述示例
ipvsadm -A添加一个新的虚拟服务ipvsadm -A -t 192.168.1.100:80 -s rr
ipvsadm -E修改已存在的虚拟服务ipvsadm -E -t 192.168.1.100:80 -s wrr
ipvsadm -D删除虚拟服务ipvsadm -D -t 192.168.1.100:80
ipvsadm -a添加一个真实服务器到虚拟服务中ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.200 -m
ipvsadm -e修改真实服务器的参数ipvsadm -e -t 192.168.1.100:80 -r 192.168.1.200 -g -w 10
ipvsadm -d从虚拟服务中删除真实服务器ipvsadm -d -t 192.168.1.100:80 -r 192.168.1.200
ipvsadm -L查看 IPVS 表ipvsadm -L -n
ipvsadm -C清空 IPVS 表ipvsadm -C
ipvsadm -S保存 IPVS 表到指定文件ipvsadm -S > /etc/sysconfig/ipvsadm
ipvsadm -R从指定文件恢复 IPVS 表ipvsadm -R < /etc/sysconfig/ipvsadm

如果想要了解更多的ipvsadm命令可以访问下面链接学习:
https://www.cnblogs.com/rushiyi/p/12425905.htmlicon-default.png?t=N7T8https://www.cnblogs.com/rushiyi/p/12425905.html

七、 LVS的NAT模式实验详解

7.1实验环境

前提:因为ipvs的作用点是在PREROUTING和INPUT链之间,所以如果在prerouting中设定规则会干扰ipvs的工 作。所以在做lvs时要把iptables的火墙策略全清理掉。

1.使用母盘主机克隆四台红帽9机子。

2.两台作为真实服务器,一台作为LVS负载调度器,一台作为客户端。

3.LVS负载调度器两张网卡,一张NAT,一张仅主机;NAT作为VIP连接客户端,仅主机作为DIP连接两台服务器,作为两台服务器的网关;NAT网卡在:172.25.254.0/24网段,IP地址是172.25.254.100/24;仅主机在192.168.0.0/24网段,IP地址是192.168.0.100。

4.两台真实服务器一张网卡,模式为仅主机,网段是192.168.0.0/24;webserver1的IP地址是192.168.0.10/24;webserver2的IP地址是192.168.0.20/24。

5.客户端一张网卡,模式为NAT模式,网段是172.25.254.0/24,IP地址是:172.25.254.200。

7.2实验要求

要求从客户端访问LVS能做到负载均衡

第一次如果是webserver1响应的,第二次就是webserver2响应。

7.3实验步骤

1.环境搭建

LVS主机两张网卡,一张NAT模式,一张仅主机模式。NAT作为VIP连接客户端,仅主机作为DIP连接两台服务器,作为两台服务器的网关。

NAT网卡在:172.25.254.0/24网段;仅主机在192.168.0.0/24网段,对应的IP配置如下图:

NAT:

仅主机:

2. Lvs中打开内核路由功能

#查看打开内核路由功能的命令
[root@LVS ~]# sysctl -a | grep ip_forward
net.ipv4.ip_forward = 0    # 0表示关闭,1表示打开
net.ipv4.ip_forward_update_priority = 1
net.ipv4.ip_forward_use_pmtu = 0

#修改配置文件
[root@LVS ~]# vim /etc/sysctl.conf 
[root@LVS ~]# cat /etc/sysctl.conf 
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
net.ipv4.ip_forward = 1
[root@LVS ~]# sysctl -p
net.ipv4.ip_forward = 1

3.webserver1webserver2配置

webserver1:

#配置IP地址和网关,ipv4.method manual:表示为手动模式 connection.autoconnect yes:表示为自动连接
[root@webserver1 ~]# nmcli connection modify ens160 ipv4.addresses 192.168.0.10/24 ipv4.gateway 192.168.0.100 ipv4.method manual connection.autoconnect yes

#重启网卡
[root@webserver1 ~]#nmcli connection up ens160

webserver2:

#配置IP地址和网关,ipv4.method manual:表示为手动模式 connection.autoconnect yes:表示为自动连接
[root@webserver2 ~]# nmcli connection modify ens160 ipv4.addresses 192.168.0.20/24 ipv4.gateway 192.168.0.100 ipv4.method manual connection.autoconnect yes

#重启网卡
[root@webserver2 ~]#nmcli connection up ens160

4.webserver1webserver2下载httpd模块并写页面内容

webserver1:

[root@webserver1 ~]# yum install httpd -y
[root@webserver1 ~]# echo webserver1 192.168.0.10 > /var/www/html/index.html 
[root@webserver1 ~]# cat /var/www/html/index.html 
webserver1 192.168.0.10

webserver2:

[root@webserver2 ~]# yum install httpd -y
[root@webserver2 ~]# echo webserver1 192.168.0.20 > /var/www/html/index.html 
[root@webserver2 ~]# cat /var/www/html/index.html 
webserver1 192.168.0.20

注意:

在企业中两个服务器的页面应该是一致的,但是这里是实验环境,我们设不一致,方面我们观察实验结果。

5. LVS中测试,保证可以正常访问后端两台真实服务器

[root@LVS ~]# curl 192.168.0.10
webserver1 192.168.0.10
[root@LVS ~]# curl 192.168.0.20
webserver2 192.168.0.20

 6. LVS中安装软件

7. LVS添加服务和算法规则(-s rr表示调度算法是:轮询算法)

8.客户机访问测试

[root@localhost ~]# curl 172.25.254.100
webserver1 192.168.0.10
[root@localhost ~]# curl 172.25.254.100
webserver2 192.168.0.20
[root@localhost ~]# curl 172.25.254.100
webserver1 192.168.0.10
[root@localhost ~]# curl 172.25.254.100
webserver2 192.168.0.20

7.4 nat模式数据逻辑

1.客户端发送访问请求,请求数据包中含有请求来源(cip),访问目标地址(VIP)访问目标端口 (9000port)

2.VS服务器接收到访问请求做DNAT把请求数据包中的目的地由VIP换成RS的RIP和相应端口

3.RS1相应请求,发送响应数据包,包中的相应保温为数据来源(RIP1)响应目标(CIP)相应端口 (9000port)

4.VS服务器接收到响应数据包,改变包中的数据来源(RIP1-->VIP),响应目标端口(9000-->80)

5.VS服务器把修改过报文的响应数据包回传给客户端

八、LVS的DR模式实验详解

8.1实验环境

1.母盘克隆五台红帽9机子

2.两台作为真实服务器,一台作为LVS负载调度器,一台作为路由器,一台作为客户端

3.webserver1和webserver2环境配置和上个实验一样。

4.LVS只需一张仅主机的网卡,IP地址为:192..168.0.50;禁用上个实验NAT那张网卡。

5.路由器两张网卡,一张NAT模式,IP地址为:172.25.254.100,作为客户端的网关;一张仅主机连接内网,IP地址为:192.168.0.100,作为内网的网关。

6.客户端IP地址为:172.25.254.200,网关为:172.25.254.100.

8.2实验要求

要求从客户端访问LVS能做到负载均衡,第一次如果是webserver1响应的,第二次就是webserver2响应。且服务器返回数据的时候是直接通过VIP返回给客户端,不经过交换机这些。

8.3实验步骤

1.环境搭建

IP配置与上一个实验操作相同,这里不细说。参考上一个实验配置IP的方式,将实验环境搭建完成。LVS记得禁用网卡和内核路由功能。

LVS中禁用网卡的命令格式为:

nmcli device disconnect 网卡名

2.路由器开启内核路由功能

与上一个实验相同,在配置文件中加入命令即可。

3.配置rs主机中使vip不对外响应(webserver1和webserver2)

webserver1:

webserver2:

4.在LVS主机中和rs主机中添加VIP

在DR模式中,RS接收到访问请求后不需要回传给LVS调度器,直接把回传数据发送给client,所以RS和LVS上都要有vip

#配置环回网卡IP
[root@LVS ~]# ip a a 192.168.0.200/32 dev lo

rs主机配置相同,都是上面这一条命令。

注意:网段是/32,一定不要写错了,VIP要独立的应该网段。

5.客户机测试

[root@client ~]# curl 192.168.0.200
webserver2 192.168.0.20
[root@client ~]# curl 192.168.0.200
webserver2 192.168.0.20
[root@client ~]# curl 192.168.0.200
webserver1 192.168.0.10
[root@client ~]# curl 192.168.0.200
webserver2 192.168.0.20
[root@client ~]# curl 192.168.0.200
webserver2 192.168.0.20
[root@client ~]# curl 192.168.0.200
webserver1 192.168.0.10

6.Wireshark抓包查看MAC地址变化

将自己所有主机的MAC地址记录一下,然后用抓包工具抓包查看一下,注意,抓的是内网的包。

8.4 DR模式数据逻辑

这也是前面要抓包的原因,因为DR模式在传递的时候IP层是不变的,IP地址都一样,改变的第二层MAC地址,所有只有通过抓包查看MAC地址的变化来观察原理。 

1.客户端发送数据帧给vs调度主机帧中内容为客户端IP+客户端的MAC+VIP+VIP的MAC

2.VS调度主机接收到数据帧后把帧中的VIP的MAC该为RS1的MAC,此时帧中的数据为客户端IP+客户端 的MAC+VIP+RS1的MAC

3.RS1得到2中的数据包做出响应回传数据包,数据包中的内容为VIP+RS1的MAC+客户端IP+客户端IP的MAC

九、LVS-火墙mark标记解决调度问题

9.1实验环境:

1.在上一个实验的环境下继续完成实验。

9.2实验要求:

问题:以http和https为例,当我们在RS中同时开放80和443端口,那么默认控制是分开轮询的,这样我们就出 现了一个轮询错乱的问题 当我第一次访问80被轮询到RS1后下次访问443仍然可能会被轮询到RS1上

1.如果不做火墙mark标志,当客户端通过http的80端口,和https的443端口访问时,两次是后端同一台服务器发来的,如下所示:

[root@client ~]# curl 192.168.0.200; curl -k https://192.168.0.200
webserver1 192.168.0.20
webserver2 192.168.0.20

2.这是我们不想看见的,我们LVS执行的算法是rr轮询,要做到负载均衡,第一次http如果是10主机发来的回复,那么第二次https的应该是20主机发来的。这就是本次实验要实现的要求。

9.3实验步骤

1.RS安装mod_ssl模块,让RS支持https

webserver1:

[root@webserver1 ~]# yum install mod_ssl -y
#一定要重启,不让不行
[root@webserver1 ~]# systemctl restart httpd

webserver2:

[root@webserver2 ~]# yum install mod_ssl -y
[root@webserver1 ~]# systemctl restart httpd

2.查看端口,确保端口都存在

[root@webserver1 ~]# netstat -lnupt | grep httpd
tcp6       0      0 :::80                   :::*                    LISTEN      3855/httpd          
tcp6       0      0 :::443                  :::*                    LISTEN      3855/httpd          
[root@webserver2 ~]# netstat -lnupt | grep httpd
tcp6       0      0 :::80                   :::*                    LISTEN      3855/httpd          
tcp6       0      0 :::443                  :::*                    LISTEN      3855/httpd          

3.LVS主机中为端口做标记

#先清空规则
[root@LVS ~]# ipvsadm -C
[root@LVS ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

#为端口做标记 -A:添加;-D:删除
[root@LVS ~]#  -t mangle -A PREROUTING -d 192.168.0.200 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 66

#基于标记定义集群服务
[root@LVS ~]# ipvsadm -A -f 66 -s rr
[root@LVS ~]# ipvsadm -a -f 66 -r 192.168.0.10 -g
[root@LVS ~]# ipvsadm -a -f 66 -r 192.168.0.20 -g
[root@LVS ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
FWM  66 rr
  -> 192.168.0.10:0               Route   1      0          0         
  -> 192.168.0.20:0               Route   1      0          0      

 4.客户端访问测试

#-k:忽略https证书,不然访问不了
[root@client ~]# curl 192.168.0.200; curl -k https://192.168.0.200 
webserver1 192.168.0.10
webserver2 192.168.0.20
[root@client ~]# curl 192.168.0.200; curl -k https://192.168.0.200
webserver1 192.168.0.10
webserver2 192.168.0.20

十、LVS的TUN模式(不常用了解一下)

10.1转发方式

不修改请求报文的IP首部(源IP为CIP,目标IP为VIP),而在原IP报文之外再封装一个IP首部 (源IP是DIP,目标IP是RIP),将报文发往挑选出的目标RS;RS直接响应给客户端(源IP是VIP,目标IP是CIP)

10.2 TUN模式数据传输过程

1.客户端发送请求数据包,包内有源IP+vip+dport

2.到达vs调度器后对客户端发送过来的数据包重新封装添加IP报文头,新添加的IP报文头中包含TUNSRCIP(DIP)+TUNDESTIP(RSIP1)并发送到RS1

3.RS收到VS调度器发送过来的数据包做出响应,生成的响应报文中包含SRCIP(VIP)+DSTIP(CIP)+port,响应数据包通过网络直接回传给client

10.3 TUN详解

如果想要了解更多可以访问一下链接:

https://www.cnblogs.com/luwei0915/articles/10488825.htmlicon-default.png?t=N7T8https://www.cnblogs.com/luwei0915/articles/10488825.html

十一、LVS的fullnet模式(了解)

11.1 fullnet模式简介

fullnat:通过同时修改请求报文的源IP地址和目标IP地址进行转发

CIP --> DIP

VIP --> RIP

1.VIP是公网地址,RIP和DIP是私网地址,且通常不在同一IP网络;因此,RIP的网关一般不会指向DIP

2.RS收到的请求报文源地址是DIP,因此,只需响应给DIP;但Director还要将其发往Client

3.请求和响应报文都经由Director

4.支持端口映射

11.2 fullnet模式详解

如果想要了解更多可以访问一下链接:

https://blog.51cto.com/u_16099331/9937768icon-default.png?t=N7T8https://blog.51cto.com/u_16099331/9937768

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

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

相关文章

“DS18B20,感知每一度细微变化,记录每一刻温暖。”#DS18B20温度传感器

“DS18B20&#xff0c;感知每一度细微变化&#xff0c;记录每一刻温暖。”#DS18B20温度传感器 前言预备知识1.DS18B20核心参数2.DS18B20初始化函数代码编写2.1分析DS18B20初始化时序图2.2依据时序图编写相应代码 3.向DS18B20写入一个字节函数代码编写3.1分析DS18B20写时序图3.2…

Zoho工作邮箱支持哪些功能?

工作域名邮箱都有哪些常见功能呢&#xff1f;一、消息流 &#xff1b;二、邮件委托给同事代为处理&#xff1b;三、附件查看器 &#xff1b;四、在邮箱里直接和同事音频/视频通话等八大功能。 一、消息流 - 邮箱里的社交渠道 Zoho Mail等专业工作邮箱平台引入了消息流功能&…

免账户免权限免费获取 A股 全市场股票ETF指数 分钟级数据

日期 2024/8/2 意外发现的&#xff0c;抛砖引玉&#xff0c;测试了下&#xff0c;其他券商的也可以。 可以直接获取 1m 5m 1day 级别的数据&#xff0c;全A股市场的都可以。期货未测试。 需要 其他的级别的分数数据可以自行合成。 原理 券商版qmt获取行情数据时&#xff0c;不…

JavaSE之常用API(后篇)

接上篇 五、Random 5.1 使用 5.2 练习 六、包装类 6.1 是什么 包装类:封装了基本类的一些操作,更加方便使用 为了对象的完整性,更重要的是配合泛型一起使用 byte Byte short Short int Integer long Long float Float double Double boolean Boolean char Character 八种包装…

Cadence学习笔记 Day0 Cadence17.4环境安装

当然是选择“吴法安装” 直接跟着吴川斌博客的方法来就可以了&#xff0c;这里大致记录一下我的安装步骤&#xff1a; 安装许可证管理器破解许可证管理器安装软件以及补丁破解软件 获取 直接放出链接&#xff1a;吴川斌的博客 下载得到&#xff1a; 一、安装许可证管理器&am…

Redis未授权利用方式总结

前言 目前的大多数网站搭建的Redis 均采用 docker 一键部署的方式&#xff0c;而 docker 镜像中的 redis 默认不是以 root 权限运行的&#xff0c;也就是说即使拿下这台 redis&#xff0c;我们也只能在对方服务器的本地内网中漫游&#xff0c;当然还是会有部分 redis 部署在服…

Tensorflow—第四讲网络八股扩展

本讲概述 一、自制数据集 我们用六万张数字图片自制训练集&#xff0c;一万张数字图片制作测试集 代码&#xff08;注释已经很清楚了&#xff0c;就不解释了&#xff09;&#xff1a; def generateds(path, txt):f open(txt, r) # 以只读形式打开txt文件contents f.readl…

【喜报】龙信助力上饶市公安局斩获全国刑侦部门数据侦查技战法大赛两项大奖

文章关键词&#xff1a;电子数据取证、手机取证、云取证、现场勘查、电子物证 8月2日&#xff0c;全国刑侦部门数据侦查技战法大赛在福建晋江市落下帷幕。来自全国各地的33支参赛队伍汇聚一堂&#xff0c;展现了全国公安刑侦部门数据侦查的新思路、新做法。 在这一高水平的竞技…

ant tree 数据的最优解

项目背景 : react ant ant 官网中目前只提供了 默认父子关联 或 checkStrictly(父子不关联)注意 : 不能盲目选择父子关联 , 虽然选中父 , 子也联动确实是需要的效果 , 但有一个bug 如下图 (当选中部分子 , 所有子被选中)解决方案 : 只能取消父子关联 , 自己去判断当前点击处…

C Primer Plus 第7章——第一篇

你该逆袭了 第7章:重点摘录 零、本章介绍一、if 语句二、if else 语句1、介绍 getchar( ) 和 putchar( )2、ctype.h 系列 的 字符函数(1)、isalnum( )(2)、isalpha( )(3)、isblank( )(4)、iscntrl( )(5)、isdigit( )(6)、isgraph( )(7)、islower( )(8)、isprint( )(9)、ispunct…

CV党福音:YOLOv8实现分类

YOLO作为目标检测领域的常青树&#xff0c;如今以及更新到了YOLOv10&#xff0c;并且还有YOLOX、YOLOS等变体&#xff0c;可以说该系列已经在目标检测领域占据了半壁江山&#xff0c;如今&#xff0c;YOLOv8的发行者ultralytics竟有一统江山之意&#xff0c;其在提出的框架中不…

基于Springboot+Vue3的简易教学管理系统

作品展示 基于SpringbootVue3的简易信息教学管理系统 第1章 系统设计 1.1 系统功能模块设计 该系统实现的功能模块包括&#xff1a; 教师端&#xff1a; 学生信息管理&#xff1a;添加、删除、修改以及查询学生信息 √课程信息管理&#xff1a;添加、删除、修改以及查…

智慧图书馆:构建高效视频智能管理方案,提升图书馆个性化服务

一、背景分析 随着信息技术的飞速发展&#xff0c;智慧图书馆作为现代公共文化服务的重要载体&#xff0c;正逐步从传统的纸质阅读空间向数字化、智能化方向转型。其中&#xff0c;视频智能管理方案作为智慧图书馆安全管理体系的重要组成部分&#xff0c;不仅能够有效提升图书…

深入浅出Mysql 第二期

从更新语句中看日志系统 探究技术的本质&#xff0c;享受技术的乐趣&#xff01;由于时间原因以及自己的原因导致拖更了&#xff0c;不过没关系&#xff0c;我保证后面每天一更&#xff0c;周末休息&#xff01;好了&#xff0c;闲话少说&#xff0c;今天我们通过一个更新操作…

数组案例练习进阶版---对数组中的元素进行排序(冒泡法)

在上篇文章中&#xff0c;我们一起学习了常用排序法中的选择排序法&#xff0c;今天&#xff0c;我们将一起来学习新的排序方法——冒泡法排序 那么首先&#xff0c;什么是冒泡法呢&#xff1f; 首先&#xff0c;第一列&#xff0c;我们有四个大小不一的球&#xff0c;我们称最…

4款ai 制作 ppt工具帮你提高工作效率

在这个高度重视可视化展示的环境当中&#xff0c;PPT在许多的场合中都骑着非常重要的作用&#xff0c;但PPT制作过程却常常令人感到烦恼。而最近我发现了4个堪称神器的PPT制作工具&#xff0c;可以分享给大家。 1、笔灵 ppt 直通车&#xff1a;https://ibiling.cn/ppt-zone 这…

数据结构与算法 - 红黑树

一、概述 1. 历史 红黑树是一种自平衡二叉查找树&#xff0c;最早由一名叫Rudolf Bayer的德国计算机科学家于1972年发明。然而&#xff0c;最初的树形结构不是现在的红黑树&#xff0c;而是一种称为B树的结构&#xff0c;它是一种多叉树&#xff0c;可以用于在磁盘上存储大量…

美国司法部对谷歌反垄断案的最新进展,Google每年给苹果200亿?

本文首发于公众号“AntDream”&#xff0c;欢迎微信搜索“AntDream”或扫描文章底部二维码关注&#xff0c;和我一起每天进步一点点 美国司法部对谷歌反垄断案的前因和最新进展 美国司法部对谷歌的反垄断案是一个复杂且历时长久的法律过程&#xff0c;其核心争议在于谷歌是否利…

CentOS 7.6 安装 Weblogic

注&#xff1a;本教程是以虚拟机作为安装环境&#xff0c;如果您公司需要安装 Weblogic 服务器&#xff0c;请先以虚拟机模拟安装一遍&#xff0c;否则出现失误&#xff0c;概不负责&#x1f601;。 一、环境 虚拟机&#xff1a;VMware Workstation 16 Linux&#xff1a;Cent…

@Autowired提示:Field injection is not recommended

1、问题 在项目升级版本过程中&#xff0c;Autowired提示Field injection is not recommendedField injection is not recommended Inspection info: Reports injected or autowired fields in Spring components. The quick-fix suggests the recommended constructor-based d…