[Java][Spring][Database] 主流事務操作 @Transactional & TransactionTemplate

Intro 在 Spring 專案開發中,@Transactional 註解因其高易用性,成為處理資料庫事務(Transaction)的首選方式。 然而,在處理批次資料寫入(Bulk Insert/Update)、大批次資料對帳或長流程業務邏輯時,若習慣性地在方法(Method)層級套用 @Transactional,容易引發「長事務(Long Transaction)」,對資料庫與系統穩定性帶來嚴重隱患: 資料庫鎖定與超時 (Lock Wait Timeout):長事務會長時間持有資料列鎖或間隙鎖(Gap Lock),導致其他併發的線上請求因無法取得鎖而排隊超時。 Undo Log 膨脹與效能下滑:未 Commit 的事務會阻止 MySQL (InnoDB) 進行 Undo Log 的清理(Purge),導致膨脹的 Undo Log 鏈大幅拖慢全系統的查詢速度。 失敗代價過高:若在處理上萬筆資料的最後一刻發生異常,整個長事務會強制全數回滾(Rollback),導致先前耗費的 CPU 與 I/O 資源完全浪費。 本文旨在釐清 聲明式事務(@Transactional) 與 編程式事務(TransactionTemplate) 的適用場景,並針對批次處理(Chunk / Batch […]

[Web] Next.js (React 全端框架) 開發指南

Intro Next.js by Vercel – The React Framework Next.js 是一個開源的 React 全端框架,後端基於 Node.js。它支援多種渲染方式 (Rendering),包括伺服器端渲染 (SSR)、靜態站點生成 (SSG) 以及用於客戶端渲染 (CSR) 的 React 原生渲染模式。 安裝 Next.js Node.js 安裝指南 Next.js 需要依賴 Node.js,以下 Next.js 官網安裝指南會說明欲安裝版本對應的 Node.js 最低需求版本。 How to set up a new Next.js project […]

[PHP] PHP Web 開發環境與語言架構指南

Intro PHP – Wikipedia Engine Architecture – 架構 Zend engine Architecture (Reference) Web Ecosystem – 生態系 Installation – 安裝 PHP – Installation and Configuration Ubuntu APT可以參考Debian系列官網說明: PHP – Debian GNU/Linux installation notes LNMP/LEMP (Linux+Nginx+MySQL+PHP) Stack安裝可以參考: [Linux] Web Service環境安裝建置 by LNMP […]

[.NET][C#] Web 開發環境與語言架構指南

Intro .NET Framework 安裝 Visual Studio Community Download Visual Studio for Mac – IDE for macOS Quick Start 建議新專案.Template選擇Console Application預設C#,並選擇.NET Framework版本已建立專案。 進入專案IDE應將在Program.cs自動提供Hello World程式碼: using System; namespace HelloWorld { class Program { static void Main(string[] args) { Console.WriteLine(“Hello World!”); } } […]

[Golang] Go Web 開發環境與語言架構指南

Intro Golang官方網站 WikePedia – Go語言 安裝 至官方下載頁面依據OS環境下載並安裝Golang: https://golang.org/doc/install 檢查Golang版本: $ go version Quickstart Tutorial: Get started with Go 在任一專案目錄下建立./hello.go: package main import "fmt" func main() { fmt.Println("Hello, World!") } 使用run指令快速直譯執行程式碼: $ go run . Go Modules – Package套件管理 Tutorial: Create […]

[Node.js] Node.js Web 開發環境與語言架構指南

安裝 | NVM | NPM | Cluster Intro Node.js Wiki Node.js 採用 Google 開發的 V8 引擎執行 JavaScript 代碼,並完全承襲了 JavaScript Runtime 的事件驅動 (Event-driven)與單執行緒(Single-threaded)特性。透過其獨特的非阻塞 I/O (Non-blocking I/O)模型,Node.js 能在不增加額外執行緒負擔的情況下,高效處理高併發需求。 與其他語言最大的不同之處: 傳統語言(如 PHP / Java 早期)使用阻塞式 I/O (Blocking I/O) 模型: 只有前一條命令執行完畢才會執行後面的命令 Node.js 使用非阻塞 I/O […]

[Java] Java / Spring Boot Web 開發環境與語言架構指南

安裝 | Quick Start | Package套件管理 | Logging | 開發工具 | Spring Boot Web | 部署 | Template Engine | Concurrency | Appendix Intro Java programming language JVM JVM (Java Virtual Machine – Java虛擬機),能夠執行Java位元組碼且以堆疊結構機器實做的虛擬機器。它有自己的硬體架構,如處理器、堆疊、暫存器等,還具有相應的指令系統。 JVM 封鎖了與具體作業系統平台相關的資訊,使得Java程式只需生成在 JVM 上執行的目的碼(位元組碼),就可以在多種平台上執行。通過對中央處理器(CPU)所執行的軟體實作,實現能執行編譯過的Java程式碼 (Applet與應用程式)。 (References: […]

[WordPress] 基本架構與環境建置指南

Intro 目前PHP Blog套件首選 WordPress繁體中文下載: https://tw.wordpress.org/download/ 官方安裝實用指南: https://wordpress.org/support/article/how-to-install-wordpress/ PHP 相容 PHP 5.6以上 官方建議: https://wordpress.org/about/requirements/ 資料夾權限配置 官方文件: https://wordpress.org/support/article/changing-file-permissions/ 社群建議需要改為可寫入的資料夾: /wp-content /wp-includes 其中wp-includes是為了讓外掛(Plugin)自動更新而不用透過FTP設定,可能需要搭配以下設定。 /wp-config.php 增加下列常數並設定: define(‘FS_METHOD’, ‘direct’); StackOverFlow – Can I install/update WordPress plugins without providing FTP access?