Yoru Karu Studio

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

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.

01-4. Context Switch 詳解 ⏱️ 閱讀時間: 12 分鐘 🎯 難度: ⭐⭐⭐ (中等) 🎯 本篇重點 理解 Context Switch(上下文切換)的原理、成本以及為什麼它很昂貴。 🤔 什麼是 Context Switch? 一句話解釋: Context Switch 是作業系統將 CPU 從一個 Process 切換到另一個 Process 的過程,需要保存當前 Process 的狀態並載入新 Process 的狀態。 🎭 用演員換場來比喻 舞台 = CPU 舞台上正在演出: 演員 A(Process A)正在表演 ↓ 導演(作業系統): "換人!" ↓ 1. 記錄演員 A 的進度(保存 Context) 2. 演員 A 下台(Process A 離開 CPU) 3. 演員 B 上台(Process B 獲得 CPU) 4. 恢復演員 B 的進度(載入 Context) ↓ 演員 B 繼續表演(Process B 執行)這整個過程就是 Context Switch!
0%