精選分類

文章列表

5451 分鐘

# 過程 開發時,已經習慣長按 ctrl+類名或函式名稱,讓編輯器自動跳轉到該類別或函式的定義位置來快速查看程式碼的實作細節 由於我改用 mise 來管理 golang 版本,導致 vscode golang extension 無法正確辨識 golang 的執行檔位置,長按 ctrl + 點擊類名或函式名稱時就沒反應 # 解法 ctrl + , 快速打開設定頁面,搜尋 go.alternateTools 並點擊在 settings.json 中編輯 直接在 settings.json 中加入以下設定 .... "go.alternateTools": &#12
13k12 分鐘

引言: 為了真正理解現代程式設計中的 Concurrency(併發)概念,稍微複習了 Process, Thread, Coroutine 之間的關係,並透過程式碼徹底比較 Python 與 Golang 在處理 CPU-bound 和 I/O-bound 任務時的效能差異。結果非常驚人,清晰地揭示了 Python GIL 的限制與 Golang Runtime 的優勢。 # Process, Thread, Coroutine 從資源開銷和獨立性的角度來看,併發執行單元的層次結構由大到小排序如下: 概念 資源開銷 / 獨立性 核心特性 適用場景 Exte
1k1 分鐘

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

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