解鎖Nginx路由器匹配規則

引言

Nginx 無疑是一款備受矚目的明星產品。它以其高性能、高可靠性以及出色的并發處理能力,在眾多 Web 服務器和反向代理服務器中脫穎而出 ,廣泛應用于各類網站和應用程序中。據統計,超過 30% 的網站都在使用 Nginx 作為其 Web 服務器,在全球前 1000 個網站中,更是有 47.1% 的網站選擇了 Nginx。從早期的俄羅斯開發者 Igor Sysoev 為解決 C10K 問題而開發,到如今成為互聯網基礎設施中不可或缺的一部分,Nginx 的發展歷程見證了它的強大實力。

Nginx 之所以如此受歡迎,是因為它具備諸多優勢。在性能方面,采用異步非阻塞的事件驅動模型,能夠高效處理大量并發連接,這使得它特別適合處理高流量網站,輕松應對高并發場景,即使在資源受限的環境中也能表現出色。同時,Nginx 占用資源少,啟動迅速,體現出了輕量級的特點。從功能上看,它支持模塊化設計,可以通過插件擴展功能,滿足不同需求,無論是作為反向代理、負載均衡系統,還是充當 SSL/TLS 終結器、Web 加速器,又或是內容緩存服務器,Nginx 都能勝任。而且,Nginx 配置簡單靈活,能適應復雜的網絡環境,再加上強大的社區支持,有大量的教程和擴展可供學習和應用,這些都讓它成為構建現代、高效、可靠 Web 架構的關鍵組件。

而在 Nginx 的眾多功能中,路由器匹配規則扮演著舉足輕重的角色。它就像是一位精準的導航員,負責將客戶端的請求準確無誤地路由到對應的服務器資源上。通過合理配置路由器匹配規則,我們能夠實現諸如反向代理、負載均衡、靜態資源服務等一系列重要功能。在實際的 Web 開發項目中,正確理解和運用 Nginx 路由器匹配規則,不僅可以提高應用程序的性能和響應速度,還能增強系統的穩定性和可擴展性。例如,在一個大型電商網站中,通過巧妙配置 Nginx 路由器匹配規則,可以將靜態資源請求快速導向專門的靜態文件服務器,減輕應用服務器的負載;同時,將動態請求合理分配到不同的后端服務器上,實現負載均衡,確保網站在高并發情況下依然能夠穩定運行,為用戶提供流暢的購物體驗。所以,深入學習 Nginx 路由器匹配規則,對于每一位 Web 開發者來說,都是至關重要的。接下來,就讓我們一起揭開 Nginx 路由器匹配規則的神秘面紗。

Nginx 路由器匹配規則基礎

(一)規則分類與簡介

Nginx 路由器匹配規則豐富多樣,主要可分為以下六種類型,它們在請求處理過程中各自發揮著獨特作用,并且具有明確的優先級順序 :

  • 精確匹配(=):使用 “=” 修飾符,這是匹配規則中優先級最高的。當請求的 URI 與指定的字符串完全相等時,就會觸發精確匹配,一旦匹配成功,Nginx 便會立即停止搜索其他匹配項,直接使用該規則處理請求 。例如,location = /index.html,只有當請求的 URL 精確為/index.html時才會匹配此規則。在一個企業官網項目中,對于首頁index.html的頻繁請求,通過精確匹配可以快速將請求定位到對應的資源,大大提高響應速度。

  • 精確前綴匹配(^~):優先級僅次于精確匹配。當請求的 URI 以指定的字符串為開頭時,會觸發精確前綴匹配 ,匹配成功后,Nginx 會停止繼續搜索其他匹配項,轉而采用該規則處理請求。比如location ^~ /static/,只要請求的 URL 是以/static/開頭,就會匹配此規則,常用于處理靜態資源請求。像電商網站中的靜態圖片、樣式文件等資源,通過精確前綴匹配可以高效地將它們分配到專門的靜態資源服務器上進行處理。

  • 區分大小寫的正則匹配(~):利用 “~” 修飾符實現區分大小寫的正則表達式匹配。在精確匹配和精確前綴匹配失敗后,Nginx 會嘗試進行正則匹配。這種匹配方式能夠根據正則表達式的模式,對請求的 URI 進行靈活匹配,但要注意正則表達式的語法和性能消耗問題。例如location ~ .php$,可以匹配所有以.php結尾的請求,在處理 PHP 動態頁面請求時經常會用到。

  • 不區分大小寫的正則匹配(~*):與區分大小寫的正則匹配類似,不過使用 “~” 修飾符,它在匹配時不區分 URI 的大小寫。例如location ~ .(jpg|jpeg|png|gif)$,可以匹配所有以.jpg、.jpeg、.png、.gif結尾的圖片請求,無論是大寫還是小寫的文件擴展名都能匹配 ,方便處理圖片資源的請求,在一些對圖片資源訪問頻繁的網站,如圖片分享網站中應用廣泛。

  • 普通前綴匹配(/uri):這種匹配方式沒有特殊的修飾符,直接在location后跟上需要匹配的 URI。它的優先級低于正則匹配,當請求的 URI 以指定的字符串為開頭時,會匹配該規則,但匹配成功后還會繼續搜索其他更精確的匹配規則 。比如location /docs/,會匹配所有以/docs/開頭的請求。在一個文檔管理系統中,通過普通前綴匹配可以將所有與文檔相關的請求定位到對應的處理邏輯。

  • 通用匹配(/):使用 “/” 表示,它可以匹配所有請求,優先級最低。當其他所有匹配規則均失效時,請求就會被路由給通用匹配規則處理;如果沒有配置通用匹配,并且其他匹配規則都不匹配,Nginx 會返回 404 錯誤。它就像是一個兜底的規則,確保所有請求都能得到處理,在大多數 Nginx 配置中,通用匹配規則是必不可少的,保證了系統的完整性和穩定性。

(二)規則詳解

  1. 精確匹配(=):精確匹配在 Nginx 路由匹配中具有最高優先級。以location = /test為例,只有當客戶端請求的 URL 路徑精確為/test時,才會命中該規則。在一個論壇系統中,如果有一個特定的頁面,如用戶協議頁面/user_agreement,使用精確匹配location = /user_agreement,可以確保只有對這個頁面的精確請求才能被正確處理,避免其他相似路徑的誤匹配。一旦精確匹配成功,Nginx 會立即停止搜索其他匹配項,直接執行該location塊中的配置,這使得處理效率大大提高,因為不需要再進行其他不必要的匹配檢查。

  2. 精確前綴匹配(^~):精確前綴匹配的優先級僅次于精確匹配。例如location ^~ /static/,只要請求的 URL 路徑以/static/開頭,就會匹配此規則。在一個大型網站中,靜態資源(如 CSS、JavaScript、圖片等)通常會集中存放在/static/目錄下,通過精確前綴匹配,Nginx 可以快速將這些靜態資源請求轉發到專門的靜態資源服務器上,提高處理速度。當匹配成功后,Nginx 會停止繼續搜索其他匹配項,包括正則匹配,這對于提高靜態資源的訪問效率非常重要,避免了不必要的正則匹配開銷。

  3. 區分大小寫的正則匹配(~):在精確匹配和精確前綴匹配失敗后,Nginx 會嘗試進行正則匹配。區分大小寫的正則匹配使用 “~” 修飾符。例如location ~ .html$,它可以匹配所有以.html結尾的請求,并且區分大小寫。在一個博客系統中,文章頁面通常以.html結尾,通過這樣的正則匹配,可以將文章頁面的請求準確地路由到對應的處理邏輯。正則匹配之間沒有優先級之分,而是按照在配置文件中出現的順序進行匹配,一旦匹配上一個,就會停止向下繼續搜索。所以在配置正則匹配時,要注意順序,將更常用、更精確的規則放在前面,以提高匹配效率。

  4. 不區分大小寫的正則匹配(~*):不區分大小寫的正則匹配使用 “~” 修飾符,在匹配時不考慮 URI 的大小寫。比如location ~ .(js|css)$,可以匹配所有以.js或.css結尾的請求,無論文件擴展名是大寫還是小寫。在一個前端項目中,JavaScript 和 CSS 文件的引用可能存在大小寫不一致的情況,使用不區分大小寫的正則匹配可以確保這些資源請求都能被正確處理。同樣,正則匹配按照配置文件中的順序進行匹配,一旦找到匹配的規則,就會停止后續的匹配過程。

  5. 普通前綴匹配(/uri):普通前綴匹配直接在location后寫需要匹配的 URI,如location /images/,會匹配所有以/images/開頭的請求。在一個圖片展示網站中,所有圖片資源都存放在/images/目錄下,通過普通前綴匹配可以將圖片請求轉發到相應的圖片處理模塊。它的優先級低于正則匹配,當匹配成功后,還會繼續搜索其他更精確的匹配規則,直到找到最合適的處理方式。如果有多個普通前綴匹配規則都能匹配請求,Nginx 會選擇匹配字符串最長的那個規則。

  6. 通用匹配(/):通用匹配使用 “/” 表示,它能匹配所有請求,是 Nginx 路由匹配的最后一道防線。當其他所有匹配規則都無法匹配請求時,就會采用通用匹配規則。例如,在一個綜合性網站中,可能會有一些未知的請求路徑,通過通用匹配,可以將這些請求轉發到默認的處理邏輯,避免返回 404 錯誤,保證用戶體驗。通常在 Nginx 配置文件的最后會設置一個通用匹配規則,如location / { proxy_pass http://backend_server; },將請求轉發到后端服務器進行處理 。

實例分析

(一)完整配置示例

以下是一個包含多種匹配規則的 Nginx 配置文件示例,通過對這個示例的分析,我們能更深入地理解不同匹配規則在實際應用中的作用以及它們之間的相互關系 :

server {listen       80;server_name  example.com;# 精確匹配location = / {root   /usr/share/nginx/html/home;index  index.html;}# 精確前綴匹配location ^~ /static/ {root   /usr/share/nginx/html;expires 30d;}# 區分大小寫的正則匹配location ~ \.php$ {fastcgi_pass   127.0.0.1:9000;fastcgi_index  index.php;fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;include        fastcgi_params;}# 不區分大小寫的正則匹配location ~* \.(jpg|jpeg|png|gif)$ {root   /usr/share/nginx/html/images;expires 7d;}# 普通前綴匹配location /docs/ {root   /usr/share/nginx/html;index  docs_index.html;}# 通用匹配location / {proxy_pass   http://backend_server;}
}

在這個配置文件中:

  • 精確匹配(location = /:當用戶訪問網站根目錄/時,會被精確匹配到這個規則。Nginx 會將請求的文件根目錄設置為/usr/share/nginx/html/home,并返回index.html文件,這個規則優先級最高,一旦匹配成功,就不會再進行其他匹配。比如在一個企業官網項目中,對于首頁的訪問,通過精確匹配可以快速返回首頁內容,提高用戶訪問速度。

  • 精確前綴匹配(location ^~ /static/:所有以/static/開頭的請求,都會被這個規則匹配。Nginx 會將文件根目錄設置為/usr/share/nginx/html,并且設置這些靜態資源的緩存過期時間為 30 天。在一個電商網站中,大量的靜態資源,如圖片、CSS、JavaScript 文件等,通過精確前綴匹配可以高效地將它們分配到專門的靜態資源服務器上進行處理,提高網站的加載速度。

  • 區分大小寫的正則匹配(location ~ .php$:用于匹配所有以.php結尾的請求。當請求的 URL 以.php結尾時,Nginx 會將請求轉發到本地的 FastCGI 服務器(127.0.0.1:9000)進行 PHP 腳本的處理。在一個基于 PHP 開發的論壇系統中,所有動態頁面的請求,如用戶發表帖子、查看帖子等操作,都是以.php結尾的,通過這個正則匹配可以將這些請求準確地路由到對應的處理邏輯。

  • 不區分大小寫的正則匹配(location ~* .(jpg|jpeg|png|gif)$:可以匹配所有以.jpg、.jpeg、.png、.gif結尾的圖片請求,無論文件擴展名是大寫還是小寫。Nginx 會將文件根目錄設置為/usr/share/nginx/html/images,并設置這些圖片資源的緩存過期時間為 7 天。在一個圖片分享網站中,用戶上傳的圖片格式可能多種多樣,且文件名的大小寫也不一致,通過不區分大小寫的正則匹配可以確保所有圖片請求都能被正確處理。

  • 普通前綴匹配(location /docs/:所有以/docs/開頭的請求會被匹配到這個規則。Nginx 會將文件根目錄設置為/usr/share/nginx/html,并返回docs_index.html文件。在一個文檔管理系統中,所有與文檔相關的請求,如查看文檔列表、閱讀文檔內容等,都是以/docs/開頭的,通過普通前綴匹配可以將這些請求定位到對應的處理邏輯。

  • 通用匹配(location /:作為最后的兜底規則,當其他所有匹配規則都無法匹配請求時,會采用這個規則。Nginx 會將請求轉發到后端服務器http://backend_server進行處理。在一個綜合性網站中,可能會有一些未知的請求路徑,通過通用匹配,可以將這些請求轉發到默認的處理邏輯,避免返回 404 錯誤,保證用戶體驗。

(二)不同請求的匹配結果分析

針對上述示例配置,下面列舉一些不同的請求 URI,并分析它們分別匹配到的規則,讓讀者更直觀地理解匹配過程:

  • 請求**/**:精確匹配規則location = /生效,Nginx 會從/usr/share/nginx/html/home目錄下返回index.html文件。因為精確匹配的優先級最高,一旦匹配成功,就不會再檢查其他規則。

  • 請求**/static/css/style.css**:精確前綴匹配規則location ^~ /static/匹配成功。Nginx 會從/usr/share/nginx/html/static目錄下查找css/style.css文件,并返回給客戶端,同時設置緩存過期時間為 30 天。由于精確前綴匹配成功后,會停止繼續搜索其他匹配項,所以不會再去檢查正則匹配和普通前綴匹配。

  • 請求**/article.php**:區分大小寫的正則匹配規則location ~ .php 生效。 N g i n x 會將該請求轉發到 F a s t C G I 服務器( 127.0.0.1 : 9000 )進行 P H P 腳本的處理。在精確匹配和精確前綴匹配失敗后, N g i n x 會嘗試進行正則匹配,按照正則表達式的模式,這個請求會被 l o c a t i o n p ˙ h p 生效。Nginx 會將該請求轉發到 FastCGI 服務器(127.0.0.1:9000)進行 PHP 腳本的處理。在精確匹配和精確前綴匹配失敗后,Nginx 會嘗試進行正則匹配,按照正則表達式的模式,這個請求會被location ~ \.php 生效。Nginx會將該請求轉發到FastCGI服務器(127.0.0.1:9000)進行PHP腳本的處理。在精確匹配和精確前綴匹配失敗后,Nginx會嘗試進行正則匹配,按照正則表達式的模式,這個請求會被location?p˙?hp匹配到。

  • 請求**/image.PNG**:不區分大小寫的正則匹配規則location ~* .(jpg|jpeg|png|gif)$匹配成功。Nginx 會從/usr/share/nginx/html/images目錄下查找image.PNG文件,并返回給客戶端,同時設置緩存過期時間為 7 天。因為這個正則匹配不區分大小寫,所以能夠匹配到以.PNG結尾的請求。

  • 請求**/docs/about.html**:普通前綴匹配規則location /docs/匹配成功。Nginx 會從/usr/share/nginx/html/docs目錄下查找about.html文件,并返回給客戶端。普通前綴匹配的優先級低于正則匹配,當匹配成功后,還會繼續搜索其他更精確的匹配規則,但在這個例子中,沒有更精確的匹配規則了,所以就采用這個規則處理請求。

  • 請求**/unknown_path**:其他所有匹配規則都無法匹配,通用匹配規則location /生效。Nginx 會將請求轉發到后端服務器http://backend_server進行處理。通用匹配規則就像是一個兜底的規則,確保所有請求都能得到處理,避免返回 404 錯誤。

常見問題與解決方案

(一)匹配沖突問題

在實際的 Nginx 配置過程中,匹配沖突是較為常見的問題,它會導致請求無法按照預期的規則進行路由,從而影響系統的正常運行。其中,正則匹配與普通前綴匹配沖突是比較典型的情況。

例如,當配置了location /static/ { proxy_pass http://static_server; }(普通前綴匹配)和location ~ /static/..js$ { proxy_pass http://js_server; }(正則匹配)時,如果請求的 URI 為/static/jquery.js,就會出現匹配沖突。這是因為普通前綴匹配規則/static/會首先匹配到該請求,按照規則,它會繼續搜索其他更精確的匹配規則,此時正則匹配規則/static/..js$也能匹配到該請求。由于這兩種匹配規則都對同一請求有效,就產生了沖突,Nginx 無法明確應該使用哪條規則來處理請求,可能會導致請求被錯誤路由。

再比如,在一個新聞網站的 Nginx 配置中,配置了location /news/ { proxy_pass http://news_backend; }(普通前綴匹配)用于處理所有新聞相關的請求,同時又配置了location ~ /news/\d+ { proxy_pass http://news_detail_backend; }(正則匹配)用于處理新聞詳情頁面的請求,這里\d+表示匹配一個或多個數字。當請求的 URI 為/news/123時,普通前綴匹配規則/news/和正則匹配規則/news/\d+都能匹配到該請求,從而產生沖突。如果不能正確處理這種沖突,可能會導致用戶無法正常訪問新聞詳情頁面,或者新聞列表頁面的請求被錯誤地轉發到新聞詳情頁面的后端服務器。

(二)解決方法

針對匹配沖突問題,可以采用以下幾種方法來解決:

  1. 調整規則順序:根據 Nginx 匹配規則的優先級和匹配順序,合理調整規則在配置文件中的順序。將更精確、更具體的規則放在前面,確保先匹配到最符合需求的規則。在上面新聞網站的例子中,將location ~ /news/\d+ { proxy_pass http://news_detail_backend; }(正則匹配)放在location /news/ { proxy_pass http://news_backend; }(普通前綴匹配)之前,這樣當請求/news/123時,會先匹配到正則匹配規則,將請求正確地轉發到新聞詳情頁面的后端服務器,避免了沖突。

  2. 合理使用修飾符:充分利用精確匹配(=)和精確前綴匹配(^~)修飾符,使匹配規則更加明確。如果某個請求需要絕對精確匹配,不希望被其他規則干擾,就使用精確匹配修飾符 “=”。比如,對于網站的根目錄請求/,如果希望它被精確匹配到特定的處理邏輯,可以配置location = / { proxy_pass http://root_server; }。而精確前綴匹配修飾符 “^~” 可以在匹配到指定前綴后,停止繼續搜索其他匹配項,包括正則匹配,從而避免沖突。在處理靜態資源請求時,配置location ^~ /static/ { proxy_pass http://static_server; },可以確保所有以/static/開頭的請求都被準確地轉發到靜態資源服務器,不會再被其他正則匹配規則干擾。

  3. 使用命名 location:通過使用命名 location,將不同功能的請求處理邏輯分開,避免沖突。例如,可以配置location / { try_files $uri $uri/ @fallback; }和location @fallback { proxy_pass http://fallback_server; }。這里,@fallback是一個命名 location,當普通的請求匹配規則都無法匹配請求時,會跳轉到@fallback這個命名 location 進行處理,將請求轉發到http://fallback_server,這樣可以將特殊的處理邏輯與常規的匹配規則分開,減少沖突的可能性。

通過以上方法,可以有效地解決 Nginx 路由器匹配規則中的沖突問題,確保請求能夠按照預期的方式進行路由,提高系統的穩定性和可靠性。

實際應用場景

(一)反向代理

在反向代理場景中,Nginx 的路由器匹配規則發揮著關鍵作用。當客戶端發起請求時,Nginx 會根據配置的匹配規則,將請求準確無誤地轉發到對應的后端服務器。

以一個大型電商平臺為例,假設該平臺有多個后端服務器,分別負責處理不同類型的業務請求。其中,服務器 A 專門處理商品展示相關的請求,服務器 B 負責用戶訂單處理,服務器 C 處理支付相關業務。通過 Nginx 的反向代理配置,當用戶訪問http://www.example.com/products/路徑下的頁面時,Nginx 會根據配置的location /products/普通前綴匹配規則,將請求轉發到服務器 A;當用戶進行下單操作,請求http://www.example.com/orders/路徑時,Nginx 依據location /orders/規則,將請求轉發到服務器 B;而當涉及支付請求,訪問http://www.example.com/payment/路徑時,Nginx 通過location /payment/規則,將請求轉發給服務器 C 。這樣,Nginx 就像一個智能的交通樞紐,將不同的請求引導到合適的后端服務器,實現了業務的分離和高效處理。

在這個過程中,精確匹配和精確前綴匹配規則可以確保一些特定的、重要的請求被快速準確地路由。例如,對于電商平臺的首頁http://www.example.com/,可以使用精確匹配location = /,將請求直接轉發到負責首頁展示的服務器,提高首頁的加載速度和響應效率。而對于一些靜態資源,如圖片、CSS、JavaScript 文件等,存放在/static/目錄下,通過精確前綴匹配location ^~ /static/,可以將這些靜態資源請求快速轉發到專門的靜態資源服務器,減輕后端業務服務器的負載,同時利用緩存機制提高靜態資源的訪問速度 。

通過 Nginx 的反向代理和匹配規則,不僅提高了網站的性能,將負載合理分配到不同的后端服務器,避免了單個服務器的過載;還增強了網站的安全性,隱藏了后端服務器的真實 IP 地址,降低了被攻擊的風險,為用戶提供了更加穩定、高效的服務體驗。

(二)靜態資源處理

在 Web 應用中,靜態資源(如圖片、CSS、JS 等文件)的加載速度對用戶體驗有著重要影響。Nginx 的路由器匹配規則為優化靜態資源的訪問提供了有效手段。

以一個內容豐富的資訊網站為例,每天有大量用戶訪問,網站包含海量的圖片、樣式文件和腳本文件。通過 Nginx 的匹配規則,可以將這些靜態資源的請求進行高效處理。例如,對于所有的圖片請求,使用不區分大小寫的正則匹配規則location ~* .(jpg|jpeg|png|gif)$,將請求匹配到對應的圖片資源目錄。當用戶瀏覽一篇新聞文章,請求文章中的圖片時,Nginx 根據這個規則,快速定位到圖片所在的目錄,如/usr/share/nginx/html/images,并將圖片返回給用戶。同時,可以設置圖片資源的緩存過期時間,如expires 7d,這樣在 7 天內,用戶再次訪問相同的圖片時,直接從瀏覽器緩存中獲取,減少了對服務器的請求,大大提高了加載速度。

對于 CSS 和 JS 文件,同樣可以利用匹配規則進行優化。使用location ~ .(css|js)$區分大小寫的正則匹配規則,將 CSS 和 JS 文件的請求匹配到相應的目錄。在網站加載過程中,當瀏覽器請求樣式文件和腳本文件時,Nginx 根據規則快速響應,確保這些文件能夠及時加載,使頁面能夠正確渲染和實現各種交互功能。為了進一步提高性能,還可以啟用 Nginx 的 gzip 壓縮功能,對傳輸的靜態資源進行壓縮,減少數據傳輸量,加快加載速度 。

通過合理運用 Nginx 的路由器匹配規則,對靜態資源進行專門的處理和優化,不僅可以提高網站的加載速度,提升用戶體驗,還能減輕后端服務器的負擔,提高整個系統的運行效率,使網站在高并發的情況下也能穩定運行 。

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

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

相關文章

傳統策略梯度方法的弊端與PPO的改進:穩定性與樣本效率的提升

為什么傳統策略梯度方法(如REINFORCE算法)在訓練過程中存在不穩定性和樣本效率低下的問題 1. 傳統策略梯度方法的基本公式 傳統策略梯度方法的目標是最大化累積獎勵的期望值。具體來說,優化目標可以表示為: max ? θ J ( θ )…

Qwt入門

Qwt(Qt Widgets for Technical Applications)是一個用于科學、工程和技術應用的 Qt 控件庫,提供曲線圖、儀表盤、刻度尺等專業可視化組件。 1. 安裝與配置 1.1 安裝方式 源碼編譯(推薦): git clone https://github.com/qwt/qwt.git cd qwt qmake qwt.pro # 生成 Makef…

軟考《信息系統運行管理員》- 6.1 信息系統安全概述

信息系統安全的概念 信息系統安全是指保障計算機及其相關設備、設施(含網絡)的安全,運行環境的安全, 信息的安全,實現信息系統的正常運行。 信息系統安全包括實體安全、運行安全、信息安全和 人員安全等幾個部分。 影響信息系統安全的因素…

Canvas實現旋轉太極八卦圖

Canvas實現旋轉太極八卦圖 項目簡介 這是一個使用HTML5 Canvas技術實現的動態太極八卦圖,包含了旋轉動畫和鼠標交互功能。項目展示了中國傳統文化元素與現代Web技術的結合。 主要特點 動態旋轉的太極圖八卦符號的完整展示鼠標懸停暫停動畫流暢的動畫效果 技術實…

機器學習、深度學習和神經網絡

機器學習、深度學習和神經網絡 術語及相關概念 在深入了解人工智能(AI)的工作原理以及它的各種應用之前,讓我們先區分一下與AI密切相關的一些術語和概念:人工智能、機器學習、深度學習和神經網絡。這些術語有時會被交替使用&#…

打造高性能中文RAG系統:多輪對話與語義檢索的完美結合

目錄 1、引言 2、RAG系統的核心架構 3、對話理解:超越單輪問答 3.1、指代消解技術 3.2、話題跟蹤與記憶 4、混合檢索策略:兼顧精確與廣泛 4.1、向量檢索 關鍵詞檢索 4.2、重排序機制 5、性能優化:應對大規模文檔 5.1、向量量化技術…

人工智能助力數字化轉型:生成式人工智能(GAI)認證開啟新篇章

在數字化浪潮席卷全球的今天,企業正面臨著前所未有的轉型壓力與機遇。數字化轉型,這一曾經被視為“選擇題”的戰略議題,如今已演變為關乎企業生存與發展的“必答題”。在這場深刻的變革中,人工智能(AI)作為…

Windows 圖形顯示驅動開發-WDDM 2.4功能-GPU 半虛擬化(十二)

DxgkDdiQueryAdapterInfo 更新 DXGKARG_QUERYADAPTERINFO 結構已更新,以包括以下字段以支持半虛擬化: 添加了 Flags 成員,允許 Dxgkrnl 指示以下內容: 它將 VirtualMachineData 設置為指示調用來自 VM。它將 SecureVirtualMach…

iOS審核被拒:Missing privacy manifest 第三方庫添加隱私聲明文件

問題: iOS提交APP審核被拒,蘋果開發者網頁顯示二進制錯誤,收到的郵件顯示的詳細信息如下圖: 分析: 從上面信息能看出第三方SDK庫必須要包含一個隱私文件,去第三方庫更新版本。 幾經查詢資料得知,蘋果在…

馬達加斯加企鵝字幕

Antarctica 南極洲 An inhospitable wasteland 一個荒涼的不毛之地 But even here 但即使在這里 on the Earth’s frozen bottom 地球另一端的冰天雪地里 we find life 也有生命存在 And not just any life 不是別的什么生物 Penguins 而是企鵝 Joyous, frolicking 快樂的 頑皮…

愛因斯坦求和 torch

目錄 向量點積 矩陣乘法 矩陣轉置 向量轉換相機坐標系 在 Python 的科學計算庫(如 NumPy)中,einsum 是一個強大的函數,它可以簡潔地表示各種張量運算。下面是幾個不同類型的使用示例: 向量點積 向量點積是兩個向量…

FPGA調試筆記

XILINX SSTL屬性電平報錯 錯誤如下: [DRC BIVRU-1] Bank IO standard Vref utilization: Bank 33 contains ports that use a reference voltage. In order to use such standards in a bank that is not configured to use INTERNAL_VREF, the banks VREF pin mu…

一區嚴選!挑戰5天一篇脂質體組學 DAY1-5

Day 1! 前期已經成功挑戰了很多期NHANES啦!打算來試試孟德爾隨機化領域~ 隨著孟德爾隨機化研究的普及,現在孟德爾發文的難度越來越高,簡單的雙樣本想被接收更是難上加難,那么如何破除這個困境,這次我打算…

DataGear 5.3.0 制作支持導出表格數據的數據可視化看板

DataGear 內置表格圖表底層采用的是DataTable表格組件,默認并未引入導出數據的JS支持庫,如果有導出表格數據需求,則可以在看板中引入導出相關JS支持庫,制作具有導出CSV、Excel、PDF功能的表格數據看板。 在新發布的5.3.0版本中&a…

【個人筆記】用戶注冊登錄思路及實現 springboot+mybatis+redis

基本思路 獲取驗證碼接口 驗證碼操作用了com.pig4cloud.plugin的captcha-core這個庫。 AccountControl的"/checkCode"接口代碼,通過ArithmeticCaptcha生成一張驗證碼圖片,通過text()函數得到驗證碼的答案保存到變量code,然后把圖…

Linux網絡編程概述

Linux網絡編程是在Linux操作系統環境下進行的網絡相關程序開發,主要用于實現不同計算機之間的數據通信和資源共享。以下從基礎知識、網絡編程模型、常用函數和編程步驟等方面進行詳細介紹: 基礎知識 1. 網絡協議 TCP/IP協議族:是互聯網通信…

Linux內核perf性能分析工具案例分析

一、系統級性能分析工具perf原理 1. perf 的基本概念 內核集成:perf 直接集成在 Linux 內核源碼中,能夠深度訪問硬件和操作系統層面的性能數據,具有低開銷、高精度的特點。 事件采樣原理:通過定期采樣系統事件&#xff0…

word-spacing 屬性

介紹 CSS word-spacing 屬性,用于指定段字之間的空間,例如: p {word-spacing:30px; }word-spacing屬性增加或減少字與字之間的空白。 注意: 負值是允許的。 瀏覽器支持 表格中的數字表示支持該屬性的第一個瀏覽器版本號。 屬…

5種特效融合愚人節搞怪病毒

內容供學習使用,不得轉賣,代碼復制后請1小時內刪除,此代碼會危害計算機安全,謹慎操作 并在虛擬機里運行此代碼!&#xff0c;病毒帶來后果自負! #include <windows.h> #include <cmath> #include <thread> using namespace std; // 屏幕特效函數聲明 void In…

深入理解 Windows 進程管理:taskkill 命令詳解

引言 在 Windows 系統開發和日常使用中&#xff0c;我們經常會遇到程序卡死、文件被占用導致無法編譯等問題。這時&#xff0c;taskkill 命令就成了解決問題的利器。本文將詳細介紹 taskkill 的使用方法、常見場景以及注意事項&#xff0c;幫助你高效管理系統進程。 1. 什么是…