Phân biệt length và length() trong Java
Trong Java, length và length() đều dùng để lấy kích thước, nhưng chúng thuộc về hai khái niệm khác nhau: length là thuộc tính của mảng, còn length() là phương thức của lớp String.
Ví dụ cơ bản
int[] scores = new int[5];
System.out.println(scores.length); // thuộc tính, không có dấu ngoặc
String name = "example";
System.out.println(name.l ...
Đăng vào ngày 23 tháng 8 lúc 06:46
Cơ chế Interceptor và kiến trúc Plugin trong MyBatis
MyBatis Interceptor là một tính năng mạnh mẽ cho phép nhà phát triển can thiệp vào quá trình thực thi SQL mà không cần thay đổi mã nguồn cốt lõi của thư viện. Dựa trên mô hình Design Pattern "Decorator" và cơ chế Proxy của Java, MyBatis cung cấp khả năng mở rộng linh hoạt cho các tác vụ như ghi log, phân trang tự động, hoặc bảo mật dữ liệu.
1. ...
Đăng vào ngày 22 tháng 8 lúc 18:34
Xây dựng cây phân cấp tổ chức từ dữ liệu phẳng trong Vue và Java
Trong hệ thống quản lý tổ chức, dữ liệu thường được lưu trữ dạng bảng phẳng với mã tổ chức và mã cấp trên. Để hiển thị trên giao diện Vue dưới dạng cây phân cấp, cần chuyển đổi dữ liệu này thành cấu trúc đệ quy gồm các trường label và children.
Entity định nghĩa nút cây
Class Java đại diện cho mỗi nút trong cây:
@Data
@Accessors(chain = true)
...
Đăng vào ngày 21 tháng 8 lúc 23:33
Lập trình hướng đối tượng trong Java
Đặc điểm cốt lõi của OOP
Đóng gói (Encapsulation)
Ẩn giấu chi tiết bên trong, chỉ tiết lộ giao diện cần thiết. Giúp bảo vệ dữ liệu và tăng khả năng tái sử dụng.
Kế thừa (Inheritance)
Cho phép lớp con thừa hưởng thuộc tính và phương thức từ lớp cha. Lớp con có thể ghi đè phương thức khi cần mở rộng hành vi.
Đa hình (Polymorphism)
Cùng một tha ...
Đăng vào ngày 21 tháng 8 lúc 16:20
Tối ưu hóa xử lý tập hợp dữ liệu trong Java với Stream API
Kể từ phiên bản Java 8, Stream API đã trở thành một công cụ mạnh mẽ giúp các nhà phát triển xử lý dữ liệu một cách khai báo (declarative) thay vì mệnh lệnh (imperative). Stream cho phép chúng ta thực hiện các thao tác phức tạp trên tập hợp dữ liệu với cú pháp ngắn gọn, dễ đọc và tối ưu hơn.
Sự khác biệt giữa cách làm truyền thống và Stream API ...
Đăng vào ngày 21 tháng 8 lúc 04:05
Hiểu sâu về OOP trong Java (Phần 1)
Khái niệm cơ bản về lập trình hướng đối tượng
Ghi chú học tập – OOP (Object-Oriented Programming)
Tại sao cần phải sử dụng lập trình hướng đối tượng?
Lý do chính: Đóng gói, Kế thừa, Đa hình
Ví dụ minh họa lợi ích của OOP:
Giả sử một cửa hàng thú cưng có hai chú chó:
Chú chó đầu tên là "Bạch", 2 tuổi, màu trắng.
Chú chó thứ hai tê ...
Đăng vào ngày 21 tháng 8 lúc 04:00
Tích hợp Spring Boot và khung SSM
Tích hợp Spring Boot và khung SSM (Spring, Spring MVC, MyBatis)
Giới thiệu về Spring Boot và SSM
Spring Boot
Spring Boot là một thành phần con của framework Spring, cung cấp cách tiếp cận nhanh chóng để khởi tạo và chạy các ứng dụng Spring. Nó giúp đơn giản hóa việc thiết lập ban đầu cũng như quá trình phát triển ứng dụng bằng cách cung cấp cấu ...
Đăng vào ngày 18 tháng 8 lúc 20:11
Mô hình bộ nhớ luồng Java (JMM)
Hệ thống bộ nhớ cache máy tính
Vấn đề cần giải quyết
Bộ nhớ cache CPU giúp giảm thời gian trung bình truy cập RAM. Vị trí thứ hai trong hệ thống lưu trữ phân cấp, chỉ sau thanh ghi CPU. Dung lượng nhỏ hơn RAM nhưng tốc độ trao đổi nhanh hơn nhiều.
Quy trình hoạt động
Khi CPU yêu cầu truy cập bộ nhớ, sẽ kiểm tra trước trong cache. Nếu tồn tại ...
Đăng vào ngày 16 tháng 8 lúc 12:37
Tổng quan về Mảng trong Java: Cấu trúc, Khởi tạo và Thao tác Cơ bản
Mảng (Array) trong Java là một cấu trúc dữ liệu dùng để lưu trữ một nhóm các phần tử có cùng kiểu dữ liệu. Về bản chất, mảng chiếm một vùng bộ nhớ liên tục và được quản lý thông qua một danh tính duy nhất. Khi khai báo, hệ thống sẽ phân bổ khối nhớ cố định, nên kích thước không thể thay đổi sau khi khởi tạo.
Để làm việc hiệu quả với mảng, cần n ...
Đăng vào ngày 16 tháng 8 lúc 04:31
Kỹ thuật Lazy Loading và Cơ chế Cache trong MyBatis
1. Cơ chế Tải chậm (Lazy Loading)
Trong MyBatis, resultMap hỗ trợ ánh xạ nâng cao thông qua các thẻ association (quan hệ 1-1) và collection (quan hệ 1-nhiều). Cả hai thẻ này đều tích hợp tính năng Lazy Loading (tải chậm), giúp tối ưu hiệu suất bằng cách chỉ truy vấn dữ liệu liên quan khi thực sự cần thiết.
Giả sử chúng ta có nhu cầu truy vấn t ...
Đăng vào ngày 15 tháng 8 lúc 17:22