Chuyên mục

Backend

APIs, databases and distributed systems.

99 Ngày Spring — Ngày 38: Nhiều datasource

Khai datasource thứ hai là tắt auto-config: ba bean phải tự dựng cho mỗi DB, @Primary và tách package entity, @Transactional gọi tên manager — cùng giới hạn không trải transaction qua hai database.

3 thg 9, 20268 phút15
99 Ngày Java — Ngày 38: Comparable & Comparator

Thứ tự tự nhiên gắn vào lớp với compareTo và bẫy tràn số khi trừ tay, Comparator ghép bằng comparing/thenComparing cùng bẫy reversed() đảo cả chuỗi — và vì sao TimSort ổn định lại quan trọng.

3 thg 9, 20268 phút11
99 Ngày Spring — Ngày 37: Redis

Đưa cache ra khỏi tiến trình: spring.cache.type redis và TTL, đổi serializer JDK sang JSON, RedisTemplate cho counter và rate limit, session store dùng chung — cùng bốn cái bẫy khi Redis chết.

2 thg 9, 20268 phút23
99 Ngày Java — Ngày 37: Iterator & duyệt collection

for-each chỉ là đường cú pháp của Iterator: hợp đồng Iterable một method, cơ chế fail-fast với modCount sinh ra ConcurrentModificationException — và hai cách xóa đúng với removeIf và it.remove().

2 thg 9, 20267 phút8
99 Ngày Spring — Ngày 36: Caching với @Cacheable

Tốc độ lớn nhất là không truy vấn: cache abstraction với @Cacheable, key SpEL và hai luật sống còn, bộ đôi @CacheEvict/@CachePut giữ cache thật, TTL với Caffeine — và bốn cái bẫy caching.

1 thg 9, 202610 phút10
99 Ngày Java — Ngày 36: Queue, Deque & Stack

FIFO xếp hàng và LIFO chồng đĩa, hai bộ method offer/poll/peek, ArrayDeque mảng vòng một mình hai vai (và bản án cho class Stack) — cùng PriorityQueue trên binary heap với bài toán top-K.

1 thg 9, 20269 phút10
99 Ngày Spring — Ngày 35: JdbcTemplate & JdbcClient

Khi nào bỏ JPA viết SQL tay: JdbcTemplate với RowMapper và batchUpdate, JdbcClient mới của Boot 3.2 với tham số có tên và tự map record — cùng công thức trộn JPA + JDBC và bẫy flush.

31 thg 8, 20269 phút7
99 Ngày Java — Ngày 35: TreeMap & LinkedHashMap

Cây đỏ-đen giữ key luôn sắp xếp với họ câu hỏi "gần nhất" của NavigableMap, sợi chỉ giữ thứ tự chèn của LinkedHashMap — và ảo thuật LRU cache trong mười dòng với removeEldestEntry.

31 thg 8, 20269 phút4
99 Ngày Spring — Ngày 34: Flyway — version hóa schema

Vì sao ddl-auto là thảm họa production, quy ước V__ và flyway_schema_history, ba quy tắc migration (bất biến, nhỏ, expand→contract) — và phân vai chuẩn với JPA.

30 thg 8, 20269 phút5