<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Spring-Boot on Khang Nghiem</title><link>https://www.khangnghiem.com/vi/tags/spring-boot/</link><description>Recent content in Spring-Boot on Khang Nghiem</description><generator>Hugo</generator><language>vi</language><lastBuildDate>Sun, 07 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://www.khangnghiem.com/vi/tags/spring-boot/index.xml" rel="self" type="application/rss+xml"/><item><title>Database Optimization trong Java: Hướng dẫn về Spring Boot, Quarkus, Hibernate, JPA và SQL Performance</title><link>https://www.khangnghiem.com/vi/post/database-optimization-java-06-2026/</link><pubDate>Sun, 07 Jun 2026 00:00:00 +0000</pubDate><guid>https://www.khangnghiem.com/vi/post/database-optimization-java-06-2026/</guid><description>&lt;p&gt;Database là nơi hiệu năng chết. Không phải ở application server, không phải ở network, mà ở database. Trong hầu hết hệ thống production, 80% latency đến từ database query. Một index thiếu có thể biến query 2ms thành sequential scan 8 giây. Một Hibernate setting sai có thể biến 1 query thành 1000 query mà không có log nào cảnh báo. Connection pool cấu hình sai có thể làm hệ thống xử lý 10,000 rps bình thường đột ngột timeout hoàn toàn khi tải tăng lên 15,000 rps.&lt;/p&gt;</description></item><item><title>Tất cả về Transaction trong Java: Từ ACID đến Distributed Systems</title><link>https://www.khangnghiem.com/vi/post/java-transactions-06-2026/</link><pubDate>Sun, 07 Jun 2026 00:00:00 +0000</pubDate><guid>https://www.khangnghiem.com/vi/post/java-transactions-06-2026/</guid><description>&lt;p&gt;Transaction là thứ bạn không thấy khi nó hoạt động đúng, và không thể giải thích khi nó sai. Một bug transaction trong hệ thống thanh toán có thể khiến tiền biến mất, xuất hiện hai lần, hoặc trạng thái order và payment không đồng nhất mà không có exception nào được throw. Phần lớn lỗi không đến từ thiếu annotation &lt;code&gt;@Transactional&lt;/code&gt;, mà đến từ không hiểu annotation đó thực sự làm gì, khi nào nó không hoạt động, và tại sao.&lt;/p&gt;</description></item><item><title>Xây dựng High-Performance REST API trong Java</title><link>https://www.khangnghiem.com/vi/post/java-rest-api-performance-06-2026/</link><pubDate>Sun, 07 Jun 2026 00:00:00 +0000</pubDate><guid>https://www.khangnghiem.com/vi/post/java-rest-api-performance-06-2026/</guid><description>&lt;p&gt;API chậm không chỉ là trải nghiệm xấu — nó là tiền. Amazon tính toán mỗi 100ms latency tăng thêm làm giảm 1% doanh thu. Google thấy 500ms chậm hơn dẫn đến 20% ít traffic hơn. Shopify xử lý flash sale hàng trăm nghìn requests/phút. Những số này không đến từ máy tính nhanh hơn — chúng đến từ hiểu rõ bottleneck ở đâu trong hệ thống và loại bỏ chúng có chủ ý.&lt;/p&gt;</description></item><item><title>Best Practice khi viết Common Library trong Java</title><link>https://www.khangnghiem.com/vi/post/java-library-best-practices-06-2026/</link><pubDate>Wed, 03 Jun 2026 00:00:00 +0000</pubDate><guid>https://www.khangnghiem.com/vi/post/java-library-best-practices-06-2026/</guid><description>&lt;p&gt;Một internal library sai thiết kế lan rộng nhanh hơn và tồn tại lâu hơn bất kỳ thứ gì khác trong codebase. Khi 20 service phụ thuộc vào nó, thay đổi bất kỳ thứ gì đều đau đớn. Bài này dùng một ví dụ xuyên suốt - một &lt;code&gt;audit-client&lt;/code&gt; library gửi audit event đến central audit service - để giải thích từng quyết định thiết kế từ góc độ: tại sao nó tồn tại, Điều gì xảy ra nếu không có nó, và trade-off cụ thể.&lt;/p&gt;</description></item></channel></rss>