在WSL2-Ubuntu中安裝Anaconda、CUDA13.0、cuDNN9.12及PyTorch(含完整環境驗證)

WSL 搭建深度學習環境,流程基本上是一樣的,完整細節可參考我之前的博客:

在WSL2-Ubuntu中安裝CUDA12.8、cuDNN、Anaconda、Pytorch并驗證安裝_cuda 12.8 pytorch版本-CSDN博客

之所以記錄下來,是因為CUDA和cuDNN版本升級后,部分安裝細節有調整(便捷度提升),所以單獨開篇記錄。



一、引言

因需安裝依賴本地CUDA編譯的軟件包,需完整部署CUDA Toolkit、cuDNN及PyTorch環境。從CUDA12.9版本起,NVIDIA支持通過Anaconda安裝cuDNN,故調整流程為先裝Anaconda(前置)→再裝CUDA13.0→接著裝cuDNN9.12→最后裝PyTorch,確保版本適配且操作高效,關鍵步驟附官方及實操參考鏈接,保障可復現性。



二、前提條件(Windows端+WSL端)

(一)Windows系統準備

  1. 安裝NVIDIA官方顯卡驅動(需支持CUDA13.0,版本≥535.xx):打開Windows cmd,執行nvidia-smi,確認輸出中“CUDA Version”≥13.0;
  2. 啟用WSL2并安裝Ubuntu系統(推薦22.04/24.04 LTS):終端執行wsl --list --verbose,確認WSL版本為2;
  3. (可選)安裝Microsoft Visual Studio:用于跨平臺編譯需求,參考CUDA官方前置要求。

(二)WSL2-Ubuntu準備

  1. 配置網絡:開啟系統代理(避免下載緩慢,參考WSL2怎么設置網絡自動代理);
  2. 權限與更新:確保擁有sudo權限,執行系統更新命令:
    sudo apt update && sudo apt upgrade -y
    


三、第一步:安裝Anaconda(前置核心步驟)

WSL - Linux 安裝 Anaconda3-2025.06-0 詳細教程 [WSL 分發版均適用]_wsl安裝anaconda-CSDN博客

3.1 下載Anaconda安裝包

  1. 從Anaconda官網查詢最新Linux版本(截至2025年8月,推薦Anaconda3-2025.07-Linux-x86_64.sh);
  2. 終端執行下載命令(保存至/tmp目錄,避免占用用戶目錄):
    wget -P /tmp https://repo.anaconda.com/archive/Anaconda3-2025.07-Linux-x86_64.sh
    

3.2 運行安裝腳本

  1. 執行安裝命令:
    bash /tmp/Anaconda3-2025.07-Linux-x86_64.sh
    
  2. 交互操作:
    • ENTER翻頁閱讀許可協議,直至出現“Do you accept the license terms? [yes|no]”,輸入yes
    • 確認安裝路徑(默認/home/[用戶名]/anaconda3,推薦默認),按ENTER
    • 詢問“是否初始化Anaconda到shell”,必須輸入yes(自動配置環境變量,為后續conda安裝cuDNN鋪路)。

3.3 驗證Anaconda安裝

  1. 生效環境變量:關閉當前終端并重新打開,或執行source ~/.bashrc(Zsh用戶為source ~/.zshrc);
  2. 驗證命令:
    conda --version  # 輸出如“conda 25.7.0”,說明conda命令可用
    conda env list   # 顯示base環境及路徑,確認環境正常
    

參考鏈接:在 Windows 11 下的 WSL - Ubuntu 24.04 中安裝 Anaconda3



四、第二步:安裝CUDA13.0 Toolkit

4.1 驗證WSL與GPU通信

終端執行nvidia-smi,確認輸出中“CUDA Version”≥13.0(若未顯示,需更新Windows端顯卡驅動)。

nvidia-smi

無需登錄(關閉登錄窗口即可)

CUDA 與 cuDNN 免登錄下載政策詳解(基于官方權威信息)_cudnn下載-CSDN博客

CUDA Toolkit 13.0 Downloads | NVIDIA Developer

wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda-toolkit-13-0

4.2 下載并安裝CUDA密鑰環

  1. 執行下載命令(從NVIDIA WSL-Ubuntu專屬倉庫獲取):
    (base) love@AI:~$ wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.1-1_all.deb
    
    • 下載日志:
      --2025-08-24 11:31:34--  https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.1-1_all.deb
      Connecting to 127.0.0.1:7897... connected.
      Proxy request sent, awaiting response... 200 OK
      Length: 4328 (4.2K) [application/x-deb]
      Saving to: ‘cuda-keyring_1.1-1_all.deb’
      cuda-keyring_1.1-1_all.deb    100%[=================================================>]   4.23K  --.-KB/s    in 0s
      2025-08-24 11:31:36 (912 MB/s) - ‘cuda-keyring_1.1-1_all.deb’ saved [4328/4328]
      
  2. 安裝密鑰環(確保后續CUDA包來源可信):
    (base) love@AI:~$ sudo dpkg -i cuda-keyring_1.1-1_all.deb
    
    • 安裝日志(關鍵片段):
      [sudo] password for love:
      Selecting previously unselected package cuda-keyring.
      (Reading database ... 40769 files and directories currently installed.)
      Preparing to unpack cuda-keyring_1.1-1_all.deb ...
      Unpacking cuda-keyring (1.1-1) ...
      Setting up cuda-keyring (1.1-1) ...
      

4.3 更新軟件源并安裝CUDA13.0

  1. 更新軟件包列表:
    (base) love@AI:~$ sudo apt-get update
    
    • 更新日志(關鍵片段):
      Hit:1 http://security.ubuntu.com/ubuntu noble-security InRelease
      Hit:2 http://archive.ubuntu.com/ubuntu noble InRelease
      Get:3 http://archive.ubuntu.com/ubuntu noble-updates InRelease [126 kB]
      Get:4 https://developer.download.nvidia.cn/compute/cuda/repos/wsl-ubuntu/x86_64  InRelease [1581 B]
      Fetched 3275 kB in 4s (741 kB/s)
      Reading package lists... Done
      
  2. 安裝CUDA13.0 Toolkit(指定版本避免自動升級):
    (base) love@AI:~$ sudo apt-get -y install cuda-toolkit-13-0
    
    • 安裝過程:系統自動下載3389 MB依賴包(含cuda-cccl-13-0cuda-nvcc-13-0等核心組件),最終提示“Setting up cuda-toolkit-13-0 (13.0.0-1) …”,表示安裝完成。

4.4 配置CUDA環境變量

  1. 編輯shell配置文件(以Bash為例):
    nano ~/.bashrc
    
  2. 在文件末尾添加以下內容(指定CUDA13.0安裝路徑):
    export PATH=/usr/local/cuda-13.0/bin:$PATH
    export LD_LIBRARY_PATH=/usr/local/cuda-13.0/lib64:$LD_LIBRARY_PATH
    export CUDA_HOME=/usr/local/cuda-13.0
    
  3. 保存并生效:按Ctrl+X→輸入Y→按ENTER,執行source ~/.bashrc

4.5 驗證CUDA13.0安裝

nvcc -V  # 輸出如“Cuda compilation tools, release 13.0, V13.0.48”
ls /usr/local/cuda-13.0  # 顯示bin、lib64、include等目錄,確認安裝完整性

參考鏈接:在 Windows 11 下的 WSL - Ubuntu 24.04 中安裝 CUDA 的記錄;

官方指引:CUDA下載(WSL-Ubuntu deb_network方式)



五、第三步:安裝cuDNN9.12(Anaconda方式)

CUDA 深度神經網絡庫 (cuDNN) | NVIDIA 開發者

同樣是免登錄下載和安裝。

官方文檔更新未及時,注意修改“cuda-version=”的版本號。

一般 cuDNN 能自動降級適配CUDA,但較老的 cuDNN 版本可能無法向后兼容較新版本的 CUDA 。

cuDNN 安裝命令:

conda install nvidia::cudnn cuda-version=13

或者:

conda install nvidia::cudnn=9.12 cuda-version=13

5.1 激活Anaconda環境

  1. 確保處于base環境(終端前綴顯示(base)),若未激活執行:
    conda activate base
    
  2. (可選)創建獨立虛擬環境(推薦,避免污染base環境):
    conda create -n cuda13_env python=3.13  # 適配Python 3.13版本
    conda activate cuda13_env
    

5.2 通過conda安裝cuDNN9.12

  1. 執行安裝命令(指定與CUDA13.0兼容的cuDNN9.12版本):
    (base) love@AI:~$ conda install nvidia::cudnn=9.12 cuda-version=13
    
  2. 安裝日志(關鍵片段):
    Channels:- defaults- nvidia
    Platform: linux-64
    Collecting package metadata (repodata.json): done
    Solving environment: done
    ## Package Plan ##environment location: /home/love/anaconda3added / updated specs:- cuda-version=13- nvidia::cudnn=9.12
    The following NEW packages will be INSTALLED:cuda-version       pkgs/main/noarch::cuda-version-13.0-hbda6634_3cudnn              nvidia/linux-64::cudnn-9.12.0.46-h2b6041c_0libcudnn           nvidia/linux-64::libcudnn-9.12.0.46-h24322f0_0libcudnn-dev       nvidia/linux-64::libcudnn-dev-9.12.0.46-h2b6041c_0
    Proceed ([y]/n)? y
    Downloading and Extracting Packages:
    Preparing transaction: done
    Verifying transaction: done
    Executing transaction: done
    

5.3 驗證cuDNN9.12安裝

  1. 查看conda已安裝包:
    conda list | grep cudnn  # 輸出“cudnn                     9.12.0.46          h2b6041c_0    nvidia”
    
  2. 檢查庫文件路徑(conda環境內):
    ls $CONDA_PREFIX/lib/libcudnn*  # 顯示libcudnn.so、libcudnn_static.a等文件
    

參考鏈接:Windows 11 系統下,通過 WSL 里的 Ubuntu 24.04 安裝 CUDNN 記錄;

CUDA與cuDNN適配說明:是否需要預先安裝CUDA Toolkit?



六、第四步:安裝PyTorch(適配CUDA13.0)

Get Started

pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cu129

6.1 執行安裝命令

從PyTorch官方倉庫(https://download.pytorch.org/whl/cu129 )安裝適配CUDA13.0的版本(CUDA向下兼容,cu129包支持CUDA13.0):

(base) love@AI:~$ pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cu129

6.2 安裝日志(關鍵片段)

Looking in indexes: https://download.pytorch.org/whl/cu129
Collecting torchDownloading https://download.pytorch.org/whl/cu129/torch-2.8.0%2Bcu129-cp313-cp313-manylinux_2_28_x86_64.whl.metadata (30 kB)
Collecting torchvisionDownloading https://download.pytorch.org/whl/cu129/torchvision-0.23.0%2Bcu129-cp313-cp313-manylinux_2_28_x86_64.whl.metadata (6.1 kB)
# 自動下載依賴(nvidia-cuda-nvrtc-cu12、nvidia-cudnn-cu12等)
Downloading https://download.pytorch.org/whl/cu129/torch-2.8.0%2Bcu129-cp313-cp313-manylinux_2_28_x86_64.whl (1240.3 MB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.2/1.2 GB 1.9 MB/s eta 0:00:00
Successfully installed nvidia-cublas-cu12-12.9.1.4 ... torch-2.8.0+cu129 torchvision-0.23.0+cu129 triton-3.4.0


七、第五步:完整驗證深度學習環境

驗證PyTorch深度學習環境Torch和CUDA還有cuDNN是否正確配置的命令-CSDN博客

驗證代碼示例(python環境):

import torch  # 導入 PyTorch 庫print("PyTorch 版本:", torch.__version__)  # 打印 PyTorch 的版本號# 檢查 CUDA 是否可用,并設置設備("cuda:0" 或 "cpu")
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
print("設備:", device)  # 打印當前使用的設備
print("CUDA 可用:", torch.cuda.is_available())  # 打印 CUDA 是否可用
print("cuDNN 已啟用:", torch.backends.cudnn.enabled)  # 打印 cuDNN 是否已啟用# 打印 PyTorch 支持的 CUDA 和 cuDNN 版本
print("支持的 CUDA 版本:", torch.version.cuda)
print("cuDNN 版本:", torch.backends.cudnn.version())# 創建兩個隨機張量(默認在 CPU 上)
x = torch.rand(5, 3)
y = torch.rand(5, 3)# 將張量移動到指定設備(CPU 或 GPU)
x = x.to(device)
y = y.to(device)# 對張量進行逐元素相加
z = x + y# 打印結果
print("張量 z 的值:")
print(z)  # 輸出張量 z 的內容

7.1 Python交互模式驗證(核心步驟)

  1. 終端進入Python環境:
    (base) love@AI:~$ python
    Python 3.13.5 | packaged by Anaconda, Inc. | (main, Jun 12 2025, 16:09:02) [GCC 11.2.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>>
    
  2. 執行驗證代碼:
    import torch
    # 1. 驗證版本信息
    print("PyTorch 版本:", torch.__version__)  # 輸出“2.8.0+cu129”
    print("支持的 CUDA 版本:", torch.version.cuda)  # 輸出“12.9”(向下兼容CUDA13.0)
    print("cuDNN 版本:", torch.backends.cudnn.version())  # 輸出“91204”(對應cuDNN9.12)# 2. 驗證GPU可用性
    print("CUDA 可用:", torch.cuda.is_available())  # 輸出“True”
    print("cuDNN 已啟用:", torch.backends.cudnn.enabled)  # 輸出“True”
    device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
    print("當前設備:", device)  # 輸出“cuda:0”
    print("GPU 設備名:", torch.cuda.get_device_name(0))  # 輸出GPU型號(如“NVIDIA GeForce RTX 4090”)# 3. 驗證GPU張量運算(核心功能驗證)
    x = torch.rand(5, 3).to(device)  # 創建隨機張量并轉移到GPU
    y = torch.rand(5, 3).to(device)
    z = x + y  # GPU上執行張量相加
    print("GPU 張量運算結果:\n", z)
    
  3. 預期輸出(示例):
    PyTorch 版本: 2.8.0+cu129
    支持的 CUDA 版本: 12.9
    cuDNN 版本: 91204
    CUDA 可用: True
    cuDNN 已啟用: True
    當前設備: cuda:0
    GPU 設備名: NVIDIA GeForce RTX 4090
    GPU 張量運算結果:tensor([[1.0225, 1.4994, 1.9415],[0.8256, 1.4385, 1.3833],[0.8874, 0.4490, 1.1313],[1.4452, 0.3707, 1.2173],[0.8632, 1.1795, 1.0678]], device='cuda:0')
    

7.2 額外驗證(可選,確保編譯功能)

  1. 驗證CUDA編譯器:
    nvcc --version  # 確認CUDA編譯器正常,支持本地編譯
    
  2. 驗證conda環境與系統CUDA協同:
    echo $CUDA_HOME  # 輸出“/usr/local/cuda-13.0”,確認環境變量生效
    echo $LD_LIBRARY_PATH | grep $CONDA_PREFIX/lib  # 確認conda的cuDNN路徑被識別
    


八、注意事項與常見問題

  1. 版本兼容性
    • 確保cuDNN版本(9.12)與CUDA13.0匹配,可通過NVIDIA cuDNN兼容性表查詢;
    • Python版本推薦3.9~3.13,避免過高版本導致依賴包不兼容。
  2. 網絡問題
    • 若conda/pip下載緩慢,配置國內鏡像(如清華conda鏡像:conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/nvidia/);
    • 若CUDA源無法訪問,替換為中科大CUDA源:sudo sed -i 's/developer.download.nvidia.com/mirrors.ustc.edu.cn\/nvidia-cuda/' /etc/apt/sources.list.d/cuda.list
  3. 編譯報錯處理
    • 若報錯“nvcc not found”,重新執行source ~/.bashrc
    • 若報錯“libcudnn.so not found”,激活conda環境(conda activate cuda13_env)并執行export LD_LIBRARY_PATH=$CONDA_PREFIX/lib:$LD_LIBRARY_PATH


九、結語

本文完成WSL2-Ubuntu中Anaconda→CUDA13.0→cuDNN9.12→PyTorch的完整部署,通過實操日志和多維度驗證,確保環境支持本地CUDA編譯與GPU加速深度學習任務。后續可基于此環境安裝依賴CUDA的自定義軟件包(如深度學習框架插件、自定義算子),直接用于模型訓練與推理開發。



參考鏈接匯總

  1. Anaconda安裝:https://aicity.blog.csdn.net/article/details/144737143?spm=1011.2415.3001.10575&sharefrom=mp_manage_link
  2. CUDA13.0安裝:https://aicity.blog.csdn.net/article/details/144735570?spm=1011.2415.3001.10575&sharefrom=mp_manage_link;
  3. 官方指引:https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=WSL-Ubuntu&target_version=2.0&target_type=deb_network
  4. cuDNN9.12安裝:https://aicity.blog.csdn.net/article/details/144734627?spm=1011.2415.3001.10575&sharefrom=mp_manage_link
  5. 網絡代理配置:https://blog.csdn.net/u014451778/article/details/146073726?sharetype=blog&shareId=146073726&sharerefer=APP&sharesource=u014451778&sharefrom=link
  6. CUDA Toolkit場景說明:https://aicity.blog.csdn.net/article/details/148660071?spm=1011.2415.3001.10575&sharefrom=mp_manage_link
  7. PyTorch下載源:https://download.pytorch.org/whl/cu129

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

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

相關文章

OpenFOAM中梯度場的復用(caching)和生命期管理

文章目錄OpenFOAM中梯度場的復用(caching)和生命期管理一、緩存機制的目標二、如何實現緩存(以 fvc::grad 為例)1. 使用 IOobject::AUTO_WRITE 和注冊名2. 示例:fvc::grad 的緩存實現(簡化邏輯)三、生命期管理是如何實…

【Hot100】貪心算法

系列文章目錄 【Hot100】二分查找 文章目錄系列文章目錄方法論Hot100 之貪心算法121. 買賣股票的最佳時機55. 跳躍游戲45. 跳躍游戲 II763. 劃分字母區間方法論 Hot100 之貪心算法 121. 買賣股票的最佳時機 121. 買賣股票的最佳時機:給定一個數組 prices &#…

電子電氣架構 --- 軟件項目復雜性的駕馭思路

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 做到欲望極簡,了解自己的真實欲望,不受外在潮流的影響,不盲從,不跟風。把自己的精力全部用在自己。一是去掉多余,凡事找規律,基礎是誠信;二是…

SSE實時通信與前端聯調實戰

1.SSE 原理機制 sse 類似websocket,但是sse是單向的,不可逆的,只能服務端向客戶端發送數據流 2.解決跨域問題 Access to XMLHttpRequest at http://127.0.0.1:8090/sse/doChat from origin http://127.0.0.1:3000 has been blocked by CORS policy: Re…

從傳統到創新:用報表插件重塑數據分析平臺

一、傳統 BI 平臺面臨的挑戰 在當今數字化時代,數據已成為企業決策的重要依據。傳統的商業智能(BI)平臺在數據處理和分析方面發揮了重要作用,但隨著數據量的爆炸式增長和用戶需求的日益多樣化,其局限性也逐漸顯現。 …

MySQL--MySQL中的DECIMAL 與 Java中的BigDecimal

1. 為什么需要 DECIMAL在數據庫中,常見的數值類型有:INT、BIGINT → 整數,存儲容量有限。FLOAT、DOUBLE → 浮點數,存儲效率高,但存在精度丟失問題。DECIMAL(M, D) → 定點數,存儲精確值。例子:…

低空無人機系統關鍵技術與應用前景:SmartMediaKit視頻鏈路的基石價值

引言:低空經濟的新興格局 低空經濟作為“新質生產力”的代表,正在從政策驅動、技術突破和市場需求的共振中走向產業化。2023年,中國低空經濟的市場規模已超過 5000 億元人民幣,同比增長超過 30%。無人機(UAV&#xff…

在Windows系統上升級Node.js和npm

在Windows系統上升級Node.js和npm,我推薦以下幾種方法: 方法1:使用官網安裝包(最簡單) 訪問 nodejs.org 下載Windows安裝包(.msi文件) 運行安裝包,選擇"修復"或直接安裝新…

【Jetson】基于llama.cpp部署gpt-oss-20b(推理與GUI交互)

前言 本文在jetson設備上使用llama.cpp完成gpt-oss 20b的部署,包括后端推理和GUI的可視化交互。 使用的設備為orin nx 16g(super),這個顯存大小推理20b的模型完全沒有問題。 使用硬件如下,支持開啟super模式。&#…

Matplotlib 可視化大師系列(一):plt.plot() - 繪制折線圖的利刃

目錄Matplotlib 可視化大師系列博客總覽Matplotlib 可視化大師系列(一):plt.plot() - 繪制折線圖的利刃一、 plt.plot() 是什么?二、 函數原型與核心參數核心參數詳解三、 從入門到精通:代碼示例示例 1:最基…

第二階段Winfrom-8:特性和反射,加密和解密,單例模式

1_預處理指令 (1)源代碼指定了程序的定義,預處理指令(preprocessor directive)指示編譯器如何處理源代碼。例如,在某些情況下,我們希望編譯器能夠忽略一部分代碼,而在其他情況下&am…

【開題答辯全過程】以 微信小程序的醫院掛號預約系統為例,包含答辯的問題和答案

個人簡介一名14年經驗的資深畢設內行人,語言擅長Java、php、微信小程序、Python、Golang、安卓Android等開發項目包括大數據、深度學習、網站、小程序、安卓、算法。平常會做一些項目定制化開發、代碼講解、答辯教學、文檔編寫、也懂一些降重方面的技巧。感謝大家的…

鴻蒙ArkUI 基礎篇-06-組件基礎語法-Column/Row/Text

目錄 掌握組件寫法,使用組件布局界面 ArkUI與組件 先布局再內容 DevEco Studio代碼實戰 預覽效果 總結 練習 掌握組件寫法,使用組件布局界面 ArkUI與組件 ArkUI(方舟開發框架):構建 鴻蒙 應用 界面 的框架 組件…

8.27 網格memo

lc329計算矩陣中最長遞增路徑長度嘗試從矩陣每個位置出發,int dfs() 往上下左右四個方向找嚴格遞增的路徑retmax(ret,dfs(x,y)1);return memo[i][j]ret;返回所有路徑里的最長長度 class Solution {public:int dx[4]{0,0,1,-1};int dy[4]{1,-1,0,0};int m,n;vector&l…

flume監控文件寫入 Kafka 實戰:解耦應用與消息隊列的最佳實踐

flume監控文件寫入 Kafka 實戰:解耦應用與消息隊列的最佳實踐 在日志采集場景中,直接讓應用程序通過 log4j2 寫入 Kafka 會導致應用與 Kafka 強耦合(如 Kafka 故障可能影響應用運行)。更優的方案是:應用程序將日志寫入…

從瀏覽器無法訪問到Docker容器的 FastAPI 服務地址【宿主機瀏覽器和容器不在同一個網絡層面:端口映射】

文章目錄1. 問題根源:Docker 網絡模型2. 解決方案:端口映射(Port Mapping)方法 1:重新運行容器并添加端口映射(推薦)方法 2:獲取宿主機的 IP 進行訪問(特定情況&#xff…

線性代數中矩陣等價與離散數學中關系的閉包之間的關聯

最近在重溫線性代數時,學到矩陣的等價的定義及其性質,發現其性質與離散數學中關系的閉包所要滿足的性質非常相似,不由的讓人不懷疑這二者之間存在某種關聯,從而引發以下的思考:從deepseek的回答中我明白了矩陣的等價其…

從MyJUnit反思Java項目的工程實踐(版本控制篇)

從 MyJUnit 反思Java項目的工程實踐(版本控制篇) 參考資料 deepseekgithub copilotCSDN-Git代碼管理工作流程:GitFlow詳解Conventional Commits手冊封面來自 qwen-image 遵循 git flow 分支管理模型 Git Flow 是一種圍繞項目發布的核心分支模型, 它規定了不同的開發…

小工具推薦

小工具 ? 平時不太喜歡去搜羅一些好用的工具,但是看到自己感興趣的還是會記下來,有的是github上的開源項目,有的是一些直接在線的工具。主要是除了工作時間也不知道去干點什么,或者是和朋友玩玩游戲,或者是city walk…

【js】加密庫sha.js 嚴重漏洞速查

前言sha.js 是 JavaScript 生態里最常用的輕量級加密庫。它由 Browserify 社區維護,體積不足 20 KB,卻實現了 SHA-1、SHA-224、SHA-256、SHA-384、SHA-512 全系列算法,是 crypto-browserify、webpack、web3.js 等數百個流行包的“根依賴”。而…