Yoru Karu Studio

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

Django 面試準備 09-3:緩存穿透、擊穿、雪崩

09-3. 緩存穿透、擊穿、雪崩(Cache Penetration, Breakdown, Avalanche) 📌 三大緩存問題概述 在高並發系統中,緩存是性能的關鍵。但不當使用會引發嚴重問題: 問題 原因 影響 嚴重程度 穿透 (Penetration) 查詢不存在的數據 每次都打到數據庫 ⚠️⚠️⚠️ 擊穿 (Breakdown) 熱點數據過期 瞬間大量請求打到數據庫 ⚠️⚠️⚠️⚠️ 雪崩 (Avalanche) 大量緩存同時過期 數據庫瞬間崩潰 ⚠️⚠️⚠️⚠️⚠️ 🔴 問題 1:緩存穿透(Cache Penetration) 什麼是緩存穿透(Cache Penetration)? 定義: 查詢一個不存在的數據,緩存和數據庫都沒有,導致每次請求都打到數據庫。 典型場景 # 用戶查詢 product_id = 99999(不存在) def get_product(product_id): # 1. 查緩存 → 沒有 product = cache.get(f'product:{product_id}') if product: return product # 2. 查數據庫 → 沒有 try: product = Product.objects.get(id=product_id) cache.set(f'product:{product_id}', product, 300) return product except Product.

Neural Encoder 完全解析:文字如何變成 AI 能理解的向量

Neural Encoder:AI 的「翻譯機」 想像你要跟外星人溝通,但他們只懂數學,不懂人類語言。你需要一個翻譯機,能把「我愛你」翻譯成外星人能理解的數字序列。 Neural Encoder(神經編碼器) 就是這個翻譯機: 輸入:人類語言(「Django 是網頁框架」) 輸出:數字向量([0.23, -0.45, 0.67, ...]) 關鍵:這些數字不是隨機的,而是捕捉了文字的意義 本文將帶你深入理解: Neural Encoder 如何「學會」理解語言? 為什麼不需要自己訓練就能使用? 如何選擇最適合的編碼模型? 🧬 Neural Encoder 的演進史 第一代:Word2Vec(2013) 革命性突破:詞也能做數學運算! # 著名的例子 vector("國王") - vector("男人") + vector("女人") ≈ vector("皇后") # 實際數字 [0.8, 0.2, ...] - [0.5, 0.1, ...] + [0.3, 0.9, ...] ≈ [0.6, 1.0, ...]訓練方式:上下文預測 訓練資料: "我 喜歡 吃 蘋果 和 香蕉" 訓練目標: 給定中心詞 "吃",預測上下文 ["喜歡", "蘋果"] 給定上下文 ["喜歡", "蘋果"],預測中心詞 "吃"經過數百萬句子的訓練,模型學到: 「吃」常出現在「蘋果」、「香蕉」、「飯」附近 → 這些詞的向量會彼此接近 局限性 # Word2Vec 的問題 sentence1 = "I love Python" sentence2 = "I hate Python" # Word2Vec 做法:直接平均 vector(sentence1) = (vector("I") + vector("love") + vector("Python")) / 3 vector(sentence2) = (vector("I") + vector("hate") + vector("Python")) / 3 # 問題:忽略了詞序! # "love Python" 和 "hate Python" 意思完全相反 # 但向量卻很相似(因為只是平均)第二代:BERT(2018) 突破點:理解上下文!

01-2. CIA 三元組:機密性、完整性、可用性

01-2. CIA 三元組:機密性、完整性、可用性 ⏱️ 閱讀時間: 10 分鐘 🎯 難度: ⭐ (簡單) ⚠️ 提醒: 本文內容僅供學習與防禦用途 🎯 本篇重點 理解資訊安全的三大核心原則:機密性、完整性、可用性(CIA Triad),以及它們在 Web 應用中的實際應用。 🤔 什麼是 CIA 三元組? CIA Triad = 資訊安全的三大核心原則 🔐 Confidentiality(機密性) ✅ Integrity(完整性) ⚡ Availability(可用性)一句話解釋: CIA 三元組是資訊安全的基石,確保資料只被授權者看到(C)、未被竄改(I)、隨時可用(A)。 🔐 C - Confidentiality(機密性) 定義 確保資料只能被授權的人看到 機密性 = 保護秘密 目標: - 防止未授權者存取資料 - 控制誰能看到什麼資料 - 保護敏感資訊生活中的例子 🏠 實體世界: ├─ 保險箱(只有你有鑰匙) ├─ 密封的信件(只有收件人可拆) └─ 醫療紀錄(只有醫生和病人能看) 💻 數位世界: ├─ 密碼(只有你知道) ├─ Email(只有收件人能讀) └─ 銀行帳戶(只有你能查看餘額)Web 應用中的機密性 需要保護的資料 👤 用戶資料: ├─ 密碼 ├─ Email ├─ 電話號碼 ├─ 地址 └─ 身份證字號 💳 金融資料: ├─ 信用卡號碼 ├─ 銀行帳號 ├─ 交易紀錄 └─ 收入資訊 🏢 商業資料: ├─ API 金鑰 ├─ 資料庫密碼 ├─ 商業機密 └─ 客戶名單如何實現機密性? # ✅ 正確:密碼加密儲存 from django.

Django 面試準備 09-2:Django 緩存框架

09-2. Django 緩存框架 📌 Django 緩存層級 Django 提供了多層次的緩存機制: 1. 站點級緩存(Middleware) ↓ 2. 視圖級緩存(Decorator) ↓ 3. 模板片段緩存(Template Tag) ↓ 4. 底層緩存 API(Manual) 🔧 緩存後端配置 1. Redis(推薦) # settings.py CACHES = { 'default': { 'BACKEND': 'django_redis.cache.RedisCache', 'LOCATION': 'redis://127.0.0.1:6379/1', 'OPTIONS': { 'CLIENT_CLASS': 'django_redis.client.DefaultClient', 'CONNECTION_POOL_KWARGS': { 'max_connections': 50, 'retry_on_timeout': True, }, 'PASSWORD': 'your-password', # 如果有密碼 'SOCKET_CONNECT_TIMEOUT': 5, 'SOCKET_TIMEOUT': 5, }, 'KEY_PREFIX': 'myapp', # 鍵前綴 'VERSION': 1, # 版本號 'TIMEOUT': 300, # 默認超時(秒) } }2. Memcached # settings.

向量資料庫完全指南:AI 時代的知識儲存革命

為什麼 AI 需要「向量」? 想像你要在圖書館找書,傳統方式是看書名和關鍵字。但如果你想找「跟這本書意思相近的其他書」呢? 這時候,你需要一個能理解「意義」而非只看「文字」的系統。向量(Vector) 就是讓機器理解「意義」的關鍵技術。 本文將帶你從零理解: 什麼是向量?為什麼文字可以變成數字? 向量資料庫與傳統資料庫有何不同? 如何在實際專案中使用向量資料庫? 🎯 什麼是向量(Embedding)? 核心概念:用數字表示意義 向量是一串數字,用來表示文字、圖片、音訊等資料的語義資訊。 # 文字轉向量的例子 from sentence_transformers import SentenceTransformer model = SentenceTransformer('paraphrase-multilingual-MiniLM-L12-v2') text1 = "Django 是網頁框架" vector1 = model.encode(text1) # 輸出:[0.23, -0.45, 0.67, 0.12, -0.89, ...] (384 維) text2 = "Flask 是網頁框架" vector2 = model.encode(text2) # 輸出:[0.25, -0.43, 0.69, 0.10, -0.91, ...] (384 維) text3 = "貓很可愛" vector3 = model.encode(text3) # 輸出:[-0.12, 0.87, -0.34, 0.56, 0.23, ...] (384 維)視覺化理解:意義的地圖 雖然實際向量有數百維,但我們可以用 2D 圖來理解:

01-1. 什麼是 Web 資安?為什麼重要?

01-1. 什麼是 Web 資安?為什麼重要? ⏱️ 閱讀時間: 8 分鐘 🎯 難度: ⭐ (超級簡單) ⚠️ 提醒: 本文內容僅供學習與防禦用途 🎯 本篇重點 理解什麼是 Web 資安、為什麼需要學習資安、真實世界的資安事件,以及基本的資安概念。 🤔 什麼是 Web 資安? Web Security(Web 資安) = 保護網站、Web 應用程式、API 免受攻擊的技術與實踐 一句話解釋: Web 資安就像是網站的保全系統,防止壞人偷取資料、破壞服務、冒充用戶。 🏠 用生活情境來比喻 實體世界的安全 你的家需要什麼保護? 1. 門鎖 🔐 → 防止陌生人進入 2. 監視器 📹 → 記錄可疑活動 3. 保險箱 🔒 → 保護重要物品 4. 警報系統 🚨 → 發現異常立即通知 如果沒有這些: → 小偷可以隨意進出 → 貴重物品被偷走 → 你可能完全不知道Web 世界的安全 你的網站需要什麼保護? 1. 身份驗證 🔐 → 確認用戶是誰(登入系統) → 類似:門鎖 2.
0%