FTP文件傳輸服務

一、FTP協議、服務器

FTP:文件傳輸協議(用于網絡文件雙向傳輸的應用層協議)

特點:最廣泛、最底層、較簡單,但是明文傳輸;適用于較大文件的傳輸

1.常見客戶端、服務器

  • 客戶端:WINSCP or filezilla(windows),ftp(linux)
  • 服務器:IIS(windows)、vsftpd(linux)
  • VSFTPD:very secure FTP daemon

2.FTP服務參數

服務端

  • 軟件名:vsftpd
  • 服務名:vsftpd
  • 端口號:20、21、指定范圍的隨機端口
  • 配置文件:/etc/vsftpd/vsftpd.conf
  • 日志文件:/var/log/messages

客戶端

  • 軟件名:ftp
  • 格式:ftp 服務器ip
  • 命令:連上ftp后,用help或?命令查看,!命令——可以執行客戶端命令

注:ftp連接需要將客戶端用戶禁錮在家目錄,防止權限過大

二、FTP用戶模式

  • 匿名用戶模式:測試用戶,用戶名為ftp或anonymous,密碼隨意
  • 本地用戶模式:服務器上的/etc/passwd的用戶(默認禁止/etc/vsftpd/user_list中用戶連接)
  • 虛擬用戶模式(不做重點)

用戶屬性:賬號、共享位置、訪問權限、設置指定的訪問權限、下載(上傳)的文件的位置

訪問權限

  • FTP服務的訪問權限:下載、上傳、創建文件夾、其他寫入權限等
  • Linux系統的訪問權限:r、w、x

1.匿名用戶

服務端共享目錄:/var/ftp

默認權限:可下載、不能上傳(設置權限由兩部分控制:主配置文件和文件系統權限)

客戶端下載目錄:下載在連接ftp時所在目錄位置

匿名用戶參數:

  • anontmous_enable=YES? ? ? ? 啟用匿名訪問
  • anon_umask=022? ? ? ? 匿名用戶所上傳文件的權限掩碼?
  • anon_root=/var/ftp? ? ? ? 匿名用戶FTP的根目錄
  • anon_upload_enable=YES? ? ? ? 允許上傳文件
  • anon_mkdir_write_enable=YES? ? ? ? 允許創建目錄
  • anon_other_write_enable=YES? ? ? ? 允許其他寫權限
  • anon_max_rate=2? ? ? ? 限制最大傳輸速率(字節/秒)

參數設置注意事項

  • 想要使用,除配置文件允許外,還需要設置獨立的文件系統權限(建議用acl)
  • 即便可以上傳文件,上傳文件的權限也僅有600,其他人(包括上傳者)無法下載使用
  • 想要讓其他人也能正常下載,需要修改匿名用戶上傳文件掩碼值為022

2.本地用戶

用戶名、密碼:服務器端設置的系統用戶名和密碼

服務端共享目錄:系統用戶家目錄

默認權限(FTP的所有權限):可上傳、下載、創建目錄、刪除、重命名等其他寫入權限

客戶端下載目錄:下載在連接ftp時所在的目錄位置

本地用戶參數

  • local_enable=YES? ? ? ? 啟用本地用戶訪問
  • local_umask=022? ? ? ? 本地用戶所上傳文件的權限掩碼
  • local_root=/home/用戶名? ? ? ? 設置本地用戶的FTP根目錄
  • chroot_local_user=YES? ? ? ? 是否將用戶禁錮在主目錄
  • allow_writeable_chroot=YES? ? ? ? 禁錮后允許寫入
  • local_max_rate=2? ? ? ? 限制最大傳輸速率(字節/秒)

補充:useradd -s /sbin/nologin -d /data/ftp wangwu——設置不能登錄系統;僅禁錮用戶在主目錄依舊不夠安全,也要同時拒絕ssh連接的通道

? ? ? ? ? ?設置了/sbin/nologin后,客戶端用ftp有可能無法連接,因為服務端/etc/shells下沒有/sbin/nologin,需要手動添加才可以連接

3.VSFTPD全局參數

  • write_enable=YES? ? ? ? 是否啟用寫入權限
  • download_enable=YES? ? ? ? 是否允許下載文件
  • connect_timeout=60? ? ? ? 主動模式下的連續超時時間
  • accept_timeout=60? ? ? ? 被動模式下的連續超時時間
  • data_connection_timeout=300? ? ? ? 進行完整數據傳輸后的再操作連接時間
  • idle_session_timeout=300? ? ? ? 驗證完用戶名和密碼后等待傳輸數據的超時時間

注:其中有一個配置:pam_service_name=vsftpd,其中vsftpd指的是/etc/pam.d/vsftpd文件,該文件可驗證/etc/vsftpd/ftpuser文件下用戶登錄;如果修改,則客戶端連接會因為無法驗證而失敗? ??

例:vim /etc/pam.d/vsftpd

其中,*.so文件是該服務的依賴,依賴分為動態依賴和靜態依賴

  • 靜態依賴:static,隨著服務啟動而存在
  • 動態依賴:如so,服務啟動時沒有,需要使用的時候加載

三、VSFTPD原理

工作模式:主動模式、被動模式?

傳輸模式:ASCII模式、Binary模式

  • ASCII模式:將文件內容轉換成存儲文本文件的格式;多用于傳輸文本文件
  • BINARY(二進制)模式:不對數據進行任何處理,逐位復制;多用于傳輸非文本文件,如程序、數據庫、壓縮文件

1.FTP被動模式

被動模式原理

  1. 客戶端連接服務器的21端口、驗證用戶名和密碼,建立控制連接
  2. 客戶端想傳輸數據時,在控制連接中發送PASV命令
  3. 服務器收到該命令后,生成隨機端口返回給客戶端、等待客戶端的請求
  4. 傳輸數據時,客戶端的隨機端口連接服務器的指定端口,建立數據連接
  5. 客戶端和服務器進行數據傳輸

注:20端口不在被動模式里

控制連接

客戶端(隨機端口)——服務端(21端口)

數據連接

客戶端(隨機端口)——服務端(指定端口)

被動切主動

  1. 客戶端傳輸數據時,FTP服務默認采用被動模式
  2. 被動和主動是由客戶端決定的
  3. 被動和主動作用的是服務器的動作,是主動連接還是被動的等待連接
  4. 使用主動模式:ftp>passive off

2.FTP主動模式

主動模式原理

  1. 客戶端連接服務器的21端口、驗證用戶名和密碼,建立控制連接
  2. 客戶端想傳輸數據時,在控制連接中發送PORT命令【1.該命令中包含了客戶端想要進行數據傳輸的指定端口;2.服務器收到該命令后,會主動連接客戶端】
  3. 要傳輸數據時,服務器的20端口連接至客戶端的指定端口,建立數據連接
  4. 客戶端和服務器進行數據傳輸

控制連接

客戶端(隨機端口)——服務器端(21端口)

數據連接

服務端(20端口)——客戶端(指定端口)

3.模式對比

(1)控制連接過程不同

(2)數據連接部分不同【FTP的主被動模式是由客戶端決定的,針對服務器而言的】

(3)使用場景不同:

  • FTP服務器較弱時,可以考慮主動模式;
  • 公網無法要求客戶端開放防火墻,一般采用被動模式;
  • 被動模式下,可以通過pasv_min_port和pasv_max_port控制隨機端口范圍

4.問題:為什么用被動連接模式?

  1. 主動模式下數據連接都走20端口,壓力大
  2. 防火墻規則:管進不管出;主動連接在數據傳輸時需要客戶端放行端口、不太可控

四、本地用戶登錄及設置

1.服務端(77.77)

#安裝軟件
$ dnf -y install vsftpd
#開啟服務
$ systemctl start vsftpd
#通過端口驗證開啟成功,結果中可以看到用來監聽的21端口
$ ss -antp | grep vsftpd
#禁錮本地用戶只能在自己的家目錄范圍
#注意此時應該先把要上傳共享目錄的文件系統權限設置上
$ vim /etc/vsftpd/vsftpd.conf
#禁錮本地用戶在家目錄
chroot_local_user=YES
#禁錮本地用戶后允許寫權限
allow_writeable_chroot=YES
#重啟服務
$ systemctl restart vsftpd

實驗:

[root@localhost ~]# dnf -y install vsftpd[root@localhost ~]# systemctl start vsftpd
[root@localhost ~]# ss -anpt | grep vsftpd
LISTEN 0      32                 *:21                *:*     users:(("vsftpd",pid=991,fd=3))                    
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 
chroot_local_user=YES
allow_writeable_chroot=YES
[root@localhost ~]# systemctl restart vsftpd

2.客戶端(77.79)

#安裝連接命令
$ dnf -y install ftp
#連接ftp服務器
$ ftp ftp服務器IP
輸入用戶名:vsftpd服務的用戶名
輸入密碼:vsftpd服務該用戶的密碼
ftp> pwd #查看當前位置,在本地用戶的家目錄即/home/用戶名
ftp> get 文件名 #從共享目錄下載文件到客戶端的當前位置
ftp> put 文件名 #向共享目錄上傳文件、默認有權限
ftp> mkdir 目錄名 #在共享目錄中創建目錄的權限、默認有權限
ftp> rename、delete等 #在共享目錄的其他寫權限、默認有權限

實驗:

[root@localhost ~]# ftp 192.168.77.77
Connected to 192.168.77.77 (192.168.77.77).
220 (vsFTPd 3.0.5)
Name (192.168.77.77:root): zhaoliu
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ?
Commands may be abbreviated.  Commands are:!		debug		mdir		sendport	site
$		dir		mget		put		size
account		disconnect	mkdir		pwd		status
append		exit		mls		quit		struct
ascii		form		mode		quote		system
bell		get		modtime		recv		sunique
binary		glob		mput		reget		tenex
bye		hash		newer		rstatus		tick
case		help		nmap		rhelp		trace
cd		idle		nlist		rename		type
cdup		image		ntrans		reset		user
chmod		lcd		open		restart		umask
close		ls		prompt		rmdir		verbose
cr		macdef		passive		runique		?
delete		mdelete		proxy		send
ftp> ls
227 Entering Passive Mode (192,168,77,77,134,90).
150 Here comes the directory listing.
-rw-r--r--    1 0        0               0 Sep 08 13:49 1.txt
-rw-r--r--    1 0        0               0 Sep 08 13:49 2.txt
-rw-r--r--    1 0        0               0 Sep 08 13:49 3.txt
-rw-r--r--    1 0        0               0 Sep 08 13:49 4.txt
-rw-r--r--    1 0        0               0 Sep 08 13:49 5.txt
226 Directory send OK.
ftp> pwd
257 "/" is the current directoryftp> get 1.txt
local: 1.txt remote: 1.txt
227 Entering Passive Mode (192,168,77,77,164,68).
150 Opening BINARY mode data connection for 1.txt (0 bytes).
226 Transfer complete.ftp> !ls
1.txt  anaconda-ks.cfg	cat.sh	nginx-1.26.3.tar.gz  ng.txtftp> put cat.sh
local: cat.sh remote: cat.sh
227 Entering Passive Mode (192,168,77,77,211,74).
150 Ok to send data.
226 Transfer complete.
389 bytes sent in 9.6e-05 secs (4052.08 Kbytes/sec)ftp> mkdir bik.d
257 "/bik.d" createdftp> delete 3.txt
250 Delete operation successful.

注:在/etc/vsftpd/user_list中定義了被拒絕使用ftp服務的系統用戶

補充

windows客戶端
1、在文件資源管理器的地址欄中,輸入:ftp://vsftpd服務IP/,右鍵登錄
或者:ftp://username:password@vsftpd服務IP
2、filezilla軟件

五、匿名用戶登錄及設置

1.服務端(77.77)

#安裝軟件
$ dnf -y install vsftpd
#開啟服務
$ systemctl start vsftpd
#通過端口驗證開啟成功,結果中可以看到用來監聽的21端口
$ ss -antp | grep vsftpd
#注意此時應該先把要上傳共享目錄的文件系統權限設置上
$ vim /etc/vsftpd/vsftpd.conf
#開啟匿名用戶模式
anonymous_enable=YES
#設置上傳權限
anon_upload_enable=YES
#設置創建目錄權限
anon_mkdir_write_enable=YES
#設置上傳后文件或創建目錄后的默認權限
anon_umask=022
#設置其他寫入權限
anon_other_write_enable=YES
#重啟服務
$ systemctl restart vsftpd

注1:權限生效=vsftpd服務開放權限+有文件系統權限(否則會出現550錯誤狀態碼)
注2:匿名用戶一定不要改/var/ftp這個目錄的文件系統權限,否則退出后服務再起不來
注3:配置文件里的布爾類型(YES或NO),結尾不能有空格

2.客戶端(77.79)

#安裝連接命令
$ dnf -y install ftp
#連接ftp服務器
$ ftp ftp服務器IP
輸入用戶名:ftp 或 anonymous
輸入密碼:隨便輸入、一般輸空直接回車
ftp> pwd #查看當前位置,在匿名用戶的共享根目錄即/var/ftp
ftp> get 文件名 #從共享目錄下載文件到客戶端的當前位置
ftp> put 文件名 #向共享目錄上傳文件、默認沒有
ftp> mkdir 目錄名 #在共享目錄中創建目錄的權限、默認沒有
ftp> rename、delete等 #在共享目錄的其他寫權限、默認沒有

實驗:

[root@localhost ~]# ftp 192.168.77.77
Connected to 192.168.77.77 (192.168.77.77).
220 (vsFTPd 3.0.5)
Name (192.168.77.77:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.ftp> pwd
257 "/" is the current directoryftp> ls
227 Entering Passive Mode (192,168,77,77,225,225).
150 Here comes the directory listing.
-rw-r--r--    1 0        0               0 Sep 08 14:02 a.txt
-rw-r--r--    1 0        0               0 Sep 08 14:02 b.txt
-rw-r--r--    1 0        0               0 Sep 08 14:02 c.txt
-rw-r--r--    1 0        0               0 Sep 08 14:02 d.txt
-rw-r--r--    1 0        0               0 Sep 08 14:02 e.txt
-rw-r--r--    1 0        0               0 Sep 08 14:02 f.txt
drwxr-xr-x    2 0        0               6 Oct 30  2023 pub
226 Directory send OK.ftp> !ls
1.txt  anaconda-ks.cfg	cat.sh	nginx-1.26.3.tar.gz  ng.txt#服務器端已配置好vsftpd相關服務,但ftp用戶沒有文件系統權限
ftp> put cat.sh
local: cat.sh remote: cat.sh
227 Entering Passive Mode (192,168,77,77,81,146).
553 Could not create file.
ftp> mkdir 1.txt
550 Create directory operation failed.#使用setfacl -m u:ftp:rwx /var/ftp/手動為根目錄添加寫權限,再試
ftp> mkdir 1.txt
257 "/1.txt" created
ftp> put cat.sh
local: cat.sh remote: cat.sh
227 Entering Passive Mode (192,168,77,77,181,17).
150 Ok to send data.
226 Transfer complete.
389 bytes sent in 3.7e-05 secs (10513.51 Kbytes/sec)

注:默認情況下,只有寫權限;不可以用chmod o+w的方式設置文件系統寫權限,因為會導致權限泄露;目錄只有擁有w權限,才可以創建子文件、子目錄、刪除文件或改名。

    六、VSFTPD加密

    1.加密方式(vsftpd+ssl)

    • ssl:Secure Socket Layer,安全套接字,安全性協議
    • TLS:基于SSL開發,支持更多功能

    實驗:在服務端使用tcpdump工具抓包,客戶端連接

    可以看到用戶名和密碼都是明文傳輸,并不安全,所以才需要ssl進行加密

    2.SSL主要功能

    • 認證用戶和服務器
    • 加密數據
    • 維護數據的完整性

    3.PKI組成:公鑰基礎設施(CA,X.509,SSL)

    • CA:證書申請——審批——發放——更新——查詢、撤銷、廢止——歸檔
    • 常見的CA機構:Let's Encrypt
    • CA申請:公網域名+ip
    • 實驗:模擬做自簽名證書——自己信任

    4.加密原理

    1. 服務端在本地生成一對密鑰,攜數據、公鑰申請CA認證
    2. CA機構通過單項的哈希算法(如MD5)將申請加密為“信息摘要”
    3. CA機構對“信息摘要”進行再次加密,變成數字簽名
    4. 數字證書=申請信息+服務器公鑰+數字簽名

    5.加密步驟

    (1)安裝ssl軟件包(openssl和open-devel)

    [root@localhost ~]# dnf -y install openssl openssl-devel
    

    (2)基于ssh生成密鑰對(對稱加密)

    #密鑰對vsftpd.key
    [root@localhost vsftpd]# openssl genrsa -out vsftpd.key 2048
    [root@localhost vsftpd]# ls
    ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh  vsftpd.key

    (3)拿公鑰、公司信息做數字證書申請

    [root@localhost vsftpd]# openssl genrsa -out vsftpd.key 2048
    [root@localhost vsftpd]# lsftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh  vsftpd.key
    [root@localhost vsftpd]# openssl req -new -key vsftpd.key -out vsftpd.csr
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [XX]:cn
    State or Province Name (full name) []:shanxi
    Locality Name (eg, city) [Default City]:lvliang
    Organization Name (eg, company) [Default Company Ltd]:tuanyuan
    Organizational Unit Name (eg, section) []:qingnian
    Common Name (eg, your name or your server's hostname) []:qingnian
    Email Address []:320966772@qq.comPlease enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:
    An optional company name []:[root@localhost vsftpd]# ls
    ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh  vsftpd.csr  vsftpd.key
    

    (4)簽發證書

    [root@localhost vsftpd]# openssl x509 -req -days 365 -sha256 -in vsftpd.csr -signkey vsftpd.key -out vsftpd.crt
    Certificate request self-signature ok
    subject=C = cn, ST = shanxi, L = lvliang, O = gongqing, OU = qingnian, CN = xxhf
    [root@localhost vsftpd]# ls
    ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh  vsftpd.crt  vsftpd.csr  vsftpd.key
    

    補充:Linux證書擴展名:.crt或.pem(但以pem為擴展名的不一定是證書)

    (5)將ssl相關配置寫入配置文件(添加加密設置)

    vim /etc/vsftpd/vsftpd.conf

    #啟用ssl認證
    ssl_enable=YES
    #開啟tlsv1、sslv2、sslv3都支持,轉換成使用tls1.2
    ssl_tlsv1=YES
    ssl_sslv2=YES
    ssl_sslv3=YES
    #允許匿名用戶{虛擬用戶}
    allow_anon_ssl=YES
    #匿名登錄和傳輸時強制使用ssl
    force_anon_logins_ssl=YES
    force_anon_data_ssl=YES
    #本地登錄和傳輸時強制使用ssl
    force_local_logins_ssl=YES
    force_local_data_ssl=YES
    #rsa格式的證書
    rsa_cert_file=/etc/vsftpd/vsftpd.crt
    #rsa格式的公鑰
    rsa_private_key_file=/etc/vsftpd/vsftpd.key
    

    (6)重啟服務

    [root@localhost vsftpd]# systemctl start vsftpd
    

    6.客戶端驗證

    注:要找支持ftp、ftps協議的客戶端

    服務端監聽:tcpdump -nA -i ens160 port 21 > ftp2.txt

    客戶端連接:第三方工具filezilla或lftp服務,均可以看到用戶名和密碼已經被加密

    安裝lftp

    [root@localhost ~]# dnf -y install lftp
    
    [root@localhost ~]# lftp -u zhaoliu -e "set ssl:verify-certificate no" 192.168.77.77
    Password: 
    lftp zhaoliu@192.168.77.77:~> ls                  
    -rw-r--r--    1 0        0               0 Sep 08 13:49 1.txt
    -rw-r--r--    1 0        0               0 Sep 08 13:49 2.txt
    -rw-r--r--    1 0        0               0 Sep 08 13:49 4.txt
    -rw-r--r--    1 0        0               0 Sep 08 13:49 5.txt
    drwxr-xr-x    2 1004     1004            6 Sep 08 13:50 bik.d
    -rw-r--r--    1 1004     1004          389 Sep 08 13:50 cat.sh
    

    查看服務端文件,可以看到用戶名和密碼均已被加密

    補充說明:

    • lftp——命令跟shell都一樣;支持fpts協議;vsftpd重啟,客戶端連接不斷
    • 虛擬機和真實機時間不同步,可能會導致證書不生效,需要同步時間,可在虛擬機——設置——選項——時間同步,中設置

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

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

    相關文章

    Nginx運維之路(Docker多段構建新版本并增加第三方模塊)

    喜大普奔,前兩天發現Nginx竟然自帶支持了ACME功能,讓我很想測試一下,但是發現手頭沒有資源讓我測試,忽然我想到可以用docker來構建nginx然后測試ACME功能,在這個過程中發現原來官方Nginx鏡像并沒有集成ACME插件&#x…

    DrissionPage 優化天貓店鋪商品爬蟲:現代化網頁抓取技術詳解

    概述在網絡數據采集領域,傳統的爬蟲方法通常面臨反爬機制、動態內容加載和效率低下等挑戰。本文將以天貓店鋪商品爬蟲為例,詳細介紹如何從傳統的 Requests 庫遷移到更現代化的 DrissionPage 解決方案,實現更高效、穩定的數據采集。----------…

    pytest并發測試,資源問題導致用例失敗解決辦法

    遇見的問題: 測試用例使用thrift資源和redis資源,單獨運行case沒有問題,但是使用并發pytest-xdist(-n 10 和 --distloadscope)運行失敗原因: 測試用例間存在共享資源競爭(如 Redis、Thrift 連接…

    C 盤又滿了?6 個「零風險清理法」+5 款神器,讓電腦瞬間多出 100GB 空間

    你是否遇到過這樣的場景:正在趕工寫報告,突然彈出「C 盤存儲空間不足」的警告;想安裝新軟件,卻因為 C 盤爆紅而反復失敗;甚至電腦越來越卡,開機要等 5 分鐘,打開文件夾都要轉圈…… 作為系統盤…

    Android 項目:畫圖白板APP開發(四)——筆鋒(單 Path)

    上一章講解了如何通過多個 Path 疊加形成筆鋒效果,還有另外的方式實現筆鋒,并且只需要一條Path就可以了。在講解具體方案之前,我們需要了解一個有意思的工具 PathMeasure ,這是一個非常強大且實用的工具,常用于高級動畫…

    從C++開始的編程生活(7)——取地址運算符重載、類型轉換、static成員和友元

    前言 本系列文章承接C語言的學習,需要有C語言的基礎才能學會哦~ 第7篇主要講的是有關于C的取地址運算符重載、類型轉換、static成員和友元。 C才起步,都很簡單 目錄 前言 取地址運算符重載 const成員函數 基本語法 特點 取地址運算符重載 類型轉換…

    SQL 入門指南:排序與分頁查詢(ORDER BY 多字段排序、LIMIT 分頁實戰)

    在 SQL 查詢中,我們常需要 “按報名時間先后看活動名單”“只看第 2 頁的活動報名數據”—— 這些需求靠基礎查詢無法實現,而ORDER BY(排序) 和LIMIT(分頁) 就是解決這類問題的核心工具。今天我們用 “校園…

    jodconverter將word轉pdf底層libreoffice的問題

    近期項目中使用了word轉pdf的功能&#xff0c;其中借助了遠程服務的jodconverter來處理。 <dependency><groupId>org.jodconverter</groupId><artifactId>jodconverter-remote</artifactId><version>4.4.2</version> </dependen…

    【為YOLOv11Seg添加MFC界面】詳細指南

    要將現有的YOLOv11Seg代碼集成到MFC界面中,我們需要創建一個MFC應用程序框架,并將現有的檢測邏輯封裝到其中。以下是詳細步驟: 1. 創建MFC應用程序框架 1.1 使用Visual Studio創建MFC項目 打開Visual Studio,選擇"創建新項目" 選擇"MFC應用程序"模板…

    機器學習03——線性模型(多元線性回歸、對數線性回歸、二分類、線性判別分析)

    上一章&#xff1a;機器學習02——模型評估與選擇 下一章&#xff1a;機器學習04——決策樹 機器學習實戰項目&#xff1a;【從 0 到 1 落地】機器學習實操項目目錄&#xff1a;覆蓋入門到進階&#xff0c;大學生就業 / 競賽必備 文章目錄一、線性模型的基本形式&#xff08;一…

    qt QLineSeries詳解

    1、概述QLineSeries是Qt Charts模塊中的一個重要類&#xff0c;用于繪制折線圖。它是QXYSeries的實現類&#xff0c;將信息顯示為由直線連接的一系列數據點。該類為QAbstractSeries的子類&#xff0c;因此可以通過該類來訪問QAbstractSeries的所有公共方法和屬性。2、重要方法c…

    你再也找不到更詳細的3DGS教程了 —— 一萬九千字長文解析3DGS

    參考: https://www.bilibili.com/video/BV1MF4m1V7e3/ https://blog.csdn.net/2401_86810419/article/details/148811121 https://www.bilibili.com/video/BV1cz421872F?t=233.9 https://wuli.wiki/online/SphHar.html https://zhuanlan.zhihu.com/p/467466131 特別指出…

    Python,遺傳算法與神經網絡架構搜索:基于DEAP的自動模型設計

    引言&#xff1a;當進化論遇見深度學習——自動化的黎明在深度學習的蠻荒時代&#xff0c;我們是“手工匠人”。我們依靠直覺、前輩的經驗&#xff08;ResNet 為什么是152層而不是153層&#xff1f;&#xff09;、大量的試錯以及那么一點點玄學&#xff0c;在架構的黑暗森林中摸…

    Vue框架技術詳解——項目驅動概念理解【前端】【Vue】

    Vue3框架 是前端渲染框架瀏覽器向服務器第一次發送請求&#xff0c;就會將所有頁面的樣式全部返回到瀏覽器vue中會將所有js文件最后打包成一個js文件&#xff0c;當前訪問其中一個頁面時&#xff0c;其他頁面的樣式也已經返回到瀏覽器中了&#xff0c;下次切換頁面時&#xff…

    HTML 網頁靜態托管 API 接口文檔(可集成到智能體Agent)

    HTML 網頁靜態托管 API 接口文檔&#xff08;可集成到智能體Agent&#xff09; 接口概述 本接口用于將HTML代碼轉換為可訪問的網頁&#xff0c;支持通過API密鑰進行身份驗證。 API 密鑰申請地址&#xff1a; https://www.cuobiezi.net/user/api_keys/apply API接口信息 接…

    springboot vue sse消息推送,封裝系統公共消息推送前后端方法

    概述 1、封裝springboot全局的消息推送接口&#xff1b; 注&#xff1a;1&#xff09;由于原生HTML5 EventSource 不支持添加header&#xff0c;所以要把連接創建接口加入身份驗證白名單&#xff0c;并在接口內添加自己校驗token2&#xff09;后臺需定時心跳&#xff0c;保證鏈…

    LeetCode 每日一題 2025/9/1-2025/9/7

    記錄了初步解題思路 以及本地實現代碼&#xff1b;并不一定為最優 也希望大家能一起探討 一起進步 目錄9/1 1792. 最大平均通過率9/2 3025. 人員站位的方案數 I9/3 3027. 人員站位的方案數 II9/4 3516. 找到最近的人9/5 2749. 得到整數零需要執行的最少操作數9/6 3495. 使數組元…

    小迪安全v2023學習筆記(八十講)—— 中間件安全WPS分析WeblogicJenkinsJettyCVE

    文章目錄前記服務攻防——第八十天中間件安全&HW2023-WPS分析&Weblogic&Jetty&Jenkins&CVE應用WPS - HW2023-RCE&復現&上線CS介紹漏洞復現中間件 - Weblogic-CVE&反序列化&RCE介紹利用中間件 - Jenkins-CVE&RCE執行介紹漏洞復現CVE-20…

    各webshell管理工具流量分析

    哥斯拉哥斯拉是一個基于流量、HTTP全加密的webshell管理工具 特點 1.內置了3種Payload以及6種加密器&#xff0c;6種支持腳本后綴&#xff0c;20個內置插件 2.基于java&#xff0c;可以跨平臺使用 3.可以自己生成webshell&#xff0c;根據管理來生成一些payload&#xff0c;然后…

    pytest(1):fixture從入門到精通

    pytest&#xff08;1&#xff09;&#xff1a;fixture從入門到精通前言1. Fixture 是什么&#xff1f;為什么我們需要它&#xff1f;2. 快速上手&#xff1a;第一個 Fixture 與基本用法3. 作用域 (Scope)&#xff1a;控制 Fixture 的生命周期4. 資源管理&#xff1a;Setup/Tear…