1k1 分鐘

# locust 蝗蟲壓力測試工具 # 為何 Rust 在 CPU 密集運算下會比 Python 快? Rust 快的原因: ✅ 編譯成機器碼 - 更底層,無中間層 ✅ 編譯器優化 - LLVM 做大量優化 ✅ 無 GIL - 真正的多核並行 ✅ 零成本抽象 - 高階語法,無性能損失 ✅ 記憶體管理 - 編譯時確定,無 GC 開銷 Python 慢的原因: ❌ 解釋執行 - 每次都要翻譯 ❌ 動態型別 - 運行時檢查型別 ❌ GIL 限制 - 單核執行 ❌ 記憶體開銷 - 動態分配 + 垃圾回收 # 靜態型別 vs 動態型別 Rust:編譯期就知道所有變數型別,能幫助編譯器做最佳化。
3k3 分鐘

# 目的? 以往在用 docker compose 快速啟動服務,常常會遇到: 在一台全新的機器或開發環境中,都需要手動進入docker內部db容器,手動執行初始化(init)資料庫結構的 SQL 腳本,接著再執行資料(seed)的 SQL 腳本來填充初始資料 流程不僅繁瑣,而且容易出錯,特別是在多個環境(如開發、測試、生產)中部署時 比如在某專案中,固定會有個 products 的資料表,並且每次部署到新主機第一次啟動時,去打端點都一定會跳sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) relation
3k3 分鐘

# docker ps 只顯示正在執行的容器 docker ps 顯示所有容器(包含執行中、已停止、已退出) docker ps -a # or docker ps --all 顯示最近建立的容器 docker ps -l 顯示最近建立的 N 個容器(例:docker ps -n 3) docker ps -n <數字> # 管理 Docker data 相關指令 查看目前有哪些 volume,很常會有需要清理一些沒在使用的、或只是暫時創建來測試用的一些 data,這些 data = docker 的 volume # 列出目前有哪些 volume doc
5191 分鐘

# 重要 按理來說接口應要跟 pydantic 模型一模一樣 # FastAPI vs gRPC 差異 特性 FastAPI (REST) gRPC 通訊協定 HTTP/1.1 HTTP/2 資料格式 JSON Protocol Buffers (二進位) API 定義 OpenAPI/Swagger Proto 檔案 效能 較慢 較快 瀏覽器支援 原生支援 需要額外工具 串流 有限支援 原生支援雙向串流 # Postman 測試 gPRC
2.8k3 分鐘

目標:當遷移歷史混亂或想用現有模型重新建立「乾淨」的初始遷移時,安全地重置 Alembic 狀態並升到最新。 # TL;DR — 指令清單 # 1 生成初始 migration alembic revision --autogenerate -m "initial migration" # 2 執行 migration(創建表格) alembic upgrade head # 3 刪除所有遷移檔案(如已刪除可跳過) rm -f alembic/versions/*.py rm -rf alembic/versions/__pyca
2.4k2 分鐘

# 題目 給定一個單向 Linked List,反轉該鏈表並返回反轉後的頭節點。 題目 Example: Input: head = [1,2,3,4,5] Output: [5,4,3,2,1] # 觀念 反正就記得,反轉一條鏈表,就是把每個節點的 next 指標指向前一個節點 特性 Python list ([]) Linked List 底層結構 動態陣列 (連續記憶體) 節點 (物件) + 指標 存取第 i 個元素 O(1) O(n) (要走訪) 插入 / 刪除 O(n) (中間要搬移) O(1) (只改指標) 記憶體配置 連續 不連續
1.7k2 分鐘

# 題目 輸入一個字串 s,要找出最長的不含重複字元的子字串長度。 例子: s = "abcabcbb" → 答案是 3 ("abc") s = "bbbbb" → 答案是 1 ("b") s = "pwwkew" → 答案是 3 ("wke") # Sliding Window 上圖是大概的 Sliding Window 概念,用 set() 去重,並且用兩個指標 l 和 r 來表示目前的子字串範圍,然後不斷地擴展 r 直到遇到重複字元,
2.2k2 分鐘

# 題目 輸入一個只包含 ()[]{} 的字串,判斷它是否為「有效括號」。 input string 只有在以上狀況才視為 valid: 每個開括號都有對應的閉括號,且順序正確。 開括號與閉括號的類型必須相同。 Example: s = "()" # True s = "()[]{}" # True s = "(]" # False s = "([)]" #