java advanced performance techniques
Các kỹ thuật tối ưu hiệu năng Java ở cấp hệ thống: branchless programming, autoboxing, EnumSet, Virtual Threads, bẫy Hibernate/JPA, Caffeine cache, GraalVM Native Image, data locality, lock-free và SIMD.
Welcome to MikeDaDev's Blog – notes on Java, backend & system design.
ExploreCác kỹ thuật tối ưu hiệu năng Java ở cấp hệ thống: branchless programming, autoboxing, EnumSet, Virtual Threads, bẫy Hibernate/JPA, Caffeine cache, GraalVM Native Image, data locality, lock-free và SIMD.
Những cặp khái niệm Java/Spring hay bị hỏi khi phỏng vấn Senior mà cũng dễ dùng sai trên production: == vs equals(), HashMap vs ConcurrentHashMap, synchronized vs ReentrantLock, PUT vs PATCH...
Saga Pattern là cách xử lý transaction phân tán trong microservices: chia một quy trình dài thành chuỗi local transaction. Bước nào lỗi thì chạy compensating transaction để hoàn tác các bước trước, nhờ vậy dữ liệu vẫn nhất quán (eventual consistency) mà không phải lock cả hệ thống.
Mấy kỹ thuật tối ưu hiệu năng Java ít người để ý: object pooling, primitive arrays, lock-free, batch, zero-copy, viết code dễ cho JIT, kèm ví dụ, cơ chế bên dưới và lúc nào không nên dùng.
So sánh Multithreading truyền thống (Thread, ExecutorService, CompletableFuture) với Parallel Stream trong Java: khác nhau về mô hình, mức kiểm soát, khi nào nên dùng cái nào, các lỗi hay gặp và chỗ Virtual Threads (Java 21+) chen vào.
Two Sum nhìn từ góc độ low-latency: Autoboxing và pointer chasing làm HashMap O(N) chậm cỡ nào trên phần cứng thật, khi nào Two-Pointer thắng, cách tự viết Primitive Open-Addressing Hash Map, SIMD Vector API giúp được gì và không giúp được gì, kèm số đo JMH.
A close look at Java 25 LTS: Compact Object Headers (JEP 519), Stream Gatherers (JEP 485), Flexible Constructor Bodies (JEP 513), Scoped Values (JEP 506) and Generational ZGC, with notes on what they change for high-throughput cloud services.
Nếu database SQL là cái két sắt thì ACID (Atomicity, Consistency, Isolation, Durability) là bộ khoá giữ cho mọi giao dịch an toàn. Nhờ nó, dù hệ thống sập nguồn hay gặp lỗi bất ngờ, thao tác dữ liệu hoặc chạy trọn vẹn, hoặc hoàn tác hết, dữ liệu không bao giờ rơi vào trạng thái nửa vời.
MDC hoạt động ra sao, cách gắn traceId vào log và chuyền nó qua HTTP, RabbitMQ, Kafka, gRPC, thread pool; khi nào nên để Micrometer Tracing làm thay, và cách xuất log JSON cho dễ tìm.