太棒啦,恭喜大家跟著我一起堅持到了最後一天,在過去 29 天裡,我們從最底層的 Netty 非同步 I/O 引擎切入,經歷了網路延遲混沌工程、Resilienc...
TL;DR: 需要切換預設版本時,Linux可以使用update-java-alternatives,Windows可以調整JAVA_HOME;如果需要專案...
Linux怎麼安裝JAVA環境?以LinuxMint為例(Ubuntu、Debian可用) TL;DR: 只需要執行Java程式或使用ABCL時,安裝JRE...
Windows要安裝JAVA環境,可以在Oracle官方找到JDK的安裝包。如果並不需要開發JAVA,像是直接使用ABCL去建立JavaFX應用程式,可以只安...
昨天我們深入剖析了 Timeout 設定與容量規劃的數學公式,證明了盲目放寬 Timeout 只會讓連線池乾涸。 今天,我們要將壓力測試的視角從PUT上傳轉向l...
昨天我們成功在 JMeter 上傳併發測試中,證明了前面寫的保護api的功能將 3 秒超時引發的錯誤率從 53% 降至 0%,並透過 Grafana 發現真正的...
昨天我們成功運用多階段建置(Multi-stage Build)技術,將非同步 S3 微服務打包成僅有 500MB 的極輕量 Docker 容器,並在獨立隔離的...
我們從一開始的三高指標與同步/非同步引擎對決,一路升級到分散式環境下的防禦機制(Semaphore 背壓限流、Double-Check 、uploadId 冪等...
在前幾天的文章中,我們在微服務中建構了多道盾牌,從透過headObject 探針解決網路超時問題的 Double-Check Pattern,實作 Idempo...
昨天我們完成了 Double-Check Pattern 的實作,當 putObject 發生 timeout 時,後端不再直接回傳失敗,而是使用 headOb...
在前兩篇中,我們在本地開發環境裡,利用了 simulateScenario 在代碼內部模擬超時,驗證了自我修復確實可以起死回生,手把手完成了微服務的三層防禦盾牌...
昨天我們說明了網路世界最殘酷的一面。當微服務呼叫 AWS S3 上傳檔案時,如果發生 TimeoutException時不能直接斷言上傳一定失敗,也有可能是上傳...
昨天我們用 JMeter 與 JConsole 進行了本地端的第一波大壓測,親眼見證了非同步 Netty 在面對高併發流量時,如何以極其穩定的執行緒表現,不過在...
昨天我們用 Spring Boot 框架將 Apache 同步與 Netty 非同步引擎封裝成了對外的微服務 API。 理論說得天花亂墜,但在本機電腦上,這兩...
昨天我們成功在本地終端機中驗證了 Apache 同步與 Netty 非同步兩大連線引擎的執行緒行為以及將檔案上傳到AWS S3。今天,我們要將上傳引擎正式升級為...
昨天我們成功建立了 AWS S3 Bucket,並利用最小權限原則配置了安全、專屬的 IAM 使用者金鑰。今天,我們就要正式在 Java 21 環境中,雙劍合璧...
前言:當 100 個跑者同時向 AI 許願時 過去的 22 天,我們單人用戶玩得很開心,功能也都順利的進行,但當 KAKERU 實際上線,100 個使用者同時點...
昨天我們親眼見證了同步連線的慘況:當大量併發請求湧入時,少量的執行緒會因為等待 I/O 而卡死(執行緒飢餓);但如果無腦加開成千上萬個執行緒,又會讓伺服器記憶體...
前幾天的單機壓測中,目睹了伺服器在極限流量下崩潰的瞬間。不論如何優化Netty的Event Loop,當請求像海嘯般湧入時,記憶體指標依然無情地飆升,最終迎來O...
昨天我們用餐廳的比喻了解了同步與非同步的差異。今天,我們要會透過程式碼,重現傳統同步連線在面對併發請求時,伺服器會面對哪些問題 為了專注於觀察底層行為,我們今天...
為什麼明明在本地端跑都好好的,為什麼一上線就炸了? 剛踏入軟體工程師這個領域滿一年,這句話大概是我在心裡吶喊過最多次的一句話。以前在學校做專題或實驗時,專案...
前言:別讓自動擴展變成破產機器:實作 Cloud Run 雙重防護 Cloud Run 的強大之處在於「無極限自動擴展 (Autoscaling)」,但若了解的...
前言:告別「在我的電腦上明明可以跑」 經過前 10 天的奮戰,AI 教練 KAKERU 的 API 已經具備了邏輯、記憶力與防禦機制。本地端開發也算告一段落!...
前言:現實世界充滿變數,你的 API 夠強壯嗎? 經過前幾天的實作,我們已經打造出一個具備記憶力、且能穩定輸出 JSON 格式課表的 AI 教練 API。但在準...
摘要Day 15 已經把代表案例整理成 Expected / Actual 測試,Day 16 已經把契約 v1.0 / v1.1 的基本比較結果接回畫面。D...
前言:AI 失憶了?為什麼我們不能只把記憶存在 RAM 裡? 昨天我們成功讓 Spring Boot 發送單次請求給 Gemini API,並收到了回覆。但如果...
前言:為後端注入 AI 靈魂 昨天我們成功啟動了 Java 21 + Spring Boot 3 的伺服器,今天我們終於要變得更強!將 Day 5 申請的 G...
前言:AI 時代的 Antigravity 開發體驗 AI 協作已成常態:在 2026 年,運用 Claude、Codex 等 AI 工具協助撰寫程式、除錯...
前言:沒有設計圖,怎麼蓋大樓? 歡迎來到鐵人賽 Day 2!昨天向大家說明了這個APP的誕生,也確立了用 AI 來拯救我們破碎課表的偉大目標。 但在真正實作之前...
前言:專案想法的由來 欸~~大家好!開賽第一天,既興奮又期待!但既然報名了,頭洗下去就對啦! 說到這款 AI教練 App的起源,真的要特別感謝我的學弟。以前學生...