Chuyên mục
Backend
APIs, databases and distributed systems.

Ngày 13 của 99 Ngày Java: vì sao public field là thảm họa, công thức private + getter + nghiệp vụ có kiểm soát (không setter bừa bãi), bốn mức access modifier với chiến lược kín nhất có thể, và quy ước JavaBean bắt tay framework.

Ngày 12 của 99 Ngày Spring: @PathVariable hứng định danh trong đường dẫn, @RequestParam hứng bộ lọc sau dấu hỏi (required/defaultValue), quy tắc chọn path hay query, mapping trùng nổ lúc khởi động, và chuẩn thiết kế URL danh từ số nhiều.

Ngày 12 của 99 Ngày Java: constructor ép đối tượng chào đời đầy đủ dữ liệu, default constructor — món quà có điều kiện của compiler, overload constructor nối nhau bằng this(...), khối khởi tạo instance/static và thứ tự thực thi khi new.

Ngày 11 của 99 Ngày Spring — mở màn giai đoạn REST API: @RestController + @GetMapping mở endpoint trong 5 dòng, Jackson tự serialize object thành JSON, hành trình request qua DispatcherServlet, và thói quen vàng controller mỏng — service dày.

Ngày 11 của 99 Ngày Java — mở màn OOP: class là khuôn, object là bánh; field & method của đối tượng; new đúc đối tượng trên heap và biến chỉ giữ tham chiếu; giá trị mặc định của field; và this — con trỏ "chính tôi" trong method.

Ngày 10 của 99 Ngày Spring: @Conditional và họ @ConditionalOn... — bean có điều kiện, mổ xẻ auto-configuration của Boot (AutoConfiguration.imports, @ConditionalOnClass), nghệ thuật rút lui của @ConditionalOnMissingBean, và đọc CONDITIONS EVALUATION REPORT với --debug.

Ngày 10 của 99 Ngày Java: khai báo method với tham số và giá trị trả về, overloading — trùng tên khác chữ ký, sự thật đằng sau "Java luôn pass-by-value" (vì sao sửa mảng thì thấy mà gán lại thì không), và phạm vi biến local.

Không có 3 triệu kết nối nào chạm tới server gốc cả: ingest tách khỏi delivery, transcode một lần thành thang bitrate, HLS biến video live thành file tĩnh cache được, CDN nhân bản hình cây với request coalescing, trade-off độ trễ, và hệ chat biết "đếm xấp xỉ" — kèm góc trả lời phỏng vấn system design.
