<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Engineering on Khang Nghiem</title><link>https://www.khangnghiem.com/categories/engineering/</link><description>Recent content in Engineering on Khang Nghiem</description><generator>Hugo</generator><language>vi</language><lastBuildDate>Sun, 31 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://www.khangnghiem.com/categories/engineering/index.xml" rel="self" type="application/rss+xml"/><item><title>HashMap hoạt động như thế nào bên trong?</title><link>https://www.khangnghiem.com/post/hashmap-internal-05-2026/</link><pubDate>Sun, 31 May 2026 00:00:00 +0000</pubDate><guid>https://www.khangnghiem.com/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/post/java-pass-by-value-05-2026/</link><pubDate>Sun, 31 May 2026 00:00:00 +0000</pubDate><guid>https://www.khangnghiem.com/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/post/kafka-java-backend-05-2026/</link><pubDate>Sun, 31 May 2026 00:00:00 +0000</pubDate><guid>https://www.khangnghiem.com/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/post/java-threads-05-2026/</link><pubDate>Sun, 31 May 2026 00:00:00 +0000</pubDate><guid>https://www.khangnghiem.com/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>