?HAProxy負載均衡集群概述

前言:

????????在現代分布式系統中,負載均衡和高可用性是保障服務穩定性和性能的關鍵技術。HAProxy 作為一款高性能的 TCP/HTTP 負載均衡器,憑借其輕量級、高并發處理能力和靈活的配置機制,成為構建高可用架構的核心組件之一。通過智能的流量分發和健康檢查機制,HAProxy 能夠有效提升系統的吞吐能力,同時避免單點故障,確保服務持續可用。本文將簡要概述 HAProxy 如何實現負載均衡及高可用,并探討其在實際場景中的應用價值。

目錄

1、HAProxy簡介

2、HAProxy特點和優點:

3、HAProxy保持會話的三種解決方法

4、HAProxy的balance 8種負載均衡算法

1)RR(Round Robin)

2)LC(Least Connections)

3)SH(Source Hashing)

4)uri(資源標識符)

5)url_param(資源定位符)

6)rdp—cookie(name)

7) source

8) static-rr

5、HAProxy 主要工作模式

6、HAProxy配置文件參數

6.1、HAProxy 環境

6.1.1、 global 全局配置

6.1.2、 proxy 代理配置

proxies 配置-defaults

7、狀態統計功能測試

總結


1、HAProxy簡介

官網:HAProxy Technologies | Powering the World's Busiest Applications

HAProxy 是法國人Willy Tarreau開發的一個開源軟件,是一款應對客戶端10000以上的同時連接的高性能的TCP和 HTTP負載均衡器。其功能是用來提供基于cookie的持久性, 基于內容的交換,過載保護的高級流量管制,自動故障切換 ,以正則表達式為基礎的標題控制運行時間,基于Web的報表,高級日志記錄以幫助排除故障的應用或網絡及其他功能。

HAProxy 提供高可用性、負載均衡以及基于TCP和HTTP的應用代理,支持虛擬主機,它是免費、快速并且可靠的一種負載均衡解決方案。適合處理高負載站點的 七層 數據請求。類似的代理服務可以屏蔽內部真實服務器,防止內部服務器遭受攻擊。

2、HAProxy特點和優點:

  1. 支持原生SSL,同時支持客戶端和服務器的SSL.

  2. 支持IPv6和UNIX套字節(sockets)

  3. 支持HTTP Keep-Alive

  4. 支持HTTP/1.1壓縮,節省寬帶

  5. 支持優化健康檢測機制(SSL、scripted TCP、check agent…)

  6. 支持7層負載均衡。

  7. 可靠性和穩定性非常好。

  8. 并發連接 40000-50000個,單位時間處理最大請求 20000個,最大數據處理10Gbps.

  9. 支持8種負載均衡算法,同時支持session保持。

  10. 支持虛擬主機。

  11. 支持連接拒絕、全透明代理。

  12. 擁有服務器狀態監控頁面。

  13. 支持ACL(access control list)。

3、HAProxy保持會話的三種解決方法

HAProxy為了讓同一客戶端訪問服務器可以保持會話。有三種解決方法:客戶端IP、Cookie以及Session。

  1. 通過 客戶端IP 進行Hash計算并保存,以此確保當相同IP訪問代理服務器可以轉發給固定的真實服務器。

  2. 依靠真實服務器發送客戶端的 Cookie信息 進行會話保持。

  3. 將保存真實服務器的 Session 以及服務器標識 ,實現會話保持。

    (HAProxy只要求后端服務器能夠在網絡聯通,也沒有像LVS那樣繁瑣的ARP配置)

4、HAProxy的balance 8種負載均衡算法

1)RR(Round Robin)

RR算法是最簡單最常用的一種算法,即輪詢調度

理解舉例:有三個節點A、B、C

第一個用戶訪問會被指派到節點A

第二個用戶訪問會被指派到節點B

第三個用戶訪問會被指派到節點C

第四個用戶訪問繼續指派到節點A,輪詢分配訪問請求實現負載均衡效果

2)LC(Least Connections)

最小連接數算法,根據后端的節點連接數大小動態分配前端請求

理解舉例: 有三個節點A、B、C,各節點的連接數分別為A:4 B:5 C:6

第一個用戶連接請求,會被指派到A上,連接數變為A:5 B:5 C:6

第二個用戶請求會繼續分配到A上,連接數變為A:6 B:5 C:6;再有新的請求會分配給B,每次將新的請求指派給連接數最小的客戶端

由于實際情況下A、B、C的連接數會動態釋放,很難會出現一樣連接數的情況

此算法相比較rr算法有很大改進,是米錢用到比較多的一種算法

3)SH(Source Hashing)

基于來源訪問調度算法,用于一些有Session會話記錄在服務端的場景,可以基于來源的IP、Cookie等做集群調度

理解舉例 有三個節點A、B、C,第一個用戶第一次訪問被指派到了A,第二個用戶第一次訪問被指派到了B

當第一個用戶第二次訪問時會被繼續指派到A,第二個用戶第二次訪問時依舊會被指派到B,只要負載均衡器不重啟,第一個用戶都會被指派到A,第二個用戶訪問都會被指派到B,實現集群的調度

此調度算法好處是實現會話保持,但某些IP訪問量非常大時會引起負載不均衡,部分節點訪問量超大,影響業務使用

4)uri(資源標識符)

表示根據請求的URI,做cdn(內容分發網絡)需使用

5)url_param(資源定位符)

表示根據HTTP請求頭來鎖定每 一 次HTTP請求。

6)rdp—cookie(name)

表示根據據cookie (name)來鎖定并哈希每一次TCP請求。

7) source

表示根據請求的源IP,類似Nginx的IP hash機制。

8) static-rr

表示根據權重,輪詢

5、HAProxy 主要工作模式

tcp模式:在客戶端和服務器之間將建立一個全雙工的連接,且不會對7層的報文做任何處理的簡單模式。 通常用于SSL、SSH、SMTP等應用層。

http模式(一般使用):客戶端請求在轉發給后端服務器之前會被深度分析,所有不與RFC格式兼容的請求都會被拒絕。

6、HAProxy配置文件參數

6.1、HAProxy 環境

haproxy的配置文件 haproxy.cfg 的 默認地址:/etc/haproxy/haproxy.cfg 。

haproxy.cfg 由兩大部分組成,分別是 global 和 proxies 部分。

global:全局配置:

?進程及安全配置相關的參數性能調整相關參數Debug參數

proxies:代理配置

?defaults:為 frontend, backend, listen提供默認配置frontend:前端,相當于 nginx 中的 server {}backend:后端,相當于 nginx 中的 upstream {}listen:同時擁有 前端和后端配置

名稱說明:

  • frontend 端(front end):指定接收 客戶端 偵聽套接字設置。

  • backend 端(back end):指定將連接請求轉發至 后端服務器 的相關設置。

  • listen 端:指定完整的前后端設置,只對TCP有效

  • proxy 名稱:使用字母 、數字 - 、_ 、. 、: ,并區分字符大小寫。

6.1.1、 global 全局配置
?chroot ? ? ? ? ? ? ? ? ? # 鎖定運行目錄deamon ? ? ? ? ? ? ? ? ? # 以守護進程運行stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin ? ?# socket文件user, group, uid, gid ? ? # 運行haproxy的用戶身份nbproc ? ? ? ? ? ? ? ? ? ?# 開啟的haproxy進程數,與CPU保持一致nbthread ? ? ? ? ? ? ? ? ?# 指定每個haproxy進程開啟的線程數,默認為每個進程一個線程cpu-map 1 0 ? ? ? ? ? ? ? # 綁定haproxy 進程至指定CPUmaxconn ? ? ? ? ? ? ? ? ? # 每個haproxy進程的最大并發連接數maxsslconn ? ? ? ? ? ? ? ?# 每個haproxy進程ssl最大連接數,用于haproxy配置了證書的場景下maxconnrate ? ? ? ? ? ? ? # 每個進程每秒創建的最大連接數量spread-checks ? ? ? ? ? ? # 后端server狀態check隨機提前或延遲百分比時間,建議2-5(20%-50%)之間pidfile ? ? ? ? ? ? ? ? ? # 指定pid文件路徑log 127.0.0.1 local3 info ? ?# 定義全局的syslog服務器;最多可以定義兩個

示例:

?########################  全局配置  ############################ ####### 參數是進程級的,通常和操作系統(OS)相關global chroot /var/haproxy ? ? ? ? ? ? # 鎖定運行目錄uid 99 ? ? ? ? ? ? ? ? ? ? ? ? ?# 所屬運行的用戶uid gid 99 ? ? ? ? ? ? ? ? ? ? ? ? ?# 所屬運行的用戶組 daemon ? ? ? ? ? ? ? ? ? ? ? ? ?# 守護進程。以后臺形式運行haproxy nbproc 1 ? ? ? ? ? ? ? ? ? ? ? ?# haproxy進程數,與CPU保持一致pidfile /var/run/haproxy.pid ? ?# haproxy的pid存放路徑,啟動進程的用戶必須有權限訪問此文件 ulimit-n 65535   ? ? ? ? ? ? ? ? ?# ulimit的數量限制maxconn 20480 ? ? ? ? ? ? ? ? ? # 默認最大連接數 log 127.0.0.1 local0 ? ? ? ? ? ?# 日志輸出配置,所有日志都記錄在本機系統日志,通過 local0 輸出log 127.0.0.1 local1 notice ?   # notice 為日志級別,通常有24個級別(error warring info debug)
6.1.2、 proxy 代理配置

主要分為下面4個部分

?defaults [<name>] ?# 默認配置項,針對以下的frontend、backend和lsiten生效,可以多個namefrontend <name> ? ?# 前端servername,類似于Nginx的一個虛擬主機 server。backend <name> ? ? # 后端服務器組,等于nginx的upstreamlisten <name> ? ? ?# 將frontend和backend合并在一起配置
proxies 配置-defaults
option redispatch ? ? ? ? ? # 當server Id對應的服務器掛掉后,強制定向到其他健康的服務器option abortonclose ? ? ? ? # 當服務器負載很高的時候,自動結束掉當前隊列處理比較久的鏈接option http-keep-alive ? ? ?# 開啟與客戶端的會話保持option forwardfor ? ? ? ? ? # 透傳客戶端真實IP至后端web服務器mode http ? ? ? ? ? ? ? ? ? # 默認工作類型timeout connect 120s ? ? ? ?# 客戶端請求到后端server的最長連接等待時間(TCP之前)timeout server 600s ? ? ? ? # 客戶端請求到后端服務端的超時超時時長(TCP之后)timeout client 600s ? ? ? ? # 與客戶端的最長非活動時間timeout http-keep-alive 120s # session 會話保持超時時間,范圍內會轉發到相同的后端服務器timeout check 5s ? ? ? ? ? ?# 對后端服務器的檢測超時時間

示例:

?#########################  默認設置  ########################## ## 這些參數可以被利用配置到 frontend,backend,listen組件defaults log global ? ? ? ? ? ? ? ? ? ? ?# 定義日志為global(全局)配置中的日志定義mode http ? ? ? ? ? ? ? ? ? ? ? # 所處理的類別 (網絡七層協議中,tcp是第4層的會話層、http是第7層的應用層) maxconn 20480 ? ? ? ? ? ? ? ? ? # 最大連接數 option httplog ? ? ? ? ? ? ? ? ?# 日志類別http日志格式 option httpclose ? ? ? ? ? ? ? ?# 每次請求完畢后主動關閉http通道 option dontlognull ? ? ? ? ? ? ?# 不記錄健康檢查的日志信息 option forwardfor ? ? ? ? ? ? ? # 如果后端服務器需要獲得客戶端真實ip需要配置的參數,可以從Http Header中獲得客戶端ip ?option redispatch ? ? ? ? ? ? ? # 當server Id對應的服務器掛掉后,強制定向到其他健康的服務器option abortonclose ? ? ? ? ? ? # 當服務器負載很高的時候,自動結束掉當前隊列處理比較久的連接 stats refresh 30 ? ? ? ? ? ? ? ?# 統計頁面刷新間隔 retries 3 ? ? ? ? ? ? ? ? ? ? ? # 檢查節點服務器失敗次數,連續達到三次失敗,則認為節點不可用balance roundrobin ? ? ? ? ? ? ?# 默認的負載均衡的方式,輪詢方式,上面的第4段8種負載均衡算法#balance source ? ? ? ? ? ? ? ? # 默認的負載均衡的方式,類似nginx的ip_hash #balance leastconn ? ? ? ? ? ?  # 默認的負載均衡的方式,最小連接 contimeout 5000 ? ? ? ? ? ? ? ? # 連接的超時時間clitimeout 50000 ? ? ? ? ? ? ? ?# 客戶端的超時時間srvtimeout 50000 ? ? ? ? ? ? ? ?# 服務器的超時時間timeout check 2000 ? ? ? ? ? ? ?# 心跳檢測的超時時間

7、狀態統計功能測試

下載haproxy

yum -y install haproxy

修改配置文件

[root@haproxy ~]# cd /etc/haproxy/
[root@haproxy haproxy]# ls
conf.d  haproxy.cfg
[root@haproxy haproxy]# vim haproxy.cfg 
[root@haproxy haproxy]# cat haproxy.cfg
#---------------------------------------------------------------------
# Example configuration for a possible web application.  See the
# full configuration options online.
#
#   https://www.haproxy.org/download/1.8/doc/configuration.txt
#
#---------------------------------------------------------------------globallog         127.0.0.1 local2chroot      /var/lib/haproxypidfile     /var/run/haproxy.piduser        haproxygroup       haproxydaemonmaxconn     4000defaultsmode                    httplog                     globaloption                  httplogoption                  dontlognullretries                 3timeout http-request    5stimeout queue           1mtimeout connect         5stimeout client          1mtimeout server          1mtimeout http-keep-alive 5stimeout check           5smaxconn                 3000frontend mainbind *:80default_backend         http_backbackend http_backbalance     roundrobinserver  node1 192.168.72.164:80 check    ###web1主機IP地址server  node2 192.168.72.165:80 check    ###web2主機IP地址
listen stats #定義監控頁面    mode httpoption httplogbind *:1080                   #綁定端口1080    stats refresh 30s             #每30秒更新監控數據    stats uri /stats              #訪問監控頁面的uri    stats realm HAProxy\ Stats    #監控頁面的認證提示    stats auth admin:admin        #監控頁面的用戶名和密碼

web1、web2下載并開啟nginx

[root@web1 ~]# yum install -y nginx
[root@web1 ~]# systemctl start nginx[root@web2 ~]# yum install -y nginx
[root@web2 ~]# systemctl start nginx

web1、web2在Nginx web服務器的默認根目錄下的首頁文件中輸入內容

[root@web1 ~]# echo web1 > /usr/share/nginx/html/index.html
[root@web2 ~]# echo web2 > /usr/share/nginx/html/index.html

回到haproxy開啟haproxy.service

[root@haproxy ~]# systemctl start haproxy.service#查看監聽
[root@haproxy ~]# netstat -antup | grep 80
tcp        0      0 0.0.0.0:1080            0.0.0.0:*               LISTEN      10525/haproxy       
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      10525/haproxy   

驗證流量分發?

訪問192.168.72.163web網站,查看到請求被均勻地分發到了兩個不同的后端服務器(web1和web2),采用輪詢實現負載均衡策略

訪問192.168.72.163:1080/stats web網站,輸入用戶名:admin,密碼:admin,進入狀態統計頁面

HAProxy + Keepalived實現負載均衡高可用

主機作用真實 IP (RIP)虛擬 IP (VIP)
?server1?主負載均衡節點192.168.72.163192.168.72.100
?server2?備負載均衡節點192.168.72.185192.168.72.100
?Web1后端服務器 1192.168.72.164-
?Web2后端服務器 2192.168.72.165-
客戶端請求↓
[ VIP: 192.168.72.100 ]  ← Keepalived 主備切換 (server1/server2)↓
[ HAProxy 負載均衡 ]↓
[ web1:192.168.72.164 ]
[ web2:192.168.72.165 ]

server1主節點修改配置文件/etc/keepalived/keepalived.conf

server2備節點修改配置文件/etc/keepalived/keepalived.conf

server1備節點修改配置文件/etc/haproxy/haproxy.cfg

[root@server1 ~]# cat /etc/haproxy/haproxy.cfg
#---------------------------------------------------------------------
# Example configuration for a possible web application.  See the
# full configuration options online.
#
#   https://www.haproxy.org/download/1.8/doc/configuration.txt
#
#---------------------------------------------------------------------globallog         127.0.0.1 local2chroot      /var/lib/haproxypidfile     /var/run/haproxy.piduser        haproxygroup       haproxydaemonmaxconn     4000defaultsmode                    httplog                     globaloption                  httplogoption                  dontlognullretries                 3timeout http-request    5stimeout queue           1mtimeout connect         5stimeout client          1mtimeout server          1mtimeout http-keep-alive 5stimeout check           5smaxconn                 3000frontend http-inbind 192.168.72.100:80default_backend web_serversbackend web_serversbalance     roundrobinserver web1 192.168.72.164:80 checkserver web2 192.168.72.165:80 check

server2備節點修改配置文件/etc/haproxy/haproxy.cfg

[root@server2 haproxy]# cat haproxy.cfg 
#---------------------------------------------------------------------
# Example configuration for a possible web application.  See the
# full configuration options online.
#
#   https://www.haproxy.org/download/1.8/doc/configuration.txt
#
#---------------------------------------------------------------------globallog         127.0.0.1 local2chroot      /var/lib/haproxypidfile     /var/run/haproxy.piduser        haproxygroup       haproxydaemonmaxconn     4000defaultsmode                    httplog                     globaloption                  httplogoption                  dontlognullretries                 3timeout http-request    5stimeout queue           1mtimeout connect         5stimeout client          1mtimeout server          1mtimeout http-keep-alive 5stimeout check           5smaxconn                 3000frontend http-inbind 192.168.72.100:80default_backend web_serversbackend web_serversbalance     roundrobinserver web1 192.168.72.164:80 checkserver web2 192.168.72.165:80 check

啟動服務?

###在兩臺server上執行:
systemctl start keepalived
systemctl start haproxy###備節點需要強制切換VIP到備節點開啟服務(測試)
[root@server2 haproxy]# ip addr add 192.168.72.100/24 dev ens33
[root@server2 haproxy]# systemctl restart haproxy

server1、server2分別輸入ip a命令查看確保 Keepalived 主節點 server1 應持有 VIP,備節點 server2 現未持有VIP,在故障時接管

[root@server1 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host noprefixroute valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether 00:0c:29:c2:74:d2 brd ff:ff:ff:ff:ff:ffinet 192.168.72.163/24 brd 192.168.72.255 scope global dynamic noprefixroute ens33valid_lft 1324sec preferred_lft 1324secinet 192.168.72.100/24 scope global secondary ens33valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fec2:74d2/64 scope link noprefixroute valid_lft forever preferred_lft forever###
[root@server2 haproxy]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host noprefixroute valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether 00:0c:29:9b:f9:1b brd ff:ff:ff:ff:ff:ffinet 192.168.72.185/24 brd 192.168.72.255 scope global dynamic noprefixroute ens33valid_lft 1685sec preferred_lft 1685secinet6 fe80::20c:29ff:fe9b:f91b/64 scope link noprefixroute valid_lft forever preferred_lft forever

驗證流量分發

訪問192.168.72.100web站點,在后端web1、web2上部署不同頁面分別返回 web1和web2內容,說明輪詢策略生效,實現負載均衡

故障模擬

VIP飄逸測試

切換到server1關閉Keepalived

[root@server1 ~]# systemctl stop keepalived###查看服務狀態
[root@server1 ~]# systemctl status keepalived
○ keepalived.service - LVS and VRRP High Availability MonitorLoaded: loaded (/usr/lib/systemd/system/keepalived.service; disabled; preset: disabled)Active: inactive (dead)7月 16 10:34:42 server1 systemd[1]: Stopping LVS and VRRP High Availability Monitor...
7月 16 10:34:42 server1 Keepalived[26286]: Stopping
7月 16 10:34:42 server1 Keepalived_vrrp[26287]: (VI_1) sent 0 priority
7月 16 10:34:42 server1 Keepalived_vrrp[26287]: (VI_1) removing VIPs.
7月 16 10:34:43 server1 Keepalived_vrrp[26287]: Stopped - used 0.000000 user time, 0.069239 system time
7月 16 10:34:43 server1 Keepalived[26286]: CPU usage (self/children) user: 0.000000/0.000000 system: 0.000834/0.069811
7月 16 10:34:43 server1 Keepalived[26286]: Stopped Keepalived v2.2.8 (04/04,2023), git commit v2.2.7-154-g292b299e+
7月 16 10:34:43 server1 keepalived-stop-post.sh[30523]: Excuted stop-post keepalived
7月 16 10:34:43 server1 systemd[1]: keepalived.service: Deactivated successfully.
7月 16 10:34:43 server1 systemd[1]: Stopped LVS and VRRP High Availability Monitor.

此時在server2主機輸入ip a命令觀察VIP已漂移到server2,實現故障轉移

[root@server2 haproxy]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host noprefixroute valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether 00:0c:29:9b:f9:1b brd ff:ff:ff:ff:ff:ffinet 192.168.72.185/24 brd 192.168.72.255 scope global dynamic noprefixroute ens33valid_lft 1209sec preferred_lft 1209secinet 192.168.72.100/24 scope global secondary ens33valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe9b:f91b/64 scope link noprefixroute valid_lft forever preferred_lft forever

此時再次訪問192.168.72.100web站點保持正常,因備節點自動接管,

總結:

????????HAProxy 通過多節點流量調度、健康監測和故障自動轉移等機制,不僅實現了高效的負載均衡,還大幅提升了系統的容錯能力。無論是應對高并發請求,還是保障關鍵業務的高可用性,HAProxy 都展現出了強大的適應性和可靠性。結合合理的架構設計(如多活部署、會話保持等),HAProxy 能夠為企業級應用提供穩定、高效的流量管理解決方案,成為現代云原生和微服務架構中不可或缺的基礎設施組件。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/89665.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/89665.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/89665.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ELN:生物醫藥科研的數字化引擎——衍因科技引領高效創新

在生物醫藥研究領域&#xff0c;實驗數據的準確記錄與管理是科研成敗的關鍵。想象一個場景&#xff1a;某頂尖醫學院實驗室&#xff0c;研究員小張正為一項抗癌藥物實驗焦頭爛額。紙質記錄本中&#xff0c;數據混亂、協作困難&#xff0c;導致實驗重復率高達20%。引入衍因科技的…

暑假---作業2

學習目標&#xff1a;xss-1abs 1-8關python美現自動化布爾自注的2、代碼進行優化(二分查找)學習內容&#xff1a;1.xss-1abs 1-8關1<h2 align"center">歡迎用戶test</h2>2 <script> alert (1)</script&gt<center> <form action&…

【Tensor數據轉換】——深度學習.Torch框架

目錄 1 Tensor與Numpy 1.1 張量轉Numpy 1.2 Numpy轉張量 1 Tensor與Numpy 1.1 張量轉Numpy 調用numpy()方法可以把Tensor轉換為Numpy&#xff0c;此時內存是共享的。 使用copy()方法可以避免內存共享 import torch import numpy as np# tensor轉numpy:numpy() def test0…

基于Tranformer的NLP實戰(5):BERT實戰-基于Pytorch Lightning的文本分類模型

文本分類作為自然語言處理中的基礎任務&#xff0c;能夠幫助我們將海量醫學摘要自動歸類到具體疾病領域中。本文將基于NVIDIA NeMo框架&#xff0c;構建一個用于醫學疾病摘要分類的深度學習應用&#xff0c;支持將摘要劃分為三類&#xff1a;癌癥類疾病、神經系統疾病及障礙、以…

14-鏈路聚合

鏈路聚合技術 一 鏈路聚合概述鏈路聚合定義鏈路聚合是把多條物理鏈路聚合在一起&#xff0c;形成一條邏輯鏈路。應用在交換機、路由器、服務器間鏈路。分為三層鏈路聚合和二層鏈路聚合。二 鏈路聚合的作用 1. 鏈路聚合模式靜態聚合模式 端口不與對端設備交互信息。選擇參考端口…

學習C++、QT---28(QT庫中使用QShortcut類對快捷鍵創建和使用的講解)

每日一言 所有的努力&#xff0c;都是為了讓未來的自己感謝現在的你。 QShortcut 我們的記事本肯定要有通過快捷鍵對字體的放大和縮小進行控制的功能啊&#xff0c;那么我們這邊就這個問題我們需要先學習一下QShortCut 我們這個類就是專門做快捷鍵的 老樣子我們剛開始學習這個…

Web Worker:讓前端飛起來的隱形引擎

目錄 Web Worker&#xff1a;讓前端飛起來的隱形引擎 一、什么是 Web Worker&#xff1f; 1、為什么需要 web worker 2、什么是 web worker 二、基本使用方法 1、創建一個 Worker 文件&#xff08;worker.js&#xff09; 2、主線程引入并使用 三、實戰案例&#xff1a;…

關于在VScode中使用git的一些步驟常用命令及其常見問題:

輸入 gitee用戶 gitee綁定郵箱git config --global user.name "automated-piggy-senior" git config --global user.email "1323280131qq.com"克隆遠程庫到本地 git clone https://gitee.com/automated-piggy-senior/20250717-test.git常見問題1&#xff1…

LeafletJS 性能優化:處理大數據量地圖

引言 LeafletJS 作為一個輕量、靈活的 JavaScript 地圖庫&#xff0c;以其高效的渲染能力和模塊化設計深受開發者喜愛。然而&#xff0c;當處理大數據量&#xff08;如數千個標記、復雜的 GeoJSON 數據或高分辨率瓦片&#xff09;時&#xff0c;LeafletJS 的性能可能面臨挑戰&…

LLM(Large Language Model)大規模語言模型淺析

參考: https://zhuanlan.zhihu.com/p/7046080918 LLM(Large Language Model)大規模語言模型,是指具有大規模參數和復雜計算結構的機器學習模型。大模型里常說的多少B, B 是 Billion 的縮寫&#xff0c;表示 十億,如DeepSeek滿血版 671B(6710億參數); 大模型本質上是一個使用海量…

【后端】配置SqlSugar ORM框架并添加倉儲

目錄 1.添加包 2.配置連接字符串 3.配置SqlSugar 3.1.添加基礎類 3.2.添加方法 3.2.1.讀取配置方法 3.2.2.枚舉擴展方法 3.3.添加管理類&#xff08;重要&#xff09; 4.配置倉儲 4.1.倉儲接口添加 5.注冊 6.使用 該文檔是配置SqlSugar多租戶和加倉儲教程。使用 S…

全國高等院校計算機基礎教育研究會2025學術年會在西寧成功舉辦 ——高原論道啟新程,數智融合育英才

7 月16日至18日&#xff0c;全國高等院校計算機基礎教育研究會2025學術年會在青海西寧隆重召開。大會以“數智融合&#xff0c;創新計算機教育”為主題&#xff0c;匯聚人工智能領域頂尖專家學者、高校校長、產業翹楚及一線教師300 多人&#xff0c;共商人工智能時代計算機基礎…

AppTrace:重新定義免填邀請碼,解鎖用戶裂變新高度

??在移動互聯網時代&#xff0c;?用戶裂變是App增長的核心引擎&#xff0c;而邀請機制則是裂變的關鍵驅動力。然而&#xff0c;傳統的邀請碼機制——依賴用戶手動輸入、記憶復雜字符——已經成為用戶體驗的絆腳石&#xff0c;導致轉化率下降、運營成本上升。?AppTrace? 作…

神經網絡常見激活函數 13-Softplus函數

文章目錄Softplus函數導函數函數和導函數圖像優缺點PyTorch 中的 Softplus 函數TensorFlow 中的 Softplus 函數Softplus 函數導函數 Softplus函數 Softplus?(x)ln?(1ex)\begin{aligned} \operatorname{Softplus}(x) & \ln \bigl(1 e^{\,x}\bigr) \end{aligned} Softplu…

深度理解 KVM:Linux 內核系統學習的重要角度

&#x1f4d6; 推薦閱讀&#xff1a;《Yocto項目實戰教程:高效定制嵌入式Linux系統》 &#x1f3a5; 更多學習視頻請關注 B 站&#xff1a;嵌入式Jerry 深度理解 KVM&#xff1a;Linux 內核系統學習的重要角度 作者&#xff1a;嵌入式 Jerry 一、為什么開發者需要學習 KVM&…

閉包的定義和應用場景

一、閉包是什么&#xff1f; 閉包是指函數可以“記住”并訪問它定義時的詞法作用域&#xff0c;即使這個函數在其作用域鏈之外執行。 簡單說&#xff1a;函數 A 在函數 B 中被定義&#xff0c;并在函數 B 外部被調用&#xff0c;它依然能訪問函數 B 中的變量&#xff0c;這就是…

北京-4年功能測試2年空窗-報培訓班學測開-第五十四天

今天交付的成果是&#xff0c;初版簡歷雖然只寫了項目部分&#xff0c;但用了一整天&#xff0c;期間聯系了前司組長&#xff0c;拿到了性能測試報告。然后再看壓測腳本&#xff0c;突然能看懂了&#xff0c;對服務端日志也能看懂些了&#xff0c;還找到了客戶端日志怎么說呢&a…

算法訓練營day24 回溯算法③ 93.復原IP地址 、78.子集、 90.子集II

今天繼續回溯算法的專題&#xff0c;第三篇博客&#xff01; 93.復原IP地址 輸入&#xff1a;s "25525511135" 輸出&#xff1a;["255.255.11.135","255.255.111.35"] 切割字符串為4段&#xff0c;當進行到第四段的時候對第四段字符串進行判斷…

jeccg-boot框架實現xls模板導出功能

文章目錄一、后端部分二、前端部分三、模板制作一、后端部分 //1、在application-dev.yml文件增加模板路徑path :#模板路徑saxls: /data/opt/saxls/ //2、控制層寫法 public class sabassalController extends JeecgController<sabassalVo, IsabassalService> {Autowired…

LangChain4j入門:Java開發者的AI應用開發指南

&#x1f680; 在AI浪潮席卷全球的今天&#xff0c;Java開發者如何快速上手大語言模型應用開發&#xff1f;LangChain4j為我們提供了完美的解決方案&#xff01; 前言&#xff1a;為什么Java開發者需要LangChain4j&#xff1f; 想象一下&#xff0c;你正在開發一個企業級應用&…