Chuyên mục

Backend

APIs, databases and distributed systems.

99 Ngày Java — Ngày 43: Custom exception & best practices

Khi nào đáng tạo exception mới và khi nào dùng lại loại chuẩn, thiết kế exception mang dữ liệu có cấu trúc chứ không chỉ message, ba nguyên tắc viết message — cùng cây phân cấp, mã lỗi và fail fast.

8 thg 9, 20269 phút12
99 Ngày Spring — Ngày 42: Cấu hình SecurityFilterChain

Cấu hình bean và lambda của Security 6, luật khớp theo thứ tự khai báo với anyRequest cuối cùng, BCryptPasswordEncoder và salt tự sinh — cùng hai chỗ hay làm sai nhất là CSRF và CORS.

7 thg 9, 20266 phút13
99 Ngày Java — Ngày 42: try-catch-finally đúng cách

Thứ tự catch từ con tới cha và multi-catch, ba cái bẫy của finally — trong đó return làm exception biến mất không dấu vết — cùng chuyện ném lại hay bọc lại và cách xử lý InterruptedException.

7 thg 9, 20267 phút13
99 Ngày Spring — Ngày 41: Kiến trúc Spring Security

Security là chuỗi filter đứng trước controller chứ không nằm trong nó, SecurityContext giữ Authentication trong ThreadLocal, phân biệt authentication 401 với authorization 403 — và bẫy hasRole so với hasAuthority.

6 thg 9, 20266 phút16
99 Ngày Java — Ngày 41: Exception tổng quan

Cây thừa kế Throwable và vì sao nó quyết định cách hành xử, ranh giới checked với unchecked cùng câu hỏi duy nhất để phân loại, cách đọc stack trace từ Caused by — và bốn kiểu bắt exception khiến người khác khổ.

6 thg 9, 20267 phút25
99 Ngày Spring — Ngày 40: Tổng kết tối ưu JPA

Checklist bảy vấn đề theo thứ tự đáng sửa trước: N+1 query và ba cách chữa, projection, keyset pagination, index khóa ngoại, transaction gọn, batch ghi — và nguyên tắc đo trước, cache cuối cùng.

5 thg 9, 20267 phút14
99 Ngày Java — Ngày 40: Wildcard & PECS

Vì sao List<Integer> không truyền được vào List<Number>, ? extends chỉ đọc và ? super chỉ ghi, quy tắc PECS giải thích luôn chữ ký của nửa bộ Collections — cùng giới hạn và lúc không nên dùng wildcard.

5 thg 9, 20268 phút10
99 Ngày Spring — Ngày 39: Soft delete & entity patterns

Soft delete với @SQLDelete và bốn cái bẫy của nó, optimistic locking bằng @Version chống lost update, và mapping enum — vì sao ORDINAL mặc định là cái bẫy nguy hiểm nhất của tầng entity.

4 thg 9, 20269 phút16
99 Ngày Java — Ngày 39: Generics cơ bản

Vì sao Generics tồn tại: bắt lỗi lúc biên dịch thay vì lúc chạy, lớp và method generic với bounded type, type erasure cùng bốn giới hạn của nó — và vì sao List<String> không phải con của List<Object>.

4 thg 9, 20268 phút10