Yoru Karu Studio

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

FastAPI 資深後端工程師養成系列 - 完整目錄

📚 FastAPI 資深後端工程師養成系列 - 目錄 🎯 目標讀者: 想成為資深後端工程師的開發者 ⏱️ 預估總時數: 40+ 小時 📊 難度範圍: ⭐ ~ ⭐⭐⭐⭐⭐ 🗺️ 學習路線圖 基礎篇 (1-3週) 進階篇 (2-4週) 實戰篇 (2-4週) │ │ │ ▼ ▼ ▼ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ 01 基礎 │ ────────▶ │ 05 非同步│ ────────▶ │ 09 測試 │ │ 02 驗證 │ │ 06 DI │ │ 10 部署 │ │ 03 資料庫│ │ 07 快取 │ │ 11 微服務│ │ 04 認證 │ │ 08 任務 │ │ 12 面試 │ └─────────┘ └─────────┘ └─────────┘ 01.

Tree(樹)資料結構完整指南

Tree(樹)資料結構完整教學 什麼是樹? 樹(Tree)是一種非線性的階層式資料結構,由節點(nodes)和邊(edges)組成。樹模擬了現實世界中的階層關係,如組織架構、檔案系統、決策過程等。 樹的基本概念 A <- 根節點 (Root) / | \ B C D <- 內部節點 (Internal Nodes) /| \ E F G <- 葉節點 (Leaf Nodes)重要術語 節點(Node):樹的基本單位,包含資料和指向其他節點的連結 根(Root):樹的最頂層節點,沒有父節點 父節點(Parent):有子節點的節點 子節點(Child):從屬於另一個節點的節點 葉節點(Leaf):沒有子節點的節點 兄弟節點(Siblings):有相同父節點的節點 深度(Depth):從根到該節點的邊數 高度(Height):從該節點到最深葉節點的邊數 子樹(Subtree):節點及其所有後代組成的樹 二元樹(Binary Tree) 二元樹是每個節點最多有兩個子節點的樹結構。 基本實作 class TreeNode: """二元樹節點""" def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = right def __repr__(self): return f"TreeNode({self.val})" class BinaryTree: """二元樹基本實作""" def __init__(self): self.root = None def __repr__(self): if not self.

Django 面試準備 06-4:Channels 實戰案例

06-4. Channels 實戰案例 本章通過 5 個真實場景,展示 Django Channels 在生產環境中的實際應用。 1. 案例一:聊天室系統 場景描述 構建一個多房間聊天系統,支持: 多個聊天室 用戶加入/離開通知 在線用戶列表 歷史消息加載 完整實現 步驟 1:數據模型 # models.py from django.db import models from django.contrib.auth.models import User class ChatRoom(models.Model): """聊天室""" name = models.CharField(max_length=100, unique=True) slug = models.SlugField(unique=True) description = models.TextField(blank=True) created_at = models.DateTimeField(auto_now_add=True) def __str__(self): return self.name class Message(models.Model): """聊天消息""" room = models.ForeignKey(ChatRoom, on_delete=models.CASCADE, related_name='messages') user = models.ForeignKey(User, on_delete=models.CASCADE) content = models.TextField() created_at = models.DateTimeField(auto_now_add=True) class Meta: ordering = ['created_at'] def __str__(self): return f'{self.

Django 面試準備 06-3:Channels 基礎概念

06-3. Channels 基礎概念 Django Channels 是 Django 的擴展,讓 Django 支持 WebSocket、長輪詢等實時通信協議。本章將深入探討其核心概念。 1. 什麼是 Channels? 定義 Django Channels 是一個讓 Django 支持 異步協議 的框架,特別是 WebSocket。 # 傳統 Django (WSGI):只支援 HTTP # 每個請求-響應是獨立的,無法保持長連接 用戶 → HTTP 請求 → Django → HTTP 響應 → 用戶 # 連接結束 ✂️ # Django Channels (ASGI):支援 WebSocket # 可以保持長連接,實現雙向通信 用戶 ⟷ WebSocket 連接 ⟷ Django Channels # 連接持續,可以隨時收發消息 ✅核心特性 WebSocket 支持:實時雙向通信 HTTP/2 支持:Server Push 長輪詢:兼容舊瀏覽器 異步處理:基於 asyncio 向後兼容:可與傳統 Django view 並存 2.

Django 面試準備 06-2:Celery 實戰案例

06-2. Celery 實戰案例 本章通過 7 個真實場景,展示 Celery 在生產環境中的實際應用。 1. 案例一:郵件發送系統 場景描述 電商平台需要發送多種郵件:訂單確認、發貨通知、促銷活動等。每天發送 10 萬封郵件。 問題分析 # ❌ 同步發送郵件的問題 def create_order(request): order = Order.objects.create(...) # 同步發送郵件,阻塞 2-3 秒 send_mail( subject=f'訂單 {order.id} 已確認', message='...', recipient_list=[order.user.email] ) return JsonResponse({'order_id': order.id}) # 問題: # - 用戶等待 2-3 秒才能看到響應 # - SMTP 服務器故障會導致訂單創建失敗 # - 高峰期可能超時Celery 解決方案 步驟 1:定義郵件任務 # tasks.py from celery import shared_task from django.core.mail import send_mail, EmailMultiAlternatives from django.template.loader import render_to_string from django.

Django 面試準備 06-1:Celery 基礎概念

06-1. Celery 基礎概念 Celery 是 Python 生態系中最流行的異步任務隊列,本章將深入探討其核心概念和運作原理。 1. 什麼是 Celery? 定義 Celery 是一個分布式任務隊列系統,用於處理異步任務和定時任務。 # 沒有 Celery 的同步處理 def create_order(request): order = Order.objects.create(...) send_email(order) # 阻塞 2 秒 generate_invoice(order) # 阻塞 5 秒 update_inventory(order) # 阻塞 1 秒 return JsonResponse({'order_id': order.id}) # 用戶等待:8 秒 ❌ # 使用 Celery 的異步處理 def create_order(request): order = Order.objects.create(...) send_email.delay(order.id) # 立即返回 generate_invoice.delay(order.id) # 立即返回 update_inventory.delay(order.id) # 立即返回 return JsonResponse({'order_id': order.id}) # 用戶等待:< 100ms ✅核心用途 異步任務:耗時操作不阻塞用戶請求 定時任務:Cron-like 定期執行任務 分布式計算:跨多台服務器分散計算負載 2.
0%