<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Deep-Dive on Khang Nghiem</title><link>https://www.khangnghiem.com/vi/tags/deep-dive/</link><description>Recent content in Deep-Dive 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/deep-dive/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><item><title>HashMap hoạt động như thế nào bên trong?</title><link>https://www.khangnghiem.com/vi/post/hashmap-internal-05-2026/</link><pubDate>Sun, 31 May 2026 00:00:00 +0000</pubDate><guid>https://www.khangnghiem.com/vi/post/hashmap-internal-05-2026/</guid><description>&lt;p&gt;Bạn dùng HashMap mỗi ngày. Nhưng khi một cái cache trả về &lt;code&gt;null&lt;/code&gt; mặc dù key đúng, khi một service chạy chậm bất ngờ sau khi data tăng, khi một bug chỉ xảy ra dưới concurrent load - phần lớn những vấn đề đó có gốc rễ từ việc không hiểu HashMap hoạt động bên trong như thế nào. Bài này giải thích từng cơ chế từ góc độ thiết kế, không phải từ định nghĩa.&lt;/p&gt;</description></item><item><title>Java: Pass by Value hay Pass by Reference?</title><link>https://www.khangnghiem.com/vi/post/java-pass-by-value-05-2026/</link><pubDate>Sun, 31 May 2026 00:00:00 +0000</pubDate><guid>https://www.khangnghiem.com/vi/post/java-pass-by-value-05-2026/</guid><description>&lt;p&gt;Java chỉ có pass by value. Đây là một trong những nguyên nhân gây ra bug trong Java: developer hiểu sai rằng truyền một object vào hàm là &amp;ldquo;an toàn&amp;rdquo;, không ai ngoài hàm đó có thể thay đổi dữ liệu gốc. Bài viết này giải thích cơ chế từ góc độ thiết kế ngôn ngữ, chỉ ra chính xác bug gì xảy ra khi bạn nhầm, và đưa ra các pattern thực tế để tránh chúng.&lt;/p&gt;</description></item><item><title>Kafka cho Java Backend Engineer</title><link>https://www.khangnghiem.com/vi/post/kafka-java-backend-05-2026/</link><pubDate>Sun, 31 May 2026 00:00:00 +0000</pubDate><guid>https://www.khangnghiem.com/vi/post/kafka-java-backend-05-2026/</guid><description>&lt;p&gt;Trước khi nhìn vào Kafka, hãy nhìn vào thứ nó thay thế. Hầu hết bug nghiêm trọng liên quan đến Kafka không đến từ việc không biết API, mà đến từ việc không hiểu tại sao từng cơ chế được thiết kế theo cách đó. Bài này giải thích Kafka từ vấn đề, không phải từ định nghĩa.&lt;/p&gt;
&lt;h2 id="tổng-quan-kiến-trúc"&gt;Tổng quan kiến trúc&lt;/h2&gt;
&lt;p&gt;Trước khi đi vào từng khái niệm, đây là bức tranh toàn cảnh:&lt;/p&gt;</description></item><item><title>Tất cả về Thread trong Java</title><link>https://www.khangnghiem.com/vi/post/java-threads-05-2026/</link><pubDate>Sun, 31 May 2026 00:00:00 +0000</pubDate><guid>https://www.khangnghiem.com/vi/post/java-threads-05-2026/</guid><description>&lt;p&gt;Concurrency bug là loại bug khó nhất để tìm và sửa trong production. Không có stack trace đầy đủ, không tái hiện được ổn định, chỉ có behavior ngẫu nhiên sai sau vài giờ chạy. Phần lớn những bug đó không đến từ việc không biết API, mà đến từ việc không hiểu tại sao các cơ chế concurrency được thiết kế theo cách đó. Bài này giải thích từ vấn đề, không từ định nghĩa.&lt;/p&gt;</description></item></channel></rss>