Welcome to MikeDaDev's Blog – notes on Java, backend & system design.

Explore
MikeDaDev's Blog

All posts

I like to write about stuff I'm into. You'll find a mix of web dev articles, tech news and random thoughts from my life. Use the search below to filter by title.

kiến trúc observability với grafana

Kiến trúc Observability với Grafana và LGTM Stack (Loki, Grafana, Tempo, Mimir): 4 Golden Signals, RED/USE, cảnh báo Error Budget Multi-Window Multi-Burn-Rate theo kiểu Google SRE, và cách tránh bẫy bùng nổ Cardinality trong PromQL.

prometheus

Prometheus không chỉ là mấy con số khô khan, nó là trung tâm của hệ sinh thái Observability. Bài này nói về kiến trúc, cách nghĩ khi thiết kế metrics và cách tích hợp với Spring Boot.

bitwise operations in java

Bitwise thoạt nhìn hơi khó chịu vì phải nghĩ bằng số nhị phân thay vì thập phân như mọi khi. Nhưng nắm được quy luật rồi thì thấy nó chạy rất nhanh, tốn ít bộ nhớ, và xuất hiện khắp nơi từ permission, HashMap cho tới câu hỏi phỏng vấn.

jenkins

Ghi chép về Jenkins: kiến trúc Controller/Agent, Pipeline as Code, Shared Libraries và các best practice khi vận hành CI/CD.

in java / kafka

kafka basic

kafka là gì, sao lại chọn kafka mà không phải rabbitmq? bài này đi qua kiến trúc kafka, cách dùng với spring boot, mấy pattern hay gặp ngoài đời và checklist trước khi lên production.

in sql / oracle

tối ưu SQL trong Oracle

Ghi chép tối ưu Oracle SQL cho Database Architect và Principal Engineer: Cost-Based Optimizer (CBO) chạy ra sao, 5 kiểu Index Access Path, Hash Join tràn PGA, cách đọc DBMS_XPLAN với ALLSTATS LAST, và cách khoá Plan bằng SQL Plan Management (SPM).

in sql / oracle

oracle ROWNUM

ROWNUM trong Oracle chạy bên trong thế nào: vì sao ROWNUM > 1 luôn ra rỗng, COUNT STOPKEY trong execution plan giúp dừng quét sớm ra sao, và nên chọn subquery ROWNUM, window function ROW_NUMBER() hay cú pháp ANSI OFFSET-FETCH của Oracle 12c+.