Nginx 安全防護與HTTPS部署

目錄

一、核心安全配置

1、隱藏版本號

2、限制危險請求方法

3、請求限制(CC攻擊防御)

(1)使用Nginx的limit_req模塊限制請求速率

(2)壓力測試驗證

4、防盜鏈

(1)修改 Windows 的C:\Windows\System32\drivers\etc\hosts 文件,設置域名和 IP 映射關系

(2)修改兩臺 OpenEuler 的 hosts 文件,設置域名和 IP 映射關系

(3)把圖片 kgc.png 放到源主機的工作目錄下

(4)編輯原網站首頁文件

(5)測試訪問源網站

(6)編輯島鏈網站首頁文件

(7)測試訪問盜鏈網站(盜鏈成功)

(8)配置Nginx防盜鏈

(9)測試訪問呢盜鏈網站(盜鏈失敗403)

二、高級防護

1、動態黑名單

(1)編輯黑名單配置文件

(2)編輯主配置文件

(3)使用封禁ip 測試訪問

(4)自動添加黑名單

2、nginx https 配置

(1)HTTP 風險

(2)安全通信的四大原則

(3)HTTPS 通信原理簡述

3、nignx 配置https 證書

(1)使用 openssl 生成證書和私鑰生成證書和私鑰

(2)nginx 啟用https

(3)驗證


一、核心安全配置

1、隱藏版本號

在生產環境中,需要隱藏 Nginx 的版本號,以避免泄漏 Nginx 的版本,使攻擊者不能針對特定版本進行攻擊。在隱藏版本號之前,可以使用 Fiddler 工具抓取數據包,查看 Nginx版本,也可以在 OpenEuler 中使用命令 curl -Ihttp://192.168.10.101/查看

修改配置文件

[root@bogon ~]# vim /usr/local/nginx/conf/nginx.confserver_tokens off;    #第20行添加,隱藏版本號
[root@bogon ~]# nginx -t    #查看文件是否有錯誤
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@bogon ~]# systemctl restart nginx    #重啟

再次查看會發現版本號被隱藏

2、限制危險請求方法

不安全的請求方式,是潛在的安全風險,TRACE(易引發XST攻擊)、PUT/DELETE(文件修改風險)、CONNECT(代理濫用),通過正則表達式匹配請求方法,非白名單方法返回 444(無響應關閉連接)

修改配置文件

[root@bogon ~]# vim /usr/local/nginx/conf/nginx.confserver {……if ($request_method !~ ^(GET|HEAD|POST)$ ) {return 444;}……}
[root@bogon ~]# nginx -t
[root@bogon ~]# systemctl restart nginx

測試PUT/DELETE請求

[root@localhost ~]# curl -XPUT -I 192.168.10.101
curl: (52) Empty reply from server
[root@bogon ~]# cat /usr/local/nginx/logs/access.log 
192.168.10.102 - - [06/May/2025:12:17:52 +0800] "PUT / HTTP/1.1" 444 0 "-" "curl/8.4.0"

3、請求限制(CC攻擊防御)

CC 攻擊(Challenge Collapsar 攻擊)是一種常見的網絡攻擊方式,通過大量合法或偽造的小流量請求來耗盡服務器資源,導致正常用戶無法訪問網站。?

CC攻擊,也稱為連接數攻擊或請求速率限制攻擊,通過模擬大量用戶訪問來消耗服務器資源,從而使得正常用戶無法正常訪問網站。為了防止此類攻擊,可以使用 Nginx 提供的模塊來限制請求速率和并發連接數

(1)使用Nginx的limit_req模塊限制請求速率

[root@bogon ~]# vim /usr/local/nginx/conf/nginx.conf
http {limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s;#34,定義限制區(10MB內存/每秒10請求)server {location / {root   html;index  index.html index.htm;limit_req zone=req_limit burst=20 nodelay;}}
}

關鍵參數說明:

limit_req_zone

定義共享內存區

$binary_remote _addr

是一個內置變量,用于表示客戶端 IP 地址的二進制格式

zone=req_limit:10m

創建名為 req_limit 的共享內存區,大小 10M,用來存儲客戶端IP

rate=10r/s

限制并發數,每個 IP 每秒可以發起的請求次數

limit req

實施速率限制

zone=req limit

綁定到預定義的共享內存區

burst=20

類似與等候區,超出并發數的請求會到等候區,等候區占滿后,多余的請求會立刻返回 503

nodelay

立即處理突發請求而不延遲,相當于立即處理等候區的請求,多余的請求會立刻返回 503

(2)壓力測試驗證

安裝 ab 測試工具

ApacheBench(簡稱 ab)是 Apache HTTP 服務器自帶的一個輕量級、易用的HTTP 服務器性能測試工具。它主要用于評估服務器在并發訪問下的性能表現,包括響應時間、吞吐量等關鍵指標。

[root@bogon ~]# dnf -y install httpd-tools

發起測試請求

[root@bogon ~]# ab -n 300 -c 30 http://192.168.10.101/

-n 300:表示總請求數為 300 次,即模擬客戶端向服務器發送300次HTTP 請求。
-c 30:表示并發用戶數為 30,即同時有30個請求并行發送到服務器

查看access.log發現大量請求日志狀態碼 503

[root@bogon ~]# tail -300 /usr/local/nginx/logs/access.log  | grep -c 503
278

4、防盜鏈

防盜鏈是一種重要的安全設置,旨在防止未經授權的用戶盜用網站(靜態)資源。盜鏈行為不僅侵犯了內容創作者的版權,還可能導致原網站帶寬和資源的過度消耗,影響正常用戶的訪問速度和體驗。
一般來說,用戶瀏覽一個完整的頁面并不是一次性全部傳送到客戶端的。如果所請求的頁面帶有圖片或其他信息,那么第一個 HTTP 請求傳送的是這個頁面的文本,然后通過客戶端的瀏覽器對這段文本進行解釋執行。如果發現其中還有圖片,那么客戶端的瀏覽器會再次發送一條HTTP請求,當這個請求被處理后這個圖片文件才會被傳送到客戶端,最后瀏覽器會將圖片安放到頁面的正確位置,就這樣一個完整的頁面要經過多次發送HTTP請求才能夠被完整的顯示。基于這樣的機制,就會產生盜鏈問題:如果一個網站中沒有其頁面中所說圖片信息,那么它完全可以鏈接到其他網站的圖片信息上。這樣,沒有任何資源的網站利用了其他網站的資源來展示給瀏覽者,提高了自己的訪問量,而大部分瀏覽者又不會很容易地發現。一些不良網站為了不增加成本而擴充自己站點內容,經常盜用其他網站的鏈接。一方面損害了原網站的合法利益,另一方面又加重了服務器的負擔。

本實驗需要兩臺主機

OpenEuler

www.aaa.com

192.168.10.101

源主機

OpenEuler

www.bbb.com

192.168.10.102

盜鏈主機

(1)修改 Windows 的C:\Windows\System32\drivers\etc\hosts 文件,設置域名和 IP 映射關系

192.168.10.101 www.aaa.com
192.168.10.102 www.bbb.com

(2)修改兩臺 OpenEuler 的 hosts 文件,設置域名和 IP 映射關系

[root@bogon ~]# vim /etc/hosts
192.168.10.101 www.aaa.com
192.168.10.102 www.bbb.com

(3)把圖片 kgc.png 放到源主機的工作目錄下

[root@bogon ~]# ls /usr/local/nginx/html/
50x.html  index.html  kgc.png

(4)編輯原網站首頁文件

[root@bogon ~]# vim /usr/local/nginx/html/index.html 
<h1>aaa</h1>
<img src="kgc.png"/>

(5)測試訪問源網站

(6)編輯島鏈網站首頁文件

[root@bogon ~]# dnf -y install httpd
[root@bogon ~]# vim /var/www/html/index.html
<h1>bbb</h1>
<img src="http://www.aaa.com/kgc.png"/>
[root@bogon ~]# systemctl stop firewalld
[root@bogon ~]# systemctl start httpd

(7)測試訪問盜鏈網站(盜鏈成功)

(8)配置Nginx防盜鏈

[root@bogon ~]# vim /usr/local/nginx/conf/nginx.conflocation ~* \.(gif|jpg|jpeg|png|bmp|swf)$ {root html;valid_referers aaa.com *.aaa.com;if ($invalid_referer) {                         return 403;}}
[root@bogon ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@bogon ~]# systemctl restart nginx

~* \.(jpglgif|swf)$

這段正則表達式表示匹配不區分大小寫,以.jpg或. gif 或.swf 結尾的文件;

Valid referers

設置信任的網站,可以正常使用圖片

后面的網址或者域名

referer 中包含相關字符串的網址

If 語句

如果鏈接的來源域名不在 valid referers 所列出的列表中,$invalid referer 為1,則執行后面的操作,即進行重寫或返回 403 頁面。

(9)測試訪問呢盜鏈網站(盜鏈失敗403)

二、高級防護

1、動態黑名單

動態黑名單是 Nginx 中一種實時攔截惡意請求的安全機制,它允許在不重啟服務的情況下,動態更新需要封禁的 IP地址或網段。相比靜態配置的 allow/deny指令,動態黑名單更靈活高效,適用于高并發、多變的攻擊防護場景。

(1)編輯黑名單配置文件

[root@bogon ~]# vim /usr/local/nginx/conf/blockips.conf
192.168.1.0/24 1;    #封禁整個網段
192.168.10.102 1;    #封禁ip

IP 地址后的數字含義:

0

允許

1

403

完全封禁

2

444

靜默斷開

3

503

服務不可用

(2)編輯主配置文件

[root@bogon ~]# vim /usr/local/nginx/conf/nginx.conf
http {
……geo $block_ip {default 0;    #默認允許訪問include /usr/local/nginx/conf/blockips.conf;    #包含黑名單}
……server {
……if ($block_ip) {    #判斷標記值return 403;    #封禁動作}
……}
}

geo

Nginx 內置模塊指令,專門用于處理IP地址相關的邏輯。基于客戶端IP 地址生成一個變量值,用于后續的訪問控制判斷

$block_ip

自定義的變量名,存儲計算結果(通常為0或1)。

default 0

默認值,表示不在黑名單中的 IP 允許訪問

if($block ip)

當變量值為1時觸發封禁邏輯

[root@bogon ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@bogon ~]# systemctl restart nginx

(3)使用封禁ip 測試訪問

(4)自動添加黑名單

[root@bogon ~]# awk '{print $1}' /usr/local/nginx/logs/access.log | sort | uniq -c | sort -nr | awk '{if ($1>100) print $2" 1;"}' > /usr/local/nginx/conf/blockips.conf

uniq -c:統計連續出現的次數,并在行首顯示次數

sort -nr:按數值排序

2、nginx https 配置

(1)HTTP 風險

HTTP 由于是明文傳輸,主要存在三大風險:竊聽風險、篡改風險、冒充風險。

  • 竊聽風險:中間人可以獲取到通信內容,由于內容是明文,所以獲取明文后有安全風險
  • 篡改風險:中間人可以篡改報文內容后再發送給對方,風險極大。
  • 冒充風險比如你以為是在和某寶通信,但實際上是在和一個釣魚網站通信。

(2)安全通信的四大原則

  • 機密性:即對數據加密,解決了竊聽風險,因為即使被中間人竊聽,由于數據是加密的,他也拿不到明文;
  • 完整性:指數據在傳輸過程中沒有被篡改,不多不少,保持原樣,中途如果哪怕改了一個標點符號,接收方也能識別出來,從來判定接收報文不合法;
  • 身份認證:確認對方的真實身份,即證明“你媽是你媽”的問題,這樣就解決了冒充風險,用戶不用擔心訪問的是某寶結果卻在和釣魚網站通信的問題;
  • 不可否認:即不可否認已發生的行為,比如小明向小紅借了1000元,但沒打借條,或者打了借條但沒有簽名,就會造成小紅的資金損失。

(3)HTTPS 通信原理簡述

  • 對稱加密:通信雙方使用同一把密鑰進行加解密,效率高但存在密鑰協商難題。若通過報文傳輸密鑰,易被中間人截獲替換,導致后續通信內容被竊取和篡改。
  • 非對稱加密:加解密使用不同密鑰,公鑰可公開,私鑰保密。服務器保管私鑰并發布公鑰,客戶端用公鑰加密對稱加密密鑰(或相關信息)傳給服務器,解決了密鑰傳輸安全問題,但服務器的公鑰傳輸又面臨被中間人調包風險。

數字證書解決公鑰信任問題:

證書申請與構成:服務器向證書頒發機構(CA)申請證書,提交域名、組織單位信息和公鑰等生成證書簽名請求(CSR) ,CA 據此生成證書,包含證書序列號、過期時間、站點信息、公鑰、頒發者名稱和簽名等內容。

證書驗證與通信流程:客戶端收到服務器的證書后,用系統內置的 CA 證書公鑰驗簽。驗簽通過則表明證書可信,其公鑰也可信。客戶端用該公鑰加密會話密鑰(對稱加密密鑰)發送給服務器,服務器用私鑰解密獲取會話密鑰,之后雙方使用對稱加密進行數據傳輸。

HTTPS 加密模式:握手階段采用非對稱加密,用于安全交換對稱加密密鑰;數據傳輸階段使用對稱加密,因其密鑰管理簡便、加密解密效率高,這種混合模式既保障安全又兼顧性能。

3、nignx 配置https 證書

由于 ss1 證書需要向 CA 組織申購,實驗采用自簽名證書(也就是自己給自己簽名并頒發證書,當然這種證書是不被信任的)

(1)使用 openssl 生成證書和私鑰生成證書和私鑰

[root@localhost ~]# mkdir -p /etc/nginx/ssl
[root@localhost ~]#  openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt -subj "/C=CN/ST=BeiJing/L=BeiJing/O=benet/CN=localhost"
.+......+++++++++++++++++++++++++++++++++++++++*..+.....+...+.......+++++++++++++++++++++++++++++++++++++++*..+...+.......+...+..+.......+.....+.+..+...+....+.....+......+....+.....+......+......+...+.......+...+.....+...+.........+................+...+..+.........+...+...+.......+...+...+.........+......+.....+.+...............+.....+......+...+......+....+..+...+.......+..+.+......+.....+...+.......+...+........+.........+................+........+......+......+.........+.............+.....+.+...........+...+.+............+...+..+...+.........+.+......+.....+.+...+..+.......+..+.........+..........+.........+..+..........+...+........+...+.......+...............+...+......+.....+......+.........+.+..................+.........+.....+............+....+..+....+........+...+...+.........+......+.+.....+.+...+.....+.......+...............+........+....+...+..+.......+...+..+......+....+.....................+.........+...........+....+.....+.+........+.......+.....+...............+....+...........+..........+...+.....+.+...+...+..+................+.....+....+..+...+.............+...............+..+.+..+..................+.........+...+...+.+...+..+.+..+.............+..+.+.....+....+........+.............+..+...+......+....+.........+..+...+.+..............+...+.........+....+......+........+......+.+.....+...+...+....+..................+...+....................+...+.+...+......+.........+..+.+.........+.....+...+.+..+..........+........+.+.........+.....+.......+..+...+.......+..+.........+....++++++
.....+++++++++++++++++++++++++++++++++++++++*...+...+++++++++++++++++++++++++++++++++++++++*.+..+.+......+.....+...+.......+.....+.+........................+...+...........+......+......+....+.....+....+..+...+....+....................+......+.......+..+......+.+...............+...+...+..............+....+......+...+.....+.+.........+.....+...+...+.......+..+......+.+......+.....+.......+..+.....................+...+....+.................+....+......+......+...+......+.....+.+..+...............+.+......+......+..............+.........+.......+..+.+...........+....+..+.......+........+....+...+..+.+...+.....+..........+......+...+...+..............+.............+..++++++
-----

參數解釋:

-x509

生成自簽名證書(而非CSR)

-nodes

不加密私鑰(無密碼保護)。

-days 365

證書有效期1年。

-keyout

私鑰文件。

-out

自簽名文件。

-newkey rsa:2048

生成2048 位的 RSA 私鑰。

-subj

證書主題信息(按需修改字段)

注:
CA 簽名證書:需要由受信任的第三方證書頒發機構(CA)簽發。流程如下:

1.用戶生成私鑰和 CSR(證書簽名請求)。
2.將 CSR 提交給 CA(如Let's Encrypt、DigiCert 等)。
3.CA 機構驗證身份后,用CA的私鑰對證書簽名,生成最終證書。

自簽名證書:證書的頒發者(Issuer)和主體(Subject)是同一個實體(即自己)無需第三方 CA 參與,直接用工具(如 0penSSL)生成私鑰和證書。簽名時使用自己的私鑰,而不是 CA的私鑰。適用于測試、內部環境或無需公開信任的場景。

(2)nginx 啟用https

編輯nginx 配置文件

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
server {listen       443 ssl;    #監聽HTTPS端口server_name  localhost;#指定證書和私鑰路徑ssl_certificate /etc/nginx/ssl/nginx.crt;ssl_certificate_key /etc/nginx/ssl/nginx.key;
}
#重定向server {listen       80;      return 301 https://$host$request_uri;}
[root@localhost ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost ~]# systemctl restart nginx

(3)驗證

訪問https://服務器ip

瀏覽器會提示證書不安全(因自簽名),選擇“高級’”--繼續前往或信任此證書(測試環境可忽略警告)。

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

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

相關文章

windows 環境下 python環境安裝與配置

運行環境安裝 第一步安裝包下載 python開發工具安裝包下載官網&#xff1a; https://www.python.org/ 根據自己的實際需求選擇。 這里記錄了各個版本的區別和差異。根據區別和差異選擇適合自己的版本。 Windows Installer和Windows embeddable package是兩種不同的軟件包類…

TB6600HG是一款PWM(脈寬調制)斬波型單芯片雙極性正弦波微步進電機驅動集成電路。

該驅動器支持電機的正向和反向旋轉控制&#xff0c;并具有多種激勵模式&#xff0c;包括2相、1-2相、W1-2相、2W1-2相和4W1-2相。 使用這款驅動器&#xff0c;只需時鐘信號即可驅動2相雙極性步進電機&#xff0c;且振動小、效率高。 主要特點&#xff1a; 單芯片雙極性正弦波…

【JS逆向基礎】爬蟲核心模塊:request模塊與包的概念

前言&#xff1a;這篇文章主要介紹JS逆向爬蟲中最常用的request模塊&#xff0c;然后引出一系列的模塊的概念&#xff0c;當然Python中其他比較常用的還有很多模塊&#xff0c;正是這些模塊也可以稱之為庫的東西構成了Python強大的生態&#xff0c;使其幾乎可以實現任何功能。下…

極狐Gitlab 里程碑功能介紹

極狐GitLab 是 GitLab 在中國的發行版&#xff0c;關于中文參考文檔和資料有&#xff1a; 極狐GitLab 中文文檔極狐GitLab 中文論壇極狐GitLab 官網 里程碑 (BASIC ALL) 極狐GitLab 中的里程碑是一種跟蹤議題和合并請求的方法&#xff0c;這些請求是為了在特定時間段內實現更…

【日擼 Java 三百行】Day 10(綜合任務 1)

目錄 Day 10&#xff1a;綜合任務 1 一、題目分析 1. 數據結構 2. 相關函數基本知識 二、模塊介紹 1. 初始化與成績矩陣的構建 2. 創建總成績數組 3. 尋找成績極值 三、代碼與測試 小結 拓展&#xff1a;關于求極值的相關算法 Day 10&#xff1a;綜合任務 1 Task&…

c++:庫(Library)

目錄 什么是庫&#xff1f; C中庫的兩種形態&#xff1a;靜態庫 和 動態庫 靜態鏈接 vs 動態鏈接&#xff08;鏈接 ≠ 庫&#xff09; &#x1f512; 靜態鏈接&#xff08;Static Linking&#xff09; &#x1f517; 動態鏈接&#xff08;Dynamic Linking&#xff09; C標…

Java線程池深度解析:從使用到原理全面掌握

在高并發場景下&#xff0c;線程管理是提升系統性能的關鍵。本文將深入探討Java線程池的核心機制&#xff0c;帶你從基礎使用到底層實現全面掌握這一重要技術。 一、線程池存在的意義 1.1 線程的隱形成本 盡管線程相比進程更輕量&#xff0c;但當QPS達到萬級時&#xff1a; 頻…

PostgreSQL 的 pg_advisory_lock_shared 函數

PostgreSQL 的 pg_advisory_lock_shared 函數詳解 pg_advisory_lock_shared 是 PostgreSQL 提供的共享咨詢鎖函數&#xff0c;允許多個會話同時獲取相同鍵值的共享鎖&#xff0c;但排斥排他鎖。 共享咨詢鎖 vs 排他咨詢鎖 鎖類型共享鎖 (pg_advisory_lock_shared)排他鎖 (pg…

Halcon之計算抓取螺母的位姿

文章目錄 1&#xff0c;項目說明。2&#xff0c;注意事項3&#xff0c;關聯的主要算子3.1&#xff0c; gen_parallels_xld 3.2 &#xff0c;convert_pose_type 4&#xff0c;程序流程。5&#xff0c;代碼6&#xff0c;Demo鏈接。 1&#xff0c;項目說明。 Robot標定使用的模式…

互聯網大廠Java求職面試:AI集成場景下的技術挑戰與架構設計

標題&#xff1a;互聯網大廠Java求職面試&#xff1a;AI集成場景下的技術挑戰與架構設計 第一幕&#xff1a;向量數據庫選型與性能調優 技術總監&#xff08;嚴肅臉&#xff09;&#xff1a; 鄭薪苦&#xff0c;我們最近在做一個基于大語言模型的企業級AI應用&#xff0c;需要…

ABB電機控制和保護單元與Profibus DP主站轉Modbus TCP網關快速通訊案例

ABB電機控制和保護單元與Profibus DP主站轉Modbus TCP網關快速通訊案例 在現代工業自動化系統中&#xff0c;設備之間的互聯互通至關重要。Profibus DP和Modbus TCP是兩種常見的通信協議&#xff0c;分別應用于不同的場景。為了實現這兩種協議的相互轉換&#xff0c;Profibus …

智慧農業、智慧養殖平臺—監控攝像頭管理監控設計—仙盟創夢IDE

智慧養殖 監控攝像頭是核心管理工具&#xff0c;主要通過以下方式提升養殖效率與管理水平&#xff1a; 環境實時監測&#xff1a;對養殖區域進行全天候可視化監控&#xff0c;及時捕捉溫度、濕度、通風等環境要素變化&#xff0c;確保動物生存環境穩定 。例如在規模化豬場&…

YOLO 從入門到精通學習指南

一、引言 在計算機視覺領域,目標檢測是一項至關重要的任務,其應用場景廣泛,涵蓋安防監控、自動駕駛、智能交通等眾多領域。YOLO(You Only Look Once)作為目標檢測領域的經典算法系列,以其高效、快速的特點受到了廣泛的關注和應用。本學習指南將帶領你從 YOLO 的基礎概念…

Java 24新特性深度解析:從優化技巧到高手進階指南

一、Java 24核心新特性詳解 Java 24作為長期支持版本(LTS)&#xff0c;帶來了許多令人振奮的新特性&#xff0c;下面我們將深入探討其中最值得關注的改進。 1. 字符串模板&#xff08;String Templates&#xff09;正式發布 字符串模板結束了Java字符串拼接的混亂時代&#…

《類和對象(中)》

引言&#xff1a; 上次我們主要學習了類的相關知識&#xff0c;今天我們就來學習類和對象(中)&#xff0c;今天也會用到之前學習過的東西&#xff0c;可以說是前面知識的結合&#xff0c;較前面會難一點&#xff08;打個預防針&#xff09;。 一&#xff1a;類的默認成員函數…

為什么 AI 理解不了邏輯問題?

人類擅長“如果 A 則 B”,AI 擅長“這個像那個”。邏輯推理?對它來說是一場災難性的認知挑戰。 前言 在實際使用 AI(尤其是大型語言模型,比如 GPT、Claude、Gemini 等)時,我們常發現一個詭異的現象:它們文采斐然,甚至能講出笑話,但一旦問點小學奧數或邏輯問題,就集體…

C# 使用SunnyUI控件 (VS 2019)

前言&#xff1a;建議下載源碼&#xff0c;源碼中包含了各種控件的用法案例。 下載 幫助文檔: 文檔預覽 - Gitee.comGitee: SunnyUI: SunnyUI.NET 是基于.NET Framework 4.0、.NET8、.NET9 框架的 C# WinForm UI、開源控件庫、工具類庫、擴展類庫、多頁面開發框架。GitHub: h…

Spring Cloud: Nacos

Nacos Nacos是阿里巴巴開源的一個服務發現&#xff0c;配置管理和服務管理平臺。只要用于分布式系統中的微服務注冊&#xff0c;發現和配置管理&#xff0c;nacos是一個注冊中心的組件 官方倉庫&#xff1a;https://nacos.io/ Nacos的下載 Releases alibaba/nacos 在官網中…

Linux下的c/c++開發之操作mysql數據庫

libmysqlclient-dev介紹&#xff08;Linux 下的 Mysql C/C 開發包&#xff09; libmysqlclient-dev 是一個開發包&#xff0c;在Linux環境下為使用 MySQL C API 進行開發的c/c程序員提供頭文件&#xff08;如 mysql.h&#xff09;和靜態庫/動態庫的鏈接信息&#xff08;如 lib…

Java EE(Spring+Spring MVC+MyBatis)從入門到精通企業級應用開發教程——1初識MyBatis框架

1、MyBatis工作原理 MyBatis操作數據庫流程分為8個步驟&#xff0c;具體介紹如下&#xff1a; &#xff08;1&#xff09;MyBatis讀取核心配置文件mybatis-config.xml mybatis-config.xml核心配置文件主要配置了MyBatis的運行環境等信息。 &#xff08;2&#xff09;加載映射…