LVS原理——详细介绍

news2024/9/21 20:26:49

目录

介绍

lvs简介

LVS作用

LVS 的优势与不足

LVS概念与相关术语

LVS的3种工作模式

LVS调度算法

LVS-dr模式

LVS-tun模式

ipvsadm工具使用

实验

nat模式集群部署

实验环境

webserver1配置

webserver2配置

lvs配置

dr模式集群部署

实验环境

router

效果呈现

lvs中防火墙的标签

在服务器中安装mod_ssl模块 

在lvs主机中为端口做标记

配置lvs规则

测试



介绍

lvs简介

LVS 是Linux Virtual Server的简称,也就是 Linux 虚拟服务器,是一个极好的负载均衡解决方案,它将一个真实服务器集群虚拟成一台服务器来对外提供服务,同时在真实服务器集群中实现了负载均衡。该技术由章文嵩博客发起,从linux2.4开始已经被收录到linux核心中。

 是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org。现在LVS已经是 Linux标准内核的一部分,因此性能较高。

LVS作用

通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务器群集,它具有良好可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的服务性能。

随着互联网在人们生活中的普及,企业级应用迎来了海量数据的冲击,如微信、美团外卖、微信支付等应用每天的使用人数都在千万以上,仅靠单台机器提供服务已经行不通了。

我们可以使用多台服务器分摊这些压力,当一定数量的服务器作为一个整体对外提供服务,并且分摊压力时,我们可以称这些服务器为“负载均衡集群”。LVS就是一个优秀的负载均衡集群方案,它理论上能够无限水平扩展,使得服务能够应对海量数据的冲击。

LVS 的优势与不足

优势

                高并发连接:LVS基于内核网络层面工作,有超强的承载能力和并发处理能力。单台LVS负载均衡器,可支持上万并发连接。

                稳定性强:是工作在网络4层之上仅作分发之用,这个特点也决定了它在负载均衡软件里的性能最强,稳定性最好,对内存和cpu资源消耗极低。

                成本低廉:硬件负载均衡器少则十几万,多则几十万上百万,LVS只需一台服务器和就能免费部署使用,性价比极高。

                 配置简单:LVS配置非常简单,仅需几行命令即可完成配置,也可写成脚本进行管理。

                支持多种算法:支持多种论调算法,可根据业务场景灵活调配进行使用

                支持多种工作模型:可根据业务场景,使用不同的工作模式来解决生产环境请求处理问题。

                应用范围广:因为LVS工作在4层,所以它几乎可以对所有应用做负载均衡,包括http、数据库、DNS、ftp服务等等。

不足

                软件本身不支持正则表达式处理,不能做动静分离;而现在许多网站在这方面都有较强的需求,这个是Nginx/HAProxy+Keepalived的优势所在。

如果是网站应用比较庞大的话,LVS/DR+Keepalived实施起来就比较复杂。

LVS概念与相关术语

LVS中的一些术语:

VS:Virtual Server 虚拟服务器,通常是分发器
RS:Real Server 实际提供服务器的真实服务器
CIP:Client IP 客户的客户端IP
VIP:Virtual Server IP 虚拟服务器的IP
RIP:Real Server IP 真实服务器的IP
DIP:Director IP 分发器的IP
CIP <–> VIP == DIP <–> RIP 客户端访问VIP,DIP将请求转发到RIP

LVS的原理如下图所示:

工作原理: VS根据请求报文的目标IP和目标协议及端口将其调度转发至某RS,根据调度算法来挑选RS。

 分发服务器以VIP对外提供服务器,当接收到客户端服务请求时,便根据预定的分发策略(例如轮询)将请求分发到Real Server中,由Real Server做实际的业务处理。当Real Server处理完成后,根据不同的模式,会使用不同的方式返回请求结。

LVS的3种工作模式

根据服务返回方式和集群分布的不同,LVS有3中不同的工作模式,他们分别是:NAT(地址转换)模式、DR(直接路由)模式和TUN(隧道)模式。

                LVS/NAT:网络地址转换模式,进站/出站的数据流量经过分发器(IP负载均衡,他修改的是IP地址)  --利用三层功能
                LVS/TUN: 隧道模式,只有进站的数据流量经过分发器
                LVS/full-nat:  双向转换:通过请求报文的源地址为DIP,目标为RIP来实现转发:对于响应报文而言,修改源地址为VIP,目标地址为CIP来实现转发

LVS调度算法

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

静态方法

仅根据算法本身进行调度(重点加粗)
1、RR:roundrobin,轮询(轮着来),较常用
2、WRR:Weighted RR,加权轮询,较常用(根据性能情况按比例分配)
3、SH:Source Hashing,实现session sticky,源IP地址hash;将来自于同一个IP地址的请求始终发往第一次挑中的RS,从而实现会话绑定,避免调度到其他机器导致session丢失,需要重新登录,但是有小的问题,很多人用同一个公网ip,被调度到同一服务器。
4、DH:Destination Hashing;目标地址哈希,第一次轮询调度至RS,后续将发往同一个目标地址的请求始终转发至第一次挑中的RS,典型使用场景是正向代理缓存场景中的负载均衡,如: Web缓存

动态方法

1、WRR:加权轮训调度,它将依据不同RS的权值分配任务。权值较高的RS将优先获得任务,并且分配到的连接数将比权值低的RS更多。相同权值的RS得到相同数目的连接数。

2、LC:最小连接数调度(least-connection),IPVS表存储了所有活动的连接。LB会比较将连接请求发送到当前连接最少的RS.

3、LBLC:基于地址的最小连接数调度(locality-based least-connection):将来自同一个目的地址的请求分配给同一台RS,此时这台服务器是尚未满负荷的。否则就将这个请求分配给连接数最小的RS,并以它作为下一次分配的首先考虑。

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

LVC-nat模式

 原理:就是把客户端发来的数据包的IP头的目的地址,在负载均衡器上换成其中一台RS的IP地址,并发至此RS来处理,RS处理完成后把数据交给经过负载均衡器,负载均衡器再把数据包的源IP地址改为自己的IP,将目的地址改为客户端IP地址即可。期间,无论是进来的流量,还是出去的流量,都必须经过负载均衡器。   

优点:集群中的物理服务器可以使用任何支持TCP/IP操作系统,只有负载均衡器需要一个合法的IP地址。

缺点:扩展性有限。当服务器节点(普通PC服务器)增长过多时,负载均衡器将成为整个系统的瓶颈,因为所有的请求包和应答包的流向都经过负载均衡器。当服务器节点过多时,大量的数据包都交汇在负载均衡器那,速度就会变慢!

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

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

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

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

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

6.lvs的NAT模式接收和返回客户端数据包时都要经过lvs的调度机,所以lvs的调度机容易阻塞

LVS-dr模式

原理

负载均衡器和RS都使用同一个IP对外服务。但只有DR对ARP请求进行响应,所有RS对本身这个IP的ARP请求保持静默。也就是说,网关会把对这个服务IP的请求全部定向给DR,而DR收到数据包后根据调度算法,找出对应的RS,把目的MAC地址改为RS的MAC(因为IP一致)并将请求分发给这台RS。这时RS收到这个数据包,处理完成之后,由于IP一致,可以直接将数据返给客户,则等于直接从客户端收到这个数据包无异,处理后直接返回给客户端。

互联网应用中存在一个规律:请求报文较短而响应报文往往包含大量的数据。如果能将请求和响应分开处理,即在负载调度器(Director)中只负责调度请求而响应直接由RealServer返回给客户,将极大地提高整个集群系统的吞吐量。

原理如下图

1.DR接受到请求后,通过分发策略得出要将此请求分发到Real Server2。DS就将数据帧中的目标MAC地址修改为Real Server2的MAC地址,然后再将数据帧发送出去。(为什么要用MAC地址?因为此时Real Server也有配置有VIP)
2.当Real Server2 收到一个源地址为CIP目标地址为VIP的数据包时,Real Server2发现目标地址为VIP,而VIP是自己,于是接受数据包并给予处理。
Real Server2处理完成后,会将一个源地址为VIP而目标地址为CIP的数据包发送出去,此时的响应请求就不会再经过DS,而是直接响应给用户了。
3.在这个过程中存在一个问题,由于RealServer也配置了VIP,那么当CIP——>VIP的数据包到达服务局域网,进行广播时,所有的服务器都会进行应答,此时先应答的服务器就会收到数据包,这样就失去了负载均衡的能力。因此在使用DR模式时,通常会采用一些方式来确保请求数据包只会由DS接收,例如抑制Real Server对广播的应答,或者直接在路由器中对DS进行绑定等。

LVS-tun模式

TNU模式与DR模式非常相似,它同样是只有请求信息会经过DS,应答信息由Real Server直接返回给用户。不过DR模式中,要求DS和所有的Real Server必须在一个局域网中,而TNU模式去掉了这个限制。

原理:

互联网上的大多Internet服务的请求包很短小,而应答包通常很大。那么隧道模式就是,把客户端发来的数据包,封装一个新的IP头标记(仅目的IP)发给RS,RS收到后,先把数据包的头解开,还原数据包,处理后,直接返回给客户端,不需要再经过负载均衡器。注意,由于RS需要对负载均衡器发过来的数据包进行还原,所以说必须支持IPTUNNEL协议。所以,在RS的内核中,必须编译支持IPTUNNEL这个选项 ​

1.IP隧道技术又称为IP封装技术,它可以将带有源和目标IP地址的数据报文使用新的源和目标IP进行二次封装,这样这个报文就可以发送到一个指定的目标主机上。
2.隧道模式下,调度器和后端服务器组之间使用IP隧道技术。当客户端发送的请求(CIP–>VIP)被director接收后,director修改该报文,加上IP隧道俩端的IP地址作为新的源和目标地址,并将请求转发给后端被选中的一个目标。
3.当后端服务器接收到报文后,首先解封该报文原有的CIP—>VIP,该后端服务器发现自身的tun接口上配置了VIP,因此接受该数据包。
4.当请求处理完成后,结果将不会重新交给director,而是直接返回给客户端。此时响应数据包的源IP为VIP,目标IP为CIP。

在TNU模式中,DS与Real Server不必在一个网络中。DS在接到请求报文之后,在报文的上面再加一层源地址为DIP,目的地址为RIP2的IP首部,然后通过广域网发送到Real Server2。
Real Server2收到报文,拆掉报文以后发现了里面还有一个封装,它就知道了,这就是隧道。后续的过程就与DR一样了。

tun模式的特点

1.DIP, VIP, RIP都应该是公网地址

2.RS的网关一般不能指向DIP

3.请求报文要经由Director,但响应不能经由Director

4.不支持端口映射 5.RS的OS须支持隧道功能

ipvsadm工具使用

LVS-server安装lvs管理软件

yum -y install ipvsadm

                程序包:ipvsadm(LVS管理工具)

                主程序:/usr/sbin/ipvsadm

                规则保存工具:/usr/sbin/ipvsadm-save > /path/to/file

                配置文件:/etc/sysconfig/ipvsadm-config

命令选项

-A --add-service #在服务器列表中新添加一条新的虚拟服务器记录
-s --scheduler #使用的调度算法, rr | wrr | lc | wlc | lblb | lblcr | dh | sh | sed | nq 默认调度算法是 wlc
例:ipvsadm -A -t 192.168.1.2:80 -s wrr
 
-a --add-server  #在服务器表中添加一条新的真实主机记录
-t --tcp-service #说明虚拟服务器提供tcp服务
-u --udp-service #说明虚拟服务器提供udp服务
-r --real-server #真实服务器地址
-m --masquerading #指定LVS工作模式为NAT模式
-w --weight #真实服务器的权值
-g --gatewaying #指定LVS工作模式为直接路由器模式(也是LVS默认的模式)
-i --ip #指定LVS的工作模式为隧道模式  
-p #会话保持时间,定义流量被转到同一个realserver的会话存留时间
例:ipvsadm -a -t 192.168.1.2:80 -r 192.168.2.10:80 -m -w 1
 
-E -edit-service #编辑内核虚拟服务器表中的一条虚拟服务器记录。
-D -delete-service #删除内核虚拟服务器表中的一条虚拟服务器记录。
-C -clear #清除内核虚拟服务器表中的所有记录。
-R -restore #恢复虚拟服务器规则
-S -save #保存虚拟服务器规则到标准输出,输出为-R 选项可读的格式
-e -edit-server #编辑一条虚拟服务器记录中的某条真实服务器记录
-d -delete-server #删除一条虚拟服务器记录中的某条真实服务器记录
-L|-l --list #显示内核虚拟服务器表
 
--numeric, -n:#以数字形式输出地址和端口号
--exact: #扩展信息,精确值 
--connection,-c: #当前IPVS连接输出
--stats: #统计信息
--rate : #输出速率信息
 
参数也可以从/proc/net/ip_vs*映射文件中查看
-Z –zero #虚拟服务表计数器清零(清空当前的连接数量等)

管理集群服务中的增删改(大写)--Virtual Services

-A --add-service #在服务器列表中新添加一条新的虚拟服务器记录

ipvsadm -A -t 172.25.254.100:80 -s rr

-E -edit-service #编辑内核虚拟服务器表中的一条虚拟服务器记录。

ipvsadm -E -t 172.25.254.100:80 -s wlc

-D -delete-service #删除内核虚拟服务器表中的一条虚拟服务器记录。

ipvsadm -D -t 172.25.254.100:80

管理集群中的曾增删改(小写)--RealServer

-a --add-server  #在服务器表中添加一条新的真实主机记录

ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.30 -m

-d -delete-server #删除一条虚拟服务器记录中的某条真实服务器记录

ipvsadm -d -t 172.25.254.100:80 -r 192.168.0.30

-e -edit-server #编辑一条虚拟服务器记录中的某条真实服务器记录

ipvsadm -e -t 172.25.254.100:80 -r 192.168.0.30  -w 2

实验

nat模式集群部署

实验环境

主机名ipvip角色
lvs192.168.0.100172.25.254.100调度器
webserver1192.168.0.10null真实服务器
webserver2192.168.0.20null真实服务器

webserver1配置

yum install httpd -y
 echo webserver1 - 192.168.0.10 > /var/www/html/index.html
 systemctl restart httpd
systemctl stop firewalld

webserver2配置

yum install httpd -y
 echo webserver2 - 192.168.0.20 > /var/www/html/index.html
 systemctl restart httpd
systemctl stop firewalld

lvs配置

yum install ipvsadm -y --- 安装软件ipvsadm

echo "net.ipv4.ip_forward=1" > /etc/sysctl.conf/ --- 启用内核路由,并写入配置文件

在lvs添加调度策略

ipvsadm -A -t 172.25.254.100:80 -s rr
ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10:80 -m
ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.20:80 -m

查看策略

ipvsadm -Ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

   -> RemoteAddress:Port     Forward Weight ActiveConn InActConn

TCP 172.25.254.100:80 rr

   -> 192.168.0.10:80   Masq   1   0   0

   -> 192.168.0.20:80

关闭防火墙

systemclt stop firewalld

在lvs上测试

for i in {1..10}

> do

> curl 172.25.254.100

> done

dr模式集群部署

实验环境

主机IPVIP角色
clientnat:172.25.254.200 null客户端
routernat:172.25.254.100仅主机:192.168.0.100null路由器
lvs仅主机:192.168.0.50lo:192.168.0.200调度器
webserver1仅主机:192.168.0.10lo:192.168.0.200真实服务器1   
webserver2仅主机:192.168.0.20lo:192.168.0.200真实服务器2  

router

vmset.sh eth0 172.25.254.100 router.hyl.org

vmset.sh eth1 192.168.0.100 router.hyl.org

vim /etc/NetworkManager/system-connections/eth1.nmconnect ion

nmcli connection reload

nmcli  connection  up reth1

eth0网卡

cat /etc/NetworkManager/system-connections/eth0.nmconnection

[connection]
id=eth0
type=ethernet
interface-name=eth0

[ipv4]
address1=172.25.254.100/24,172.25.254.2
method=manual
dns=114.114.114.114;

eth1网卡

cat /etc/NetworkManager/system-connections/eth1.nmconnec

[connection]
id=eth1
type=ethernet
interface-name=eth1

[ipv4]
address1=192.168.0.100/24
method=manual

webserver1

安装http服务

dnf install httpd -y

echo webserver1 - 192.168.0.10 > /var/www/html/index.html

systemctl enable --now httpd

使vip不对外响应

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore 
​echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
​echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
​echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
 

webserver2

安装http服务

dnf install httpd -y

echo webserver1 - 192.168.0.20 > /var/www/html/index.html

systemctl enable --now httpd

使vip不对外响应

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
 ​echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
 echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
 echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

lvs配置

vmset.sh eth1 192.168.0.50 lvs.hyl.org
vim /etc/NetworkManager/system-connections/eth1.nmconnect ion
nmcli connection reload
nmcli  connection  up reth1

效果呈现

[root@client ~]# for i in {1..10}
> do
> curl 192.168.0.200
> done
webserver1 - 192.168.0.10
webserver2 - 192.168.0.20
webserver1 - 192.168.0.10
webserver2 - 192.168.0.20
webserver1 - 192.168.0.10
webserver2 - 192.168.0.20
webserver1 - 192.168.0.10
webserver2 - 192.168.0.20
webserver1 - 192.168.0.10
webserver2 - 192.168.0.20

lvs中防火墙的标签

在服务器中安装mod_ssl模块 

yum install mod_ssl -y

systemctl restart httpd

在lvs主机中为端口做标记

[root@lvs ~]# iptables -t mangle -A PREROUTING -d 192.168.0.200 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 66
[root@lvs ~]# iptables -t mangle -nL
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
MARK       6    --  0.0.0.0/0            192.168.0.200        multiport dports 80,443 MARK set 0x42
 
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
 
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
 
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
 
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination   

配置lvs规则

[root@lvs ~]# ipvsadm -C
[root@lvs ~]# ipvsadm -in
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
[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 -in
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

测试

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

webserver2 - 192.168.0.20
webserver - 192.168.0.10

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

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

相关文章

漏洞复现-Cacti命令执行漏洞 (CVE-2022-46169)

1.漏洞描述 Cacti是一套基于PHP&#xff0c;MySQL&#xff0c;SNMP及RRDTool开发的网络流量监测图形分析工具&#xff0c;可为用户提供强大且可扩展的操作监控和故障管理框架。 该漏洞存在于remote_agent.php文件中&#xff0c;未经身份验证的恶意攻击者可以通过设置HTTP_变量…

Vue2计算属性与Vue3的计算属性对比

Vue2的计算属性 在Vue2文档上存在这么一个例子&#xff1a;通过计算属性来获取全名 var vm new Vue({el: #demo,data: {firstName: Foo,lastName: Bar},computed: {fullName: function () {return this.firstName this.lastName}} }) 同时&#xff0c;如果我们更改了计算…

【学习笔记】Day 11

一、进度概述 1、《地震勘探原理》第四章 二、详情 4.1 影响地震波传播速度的因素分析 这里只做定性总结&#xff0c;定量参考书上公式&#xff08;p139-p143&#xff09;。这一章节是通过观测速度模型&#xff0c;确定岩层结构的基础知识&#xff08;虽然更像是地质解释那一…

Vue中的路由与多种守卫常见问题及解决方案

在Vue.js项目中&#xff0c;Vue Router是实现单页面应用&#xff08;SPA&#xff09;页面跳转的重要工具。路由守卫作为Vue Router的一个关键特性&#xff0c;用于在路由跳转前或跳转后进行逻辑判断&#xff0c;如权限验证、登录状态检查等。然而&#xff0c;在使用路由守卫时&…

零基础5分钟学会谷歌云GCP核心云架构技能 - 成本分析篇

简介&#xff1a; 欢迎来到小李哥谷歌云GCP云计算知识学习系列&#xff0c;适用于任何无云计算或者谷歌云技术背景的开发者&#xff0c;让大家零基础5分钟通过这篇文章就能完全学会谷歌云一个经典的服务开发架构方案。 我将每天介绍一个基于全球三大云计算平台&#xff08;AW…

基于单片机的智能风扇设计

摘 要: 传统风扇无法根据周围环境的温度变化进行风速的调整&#xff0c;必须人为地干预才能达到需求 。 本文基于单片机的智能风扇主要解决以往风扇存在的问题&#xff0c;其有两种工作模式: 手动操作模式和自动运行模式&#xff0c;人们可以根据需要进行模式选择。 在自动运行…

TIM定时器 溢出时间计算

在f1系列&#xff0c;所有定时器的时钟源频率都是72mhz&#xff0c;因为不管是挂在apb1还是apb2时钟总线上的定时器&#xff0c;经过倍频或者不倍频以后都将把定时器的频率设置成72mhz 时钟源频率除以psc1以后得到实际的频率&#xff0c;之所以psc要加1&#xff0c;是因为设置…

无人机测绘技术如何?

无人机测绘技术作为现代测绘技术的重要组成部分&#xff0c;正以其独特的优势在多个领域发挥着重要作用。以下是对无人机测绘技术的详细分析&#xff1a; 一、技术特点 1. 高精度&#xff1a;无人机测绘搭载高精度传感器和相机&#xff0c;能够快速、准确地获取地面信息&…

Datawhale X 魔搭 AI夏令营第四期-魔搭生图task1学习笔记

根据教程提供的链接&#xff0c;进入相应文章了解魔搭生图的主要工作是通过对大量图片的训练&#xff0c;生成自己的模型&#xff0c;然后使用不同的正向、反向提示词使模型输出对应的图片 1.官方跑baseline教程链接:Task 1 从零入门AI生图原理&实践 2.简单列举一下赛事的…

【Material-UI】Floating Action Button (FAB) 详解:基础用法

文章目录 一、Floating Action Button (FAB) 简介1. FAB 的定义2. FAB 的特点 二、Basic FAB 的基础用法1. 基础 FAB 按钮2. 次要颜色的 FAB 按钮3. 扩展变体的 FAB 按钮4. 禁用状态的 FAB 按钮 三、FAB 按钮的高级自定义1. 自定义按钮大小2. 调整按钮的悬浮位置 四、FAB 的无障…

研究报告系列二:供应链安全风险原因分析及相关新质生产力重要技术探讨

随着软件开发的复杂性和动态性不断增加&#xff0c;软件供应链的安全风险成为了一个亟需重视的重要议题&#xff0c;而在技术的飞速发展和广泛应用下&#xff0c;新质生产力相关领域同样存在着软件供应链安全方面的问题&#xff0c;作为《2023软件供应链安全研究报告》系列中的…

js逆向——2024最新金山词霸(练习二)

首先还是看响应&#xff0c;返回了一串加密数据 继续放大招hook JSON&#xff0c;详细流程在上一篇文章 然后直接跟栈找到解密位置 var t 1 (null e || void 0 e ? void 0 : e.status) ? A(A({}, e), {}, {content: JSON.parse((0,_.B6)(e.content))}) : e; t是解密之后…

护眼大路灯哪个牌子好?公认五款最好护眼大路灯分享

护眼大路灯哪个牌子好&#xff1f;很多家长都是为了孩子的视力健康而置换的护眼大路灯&#xff0c;但是有一部分孩子用了之后反而会和家长说出现眼睛不太舒服&#xff0c;甚至近视加深的情况。而引发这种情况的大多数为产品不达标或非专业台灯&#xff0c;因为专业护眼大路灯是…

白屏检测系统的设计与实现

目录 一、 什么是白屏问题&#xff1f;二、 问题分析与拆解2.1 人工判定一个白屏问题的逻辑2.2 自动化判定一个白屏问题的算法思想 三、 白屏检测算法3.1 图像灰度化3.2 图像二值化3.3 计算&#xff08;判定为白屏&#xff09;置信度 四、 白屏检测系统的设计与实现4.1 UI自动化…

某通用系统0day审计过程

前言 代码审计篇章都是自己跟几个师傅们一起审计的1day或者0day(当然都是小公司较为简单)&#xff0c;禁止未经允许进行转载&#xff0c;发布到博客的用意主要是想跟师傅们能够交流下审计的思路&#xff0c;毕竟审计的思路也是有说法的&#xff0c;或者是相互源码共享也OK&…

51单片机之动态数码管显示

一、硬件介绍 LED数码管是一种由多个发光二极管&#xff08;LED&#xff09;封装在一起&#xff0c;形成“8”字型的显示器件。它广泛用于仪表、时钟、车站、家电等场合&#xff0c;用于显示数字、字母或符号。 通过控制点亮a b c d e f g dp来显示数字&#xff0c;本实验开发板…

最长的一帧学习(待补)

文章目录 一、osgViewer:: ViewerBase:: frame()1.osgViewer:: View:: init()2.osgViewer::Viewer::realize()&#xff0c;窗口和场景的“设置”工作part1 GraphicsContextpart1.1 通过阅读osgViewer::View::setUpViewInWindow()了解osg最基础的操作 part2 DisplaySettingspart…

《机器学习by周志华》学习笔记-决策树-03

1、连续值处理 到目前为止,我们在决策树01、02中仅讨论了基于离散属性来生成决策树,而现实任务中常会遇到连续属性,所以在本章的学习中,我们将会讨论如何在决策树学习中使用连续属性。 1.1、概念 取值范围是连续的实数值或者整数值的属性就是「连续属性」,与离散属性相对…

Java全栈开发知识图谱(概要)

Java全栈开发知识图谱 基础知识 Java基础 语法面向对象编程&#xff08;OOP&#xff09;异常处理集合框架并发编程JVM原理 下列的只是图谱来源与网路 &#xff0c;仅作为学习笔记使用&#xff0c;侵删。 数据结构和算法 常用数据结构&#xff08;数组、链表、栈、队列、树等…

通过提示词越狱解锁学习提示词的新姿势

一、什么是提示词越狱 提示词越狱是一种针对语言模型的攻击方法&#xff0c;攻击者通过设计特定的提示词或查询&#xff0c;诱导模型生成不当或有害的内容。这类攻击通常利用模型的脆弱性&#xff0c;绕过其内置的安全机制。通过巧妙的措辞或特殊的结构&#xff0c;攻击者能够…