Yoru Karu Studio

程式設計學習筆記 | 生活心得

03-3. 數位憑證與 CA ⏱️ 閱讀時間: 12 分鐘 🎯 難度: ⭐⭐ (簡單) 🎯 本篇重點 深入理解數位憑證的結構、CA(憑證機構)的角色、憑證申請流程、信任鏈的運作方式,以及如何處理憑證問題。 🤔 什麼是數位憑證? Digital Certificate(數位憑證) = 網站的「數位身份證」 一句話解釋: 數位憑證就像是身份證,證明「這個網站確實是它所聲稱的網站」,由可信任的第三方(CA)發行和簽章。 🎫 用身份證來比喻數位憑證 身份證(政府發行) 身份證內容: ├─ 姓名:張三 ├─ 生日:1990-01-01 ├─ 身份證號:A123456789 ├─ 照片:📸 └─ 發行機關:內政部 🏛️(政府簽章 ✅) 特性: - 由政府發行(可信任) - 有政府簽章(防偽造) - 過期需要更新 - 用來證明你的身份 驗證: 警察:請出示身份證 你:這是我的身份證 🎫 警察:檢查簽章...✅ 是真的 數位憑證(CA 發行) 數位憑證內容: ├─ 網域名稱:www.google.com ├─ 公鑰:[RSA 2048-bit public key] ├─ 有效期:2024-01-01 to 2025-01-01 ├─ 發行者:Google Trust Services LLC └─ CA 數位簽章:✅ 特性: - 由 CA 發行(可信任) - 有 CA 數位簽章(防偽造) - 過期需要更新 - 用來證明網站的身份 驗證: 瀏覽器:請出示憑證 網站:這是我的憑證 📜 瀏覽器:檢查 CA 簽章.

03-4. HTTPS 握手過程 ⏱️ 閱讀時間: 15 分鐘 🎯 難度: ⭐⭐⭐ (中等) 🎯 本篇重點 深入理解 HTTPS 握手的完整流程、TLS 1.2 和 TLS 1.3 的差異、握手過程中的每個步驟細節,以及如何優化握手效能。 🤔 什麼是 HTTPS 握手? TLS Handshake = 建立安全連線前的「協商過程」 一句話解釋: HTTPS 握手就像是兩個人見面前先確認身份、交換密碼本、約定暗號,確保之後的對話只有彼此能聽懂。 🤝 用見面交換情報來比喻握手 特務接頭 場景:兩個特務要交換機密情報 步驟 1:確認身份(憑證驗證) 特務A:報上名來 特務B:我是特務B,這是我的證件 🎫(憑證) 特務A:檢查證件...✅ 確認是真的 步驟 2:交換密碼本(金鑰交換) 特務A:產生一本密碼本 📖 特務A:用特務B的公開加密箱鎖住密碼本 特務B:用私人鑰匙打開加密箱 → 雙方都有相同的密碼本了 步驟 3:開始加密通訊(對稱加密) 特務A:用密碼本加密情報 特務B:用密碼本解密情報 → 旁人聽不懂 特性: - 確認身份(防止冒充) - 安全交換密碼本(防止竊聽) - 加密通訊(防止洩密) 🔄 完整的 HTTPS 連線流程 概覽 【第 1 步:TCP 三次握手】 建立 TCP 連線(80 毫秒) 【第 2 步:TLS 握手】 建立安全連線(100-200 毫秒) 【第 3 步:HTTP 請求/回應】 加密的 HTTP 通訊 【第 4 步:關閉連線】 TCP 四次揮手 or Keep-Alive 總延遲: TCP (1-RTT) + TLS (1-2 RTT) + HTTP (1-RTT) = 3-4 RTT ≈ 200-400ms 📋 TLS 1.

04-1. WebSocket 基礎概念 ⏱️ 閱讀時間: 10 分鐘 🎯 難度: ⭐⭐ (簡單) 🎯 本篇重點 理解 WebSocket 的基本概念、為什麼需要 WebSocket、WebSocket 的連線建立流程,以及適用場景。 🤔 什麼是 WebSocket? WebSocket = 全雙工、雙向通訊協定 一句話解釋: WebSocket 就像是打電話,雙方可以同時說話、即時對話;而 HTTP 像是寄信,一問一答、有延遲。 📞 用通訊方式來比喻 HTTP = 寄信(一問一答) 你想知道朋友的近況: 步驟 1:你寫信給朋友(HTTP 請求) 「你好嗎?」 → 寄出信件 → 等待...(3 天) 步驟 2:朋友收到信,寫回信(HTTP 回應) 「我很好!」 → 寄回信件 → 等待...(3 天) 步驟 3:你想繼續聊天 「今天天氣如何?」 → 又要寄信 → 又要等待... 特性: - 單向(一次只能一方說話) - 有延遲(要等對方回信) - 重複建立連線(每次都要寄新信) - 開銷大(每封信都有完整的地址、信封) WebSocket = 打電話(即時對話) 你想跟朋友聊天: 步驟 1:撥打電話(建立 WebSocket 連線) 你:喂? 朋友:喂? → 連線建立 ✅ 步驟 2:自由對話(雙向通訊) 你:你好嗎? 朋友:我很好!今天天氣不錯 你:真的嗎?那要不要出去玩? 朋友:好啊! (雙方隨時都能說話,不用等對方說完) 步驟 3:掛電話(關閉連線) 你:那就這樣,再見! 朋友:再見! → 連線關閉 特性: - 全雙工(雙方同時說話) - 即時(沒有延遲) - 持久連線(不用重複建立) - 低開銷(連線建立後,資料傳輸很輕量) 🏗️ WebSocket 在網路模型中的位置 OSI 7 層模型 ┌──────────────────────────────┬─────────────────┐ │ 7.

01-1. Process 是什麼 ⏱️ 閱讀時間: 8 分鐘 🎯 難度: ⭐ (超級簡單) 🤔 一句話解釋 Process(行程/進程)是作業系統中正在執行的程式實例,擁有自己的記憶體空間和系統資源。 🏢 用公司來比喻 程式(Program)= 公司章程 # program.py(公司章程) def work(): print("處理任務...") def sleep(): print("休息中...")這只是一份文件,放在硬碟裡: ❌ 不會自己執行 ❌ 不佔用記憶體 ❌ 沒有員工在工作 Process(行程)= 正在營運的公司 # 啟動程式 → 創建 Process python program.py & # [1] 12345 ← Process ID (PID)當你執行程式時: ✅ 作業系統分配記憶體 ✅ 載入程式碼 ✅ 開始執行指令 ✅ 獲得 Process ID (PID) 💻 Process 的本質 靜態 vs 動態 程式(Program) ├─ 放在硬碟 ├─ 靜態的程式碼 └─ 不消耗資源 Process(行程) ├─ 載入到記憶體 ├─ 正在執行 ├─ 消耗 CPU、記憶體 └─ 有獨立的 PID一個程式可以有多個 Process # 啟動同一個程式 3 次 python server.

01-2. Process 的組成(Code, Data, Stack, Heap) ⏱️ 閱讀時間: 10 分鐘 🎯 難度: ⭐⭐ (簡單) 🎯 本篇重點 理解 Process 在記憶體中的結構:Code(程式碼)、Data(資料)、Stack(堆疊)、Heap(堆積)。 🏢 Process 記憶體結構總覽 Process 記憶體空間(4GB 範例) ┌─────────────────────────────────┐ ← 高位址 (0xFFFFFFFF) │ Kernel Space │ │ (作業系統保留區域) │ ├─────────────────────────────────┤ ← 0xC0000000 │ Stack ⬇️ │ 向下增長 │ (區域變數、函數呼叫) │ │ │ │ ↕️ 空閒空間 ↕️ │ │ │ │ Heap ⬆️ │ 向上增長 │ (動態分配的記憶體) │ ├─────────────────────────────────┤ │ Data │ │ (全域變數、靜態變數) │ ├─────────────────────────────────┤ │ Code │ │ (程式碼指令) │ └─────────────────────────────────┘ ← 低位址 (0x00000000) 📦 四大區域詳解 1.

01-3. Process 的生命週期 ⏱️ 閱讀時間: 10 分鐘 🎯 難度: ⭐⭐ (簡單) 🎯 本篇重點 理解 Process 從創建到終止的完整生命週期:New → Ready → Running → Waiting → Terminated。 🔄 Process 生命週期五態模型 創建 調度器選中 [New] ──→ [Ready] ──────→ [Running] ↑ │ │ │ I/O 請求 │ ↓ └───────── [Waiting] 完成 I/O [Running] │ │ 終止 ↓ [Terminated] 📋 五種狀態詳解 1. New(新建) 定義: Process 正在被創建,尚未準備好執行。 此時作業系統在做: 📝 分配 Process ID (PID) 💾 分配記憶體空間(Code, Data, Stack, Heap) 📋 創建 Process Control Block (PCB) 🔐 設定初始權限和屬性 from multiprocessing import Process import os def worker(): print(f"Worker PID: {os.
0%