【深度學習-Day 5】Python 快速入門:深度學習的“瑞士軍刀”實戰指南

Langchain系列文章目錄

01-玩轉LangChain:從模型調用到Prompt模板與輸出解析的完整指南
02-玩轉 LangChain Memory 模塊:四種記憶類型詳解及應用場景全覆蓋
03-全面掌握 LangChain:從核心鏈條構建到動態任務分配的實戰指南
04-玩轉 LangChain:從文檔加載到高效問答系統構建的全程實戰
05-玩轉 LangChain:深度評估問答系統的三種高效方法(示例生成、手動評估與LLM輔助評估)
06-從 0 到 1 掌握 LangChain Agents:自定義工具 + LLM 打造智能工作流!
07-【深度解析】從GPT-1到GPT-4:ChatGPT背后的核心原理全揭秘
08-【萬字長文】MCP深度解析:打通AI與世界的“USB-C”,模型上下文協議原理、實踐與未來

Python系列文章目錄

PyTorch系列文章目錄

機器學習系列文章目錄

深度學習系列文章目錄

Java系列文章目錄

JavaScript系列文章目錄

深度學習系列文章目錄

01-【深度學習-Day 1】為什么深度學習是未來?一探究竟AI、ML、DL關系與應用
02-【深度學習-Day 2】圖解線性代數:從標量到張量,理解深度學習的數據表示與運算
03-【深度學習-Day 3】搞懂微積分關鍵:導數、偏導數、鏈式法則與梯度詳解
04-【深度學習-Day 4】掌握深度學習的“概率”視角:基礎概念與應用解析
05-【深度學習-Day 5】Python 快速入門:深度學習的“瑞士軍刀”實戰指南


文章目錄

  • Langchain系列文章目錄
  • Python系列文章目錄
  • PyTorch系列文章目錄
  • 機器學習系列文章目錄
  • 深度學習系列文章目錄
  • Java系列文章目錄
  • JavaScript系列文章目錄
  • 深度學習系列文章目錄
  • 前言
  • 一、為何選擇 Python 進行深度學習?
    • 1.1 強大的生態系統:事半功倍的利器
    • 1.2 簡潔易學的語法:降低入門門檻
    • 1.3 活躍的社區支持:問題不再是攔路虎
  • 二、搭建你的 Python 開發環境
    • 2.1 Anaconda/Miniconda:一站式解決方案
      • 2.1.1 什么是 Anaconda/Miniconda?
      • 2.1.2 安裝步驟
      • 2.1.3 創建虛擬環境(強烈推薦)
    • 2.2 選擇你的 IDE/編輯器
      • 2.2.1 Jupyter Notebook/Lab:交互式探索利器
      • 2.2.2 VS Code:全功能開發環境
      • 2.2.3 如何選擇?
  • 三、Python 核心語法快速回顧
    • 3.1 基本數據類型與操作
      • 3.1.1 數字(Number)
      • 3.1.2 字符串 (str)
      • 3.1.3 列表 (List)
      • 3.1.4 元組 (Tuple)
      • 3.1.5 字典 (Dictionary)
      • 3.1.6 集合 (Set)
    • 3.2 控制流語句
      • 3.2.1 條件判斷 (if/elif/else)
      • 3.2.2 循環 (for/while)
    • 3.3 函數的定義與使用
      • 3.3.1 為何使用函數?
      • 3.3.2 函數定義 (`def`)
      • 3.3.3 函數調用
  • 四、實戰演練:編寫第一個 Python 腳本
    • 4.1 任務:簡單的數據處理與計算
    • 4.2 代碼實現
    • 4.3 運行與調試
  • 五、常見問題與學習建議
    • 5.1 環境配置常見問題
    • 5.2 學習資源推薦
    • 5.3 實踐的重要性
  • 六、總結


前言

歡迎來到深度學習系列的第五天!在之前的文章中,我們已經探討了深度學習的基本概念和所需的數學基礎。今天,我們將聚焦于實現這一切的強大工具——Python 編程語言。Python 因其簡潔的語法、龐大的庫生態和活躍的社區,已成為數據科學和深度學習領域的首選語言,被譽為該領域的“瑞士軍刀”。無論你是編程新手,還是希望系統了解 Python 在深度學習中應用的開發者,本文都將為你提供一個清晰、實用的快速入門指南,為你后續學習 TensorFlow、PyTorch 等深度學習框架掃清障礙。

一、為何選擇 Python 進行深度學習?

在我們深入學習 Python 語法之前,先來理解為什么 Python 在深度學習領域如此受歡迎。

1.1 強大的生態系統:事半功倍的利器

Python 擁有一個極其豐富的第三方庫生態系統,專門為科學計算、數據分析和機器學習而設計:

  • NumPy: 提供高效的多維數組(ndarray)對象和相關運算,是科學計算的基礎。
  • Pandas: 構建在 NumPy 之上,提供強大的數據結構(如 DataFrame)和數據分析工具,便于數據清洗、處理和探索。
  • Matplotlib & Seaborn: 用于數據可視化,能夠繪制各種靜態、動態、交互式的圖表。
  • Scikit-learn: 經典的機器學習庫,包含了大量的機器學習算法、預處理工具和評估指標。
  • TensorFlow & PyTorch: 兩大主流深度學習框架,提供了構建、訓練和部署神經網絡所需的核心功能,如自動求導、GPU 加速等。

這些庫極大地簡化了開發流程,讓研究人員和工程師能夠專注于模型設計和實驗,而非底層實現細節。

1.2 簡潔易學的語法:降低入門門檻

相較于 C++ 或 Java 等語言,Python 的語法更加簡潔、直觀,接近自然語言,使得:

  • 學習曲線平緩: 初學者能夠更快地掌握基本語法并開始編寫代碼。
  • 代碼可讀性高: 清晰的代碼結構便于理解、維護和協作。
  • 開發效率高: 用更少的代碼行數完成相同的功能。

這使得研究人員可以快速將算法思想轉化為可執行代碼,加速研究迭代。

1.3 活躍的社區支持:問題不再是攔路虎

Python 擁有全球最大、最活躍的開發者社區之一。這意味著:

  • 豐富的學習資源: 大量的教程、文檔、書籍、在線課程和開源項目可供學習。
  • 快速的問題解決: 在 Stack Overflow、GitHub 等平臺上,你可以輕松找到問題的答案或獲得社區的幫助。
  • 持續的技術創新: 社區不斷貢獻新的庫和工具,推動著 Python 在 AI 領域的發展。

二、搭建你的 Python 開發環境

工欲善其事,必先利其器。一個穩定、易用的開發環境是學習 Python 的第一步。

2.1 Anaconda/Miniconda:一站式解決方案

Anaconda 是一個包含了 Python 解釋器、常用科學計算庫以及強大的包管理和環境管理工具 (Conda) 的發行版。Miniconda 是 Anaconda 的精簡版,只包含 Python 和 Conda,其他庫需要自行安裝。對于深度學習開發,強烈推薦使用 Anaconda 或 Miniconda。

2.1.1 什么是 Anaconda/Miniconda?

  • 包管理器 (Conda): 可以方便地安裝、更新、卸載 Python 庫(包括非 Python 依賴),避免版本沖突。
  • 環境管理器 (Conda): 允許你為不同的項目創建隔離的 Python 環境。這一點至關重要,因為不同的項目可能依賴不同版本的庫(例如,一個項目用 TensorFlow 1.x,另一個用 TensorFlow 2.x)。

2.1.2 安裝步驟

  1. 訪問 Anaconda 官網 或 Miniconda 官網。
  2. 根據你的操作系統(Windows/macOS/Linux)下載對應的安裝包。
  3. 按照安裝向導進行安裝。建議勾選“將 Anaconda 添加到系統 PATH 環境變量”(或在安裝后手動添加),以便在終端/命令行中直接使用 conda 命令。

2.1.3 創建虛擬環境(強烈推薦)

安裝完成后,打開你的終端(Windows 用戶推薦 Anaconda Prompt 或 PowerShell),使用以下命令創建一個新的虛擬環境(例如,命名為 dl_env,并指定 Python 版本為 3.9):

conda create -n dl_env python=3.9

創建完成后,激活該環境:

  • Windows: conda activate dl_env
  • macOS/Linux: source activate dl_envconda activate dl_env

之后,你在這個環境中安裝的所有庫都將與系統默認的 Python 環境或其他虛擬環境隔離。后續的深度學習庫(如 TensorFlow, PyTorch)都應安裝在此環境中:

# 示例:安裝 numpy
pip install numpy
# 或使用 conda 安裝
# conda install numpy

提示: 退出當前環境使用 conda deactivate

2.2 選擇你的 IDE/編輯器

編寫和運行 Python 代碼需要一個集成開發環境(IDE)或代碼編輯器。以下是兩個流行的選擇:

2.2.1 Jupyter Notebook/Lab:交互式探索利器

  • 特點: 基于 Web 的交互式計算環境,可以將代碼、文本(Markdown)、公式(LaTeX)、可視化結果整合在一個文檔(.ipynb)中。特別適合數據探索、教學演示和快速原型驗證。
  • 啟動: 在激活了虛擬環境的終端中輸入 jupyter notebookjupyter lab
  • 優點: 交互性強,結果即時可見,便于分享。
  • 缺點: 對于大型項目管理、復雜調試支持相對較弱。
開始
數據探索/教學?
Jupyter Notebook/Lab
需要復雜調試/項目管理?
VS Code + Python 插件
其他選擇 Pycharm/Sublime Text...
結束

2.2.2 VS Code:全功能開發環境

  • 特點: 輕量級但功能強大的代碼編輯器,通過安裝擴展(如 Python 官方擴展)可以獲得語法高亮、智能提示、代碼調試、版本控制(Git)等全方位支持。
  • 優點: 功能全面,擴展性強,適用于從小型腳本到大型項目的各種開發需求,調試功能強大。
  • 缺點: 相較于 Jupyter,交互式探索可能不夠直觀(但可以通過 Jupyter 插件彌補)。

2.2.3 如何選擇?

  • 初學者/數據探索: 建議從 Jupyter Notebook/Lab 開始,體驗交互式編程。
  • 項目開發/工程實踐: VS Code 是更通用的選擇,提供了更完善的開發和調試工具鏈。
  • 實際: 很多開發者會同時使用兩者,根據不同任務場景切換。

三、Python 核心語法快速回顧

掌握以下核心語法是使用 Python 進行深度學習的基礎。

3.1 基本數據類型與操作

Python 有多種內置的數據類型,以下是深度學習中最常用的幾種:

3.1.1 數字(Number)

  • 整數 (int):10, -5, 0
  • 浮點數 (float):3.14, -0.5, 2.7e-4 (科學計數法 2.7 × 1 0 ? 4 2.7 \times 10^{-4} 2.7×10?4)。
# 數字示例
age = 25       # 整數
price = 99.9   # 浮點數
learning_rate = 1e-3 # 浮點數 (0.001)# 基本運算
sum_val = age + 5
product = price * 2
print(f"Sum: {sum_val}, Product: {product}") # 使用 f-string 格式化輸出

3.1.2 字符串 (str)

  • 用于表示文本數據,使用單引號 '...' 或雙引號 "..." 包裹。
# 字符串示例
message = "Hello, Deep Learning!"
framework = 'PyTorch'# 字符串拼接
full_message = message + " Let's use " + framework + "."
print(full_message)# 常用方法
print(message.lower()) # 轉小寫: "hello, deep learning!"
print(len(message))    # 獲取長度: 21

3.1.3 列表 (List)

  • 有序、可變的元素序列,用方括號 [...] 定義,元素可以是不同類型。
# 列表示例
layers = ['input', 'hidden1', 'hidden2', 'output']
params = [128, 64, 0.01, 'relu'] # 元素類型可不同# 訪問元素 (索引從 0 開始)
first_layer = layers[0] # 'input'
last_layer = layers[-1] # 'output' (負數索引表示從末尾開始)
print(f"First layer: {first_layer}, Last layer: {last_layer}")# 修改元素
layers[1] = 'dense_1'
print(f"Updated layers: {layers}")# 添加元素
layers.append('softmax')
print(f"After append: {layers}")# 切片 (Slicing) [start:stop:step]
hidden_layers = layers[1:3] # 獲取索引 1 到 2 (不包含 3) 的元素: ['dense_1', 'hidden2']
print(f"Hidden layers: {hidden_layers}")

3.1.4 元組 (Tuple)

  • 有序、不可變的元素序列,用圓括號 (...) 定義。一旦創建,其元素不能被修改、添加或刪除。
# 元組示例
input_shape = (28, 28, 1) # 常用于表示維度、坐標等固定信息# 訪問元素 (同列表)
height = input_shape[0]
print(f"Image height: {height}")# 嘗試修改會報錯 TypeError
# input_shape[0] = 32

3.1.5 字典 (Dictionary)

  • 無序(Python 3.7+ 為有序)的鍵值對(key-value pairs)集合,用花括號 {...} 定義。鍵必須是唯一的、不可變的對象(通常是字符串或數字)。
# 字典示例
hyperparameters = {"learning_rate": 0.001,"batch_size": 32,"optimizer": "Adam","epochs": 10
}# 訪問值 (通過鍵)
lr = hyperparameters["learning_rate"] # 0.001
print(f"Learning Rate: {lr}")# 修改值
hyperparameters["epochs"] = 20
print(f"Updated hyperparameters: {hyperparameters}")# 添加新鍵值對
hyperparameters["loss_function"] = "CrossEntropy"
print(f"Added loss: {hyperparameters}")# 獲取所有鍵或值
print(f"Keys: {hyperparameters.keys()}")
print(f"Values: {hyperparameters.values()}")

3.1.6 集合 (Set)

  • 無序、不重復的元素集合,用花括號 {...} 定義,或者使用 set() 函數。常用于去重或成員測試。
# 集合示例
unique_activations = {'relu', 'sigmoid', 'tanh', 'relu'} # 重復的 'relu' 會被自動去除
print(f"Unique activations: {unique_activations}") # 輸出可能是 {'tanh', 'relu', 'sigmoid'} 順序不定# 成員測試 (速度快)
has_relu = 'relu' in unique_activations
print(f"Has relu? {has_relu}") # True

3.2 控制流語句

控制流語句用于決定代碼的執行順序。

3.2.1 條件判斷 (if/elif/else)

根據條件的真假執行不同的代碼塊。

# 條件判斷示例
accuracy = 0.95if accuracy > 0.9:print("Model performance is Good!")
elif accuracy > 0.7: # elif 是 else if 的縮寫print("Model performance is Acceptable.")
else:print("Model needs improvement.")

3.2.2 循環 (for/while)

  • for 循環: 用于遍歷序列(如列表、元組、字符串)或其他可迭代對象。
  • while 循環: 當條件為真時,重復執行代碼塊。
# for 循環示例
layers = ['conv1', 'pool1', 'conv2', 'pool2', 'fc']
for layer in layers:print(f"Processing layer: {layer}")# 使用 range() 生成數字序列
for i in range(5): # 遍歷 0, 1, 2, 3, 4print(f"Iteration {i}")# while 循環示例
epoch = 0
max_epochs = 5
while epoch < max_epochs:print(f"Training epoch {epoch + 1}...")# ... 模擬訓練過程 ...epoch += 1 # 更新循環條件,否則會無限循環!
print("Training finished.")

3.3 函數的定義與使用

函數是將一段具有特定功能的代碼組織起來的方式,可以重復調用。

3.3.1 為何使用函數?

  • 模塊化: 將復雜問題分解為更小的、可管理的部分。
  • 代碼復用: 避免重復編寫相同的代碼。
  • 可讀性: 使代碼結構更清晰,易于理解。

3.3.2 函數定義 (def)

使用 def 關鍵字定義函數,可以包含參數和返回值。

# 函數定義示例
def calculate_accuracy(y_true, y_pred):"""計算分類準確率""" # 這是文檔字符串 (docstring),用于解釋函數功能correct_predictions = 0for true_label, pred_label in zip(y_true, y_pred):if true_label == pred_label:correct_predictions += 1accuracy = correct_predictions / len(y_true)return accuracy # 返回計算結果

3.3.3 函數調用

定義函數后,可以通過函數名加括號 () 來調用它,并傳入所需的參數。

# 函數調用示例
true_labels = [1, 0, 1, 1, 0]
predicted_labels = [1, 0, 0, 1, 0]acc = calculate_accuracy(true_labels, predicted_labels)
print(f"Model accuracy: {acc}") # 輸出: Model accuracy: 0.8

四、實戰演練:編寫第一個 Python 腳本

讓我們將所學知識應用到一個簡單的實踐任務中。

4.1 任務:簡單的數據處理與計算

假設我們有一組模型的損失值記錄在一個列表中,我們需要編寫一個 Python 腳本來計算平均損失值。

4.2 代碼實現

創建一個名為 calculate_loss.py 的文件,并將以下代碼粘貼進去:

# calculate_loss.py# 模擬的損失值列表
loss_values = [0.5, 0.4, 0.35, 0.3, 0.28, 0.25]def calculate_average_loss(losses):"""計算列表中數值的平均值"""if not losses: # 處理空列表的情況return 0.0total_loss = sum(losses) # 使用內置 sum() 函數計算總和average_loss = total_loss / len(losses)return average_loss# 主程序部分
if __name__ == "__main__":# 調用函數計算平均損失avg_loss = calculate_average_loss(loss_values)# 打印結果print(f"Loss values: {loss_values}")print(f"Number of recorded losses: {len(loss_values)}")# 使用 :.4f 格式化浮點數,保留4位小數print(f"Average loss: {avg_loss:.4f}")# `if __name__ == "__main__":` 確保這部分代碼只在腳本直接運行時執行,
# 而在被其他腳本導入時不會執行。這是 Python 腳本的常用結構。

4.3 運行與調試

  1. 保存文件: 將上述代碼保存為 calculate_loss.py

  2. 打開終端: 確保你已經激活了之前創建的 dl_env 虛擬環境 (conda activate dl_env)。

  3. 導航到目錄: 使用 cd 命令切換到 calculate_loss.py 文件所在的目錄。

  4. 運行腳本: 在終端中輸入以下命令:

    python calculate_loss.py
    
  5. 查看輸出: 你應該會看到類似以下的輸出:

    Loss values: [0.5, 0.4, 0.35, 0.3, 0.28, 0.25]
    Number of recorded losses: 6
    Average loss: 0.3467
    

調試提示: 如果代碼出錯,Python 解釋器會打印錯誤信息(Traceback),仔細閱讀錯誤信息通常能幫助定位問題。在 VS Code 中,你可以設置斷點并使用調試器逐行執行代碼,檢查變量的值。

五、常見問題與學習建議

5.1 環境配置常見問題

  • condapython 命令找不到: 通常是環境變量(PATH)未正確配置。檢查 Anaconda/Miniconda 安裝選項或手動添加路徑。
  • 庫安裝沖突: 不同庫可能依賴同一庫的不同版本。使用 Conda 虛擬環境是解決此問題的最佳實踐。優先使用 conda install,如果 Conda 源沒有該庫,再嘗試 pip install
  • 網絡問題: 在國內安裝庫有時會遇到網絡超時。可以考慮更換 Conda 和 Pip 的軟件源為國內鏡像(如清華源、阿里源等)。

5.2 學習資源推薦

  • Python 官方文檔: https://docs.python.org/3/ (權威且全面)
  • 廖雪峰的 Python 教程: https://www.liaoxuefeng.com/wiki/1016959663602400 (適合中文讀者入門)
  • 菜鳥教程 - Python3 教程: https://www.runoob.com/python3/python3-tutorial.html (快速查閱語法)
  • 在線編程平臺: LeetCode, HackerRank 等(通過練習鞏固知識)

5.3 實踐的重要性

學習編程最有效的方法就是動手實踐。不要害怕寫代碼,嘗試修改示例代碼,解決小問題,逐步積累經驗。遇到問題時,學會搜索、閱讀文檔和提問。

六、總結

恭喜你完成了 Python 快速入門的學習!掌握 Python 是開啟深度學習大門的關鍵一步。本文核心內容回顧:

  1. Python 的優勢: 強大的生態(NumPy, Pandas, DL 框架)、簡潔的語法和活躍的社區使其成為深度學習的首選語言。
  2. 環境搭建: 推薦使用 Anaconda/Miniconda 進行包管理和環境管理,創建獨立的虛擬環境是最佳實踐。Jupyter Notebook/Lab 和 VS Code 是常用的開發工具。
  3. 核心語法: 掌握了基本數據類型(數字、字符串、列表、元組、字典、集合)、控制流(if/elif/else, for/while)和函數(定義 def, 調用)是編寫 Python 程序的基礎。
  4. 實踐演練: 通過一個計算平均損失的簡單腳本,實踐了變量、列表、函數和腳本基本結構。
  5. 持續學習: 環境配置是初學者常見難點,善用資源和社區,最重要的是堅持動手實踐。

在接下來的文章中,我們將深入學習 NumPy、Pandas 等核心庫,它們是使用 Python 進行高效數據處理和深度學習計算的基石。準備好迎接更多挑戰吧!


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

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

相關文章

解決在 Linux 中 WPS 字體缺失問題

解決在 Linux 中 WPS 字體缺失問題 安裝方式 安裝方式 首先下載你所需要的字體文件 在字體文件所在的目錄下右鍵點擊在命令行中打開 或 Open in Terminal sudo mkdir /usr/share/fonts/myfontssudo cp ./* /usr/share/fonts/myfonts執行命令&#xff0c;更新字體緩存 sudo fc…

668SJBH報刊發行系統

1 前言 隨著我國信息產業的迅猛發展&#xff0c;手工管理方式已不適應社務管理的要求&#xff0c;報社的日常管理正面臨著信息化的挑戰&#xff0c;采用計算機管理以提高服務質量和管理水平勢在必行。發行管理是社務管理的一個重要組成部分&#xff0c;是報社和客戶聯系的紐帶…

K8S - 從零構建 Docker 鏡像與容器

一、基礎概念 1.1 鏡像&#xff08;Image&#xff09; “軟件的標準化安裝包” &#xff0c;包含代碼、環境和配置的只讀模板。 技術解析 鏡像由多個層組成&#xff0c;每層對應一個Dockerfile指令&#xff1a; 應用代碼 → 運行時環境 → 系統工具鏈 → 啟動配置核心特性…

better_fbx 下載

目錄 v6.0.5下載&#xff1a; better_fbx 下載 v6.0.5下載&#xff1a; Blender FBX模型導入導出插件 Better FBX Importer & Exporter V6.0.5V5.4.10 For Blender 2.8 | 齲齒一號GFXCamp better_fbx 下載 How To Install Launch Blender, navigate to Edit->User P…

Spring AOP 典型應用場景

AOP 典型應用場景 1. 日志記錄&#xff08;Logging&#xff09;代碼實現 2. 權限校驗&#xff08;Authentication&#xff09;代碼實現 3. 性能監控&#xff08;Performance Monitoring&#xff09;代碼實現 4. 緩存處理&#xff08;Caching&#xff09;代碼實現 5. 重試機制&a…

開始一個vue項目-day2

這次新增的功能有&#xff1a; 1、使用cookie存儲token 參考網站:https://vueuse.org/ 安裝包&#xff1a; npm i vueuse/integrations npm i universal-cookie^7 2、cookie的設置讀取和刪除&#xff0c;代碼&#xff1a;composables/auth.js import { useCookies } from …

「Mac暢玩AIGC與多模態18」開發篇14 - 多字段輸出與結構控制工作流示例

一、概述 本篇在輸入變量基礎上,演示如何通過執行 LLM 節點輸出多個結構化字段,并傳遞至結束節點。開發人員將掌握如何配置結構化輸出格式,實現提示詞與字段的準確映射,為后續引入條件判斷、循環結構等邏輯控制建立結構輸出規范基礎。 二、環境準備 macOS 系統Dify 平臺已…

JWT解析

什么是JWT JSON Web Token &#xff08;JWT&#xff09; 是一種開放標準 &#xff08;RFC 7519&#xff09;&#xff0c;它定義了一種緊湊且獨立的方式&#xff0c;用于在各方之間以 JSON 對象的形式安全地傳輸信息。此信息可以驗證和信任&#xff0c;因為它是經過數字簽名的。…

C語言中的自定義類型 —— 結構體.位段.聯合體和枚舉

自定義類型 1. 前言2. 結構體2.1 結構體的聲明2.2 結構體變量的定義和初始化2.3 結構體的特殊聲明2.4 結構體的自引用2.5 結構體的內存對齊2.6 修改默認對齊數2.7 結構體傳參 3. 位段4. 聯合體5. 枚舉6. 結言 1. 前言 在C語言中已經為用過戶提供了內置類型&#xff0c;如&…

StarRocks 查詢優化器深度解析

StarRocks 查詢優化器概覽 1. Development History of StarRocks 過去五年&#xff0c;StarRocks 發布了三個大版本&#xff1a; StarRocks 1.0&#xff1a;通過向量化引擎和 CBO&#xff0c;打造極速 OLAP 數據庫。 StarRocks 2.0&#xff1a;通過主鍵模型、數據湖分析和查詢…

如何提高情商?(優化版)

引言 提高情商&#xff08;EQ&#xff09;是一個需要長期練習和自我反思的過程&#xff0c;核心在于理解自己、管理情緒、共情他人并有效溝通。以下是一些具體且可操作的方法&#xff0c;結合理論和實際場景&#xff0c;幫助你逐步提升&#xff1a; 一、核心方法&#xff1a;…

Python爬蟲實戰:獲取好大夫在線各專業全國醫院排行榜數據并分析,為患者就醫做參考

一、引言 在當今醫療資源豐富但分布不均的背景下,患者在選擇合適的心血管內科醫院時面臨諸多困難。好大夫在線提供的醫院排行榜數據包含了醫院排名、線上服務得分、患者評價得分等重要信息,對患者選擇醫院具有重要的參考價值。本研究通過爬取該排行榜數據,并進行深入分析,…

【AI面試準備】電商購物車AI測試設計與實施

面試題&#xff1a;案例實踐&#xff1a; 為電商購物車設計AI測試&#xff1a;通過用戶行為日志訓練點擊路徑預測模型&#xff0c;動態生成邊界條件測試用例。 為了順利通過面試&#xff0c;回答應結構清晰、技術深入&#xff0c;并突出實際應用與創新。以下為分步解答&#…

Java 中使用 Callable 創建線程的方法

一、Callable 接口概述? Callable接口位于java.util.concurrent包中&#xff0c;與Runnable接口類似&#xff0c;同樣用于定義線程執行的任務&#xff0c;但它具有以下獨特特性&#xff1a;? 支持返回值&#xff1a;Callable接口聲明了一個call()方法&#xff0c;該方法會在…

2025-SMS短信驗證服務或存風險,小心賬號隱私“失守”

近期&#xff0c;火絨安全情報中心監測到一款偽裝成具備SMS短信驗證碼接收服務的程序。該程序通過部署持久化后門&#xff08;即僵尸網絡節點&#xff09;竊取敏感信息。火絨安全提醒廣大用戶務必從官方或可信渠道下載軟件&#xff0c;避免因使用來路不明的程序而導致賬號被盜或…

docker部署Open WebUI下載速度慢解決方法

docker pull ghcr.nju.edu.cn/open-webui/open-webui:main改成這個就可以了

氣泡圖、桑基圖的繪制

1、氣泡圖 使用氣泡圖分析某一年中國同歐洲各國之間的貿易情況。 氣泡圖分析的三個維度&#xff1a; ? 進口額&#xff1a;橫軸 ? 出口額&#xff1a;縱軸 ? 進出口總額&#xff1a;氣泡大小 數據來源&#xff1a;鏈接: 國家統計局數據 數據概覽&#xff08;進出口總額&…

前端面經-VUE3篇(三)--vue Router(二)導航守衛、路由元信息、路由懶加載、動態路由

一、導航守衛 vue Router 中的 導航守衛&#xff08;Navigation Guards&#xff09; 是一個非常重要的功能&#xff0c;用于在路由切換過程中&#xff0c;攔截、控制、檢查或延遲頁面跳轉。 你可以理解為&#xff1a; &#x1f510; “進門前的保安”&#xff0c;控制哪些頁面…

MATLAB實現二氧化硅和硅光纖的單模光波特性與仿真

一.二氧化硅和硅光纖的單模光波特性 利用麥克斯方程的精確解研究二氧化硅和硅亞波長直徑導線的單模光波特性。研究了單模條件、模場。 二氧化硅光纖導線是圓形截面&#xff0c;包層是空氣包層&#xff0c;階梯型變化的折射率&#xff0c;導線線徑D非常小長度足夠長&#xff0…

【Linux系統】第二節—基礎指令(2)

hello ~ 好久不見 自己想要的快樂要自己好好爭取&#xff01; 云邊有個稻草人-個人主頁 Linux—本篇文章所屬專欄—歡迎訂閱—持續更新中 目錄 本節課核心指令知識點總結 本節基本指令詳解 07.man 指令 08.cp 指令 09.mv 指令 10.cat 指令 11.more 指令 12.less 指令 …