CodeGym
Khuyến mãi
Học tập
Khóa học
Bài tập
Khảo sát & Bài kiểm tra
Trò chơi
Trợ giúp
Lịch
Cộng đồng
Người dùng
Diễn đàn
Trò chuyện
Bài viết
Câu chuyện thành công
Hoạt động
Đánh giá
Gói đăng ký
Chủ đề sáng

Bài học

  • Đánh giá
  • Về chúng tôi
Bắt đầu
Bắt đầu học
Bắt đầu học ngay
  • Tiến độ của tôi
  • Khóa học
  • Bản đồ Quest
  • Bài học
  • Externalizable: tinh chỉnh chi tiết việc tuần tự hóa

    JAVA 25 SELF
    Cấp độ 43,Bài học 2
    Mở rộng tuần tự hóa cơ bản trong Java: khi tự động với Serializable là chưa đủ, hợp đồng thủ công Externalizable với các phương thức writeExternal/ readExternal sẽ giúp ích. Trong bài giảng, chúng ta phân tích cách kiểm soát hoàn toàn định dạng dữ liệu, giảm kích thước tệp và duy trì tương thích ngược, so sánh với các stream ObjectOutputStream/ ObjectInputStream, trình bày ví dụ, ưu/nhược điểm và các lỗi thường gặp (bắt buộc có public constructor không tham số, thứ tự ghi/đọc, v.v.).
    Có sẵn
  • Tùy chỉnh hành vi tuần tự hóa: các phương thức tùy chỉnh

    JAVA 25 SELF
    Cấp độ 43,Bài học 3
    Trong bài giảng này, chúng ta phân tích cách tác động tới quá trình tuần tự hóa và giải tuần tự hóa trong Java bằng các phương thức writeReplace và readResolve: tại sao cần thay thế đối tượng bằng proxy, cách bảo toàn singleton, xử lý đối tượng bất biến, và mối quan hệ với writeObject/ readObject. Thực hành từng bước, sơ đồ luồng thao tác bằng Mermaid và phân tích các lỗi điển hình.
    Có sẵn
  • Bảo mật tuần tự hóa: thực tiễn tốt nhất

    JAVA 25 SELF
    Cấp độ 43,Bài học 4
    Hướng dẫn thực hành về tuần tự hóa an toàn trong Java: tại sao việc giải tuần tự hóa từ nguồn không đáng tin lại nguy hiểm, cách phòng vệ bằng ObjectInputFilter, từ khóa transient, serialVersionUID được khai báo tường minh, kiểm tra kiểu bằng instanceof và các định dạng trao đổi thay thế (JSON/Proto). Bên trong — ví dụ mã minh họa, lọc danh sách lớp được phép và phân tích các lỗi thường gặp.
    Có sẵn
  • Tuần tự hóa đối tượng lồng nhau: đặc thù

    JAVA 25 SELF
    Cấp độ 44,Bài học 0
    Trong bài giảng này, chúng ta xem Java thực hiện tuần tự hóa sâu đồ thị đối tượng như thế nào: chuyện gì xảy ra với các trường tham chiếu, vì sao mọi đối tượng lồng nhau đều phải triển khai Serializable, cách tránh NotSerializableException, và khi nào nên dùng modifier transient. Qua ví dụ, chúng ta sẽ minh họa tuần tự hóa/giải tuần tự hóa các đối tượng có lồng nhau, collection và tham chiếu vòng, đồng thời phân tích các lỗi thường gặp liên quan đến serialVersionUID và các đồ thị đối tượng lớn.
    Có sẵn
  • Đối tượng lồng nhau và có thứ bậc: tuần tự hóa đồ thị

    JAVA 25 SELF
    Cấp độ 44,Bài học 1
    Cách Java tuần tự hóa các cấu trúc dữ liệu phức tạp: từ các collection lồng nhau và hệ phân cấp kế thừa cho đến các đồ thị đối tượng có vòng lặp. Ta sẽ phân tích lý do vì sao việc tuần tự hóa Map<String, List<Book>> hoạt động, cách các kiểu thực của lớp con được lưu trong List<Animal>, cơ chế tham chiếu xử lý vòng lặp như thế nào và những cạm bẫy thường gặp. Cùng nói về vai trò của ObjectOutputStream/ ObjectInputStream, các phương thức writeObject/ readObject, trường serialVersionUID và bộ sửa đổi transient.
    Có sẵn
  • Vấn đề tham chiếu vòng lặp: phát hiện và xử lý

    JAVA 25 SELF
    Cấp độ 44,Bài học 2
    Cùng tìm hiểu tham chiếu vòng lặp trong đồ thị đối tượng là gì, vì sao chúng nguy hiểm đối với việc tuần tự hóa và cách xử lý. Trình bày cách các luồng chuẩn của Java — ObjectOutputStream/ ObjectInputStream — tự động theo dõi các đối tượng đã gặp và ghi tham chiếu (handles), ngăn ngừa StackOverflowError. Phân tích những “cạm bẫy” của tuần tự hóa tùy chỉnh ( writeObject/ readObject, defaultWriteObject/ defaultReadObject), cùng các chiến lược xử lý vòng lặp với JSON: annotation @JsonIdentityInfo, cặp @JsonBackReference/ @JsonManagedReference, loại trừ trường bằng transient và dùng định danh.
    Có sẵn
  • Định danh của đối tượng khi tuần tự hóa nhị phân

    JAVA 25 SELF
    Cấp độ 44,Bài học 3
    Cách Java lưu và khôi phục định danh của đối tượng khi tuần tự hóa nhị phân: vì sao tính tương đương qua a. equals( b) không đồng nghĩa với định danh ( a == b), cách ObjectOutputStream/ ObjectInputStream theo dõi đồ thị đối tượng và ghi “tham chiếu lặp” thay vì bản sao trùng lặp, vì sao điều này hoạt động đúng với các vòng tham chiếu, và cách các phương thức writeReplace() và readResolve() có thể ảnh hưởng đến định danh cuối cùng. Phân tích kèm ví dụ: vòng lặp, tham chiếu dùng chung, thực hành và lỗi thường gặp.
    Có sẵn
  • Phân tích các lỗi thường gặp khi tuần tự hóa (serialization) các collection

    JAVA 25 SELF
    Cấp độ 44,Bài học 4
    Trong bài giảng này, chúng ta xem xét những vấn đề thường gặp nhất khi tuần tự hóa các collection: từ java.io.NotSerializableException (khi các phần tử không triển khai Serializable) và những “cái bẫy” của generics với ClassCastException cho đến sự không tương thích phiên bản lớp thông qua serialVersionUID. Chúng ta sẽ nói về các sắc thái của collection bất biến ( List.of(), Set.of(), Map.of()), hành vi của trường transient/ static, cũng như về hiệu năng và kích thước tệp, nơi ghi theo luồng và nén ( GZIPOutputStream) sẽ hữu ích. Bạn sẽ nhận được các lời khuyên thực tế, ví dụ mã và khuyến nghị về giải tuần tự hóa an toàn ( readObject/ writeObject).
    Có sẵn
  • Các vấn đề của tuần tự hóa nhị phân: bảo mật, khả năng tương thích

    JAVA 25 SELF
    Cấp độ 45,Bài học 0
    Trong bài giảng này, chúng ta phân tích các rủi ro của tuần tự hóa nhị phân trong Java: vì sao giải tuần tự từ nguồn không tin cậy nguy hiểm (chuỗi “gadget chain”, RCE), các rủi ro do những phương thức đặc biệt như readObject và readResolve, và cách phòng vệ (whitelisting, chuyển sang JSON/ XML, các thư viện an toàn như Jackson). Chúng ta sẽ xem xét chi tiết khả năng tương thích giữa các phiên bản lớp và vai trò của trường serialVersionUID, hành vi khi gặp InvalidClassException, các giới hạn của transient/ static, hiệu năng, cùng các best practices và lỗi thường gặp.
    Có sẵn
  • Tuần tự hóa các collection generics: những đặc điểm

    JAVA 25 SELF
    Cấp độ 45,Bài học 1
    Phân tích cách cơ chế xóa kiểu ( type erasure) ảnh hưởng đến việc tuần tự hóa các collection generics: vì sao trong thời gian chạy List<String> và List<Integer> — chỉ là cùng một ArrayList, chính xác cái gì được ghi và đọc qua ObjectOutputStream/ ObjectInputStream, từ đâu xuất hiện ClassCastException và các cảnh báo về ép kiểu unchecked. Chúng tôi sẽ minh họa bằng ví dụ với collection lồng nhau, Map/ Set, nhắc đến Gson/ Jackson, và đúc kết các thực hành giải tuần tự an toàn.
    Có sẵn
  • Tương thích và tương thích ngược (backward compatibility) khi tuần tự hóa

    JAVA 25 SELF
    Cấp độ 45,Bài học 2
    Cùng tìm hiểu cách tiến hóa các lớp có thể tuần tự hóa mà không làm hỏng dữ liệu: vì sao cần cố định serialVersionUID, JVM kiểm tra tính tương thích như thế nào, những thay đổi nào an toàn (thêm/xóa trường) và những thay đổi nào là nghiêm trọng (đổi kiểu, chuyển lớp sang package khác). Trình bày vai trò của transient/ static, kỹ thuật tuần tự hóa tùy biến qua writeObject/ readObject, khác biệt giữa tuần tự hóa nhị phân và XML/JSON, các chiến lược đảm bảo tính tương thích và các lỗi thường gặp (ví dụ, InvalidClassException).
    Có sẵn
  • Di chuyển và phiên bản hóa dữ liệu được tuần tự hóa

    JAVA 25 SELF
    Cấp độ 45,Bài học 3
    Cách phát triển an toàn các lớp có thể tuần tự hóa trong môi trường production: điều gì xảy ra khi thay đổi trường và kiểu, cơ chế phiên bản của lớp thông qua serialVersionUID hoạt động thế nào, khi nào nên thay đổi và khi nào nên giữ nguyên, cách áp dụng di trú “lười” qua readObject/ readFields và chuyển đổi “in-place”, cùng các kỹ thuật nâng cao như ObjectInputStream.readClassDescriptor(). Chúng ta sẽ phân tích một kịch bản thực tế đầy đủ với hai phiên bản lớp và các lỗi điển hình, bao gồm cả bẫy InvalidClassException.
    Có sẵn
  • 1
  • ...
  • 19
  • 20
  • 21
  • 22
  • 23
  • ...
  • 30
Học
  • Đăng ký
  • Khóa học Java
  • Trợ giúp bài tập
  • Bảng giá
  • Cú pháp Java
Cộng đồng
  • Người dùng
  • Bài viết
  • Diễn đàn
  • Trò chuyện
  • Câu chuyện thành công
  • Hoạt động
  • Chương trình giới thiệu
Công ty
  • Về chúng tôi
  • Liên hệ
  • Đánh giá
  • Phòng báo chí
  • CodeGym cho EDU
  • Câu hỏi thường gặp
  • Hỗ trợ
CodeGymCodeGym là một khóa học trực tuyến để học lập trình Java từ đầu. Khóa học này là cách hoàn hảo để nắm vững Java cho người mới bắt đầu. Nó chứa 1200+ bài tập với kiểm tra ngay lập tức và phạm vi lý thuyết cơ bản cần thiết về Java. Để giúp bạn thành công trong học tập, chúng tôi đã triển khai một bộ tính năng tạo động lực: bài kiểm tra, dự án lập trình, nội dung về phương pháp học hiệu quả, và hỗ trợ sự nghiệp lập trình viên Java.
Theo dõi chúng tôi
Ngôn ngữ giao diện
English Deutsch Español हिन्दी Français Português Polski বাংলা 简体中文 मराठी தமிழ் Italiano Bahasa Indonesia 繁體中文 Nederlands 日本語 한국어 Bulgarian Danish Hungarian Basa Jawa Malay Norwegian Romanian Swedish Telugu Thai Українська Filipino Turkish Azərbaycan Русский
Vietnamese
"Lập trình viên được tạo nên, không sinh ra" © 2026 CodeGym
MastercardVisa
"Lập trình viên được tạo nên, không sinh ra" © 2026 CodeGym