Hallucination
什麼是 AI 幻覺不知道要求它說明依據把問題改成「可驗證」的形式列出不確定性評級提供實測方法AI 產生了看起來合理、語氣很肯定,但其實不正確、沒有根據,或與事實不一致的內容,更精確來說,生成式 AI 在缺乏可靠依據、理解錯誤、推理失準或資料不足的情況下,產生錯誤、虛構、誤導性或無法驗證的輸出
例如
編出不存在的論文、書籍、網址
說某個 API 有某個參數,但其實文件裡沒有
把兩個相似概念混在一起
明明不知道,卻用很肯定的語氣回答
對你的程式碼做出錯誤判斷
引用不存在的法律、規格、版本資訊
把「可能」講成「一定」
但現在的 AI 沒有聰明到可以「故意說謊」,事實上是模型在「預測下一段最像答案的文字」時,產生了形式上像答案、實質上卻錯誤的結果,大型語言模型的核心能力是根據上下文,預測接下來最合理的文字,但「最合理的文字」不等於「最真實的文字」,這就像一個人很會接話、很會寫文章、很會模仿專業語氣,但他其實他,一定真的知道答案
所以本質上它比較像是看過大量文字後,學會「什麼樣的問題通常會接什麼樣的回答」,當它不知道答案時,可能會根據語言模式補出一個「看起來合理」的答案
例如你問某某冷 ...
redis
架構啟動Redis 7 image 拉下來啟動 Redis ContainerRedis Container 裡自己 Ping 自己從另一個 Container 經過 Windows Host 再打進 Redis
12345678910111213141516docker run │ ├─ -d │ └─ 背景執行 │ ├─ --name redis-open │ └─ Container 名稱叫 redis-open │ ├─ -p 6379:6379 │ └─ Host 6379 → Container 6379 │ ├─ redis:7 │ └─ 使用 Redis 7 image │ └─ redis-server --bind 0.0.0.0 --protected-mode no └─ Container 啟動後執行的程式
其中 –bind 0.0.0.0 很重要。它要求 Redis Server 接受 Container 所有網路介面的連線,而不只限於 loopback1234dock ...
金流異常處理
https://wiki.91app.com/pages/viewpage.action?pageId=236486916
購物車 uniqueKey
購物車操作時帶上 uniqueKey,其實不完全是為了防重播攻擊,而是為了:
保證資料正確性(資料的歸屬與一致性)
避免資料混淆或誤用(區分同一帳號不同來源)
有時也可以延伸作為防止重播、防偽等手段
🧠 拆解購物車 uniqueKey 的用途(真實意圖)🔹1️⃣ 識別這個「購物流程的上下文」【主要目的】✅ 舉例說明:
當使用者進行購物行為(點選商品 → 加入購物車 → 結帳),系統會幫他產生一個:
CartSessionId = “CART-20251118-8FDE23C8F231”
這個 uniqueKey(或叫 CartId、CartSessionId、TransactionId…):
代表一組購物流程
在操作「新增商品、刪除商品、選擇優惠」時都要帶上
就像「你去 IKEA 拿購物推車時的車號」
🔹2️⃣ 避免同帳號操作被混淆📦 假設情境:
小明開了兩個瀏覽器分頁,各自買不同商品
如果沒有 uniqueKey,可能會把 A 分頁的商品加到 B 分頁的購物車中
加上 uniqueKey,每次操作都清楚知道是在哪一台車上加的
🔹3️⃣ 支援匿名用戶購物
很多電商允 ...
Untitled
title: mweb CORSC:\91APP\NineYi.WebStore.MobileWebMall\WebStore\WebAPI\Extensions\HttpModules\CorsModule.cs
Application_EndRequest
Access-Control-Allow-Origin「每次 Request 結束時」,自動決定
回應要不要加上 Access-Control-Allow-Origin
加上哪一個允許跨域的來源(Allow-Origin)
取得來源網址 (Origin / Referrer) → 判斷是否在允許清單 → 產生 Allow-Origin → 寫入 Response Header
Step 0:取得 HttpContext12var httpApplication = (HttpApplication)sender;var httpContext = httpApplication.Context;
✨ Step 1:錯誤狀態不處理 CORS1234if (httpContext.Response.StatusCo ...
Untitled
title: FluentValidationFluentValidationhttps://github.com/FluentValidation/FluentValidation
https://docs.google.com/presentation/d/1bj-cdmw9ArauCphDmmEm-D2QKRBnwohUuRv6TP2IRUs/edit?slide=id.g8394b5fbe8_0_53#slide=id.g8394b5fbe8_0_53
Wrapper Adapter
1.5.2 WrapperWrapper 模式是一種常見的設計模式,它可以用來包裝現有的物件,提供額外的功能或改變其行為。在泛型的幫助下,我們可以建立通用的 Wrapper 類別來處理任何型別的物件
🎯 Wrapper 基本概念Wrapper 類別的主要目的是:
🔐 封裝原始物件:提供對底層物件的受控存取
🎨 增強功能:在不修改原始類別的情況下添加新功能
🛡️ 保護資料:控制對包裝物件的存取方式
🔄 轉換介面:為不相容的介面提供適配
📝 實際應用範例以下範例展示了泛型 Wrapper 的使用和一些需要注意的問題:
123456789101112131415161718192021222324252627282930313233343536void Main(){ var items = new List<int> { 1, 2, 3 }; var wrappers = CreateWrapper2<int>(items); var store = new List<Wrapper<int ...
Untitled
title: Controller HeaderController 層 如何取得 Header註冊服務
1services.AddHttpContextAccessor();
在 ASP.NET Core 裡面,每當一個 HTTP 請求進來(像是有人開你的網站、叫你的 API),系統就會產生一個「HttpContext」物件,裡面記錄了使用者是誰(包含登入帳號),請求的網址、Header、Body,回應的資料 Session、Cookie 等等,但是這個 HttpContext 不是你想用就用的,它只在「有請求進來」的時候才存在,而且它不是自己隨時隨地可以 new 的東西。
所以問題來了,如果你寫的程式碼在「服務(Service)」裡面,例如 Repository 或其他非 Controller 的地方,你就拿不到 HttpContext,因為這些不是直接處理 HTTP 請求的
AddHttpContextAccessor() 的本質就是:
✅ 註冊一個可以讓你在任何地方都「安全地取得目前的 HttpContext」的工具。
當你呼叫這行之後,系統會幫你註冊一個叫做 IHttp ...
Cache Stampede
🌀 快取踐踏 (Cache Stampede)
當某個熱門資料的快取過期時,瞬間湧入大量請求,導致所有請求同時打到原始資料來源(如資料庫或第三方 API),形成類似「踩踏」的效應。這些請求原本應E2該從快取中直接取得結果,卻因快取剛好失效,全部穿透防線、直接進攻後端資源,造成伺服器短暫過載。
📦 實際案例:假設你有一個商品頁,每次顯示都包含了價格、樣式、庫存狀態等資訊。這些資料通常是快取的理想對象。但當電商促銷活動一開始,流量暴增,而快取又在這個時候剛好過期,所有用戶的請求就會「同時」觸發重新生成快取,導致伺服器一時間被壓垮。
🔒 解法:為了防止這種現象,系統會採用「資源鎖定(Lock)」機制,讓第一個進入的請求負責重建快取,其餘的請求等待結果完成後再讀取,這樣就能避免所有請求同時打進後端。
這也是一個絕佳的壓力測試案例!可以刻意設計快取在高流量時過期,觀察系統是否有妥善應對。
🌀 雷鳴群聚 (Thundering Herd)
在短時間內大量請求同時湧入,對快取系統或後端資源造成瞬間衝擊。不同於「快取踐踏」是因為某個快取過期才導致的,雷鳴群聚是主動湧現的洪流,常見於以下場 ...
Untitled
title: Validation在資料綁定 (Model Binding) 過程沒有收到資料時,會將結構型別 (struct type) 使用初始值當作預設值,參考型別 (reference type) 的話則會顯示 null。
一般常見的 結構型別如 int、double、float、DateTime 等。參考型別則如 string 及一般的 Class。
但 ASP.Net Core 有一個新玩意兒可以解決 - [BindRequired],設定方法只要把它原封不動掛上去可以了。
12345678910111213public class Book{ [BindRequired] public int Id { get; set; } [Required] public string Title{ get; set; } public DateTime PublishDate { get; set; }}
首先在 API Controller 中預 ...



