MySQL 故障排查與生產環境優化

目錄

一、前置知識點

MySQL的運行原理

1.?客戶端連接

2.?SQL 解析與優化

3.?存儲引擎處理

4.?日志與持久化

二、MySQL 單實例故障排查

(1)故障現象1

(2)故障現象2

(3)故障現象3

(4)故障現象4

(5)故障現象5

(6)故障現象6

(7)故障現象7

(8)故障現象8

三、MySQL 主從故障排查

(1)故障現象1

(2)故障現象2

(3)故障現象3

四、MySQL 優化

1、硬件方面

(1)關于 CPU

(2)關于內存

(3)關于磁盤

2、MySQL 配置文件

(1)核心功能優化項

(2)查詢優化項

(3)日志與監控

(4)InnoDB 高級優化

(5)示例配置(my.cnf)

3、SQL 方面

(1)創建測試表并插入數據

(2)使用 EXPLAIN 進行 SQL 優化的步驟及實驗驗證

(3)優化步驟:添加索引

(4)優化后查詢及 EXPLAIN 分析


一、前置知識點

MySQL的運行原理

1.?客戶端連接
  • 客戶端通過 TCP/IP 或 Socket 連接到 MySQL 服務端。

  • 連接管理器(Connection Manager)負責管理線程池和用戶認證。

2.?SQL 解析與優化
  • 解析器:將 SQL 語句解析為語法樹,驗證語法合法性。

  • 優化器:生成執行計劃,選擇索引或全表掃描等策略。

3.?存儲引擎處理
  • 執行引擎:調用存儲引擎(如 InnoDB、MyISAM)執行讀寫操作。

  • 數據存儲

    • InnoDB:數據存儲在表空間文件(.ibd)中,支持事務和行級鎖。

    • MyISAM:數據存儲在?.MYD(數據文件)和?.MYI(索引文件)中,不支持事務。

4.?日志與持久化
  • Redo Log(重做日志):確保事務的持久性,崩潰恢復時重放未提交的事務。

  • Undo Log(回滾日志):支持事務回滾和多版本并發控制(MVCC)。

  • Binlog(二進制日志):記錄所有數據變更,用于主從復制和增量備份。

二、MySQL 單實例故障排查

(1)故障現象1

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/data/mysql/mysql.sock' (2)

問題分析:以上這種情況一般都是數據庫未啟動、mysql 配置文件未指定 socket 文件或者數據庫端口被防火墻攔截導致。
解決方法:啟動數據庫或者防火墻開放數據庫監聽端口。

(2)故障現象2

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

問題分析:密碼不正確或者沒有權限訪問。
解決方法

修改 my.cnf 主配置文件,在 [mysqld] 下添加 skip - grant - tables=on,重啟數據庫。最后修改密碼命令如下:

Mysql5.7 版本

mysql> update mysql.user set authentication_string=password('123456') where user='root' and Host = 'localhost';
mysql> flush privileges;

Mysql8.0

mysql> UPDATE mysql.user SET authentication_string='' WHERE user='root' AND Host='localhost';
mysql> FLUSH PRIVILEGES;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

再刪除剛剛添加的 skip-grant-tables 參數,重啟數據庫,使用新密碼即可登錄。重新授權,命令如下。

Mysql5.7

mysql>grant all on *.* to 'root'@'mysql-server' identified by '123456';

Mysql8.0

mysql> CREATE USER 'root'@'mysql-server' IDENTIFIED BY '123456';
mysql> GRANT all ON *.* TO 'root'@'mysql-server';

(3)故障現象3

使用遠程連接數據庫時偶爾會發生遠程連接數據庫很慢的問題

問題分析:如果MySQL主機查詢DNS很慢或有很多客戶端連接導致很慢,由于開發機器是不可以連接外網的,在進行MySQL連接時,DNS解析是不可能完成的,從而也就明白了連接那么慢的原因。

解決方法:修改配置文件my.cnf ,在[mysql] 下添加 skip-name-resolve,重啟數據庫可以解決,注意在以后授權里面不能再使用主機名授權。

(4)故障現象4

Can’t open file: 'xxx_forums.MYI'. (errno: 145)

問題分析:服務器非正常關機,數據庫所在空間已滿,或一些其他未知原因,對數據庫表造成了損壞。可能是系統下直接將數據庫文件拷貝,會因為文件的屬組問題產生這個錯誤。

解決方法

1.可以使用兩種方式修復數據表

  • 使用 MySQL 自帶的專門用戶數據表檢查和修復工具 myisamchk。一般情況下只有在命令行下面才能運行 myisamchk 命令。常用的修復命令為:
myisamchk -r 數據文件目錄/數據表名.MYI;
  • 通過 phpMyAdmin 修復,phpMyAdmin 帶有修復數據表的功能,進入到某一個表中后,點擊 “操作”,在下方的 “表維護” 中點擊 “修復表” 即可。

注意:以上兩種修復方式在執行前一定要備份數據庫。

  • 修改文件的屬組(僅適合獨立主機用戶):
  • 復制數據庫文件的過程中沒有將數據庫文件設置為 MySQL 運行的帳號可讀寫(一般適用于 Linux 和 FreeBSD 用戶)。

(5)故障現象5

ERROR 1129 (HY000): Host 'xxx.xxx.xxx' is blocked because of many connection erros;
unblock with 'mysqladmin flush-hosts'

問題分析:由于數據庫參數:max_connect_errors , 其默認值是10.當大量的主機去連接MySQL ,總連接請求超過了,新的連接就無法連上MySQL。同一個IP在短時間內產生太多中斷的數據庫連接而導致的阻塞。

解決方法:使用 mysqladmin flush-hosts 命令清除緩存

(6)故障現象6

客戶端報 Too many connections.

問題分析:連接數超出MySQL的最大連接數限制

解決方法:1.在 /etc/my.cnf 配置文件增大連接數,然后重啟MySQL

? ? ? ? ? ? ? ? ? ? ?max_connections = 10000

? ? ? ? ? ? ? ? ? ? 2.臨時修改最大連接數,在my.cnf 里修改

? ? ? ? ? ? ? ? ? ? ? set GLOBL max_connections = 10000

(7)故障現象7

Warning:World-writable config file '/etc/my.cnf' is ignored
ERROR! MySQL is running but PID file could not be found

問題分析:MySQL 的配置文件/etc/my.cnf 權限不對

解決方法:給它權限? chmod 644 /etc/my.cnf

(8)故障現象8

InnoDB: Error:page 14178 log sequence number 29455369832
InnoDB:is in the future!Current system log sequence number 29455369832f

問題分析: innodb 數據文件損壞。

解決方法:修改 my.cnf 配置文件,在[mysql] 下添加 innodb_force_recovery=4,啟動數據庫后備份數據文件,然后去掉該參數,利用備份文件恢復數據。

三、MySQL 主從故障排查

(1)故障現象1

從庫的 Slave_IO_Running 為 NO
The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it).

問題分析:主庫和從庫的 server-id 值一樣。
解決方法:修改從庫的 server-id 的值,修改為和主庫不一樣。修改完后重啟,再同步即可。?

(2)故障現象2

從庫的 Slave_IO_Running 為 NO

問題分析:造成從庫線程為 NO 的原因會有很多,主要原因是主鍵沖突或者主庫刪除或更新數據,從庫找不到記錄,數據被修改導致。通常狀態碼報錯有 1007、1032、1062、1452 等。

解決方法一

mysql> stop slave;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> start slave;

解決方法二
設置用戶權限,設置從庫只讀權限

set global read_only=true;

(3)故障現象3

Error initializing relay log position: I/O error reading the header from the binary log

分析問題:從庫的中繼日志 relay-bin 損壞。

解決方法:手工修復,重新找到同步的 binlog 和 pos 點,然后重新同步即可。

mysql>CHANGE  MASTER  TO  MASTER_LOG_FILE='mysql-bin.xxx', MASTER_LOG_POS=xxx;

四、MySQL 優化

1、硬件方面

(1)關于 CPU

優化目標

  • 提升并行處理能力,減少 SQL 執行和鎖競爭帶來的 CPU 瓶頸。

關鍵策略

  1. 選擇多核 CPU

    • MySQL 支持多線程操作(如并行查詢、連接處理),多核 CPU 能更好地處理高并發請求。

    • 建議:優先選擇主頻高、核心數多的 CPU(如 16 核以上)。

  2. 監控 CPU 使用率

    # 查看 CPU 負載  
    top  
    # 檢查用戶態(us)和內核態(sy)的 CPU 占用  
    vmstat 1  
    • 常見問題

      • us?高:SQL 執行消耗過多 CPU(需優化慢查詢)。

      • sy?高:系統內核資源爭用(如鎖競爭、線程切換)。

  3. 優化鎖與并發

    • 減少表鎖(MyISAM)或行鎖(InnoDB)競爭:

      -- 查看鎖等待  
      SHOW ENGINE INNODB STATUS\G  
      -- 查看當前運行事務  
      SELECT * FROM information_schema.INNODB_TRX;  
(2)關于內存

優化目標

  • 最大化利用內存緩存數據,減少磁盤 I/O。

關鍵策略

  1. 配置 InnoDB 緩沖池

    • innodb_buffer_pool_size?是 InnoDB 引擎的核心參數,用于緩存數據和索引。

    • 建議:設置為系統總內存的?70%~80%(需預留內存給操作系統和其他進程)。

      # my.cnf 示例  
      innodb_buffer_pool_size = 64G  

  2. 優化其他內存區域

    • 連接線程內存

      thread_cache_size = 100      # 緩存線程數  
      max_connections = 1000       # 最大連接數  
    • 排序和臨時表內存

      sort_buffer_size = 4M        # 排序緩沖區  
      tmp_table_size = 256M        # 內存臨時表大小  
  3. 監控內存使用

    -- 查看 InnoDB 緩沖池命中率  
    SHOW STATUS LIKE 'Innodb_buffer_pool_read%';  
    -- 計算命中率公式:  
    -- (1 - Innodb_buffer_
(3)關于磁盤

優化目標

  • 提升 I/O 吞吐量,降低數據讀寫延遲。

關鍵策略

  1. 選擇高性能存儲設備

    • SSD:比 HDD 快 10 倍以上,尤其適合隨機 I/O 密集場景。

    • RAID 配置

      • RAID 10:兼顧性能與冗余,適合 OLTP 場景。

      • RAID 5:適合讀多寫少的 OLAP 場景。

  2. 分離日志與數據文件

    • 日志文件(binlog、redo log):

      • 寫入頻繁且順序寫入,建議單獨掛載高速 SSD。

    • 數據文件

      • 隨機讀寫較多,使用獨立磁盤或 RAID 10。

  3. 優化文件系統與 I/O 調度

    • 文件系統:使用 XFS 或 ext4(啟用?noatime?減少元數據寫入)。

    • I/O 調度器

      # 查看當前調度策略  
      cat /sys/block/sda/queue/scheduler  
      # 設置為 deadline 或 noop(SSD 推薦)  
      echo 'deadline' > /sys/block/sda/queue/scheduler  
  4. 監控磁盤 I/O

    # 查看磁盤吞吐量和延遲  
    iostat -x 1  
    # 檢查 I/O 等待時間  
    top(關注 %wa 指標)  

2、MySQL 配置文件

(1)核心功能優化項
參數作用建議配置注意事項
innodb_buffer_pool_sizeInnoDB 緩沖池大小,緩存數據和索引,直接影響讀性能設置為物理內存的 50%~70%(如 64GB 內存配 40G)避免超過物理內存,防止系統交換(Swap)
innodb_log_file_size單個 InnoDB 重做日志文件大小,影響事務提交速度和崩潰恢復時間建議 1G~4G(如 2G)修改需停止 MySQL,刪除舊日志文件后重啟
innodb_flush_log_at_trx_commit控制事務日志刷新策略,平衡性能與數據安全1(默認,完全持久化);2(折中,每秒刷盤);0(高性能,風險高)高并發寫入場景可設為 2,但需容忍最多 1 秒數據丟失
max_connections最大客戶端連接數,避免連接耗盡根據業務需求設置,建議 500~2000監控 Threads_connected 和 Threads_running 調整
tmp_table_size、max_heap_table_size內存臨時表大小上限,影響復雜查詢(如 GROUP BY、JOIN)建議 64M~256M(如 128M),兩者值需一致過小會導致磁盤臨時表,降低性能;過大可能耗盡內存
(2)查詢優化項
參數作用建議配置
query_cache_type查詢緩存類型(MySQL 8.0 已移除,舊版本慎用)OFF(默認,高并發下建議關閉)
sort_buffer_size排序操作緩沖區大小2M~8M(如 4M)
join_buffer_sizeJOIN 操作緩沖區大小4M~16M(如 8M,僅對無索引 JOIN 有效)
read_buffer_size順序讀緩沖區大小2M~8M(如 4M)
read_rnd_buffer_size隨機讀緩沖區大小4M~16M(如 8M)
(3)日志與監控
參數作用建議配置
slow_query_log啟用慢查詢日志ON
long_query_time定義慢查詢閾值(秒),記錄執行時間長的 SQL1~2(根據業務容忍度調整)
log_error錯誤日志路徑,用于故障排查指定路徑(如 /var/log/mysql/error.log )
binlog_format二進制日志格式(主從復制依賴)ROW(推薦,數據一致性高)
expire_logs_days自動清理舊的二進制日志天數7~14(根據備份策略調整)
(4)InnoDB 高級優化
參數作用建議配置
innodb_io_capacityInnoDB 后臺任務的 I/O 能力(如刷新臟頁)SSD 建議 2000~4000,HDD 建議 200~400
innodb_flush_method控制數據文件與日志文件的刷新方式O_DIRECT(默認,避免雙緩沖)
innodb_thread_concurrencyInnoDB 并發線程數(默認,自適應),高并發場景影響性能可設為 CPU 核數 * 2
innodb_autoinc_lock_mode自增鎖模式,影響插入(連續模式,高并發插入性能)2
(5)示例配置(my.cnf)

物理資源 32 核 CPU、64G 內存、500G SSD

[mysqld]
# 核心配置
innodb_buffer_pool_size = 40G
innodb_log_file_size = 2G
innodb_flush_log_at_trx_commit = 2
max_connections = 1000
thread_cache_size = 100
# 查詢優化
tmp_table_size = 128M
max_heap_table_size = 128M
sort_buffer_size = 4M
join_buffer_size = 8M
# 日志與監控
slow_query_log = ON
long_query_time = 1
log_error = /var/log/mysql/error.log
binlog_format = ROW
expire_logs_days = 7
# InnoDB 高級
innodb_io_capacity = 2000
innodb_flush_method = O_DIRECT
innodb_thread_concurrency = 0
innodb_autoinc_lock_mode = 2

3、SQL 方面

SQL 優化是保障數據庫高效運行的關鍵,核心是減少 CPU、內存、磁盤 I/O 等資源消耗,提升查詢響應。未優化 SQL 在大數據量或高并發時會引發全表掃描等問題,致服務器負載高、響應慢,影響業務。可借助索引優化等手段降低數據庫壓力,支持業務擴展,控制成本與運維復雜度。

(1)創建測試表并插入數據
-- 創建數據庫
Create database test;
-- 使用數據庫
Use test;CREATE TABLE users (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50) NOT NULL,email VARCHAR(100) NOT NULL,age INT NOT NULL,created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);--插入 10 萬條測試數據(使用存儲過程生成)
DELIMITER $$
CREATE PROCEDURE insert_users()
BEGINDECLARE i INT DEFAULT 0;WHILE i < 100000 DOINSERT INTO users (name, email, age)VALUES (CONCAT('user', i), CONCAT('user', i, '@example.com'), FLOOR(RAND() * 100));SET i = i + 1;END WHILE;
END$$
DELIMITER ;CALL insert_users();
(2)使用 EXPLAIN 進行 SQL 優化的步驟及實驗驗證

EXPLAIN 是 MySQL 分析 SQL 執行計劃的工具,模擬查詢執行輸出訪問類型、索引使用、掃描行數、額外操作等關鍵信息,能幫開發者找出全表掃描、索引失效等性能問題,進而從添加索引、改寫查詢、調整表結構等方面優化,是提升數據庫效率的重要診斷工具。

例如:

mysql>EXPLAIN SELECT * FROM users WHERE name = 'user123';

EXPLAIN 用于顯示 MySQL 如何執行一條 SQL 語句,關鍵字段如下:

字段說明優化關注點
id查詢序列號,相同 id 為同一執行層,不同 id 按序執行(如查看復雜查詢的嵌套層級)-
select_type查詢類型(SIMPLE、PRIMARY、SUBQUERY、DERIVED 等)識別子查詢或臨時表操作
table訪問的表名或別名確認查詢涉及的表
type訪問類型,性能從優到劣:system > const > eq_ref > ref > range > index > ALL避免 ALL(全表掃描),優先優化為 ref 或 range
possible_keys可能使用的索引檢查是否有合適索引未被使用
key實際使用的索引確認是否命中最佳索引
rows預估掃描的行數行數越少,查詢效率越高
Extra附加信息(如 Using where、Using index、Using temporary 等)發現潛在性能問題(

根據關鍵字段說明,對 explain SELECT * FROM users WHERE name = 'user123' 的結果分析如下:

  • type=ALL:全表掃描,效率極低。
  • possible_keys=NULL:未命中索引。
  • rows=100000:掃描全部數據。
(3)優化步驟:添加索引
mysql>ALTER TABLE users ADD INDEX idx_name (name);
(4)優化后查詢及 EXPLAIN 分析
mysql>EXPLAIN SELECT * FROM users WHERE name = 'user123';

?

優化后結果分析如下:

  • type=ref:索引查找,效率高。
  • key=idx_name:命中新創建的索引。
  • rows=1:僅掃描一行數據。

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

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

相關文章

C++學習:六個月從基礎到就業——C++20:模塊(Modules)與其他特性

C學習&#xff1a;六個月從基礎到就業——C20&#xff1a;模塊(Modules)與其他特性 本文是我C學習之旅系列的第五十三篇技術文章&#xff0c;也是第三階段"現代C特性"的第十五篇&#xff0c;深入探討C20引入的模塊(Modules)系統及其他重要特性。查看完整系列目錄了解…

Vue百日學習計劃Day36-42天詳細計劃-Gemini版

總目標: 在 Day 36-42 理解組件化開發的思想&#xff0c;熟練掌握 Vue 組件的注冊、Props、Events、v-model、Slots、Provide/Inject 等核心概念和實踐&#xff0c;能夠構建可復用和易于維護的組件結構。 所需資源: Vue 3 官方文檔 (組件基礎): https://cn.vuejs.org/guide/es…

深入解析Spring Boot與Kafka集成:構建高效消息驅動微服務

深入解析Spring Boot與Kafka集成&#xff1a;構建高效消息驅動微服務 引言 在現代微服務架構中&#xff0c;消息隊列扮演著至關重要的角色&#xff0c;而Apache Kafka憑借其高吞吐量、低延遲和可擴展性&#xff0c;成為了許多企業的首選。本文將詳細介紹如何在Spring Boot應用…

谷歌 NotebookLM 即將推出 Sparks 視頻概覽:Gemini 與 Deep Research 加持,可生成 1 - 3 分鐘 AI 視頻

近期&#xff0c;谷歌旗下的 NotebookLM 即將推出一項令人矚目的新功能 ——Sparks 視頻概覽。這一功能借助 Gemini 與 Deep Research 的強大能力&#xff0c;能夠生成 1 - 3 分鐘的 AI 視頻&#xff0c;為用戶帶來全新的內容創作與信息獲取體驗。 NotebookLM&#xff1a;AI 筆…

第十六屆藍橋杯復盤

文章目錄 1.數位倍數2.IPv63.變換數組4.最大數字5.小說6.01串7.甘蔗8.原料采購 省賽過去一段時間了&#xff0c;現在復盤下&#xff0c;省賽報完名后一直沒準備所以沒打算參賽&#xff0c;直到比賽前兩天才決定參加&#xff0c;賽前兩天匆匆忙忙下載安裝了比賽要用的編譯器ecli…

Manus AI 突破多語言手寫識別技術壁壘:創新架構、算法與應用解析

在人工智能領域&#xff0c;手寫識別技術作為連接人類自然書寫與數字世界的橋梁&#xff0c;一直備受關注。然而&#xff0c;多語言手寫識別面臨諸多技術挑戰&#xff0c;如語言多樣性、書寫風格差異、數據稀缺性等。Manus AI 作為該領域的領軍者&#xff0c;通過一系列創新技術…

25考研經驗貼(11408)

聲明&#xff1a;以下內容都僅代表個人觀點 數學一&#xff08;130&#xff09; 25考研數學一難度介紹&#xff1a;今年數學一整體不難&#xff0c;尤其是選填部分&#xff0c;大題的二型線面和概率論大題個人感覺比較奇怪&#xff0c;其他大題還是比較容易的。.26如何準備&a…

嵌入式軟件--stm32 DAY 6 USART串口通訊(下)

1.寄存器輪詢_收發字符串 通過寄存器輪詢方式實現了收發單個字節之后&#xff0c;我們趁熱打鐵&#xff0c;爭上游&#xff0c;進階到字符串。字符串就是多個字符。很明顯可以循環收發單個字節實現。 然后就是接收字符串。如果接受單個字符的函數放在while里&#xff0c;它也可…

QT使用QXlsx讀取excel表格中的圖片

前言 讀取excel表格中的圖片的需求比較小眾&#xff0c;QXlsx可以操作excel文檔&#xff0c;進行圖片讀取、插入操作&#xff0c;本文主要分享單獨提取圖片和遍歷表格提取文字和圖片。 源碼下載 github 開發環境準備 把下載的代碼中的QXlsx目錄&#xff0c;整個拷貝到所創建…

抽獎相關功能測試思路

1. 抽獎系統功能測試用例設計&#xff08;登錄 每日3次 中獎40% 道具兌換碼&#xff09; ? 功能點分析 必須登錄后才能抽獎每天最多抽獎3次抽獎有 40% 概率中獎中獎返回兌換碼 ? 測試用例設計 編號 用例描述 前置條件 操作 預期結果 TC01 未登錄時抽獎 未登錄 …

Unity editor文件數UI(支持勾選框)

unity editor文件數&#xff08;支持勾選框&#xff09; 使用的時候new一個box即可 using Sirenix.OdinInspector; using Sirenix.OdinInspector.Editor; using System; using System.Collections; using System.Collections.Generic; using UnityEngine;[Serializable] publ…

RabbitMQ通信模式(Simplest)Python示例

RabbitMQ通信模式-Python示例 0.RabbitMQ官網通信模式1.Simplest(簡單)模式1.1 發送端1.2 接收端 0.RabbitMQ官網通信模式 1.Simplest(簡單)模式 1.1 發送端 # -*- coding: utf-8 -*- """ Author: xxx date: 2025/5/19 11:30 Description: Simaple簡單模…

隨筆20250519 Async+ThreadPoolTaskExecutor?定義線程池進階實戰

1.ThreadPoolTaskExecutor線程池 有哪?個重要參數&#xff0c; 什么時候會創建線程 1.核心綫程數 查看核心綫程數目是否已經滿&#xff0c;未滿 創建一條綫程 執行任務&#xff0c;已滿負責執行第二部 2.阻塞隊列 查看阻塞隊列是否已經滿&#xff0c;未滿將任務加入阻塞隊列&…

YOLO11解決方案之實例分割與跟蹤探索

概述 Ultralytics提供了一系列的解決方案,利用YOLO11解決現實世界的問題,包括物體計數、模糊處理、熱力圖、安防系統、速度估計、物體追蹤等多個方面的應用。 實例分割是一項計算機視覺任務,涉及在像素級別識別和勾勒圖像中的單個對象。與只按類別對像素進行分類的語義分割…

VScode各文件轉化為PDF的方法

文章目錄 代碼.py文件.ipynb文本和代碼夾雜的文件方法 1:使用 VS Code 插件(推薦)步驟 1:安裝必要插件步驟 2:安裝 `nbconvert`步驟 3:間接導出(HTML → PDF)本文遇見了系列錯誤:解決方案:問題原因步驟 1:降級 Jinja2 至兼容版本步驟 2:確保 nbconvert 版本兼容替代…

現代計算機圖形學Games101入門筆記(十五)

蒙特卡洛積分 為什么用蒙特卡洛積分&#xff0c;用來做什么&#xff1f;跟黎曼積分區別&#xff0c;黎曼積分是平均分成n等分&#xff0c;取每個小塊中間的值取計算每個小塊面積&#xff0c;再將n份集合加起來。蒙特卡洛積分就是隨機取樣&#xff0c;假設隨機取樣點xi,對應的f…

軟件架構之-論高并發下的可用性技術

論高并發下的可用性技術 摘要正文摘要 ;2023年2月,本人所在集團公司承接了長三角地區某省漁船圖紙電子化審查系統項目開發,該項目旨在為長三角地區漁船建造設計院、以及漁船審圖機構提供一個便捷化的服務平臺。在此項目中,我作為項目組成員參與了項目建設工作,并擔任系統架…

Q-learning 算法學習

Q-learning是一種經典的無模型、基于價值的算法&#xff0c;它通過迭代更新狀態-動作對的Q值&#xff0c;最終找到最優策略。 一 Q-learning的核心思想 1.1目標 學習一個狀態-動作價值函數 &#xff0c;表示在狀態 s 下執行動作 a 并遵循最優策略后的最大累積獎勵。 的核心…

鴻蒙生態崛起:開發者機遇與挑戰并存

&#x1f493; 博客主頁&#xff1a;倔強的石頭的CSDN主頁 &#x1f4dd;Gitee主頁&#xff1a;倔強的石頭的gitee主頁 ? 文章專欄&#xff1a;《熱點時事》 期待您的關注 目錄 引言 一、何為鴻蒙生態&#xff1f; 二、在鴻蒙生態下開發時遇到的挑戰 三、對于鴻蒙生態未…

TCP/IP-——C++編程詳解

1. TCP/IP 編程基本概念 TCP&#xff08;傳輸控制協議&#xff09;&#xff1a;面向連接、可靠的傳輸層協議&#xff0c;保證數據順序和完整性。IP&#xff08;網際協議&#xff09;&#xff1a;負責將數據包路由到目標地址。Socket&#xff08;套接字&#xff09;&#xff1a…