8.8作业

news2024/9/24 20:34:11

LVS 四层结构(最多实现到iso第四层:传输层的功能

 部署NAT模式集群案例

创建3台主机,分别为:lvs 、 webserver1 、 webserver2,其中lvs有两张网卡分别是net网卡为外网和仅主机内网
主机名网卡IP地址网关
 
lvsnet和主机192.168.0.100/24;172.25.250.100/24
server1主机192.168.0.10192.168.0.100
server2主机192.168.0.20192.168.0.100

lvs的集群

[root@lvs ~]# sysctl -a | grep ip_forward  #改成1打开内核路由功能
net.ipv4.ip_forward = 0
net.ipv4.ip_forward_update_priority = 1
net.ipv4.ip_forward_use_pmtu = 0

net.ipv4.ip_forward=0 

[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).
[root@lvs ~]# vim /etc/sysctl.conf 
-bash: vim: command not found
[root@lvs ~]# vi  /etc/sysctl.conf 
[root@lvs ~]# sysctl -p   #查看命令
net.ipv4.ip_forward = 1

 server2

 server1

 [root@server1 ~]# dnf install httpd -y

[root@server1 ~]# echo " webserver1 - 192.168.0.10" > /var/www/html/index.html
[root@server1 ~]# systemctl restart httpd

[root@server1 ~]# systemctl stop firewalld
[root@server2 ~]# echo " webserver1 - 192.168.0.10" > /var/www/html/index.html  #其他的与server1相同

要添加端口

 [root@lvs ~]# ipvsadm -A -t 172.25.250.100:80 -s rr

[root@lvs ~]# ipvsadm -a -t 172.25.250.100:80  -r 192.168.0.10:80 -m
[root@lvs ~]# ipvsadm -a -t 172.25.250.100:80  -r 192.168.0.20:80 -m
 

 部署DR模式集群案例

 

 

 

[root@server1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@server1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 

[root@server1 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
 [root@server1 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce   ##rs主机不对外响应 rs主机都要添加

[root@lvs ~]# ip a a 192.168.0.200/32 dev lo #在lvs主机中和rs主机中添加vip

[root@server1 ~]# ip a a 192.168.0.200/32 dev lo  #临时修改ip命令 一定要32

[root@server2 ~]#  ip a a 192.168.0.200/32 dev lo
 

[root@lvs ~]# ipvsadm -A -t 192.168.0.200:80 -s wrr #权重算法
[root@lvs ~]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.10:80 -g -w 1
[root@lvs ~]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.20:80 -g -w 2
 

 

[root@lvs ~]# ipvsadm -A -t 192.168.0.200:80 -s rr

[root@lvs ~]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.20:80 -g

[root@lvs ~]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.10:80 -g

 FO调度算法:静态;常用作灰度发布

2.OVF调度算法:动态;

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

在webserver1 和 webserver2 上

[root@server1 ~]#  dnf install mod_ssl -y
[root@server1 ~]# echo " webserver1 172.25.250.10" >/var/www/html/index.html
[root@server1 ~]# ip a a 172.25.250.200 dev lo
[root@server1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@server1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@server1 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce 
[root@server1 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore 
 

 

 下图是lvs

 在lvs上

[root@haproxy ~]# ipvsadm -A -t 172.25.250.200:80 -s rr
[root@haproxy ~]# ipvsadm -a -t 172.25.250.200:80 -r 172.25.250.10:443 -g
[root@haproxy ~]# ipvsadm -a -t 172.25.250.200:80 -r 172.25.250.20:443 -g
[root@haproxy ~]# ipvsadm -A -t 172.25.250.200:443 -s rr
[root@haproxy ~]# ipvsadm -a -t 172.25.250.200:443 -r 172.25.250.20:443 -g
[root@haproxy ~]# ipvsadm -a -t 172.25.250.200:443 -r 172.25.250.10:443 -g
[root@haproxy ~]# ipvsadm -LN
 

 [root@localhost ~]# curl 172.25.254.200;curl -k https://172.25.254.200
webserver2 - 172.25.254.20
webserver2 - 172.25.254.20
[root@localhost ~]# curl 172.25.254.200;curl -k https://172.25.254.200
webserver1 - 172.25.254.10
webserver1 - 172.25.254.10  俩字访问都是同一个

 在lvs上修改

 [root@haproxy ~]# iptables -t mangle -A PREROUTING -d 172.25.250.200 -p tcp -m multiport --dports  80,443 -j MARK --set-mark 66
[root@haproxy ~]# iptables -t mangle -nL

[root@haproxy ~]# ipvsadm -C
[root@haproxy ~]# ipvsadm -A -f 66 -s rr
[root@haproxy ~]# ipvsadm -a -f 66 -r 172.25.250.10 -g
[root@haproxy ~]# ipvsadm -a -f 66 -r 172.25.250.20 -g
[root@haproxy ~]# ipvsadm -Ln

在client

haproxy七层代理 

实验环境搭建

[root@haproxy ~]# dnf install haproxy -y

[root@server1 ~]# dnf installl nginx -y #server主机使用nginx
[root@server1 ~]# echo " webserver 1 172.25.2550.10" > /usr/share/nginx/html/index.html
[root@server2 ~]# echo " webserver 2 172.25.2550.20" > /usr/share/nginx/html/index.html

在haproxy

 #frontend webcluster
 #  bind *:80
  # mode http
  # use_backend webcluster-host
#backend webcluster-host
 #  balance roundrobin
  # server web1 172.25.250.10:80
  # server web2 172.25.250.20:80
listen webcluster  #俩着都可以
    bind *:80
    mode http
    balance roundrobin
    server web1 172.25.250.10:80
    server web2 172.25.250.20:80

 要把frontend main全部注销

 nbproc 2  #启用多进程
 cpu-map 1 0 #进程和cpu核心绑定防止cpu抖动从而减少资源消耗
 cpu-map 2 1 #表示第二个进程,1表示第二个cpu核心

 nbthread 2 #启用多线程
 

haproxy日志分离 

定义全局的syslog 服务器;日志服务器需要开启UDP协议

 

 [root@haproxy ~]# vi /etc/rsyslog.conf  #日志配置文件
[root@haproxy ~]# systemctl restart rsyslog.service 
[root@haproxy ~]# ll /var/log/hawkey.log 
-rw-r--r--. 1 root root 1200 Aug  8 11:23 /var/log/hawkey.log

 Proxles配置

 #针对一个server配置
check #对指定rea]进行健康状态检査,如果不加此设置,默认不开启检査,只有check后面没有其它配置也可以启用检查功能
#默认对相应的后端服务器IP和端口,利用TCP连接进行周期性健康性检查,注意必须指定端口才能实现健康性检查

addr<IP>

#可指定的健康状态监测IP,可以是专门的数据网段,减少业务网络的流量
port <num>

#指定的健康状态监测端口

inter <num>

#健康状态检查间隔时间,默认2000ms

fall<num>

#后端服务器从线上转为线下的检查的连续失效次数,默认为3

rise <num>

#后端服务器从下线恢复上线的检查的连续有效次数,默认为2

weight <weight>

#默认为1,最大值为256,0(状态为蓝色)表示不参与负载均衡,但仍接受持久连接

backup #将后端服务器标记为备份状态,只在所有非备份主机down机时提供服务,类似SorryServer

disabled #将后端服务器标记为不可用状态,即维护状态,除了持久模式,将不再接受连接,状态为深黄色,优雅下线,不再接受新用户的请求

redirect prefix http://www.baidu.com/#将请求临时(302)重定向至其它URL,只适用于http模式

maxconn <maxconn>
#当前后端server的最大并发连接数

[root@haproxy ~]# vim /etc/haproxy/haproxy.cfg 

listen webcluster
   bind  *:80
   mode  http
   balance  roundrobin
   server web1 172.25.250.10:80  check inter 2 fall 3 rise 5 weight 2
   server web2 172.25.250.20:80  check inter 2 fall 3 rise 5 weight 1

 

 [root@haproxy ~]# vim /etc/haproxy/haproxy.cfg 

listen webcluster
   bind  *:80
   mode  http
   balance  roundrobin
   server web1 172.25.250.10:80  check inter 2 fall 3 rise 5 weight 2 
   server web2 172.25.250.20:80  check inter 2 fall 3 rise 5 weight 1
   server web_sorry 172.25.250.100:8080 backup

当其他俩server的http关掉时,本机的haproxy 下载http的并把配置文件改为8080

[root@haproxy ~]# vi /etc/httpd/conf/httpd.conf

[root@haproxy ~]# echo "soryy"  > /var/www/html/index.html

[root@haproxy ~]# systemctl restart httpd

 

 [root@haproxy ~]# vim /etc/haproxy/haproxy.cfg 


listen webcluster
   bind  *:80
   mode  http
   balance  roundrobin
   server web1 172.25.250.10:80  check inter 2 fall 3 rise 5 weight 2 disabled
   server web2 172.25.250.20:80  check inter 2 fall 3 rise 5 weight 1
   server web_sorry 172.25.250.100:8080 backup

当俩台server主机都开着http服务时  

[root@haproxy ~]# vim /etc/haproxy/haproxy.cfg 

listen webcluster
   bind  *:80
   mode  http
   balance  roundrobin
   redirect prefix http://www.baidu.com/
    # server web1 172.25.250.10:80  check inter 2 fall 3 rise 5 weight 2 disabled 
  # server web2 172.25.250.20:80  check inter 2 fall 3 rise 5 weight 1
  # server web_sorry 172.25.250.100:8080 backup

访问haproxy的IP地址172.25.250.100:80 会直接跳转到百度

socat工具

 对服务器动态权重和其它状态可以利用 socat工具进行调整,Socat 是 Linux 下的一个多功能的网络工具,名字来由是Socket CAT,相当于netCAT的增强版.Socat 的主要特点就是在两个数据流之间建立双向通道,且支持众多协议和链接方式。如IP、TCP、UDP、IPv6、Socket文件等

[root@haproxy ~]# vim /etc/haproxy/haproxy.cfg 

stats socket /var/lib/haproxy/stats mode 600 level admin process 1
[root@haproxy ~]# echo "get weight  webcluster/web1" | socat stdio /var/lib/haproxy/stats
[root@haproxy ~]# echo "get weight  webcluster/web2" | socat stdio /var/lib/haproxy/stats
1 (initial 1) #查看权重

[root@haproxy ~]# echo show servers state | socat stdio /var/lib/haproxy/stats

[root@haproxy ~]# echo disable server webcluster/web1  | socat stdio /var/lib/haproxy/stats
[root@haproxy ~]# echo enable server webcluster/web1  | socat stdio /var/lib/haproxy/stats
 

 

 开启多进程

[root@haproxy ~]# vim /etc/haproxy/haproxy.cfg 

stats socket /var/lib/haproxy/stats mode 600 level admin process 1
stats socket /var/lib/haproxy/stats2 mode 600 level admin process 2

 nbproc 2
  cpu-map 1 0
  cpu-map 2 1
[root@haproxy ~]# systemctl restart haproxy
[root@haproxy ~]# ll /var/lib/haproxy/
total 4
-rw-r--r-- 1 root root 115 Aug  9 12:28 haproxy.sock
srw------- 1 root root   0 Aug  9 13:00 stats
srw------- 1 root root   0 Aug  9 13:00 stats2

[root@haproxy ~]# echo disable server webcluster/web1  | socat stdio /var/lib/haproxy/stats

#禁掉

[root@haproxy ~]# echo disable server webcluster/web2  | socat stdio /var/lib/haproxy/stats

[root@haproxy ~]# echo disable server webcluster/web1  | socat stdio /var/lib/haproxy/stats2
测试

 

 

 开启了双进程时,访问的时候就是会出去以上画面。因为haproxy多进程热处理,就不用重启服务,直接使用命令禁止,就会出现503

 haproxy算法

HAProxy通过固定参数 balance 指明对后端服务器的调度算法

balance参数可以配置在listen或backend选项中。

HAProxy的调度算法分为静态和动态调度算法

有些算法可以根据参数在静态和动态算法中相互转换。

 4.1 静态算法
静态算法:按照事先定义好的规则轮询公平调度,不关心后端服务器的当前负载、连接数和响应速度等,且无法实时修改权重(只能为0和1,不支持其它值),只能靠重启HAProxy生效.
4.1.1 static-rr:基于权重的轮询调度
不支持运行时利用socat进行权重的动态调整(只支持0和1,不支持其它值)
不支持端服务器慢启动
其后端主机数量没有限制,相当于LVS中的 wrr
 Note
慢启动是指在服务器刚刚启动上不会把他所应该承担的访问压力全部给它,而是先给一部分,当没问题后在给一部分

 

 

 4.1.2 first
根据服务器在列表中的位置,自上而下进行调度
其只会当第一台服务器的连接数达到上限,新请求才会分配给下一台服务
.
其会忽略服务器的权重设置
不支持用socat进行动态修改权重,可以设置0和1,可以设置其它值但无效

 

 4.2 动态算法
动态算法
基于后端服务器状态进行调度适当调整
.
新请求将优先调度至当前负载较低的服务器.权重可以在haproxy运行时动态调整无需重启
4.2.1 roundrobin
1.基于权重的轮询动态调度算法
2.支持权重的运行时调整,不同于Is中的rr轮训模式3.HAProxy中的roundrobin支持慢启动(新加的服务器会逐渐增加转发数)4.其每个后端backend中最多支持4095个real server,
5.支持对real server权重动态调整
6.roundrobin为默认调度算法,此算法使用广泛

 4.2.2 leastconn
leastconn加权的最少连接的动态
支持权重的运行时调整和慢启动,即:根据当前连接最少的后端服务器而非权重进行优先调度(新客户端连接)
比较适合长连接的场景使用,比如:MySQL等场景:

4.3 其他算法
其它算法即可作为静态算法,又可以通过选项成为动态算法
4.3.1 source
源地址hash,基于用户源地址hash并将请求转发到后端服务器,后续同一个源地址请求将被转发至同-个后端web服务器。此方式当后端服务器数据量发生变化时,会导致很多用户的请求转发至新的后端服务器,默认为静态方式,但是可以通过hash-type支持的选项更改这个算法一般是在不插入Cookie的TCP模式下使用,也可给拒绝会话cookie的客户提供最好的会话粘性,适用于session会话保持但不支持cookie和缓存的场景源地址有两种转发客户端请求到后端服务器的服务器选取计算方式,分别是取模法和一致性hash

  Note
如果访问客户端时一个家庭,那么所有的家庭的访问流量都会被定向到一台服务器,这时source算法的缺陷

 

 4.3.2 uri
基于对用户请求的URI的左半部分或整个uri做hash,再将hash结果对总权重进行取模后根据最终结果将请求转发到后端指定服务器
适用于后端是缓存服务器场景
默认是静态算法,也可以通过hash-type指定map-based和consistent,来定义使用取模法还是一致性hash
③ Note
注意:此算法基于应用层,所以只支持 mode http,不支持 mode tcp

 4.3.3 url param
url_param对用户请求的ur中的 params 部分中的一个参数key对应的value值作hash计算,并由服务器总权重相除以后派发至某挑出的服务器,后端搜索同一个数据会被调度到同一个服务器,多用与电商通常用于追踪用户,以确保来自同一个用户的请求始终发往同一个realserver如果无没key,将按roundrobin算法

 

4.3.4 hdr
针对用户每个http头部(header)请求中的指定信息做hash,此处由 name 指定的http首部将会被取出并做hash计算,
然后由服务器总权重取模以后派发至某挑出的服务器,如果无有效值,则会使用默认的轮询调度。 

 stats uri/status  #自定义stats page uri
stats auth lee:lee #认证,此行可以出现多次

 

 总结

HAProxy是一款高性能的TCP/HTTP负载均衡器和代理服务器,

一、静态算法

静态算法在配置时就已经确定,不会随着负载的变化而改变调度策略。

  1. Round Robin(轮询)
    • 将请求依次分配给每个后端服务器,每个服务器依次接收请求,实现负载均衡。
    • 适用于后端服务器性能相近的情况。
  2. Static-Weight(静态权重)
    • 手动设置每个后端服务器的权重值,根据权重值决定每个服务器获得请求的比例。
    • 可以根据服务器性能、硬件配置等设置不同的权重,以实现负载均衡。
  3. Source IP Hash(源IP哈希)
    • 根据客户端的IP地址计算哈希值,并将请求分发到对应的服务器。
    • 这样,相同IP的请求总是被分发到同一个后端服务器上,适用于需要会话保持的场景。
  4. URI Hash(URI哈希)
    • 根据请求的URI(URL)计算哈希值,并将请求分发到对应的服务器。
    • 用于确保特定URI的请求总是发送到同一个后端服务器,适用于缓存服务器或CDN服务商等场景。
  5. URL Parameter(URL参数)
    • 根据请求的URL参数来选择后端服务器。
    • 例如,可以根据某个特定的URL参数值来分发请求,适用于需要追踪用户或保持会话连续性的场景。

二、动态算法

动态算法会根据后端服务器的状态和负载情况动态调整调度策略。

  1. Dynamic-Weight(动态权重)
    • 虽然HAProxy的官方文档中未直接提及“Dynamic-Weight”作为单独的算法名称,但动态调整权重是HAProxy支持的一种功能。
    • 可以在运行时动态调整服务器的权重,而无需重启HAProxy,以适应后端服务器性能的变化。
  2. Least Connections(最少连接数)
    • 将请求分配给当前连接数最少的服务器。
    • 适用于长连接或数据库等场景,可以确保后端服务器的负载更加均衡。
  3. Least Response(最小响应时间)
    • 选择响应时间最短的服务器来处理请求。
    • 它会测量后端服务器的响应时间,并将请求分发给响应时间最短的服务器,以确保请求能够尽快获得响应。

三、其他算法

  1. Random(随机)
    • 随机选择一个后端服务器来处理请求。
    • 适用于后端服务器性能差异不大,且对负载均衡要求不高的场景。
  2. hdr(name)
    • 针对用户每个HTTP头部请求中的指定信息做哈希,此处由<name>指定的HTTP首部将会被去除并做哈希计算,然后由服务器总权重相除以后派发至某挑选出的服务器。
    • 如果无有效值,则会被轮询调度。
  3. rdp-cookie
    • 对远程桌面的负载,使用cookie做会话保持。
    • 适用于基于Windows主机RDP远程桌面协议的场景。

四、总结

HAProxy提供了多种负载均衡算法,包括静态算法和动态算法,以及基于特定请求信息的算法。这些算法可以根据后端服务器的性能、负载情况以及应用需求进行选择和配置,以实现高效的负载均衡和会话保持。在实际应用中,应根据具体场景和需求选择最合适的算法,以优化系统性能和用户体验。

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

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

相关文章

哪些区块链有利可图?揭秘最赚钱公链背后的数据!

今天&#xff0c;我们将探索按收⼊排名前4位的L1和L2&#xff0c;并探讨这些区块链实际保留了多少收⼊。毕竟&#xff0c;收入能力是判断一条链是否能持续发展的重要之标之一。在此&#xff0c;我们将收益定义为&#xff1a;总收⼊减去代币发⾏量。 Layer 1 以太坊Ethereum 就…

LeeCode Practice Journal | Day37_DP05

完全背包 有N件物品和一个容量为W的背包&#xff0c;第 i 件物品的重量是weight[ i ]&#xff0c;价值为value[ i ]&#xff0c;每件物品都有无限个&#xff0c;求解使用背包物品价值总和达到最大的装包方案 二维 static int CompleteKnapsack2D(int[] weights, int[] value…

第三篇远程连接工具介绍及使用

目录 一、远程连接工具的介绍 1、作用 2、常用的远程连接工具 1) XShell 2) FinalShell 3) PuTTY 4) SecureCRT 5) MobaXterm 6) WinSCP 7) NxShell 3、Xshell 安装使用 1&#xff09;Xshell 安装 2&#xff09;Xshell 使用​编辑 4、Finalshell 安装使用 1&…

C++初学者指南-5.标准库(第二部分)--排序序列操作

C初学者指南-5.标准库(第二部分)–排序序列操作 文章目录 C初学者指南-5.标准库(第二部分)--排序序列操作二分查找binary_searchlower_boundupper_boundequal_rangeincludes 合并mergeinplace_merge 设置操作set_unionset_intersectionset_differenceset_symmetric_difference …

最“抠门”千亿儿媳,一件衣服穿五年!

文&#xff5c;琥珀食酒社 作者 | 积溪 我真是震惊了&#xff01; 刚刚刷奥运会 看解说员介绍称呼 说跳水名将郭晶晶和他的先生 我才知道霍家对郭晶晶的夸奖 绝非随口一说 她跟很多嫁入豪门的人 不一样 因为太“抠门”了 身为霍家儿媳妇 身价千亿的郭晶晶 一个头绳…

C++STL~~string

文章目录 一、string类的发展历史二、string的使用三、string的练习四、总结 一、string类的发展历史 在C 的早期版本中&#xff0c;处理字符串主要依赖于 C 风格的字符数组。但这种方式存在诸多不便&#xff0c;如手动管理内存、容易出现缓冲区溢出等问题。随着 C 标准的不断…

使用Linux实现FTP云盘1

关于FTP服务器 FTP&#xff08;文件传输协议&#xff09;服务器是在互联网上提供文件存储和访问服务的计算机&#xff0c;它们依照FTP 协议提供服务。 FTP是File Transfer Protocol(文件传输协议)。 程序运行&#xff0c;服务端不断接收客户端指令&#xff0c;服务 端可同时处…

一文概叙自制舵机云台

本文主要涉及选择合适的舵机、设计云台结构、编写控制代码以及组装调试等步骤。以下是一个详细的制作流程&#xff1a; 一、材料准备 1、舵机&#xff1a; 通常需要至少两个舵机&#xff0c;一个用于控制云台的左右旋转&#xff0c;另一个用于控制云台的上下倾斜。先以简单的…

渲染引擎实践 - UnrealEngine引擎 GLContext 创建过程

一:概述: 本文分析下 UnrealEngine 启动过程中创建多少个 OpenGL Context,以及这些 Context 的作用。 二:临时Context 1. PreInit -> PreInitPreStartupScreen -> PreloadResolutionSettings, 用于检查图形窗口分辨率 2. PreInit -> PreInitPreStartupScreen -&…

高效清理优化工具 Sonoma Cache Cleaner mac 19.0.6注册激活版

Sonoma Cache Cleaner 是一款专为 Mac 系统设计的强大清理优化工具。它能够深度扫描系统&#xff0c;清理各类缓存文件&#xff0c;释放宝贵的存储空间。不仅如此&#xff0c;还能优化系统性能&#xff0c;让您的 Mac 运行更加流畅快捷。无论是系统日志、临时文件还是浏览器缓存…

ArcGIS基础:以分数形式进行标注字段

分数形式标注在项目或者工作中可能会用到 基于VBScript进行分式标注的通用形式为&#xff1a; "<und>"&""& 分子字段&""&"</und>"&vbNewLine& 分母字段按下述顺序进行操作标注 "<und…

VScode:前端项目中导出和导入插件

# 终端运行&#xff1a;导出扩展插件到指定路径&#xff08;txt&#xff09; code --list-extensions > C:\Users\UserName\Documents\extensions.txt # 终端运行&#xff1a;导入指定路径&#xff08;txt&#xff09;的扩展插件 Get-Content C:\Users\UserName\Documen…

【独家原创区间概率预测】CNN-BiLSTM-SEAttention-ABKDE多变量时序预测-区间预测

【独家原创区间概率预测】CNN-BiLSTM-SEAttention-ABKDE多变量时序预测-区间预测 基于卷积神经网络(CNN)结合双向长短期记忆网络(BiLSTM)结合SE注意力机制并结合自适应带宽核函数密度估计的多变量时序预测【点预测概率预测核密度估计】 程序已调试好&#xff0c;无需更改代码&a…

Leetcode每日刷题之面试题01.01.判断字符是否唯一

在学习编程语言的过程中相信大部分同学刚开始接触的循环语句都是 for 循环&#xff0c;今天我将介绍一个比较简洁的循环语句&#xff0c;可以帮助我们减少些许的代码量&#xff0c;也更加快捷&#xff0c;那就是范围 for 在我之前的博文中也有所介绍 详情点击&#xff1a;面向对…

React-Lines-Ellipsis:插件处理多行文本截断

实现自适应的多行文本截断并添加省略号。该项目依赖于CSS Flexbox布局&#xff0c;确保在各种屏幕尺寸和设备上都能正常工作&#xff0c;无需手动计算高度 安装 法1&#xff1a;使用插件react-lines-ellipsis &#xff08;适用范围&#xff1a;使用react的项目&#xff09; npm…

JarEditor:一款直接编辑修改 jar 包内文件IDEA 插件【送源码】

作为一名 Java 程序员&#xff0c;在维护一些古老的程序时&#xff0c;可能会遇到这种情况&#xff1a;项目依赖的 jar 包过于久远&#xff0c;已经没有源码了&#xff0c;但是有不得不修改的 bug 要处理。这时候就得想办法反编译 jar 包进行修改&#xff0c;并且重新打包&…

LeetCode 热题 HOT 100 (019/100)【宇宙最简单版】

【链表】No. 0142 环形链表 II【中等】&#x1f449;力扣对应题目指路 希望对你有帮助呀&#xff01;&#xff01;&#x1f49c;&#x1f49c; 如有更好理解的思路&#xff0c;欢迎大家留言补充 ~ 一起加油叭 &#x1f4a6; 欢迎关注、订阅专栏 【力扣详解】谢谢你的支持&#…

Redis数据失效监听

一、配置Redis开启 打开conf/redis.conf 文件&#xff0c;添加参数&#xff1a;notify-keyspace-events Ex 二、验证配置 步骤一&#xff1a;进入redis客户端&#xff1a;redis-cli步骤二&#xff1a;执行 CONFIG GET notify-keyspace-events &#xff0c;如果有返回值证明配…

初始化列表的基本介绍

为了树立初始化列表&#xff0c;我们先引进有参构造函数来理解 在上图的有参构造函数中我们可以将其转换为初始化列表&#xff0c;初始化列表有两种方式&#xff0c;一种是有参一种是无参&#xff0c;一会我会分别举例子&#xff0c;其语法为类名():属性&#xff08;值&#xf…

ffmpeg: 将flv格式的视频推流时报错: Failed to update header with correct duration

问题描述 我在将flv格式的视频推给rtmp服务器的时候&#xff0c;报错Failed to update header with correct duration&#xff0c;截图如下&#xff1a; 我的推流命令是 ffmpeg -stream_loop -1 -re -i wait-voice.flv -c:a copy -c:v copy -f flv rtmp://192.18.1.29:1935/…