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
  • Tạo đối tượng bằng reflection

    JAVA 25 SELF
    Cấp độ 62,Bài học 3
    Cách tạo đối tượng và thao tác với lớp “ngay tại thời điểm chạy”: vì sao Class.newInstance() đã lỗi thời, cách dùng đúng getConstructor/ getDeclaredConstructor và Constructor.newInstance, gọi phương thức qua Method.invoke và đọc/sửa trường qua Field. Cùng phân tích các ngoại lệ điển hình ( ReflectiveOperationException và các loại khác), hạn chế của hệ thống module, thực hành hữu ích và một tiện ích nhỏ cho việc khởi tạo động. Thêm nữa — sơ đồ trực quan của toàn bộ quy trình.
    Có sẵn
  • Reflection và Dependency Injection

    JAVA 25 SELF
    Cấp độ 62,Bài học 4
    Trong bài giảng này, chúng ta phân tích thực hành reflection trong Java: cách dùng Class, Field và Method để đọc các trường private ( setAccessible( true)) và ráp một bộ tuần tự hóa đơn giản; cách các DI container tiêm phụ thuộc theo annotation ( @Inject, @Autowired) qua constructor và field; cách proxy động dựa trên Proxy và InvocationHandler chặn lời gọi; nó được dùng ở đâu trong thực tế ( Spring, JUnit, Jackson) và những hạn chế cùng lỗi thường gặp.
    Có sẵn
  • Những điều cơ bản về ghi log: java.util.logging, Log4j, SLF4J

    JAVA 25 SELF
    Cấp độ 63,Bài học 0
    Tại sao ứng dụng cần log và vì sao chỉ dùng System.out.println không giúp được trong môi trường production. Tìm hiểu các mức ERROR/ WARN/ INFO/ DEBUG/ TRACE, hệ thống tích hợp java.util.logging và tệp cấu hình logging.properties, làm quen với Log4j 2, Logback và facade SLF4J. So sánh với việc in ra console, thêm các phụ thuộc và xem các lỗi cấu hình cũng như sử dụng thường gặp.
    Có sẵn
  • Định dạng và cấp độ log: thực tiễn tốt nhất

    JAVA 25 SELF
    Cấp độ 63,Bài học 1
    Phân tích thành phần của một thông điệp log tốt (thời gian, cấp độ INFO/ ERROR, tên logger, nội dung, stack), cách định dạng đúng bằng template SLF4J/Log4j2 ( "{}" thay cho nối chuỗi), cách ghi log exception ( logger.error(..., ex)), khi nào dùng các cấp ERROR/ WARN/ INFO/ DEBUG/ TRACE, cùng các thực tiễn tốt nhất: không có dữ liệu nhạy cảm, thông điệp dễ hiểu, ID tương quan ( orderId, userId) và cấu hình log4j2.xml hợp lý.
    Có sẵn
  • Ghi log trong các ứng dụng đa luồng và web

    JAVA 25 SELF
    Cấp độ 63,Bài học 2
    Cách làm cho log đáng tin cậy trong môi trường đa luồng và web: tính an toàn luồng của các thư viện sẵn có ( Logback, Log4j 2, java.util.logging), ngữ cảnh MDC với việc truyền requestId, tích hợp với các Spring filter và trình xử lý lỗi, khác biệt so với System.out, các sắc thái của pool luồng và tracing trong microservice (traceId, OpenTelemetry). Phân tích các ví dụ thực tế và lỗi thường gặp, sử dụng SLF4J và Logger như trường static final.
    Có sẵn
  • Giám sát JVM: JMX, VisualVM, Java Flight Recorder

    JAVA 25 SELF
    Cấp độ 63,Bài học 3
    Bài giảng này là hướng dẫn thực hành về giám sát JVM: cách đọc các metric tiêu chuẩn qua JMX và JConsole, cách quan sát trực quan bộ nhớ, luồng và profile phương thức trong VisualVM (bao gồm heap dump và thread dump), cũng như cách ghi “hộp đen” bằng Java Flight Recorder và phân tích nó trong JDK Mission Control. Sẽ trình bày các lệnh khởi chạy ( -XX:StartFlightRecording), phân tích các kịch bản điển hình cho GC/luồng và những lỗi thường gặp.
    Có sẵn
  • Profiling và tối ưu hóa mã: công cụ, phương pháp

    JAVA 25 SELF
    Cấp độ 63,Bài học 4
    Cùng tìm hiểu profiling khác gì so với monitoring, những metric nào quan trọng (thời gian chạy phương thức, bộ nhớ, luồng, khóa), và nên dùng những công cụ nào: VisualVM, Java Flight Recorder, cũng như các profiler thương mại. Thực hành khám phá “máy tính” chậm, học cách tìm “điểm nóng”, phân tích heap dump và loại bỏ nút thắt bằng cách thay thuật toán, giảm allocation và dùng cache. Kết thúc bằng sơ đồ trực quan quy trình tối ưu hóa và phân tích các lỗi điển hình.
    Có sẵn
  • Tổ chức bộ nhớ trong JVM: stack, heap, PermGen/MetaSpace

    JAVA 25 SELF
    Cấp độ 64,Bài học 0
    Các biến cục bộ, đối tượng và metadata lớp đi vào đâu trong quá trình JVM: cùng phân tích stack của luồng, heap và sự tiến hóa từ PermGen → MetaSpace. Chúng ta sẽ nói về cách GC hoạt động, các lỗi bộ nhớ có thể gặp ( StackOverflowError, OutOfMemoryError) và tác động của các cờ chạy ( -Xss, -Xmx, -XX:MaxMetaspaceSize). Có kèm sơ đồ, sơ đồ mermaid và ví dụ chạy được.
    Có sẵn
  • Bộ gom rác: G1, ZGC, Shenandoah, so sánh

    JAVA 25 SELF
    Cấp độ 64,Bài học 1
    Trong bài giảng này, chúng ta tìm hiểu cách hoạt động của bộ gom rác ( GC) trong JVM, sự khác nhau giữa các GC cổ điển Serial/ Parallel/ CMS và các GC hiện đại G1, ZGC, Shenandoah, khái niệm thế hệ trẻ và già, vì sao xuất hiện các lần dừng Stop-the-World và cách giảm thiểu chúng. Thực hành cách bật các GC bằng cờ ( -XX:+UseG1GC, -XX:+UseZGC, -XX:+UseShenandoahGC), điều chỉnh pause ( -XX:MaxGCPauseMillis) và kích thước heap ( -Xms/ -Xmx), đọc log ( -Xlog:gc*) và tránh lỗi phổ biến (ví dụ, gọi cưỡng bức System.gc()).
    Có sẵn
  • Biến cục bộ, rò rỉ bộ nhớ, tham chiếu yếu

    JAVA 25 SELF
    Cấp độ 64,Bài học 2
    Trong bài giảng, bạn sẽ biết các biến cục bộ “sống” ở đâu (stack của luồng) và nó khác gì so với heap, vì sao trong Java vẫn có thể xảy ra rò rỉ bộ nhớ dù có GC và cách tránh chúng. Chúng ta sẽ xem các kịch bản thực tế: các collection static “bất tử”, listener không được hủy đăng ký và cache. Làm quen với họ nhà tham chiếu: SoftReference, WeakReference, PhantomReference, cũng như container WeakHashMap. Thực hành sửa rò rỉ và thảo luận tại sao gọi System.gc() — chỉ là gợi ý cho JVM chứ không phải mệnh lệnh, và OutOfMemoryError có thể dẫn đến điều gì.
    Có sẵn
  • Công cụ phân tích bộ nhớ: jmap, jvisualvm

    JAVA 25 SELF
    Cấp độ 64,Bài học 3
    Hướng dẫn thực hành chẩn đoán sự cố bộ nhớ trong JVM: chụp ảnh heap ( heap dump) bằng tiện ích jmap, xem tóm tắt qua -heap và -histo, khám phá ứng dụng trong jvisualvm (các tab Monitor, Heap Dump, Threads, Profiler), mổ xẻ rò rỉ qua ví dụ và làm quen với Eclipse MAT và jconsole. Cuối cùng — các lỗi thường gặp và lời khuyên.
    Có sẵn
  • Phân tích các lỗi thường gặp khi làm việc với bộ nhớ

    JAVA 25 SELF
    Cấp độ 64,Bài học 4
    Phân tích thực tế vì sao ứng dụng Java có thể “rò rỉ” bộ nhớ và chạy chậm: listener bị quên ( addActionListener/ removeActionListener), collection tĩnh “sống mãi”, tài nguyên không được đóng (mẹo: try-with-resources), lớp ẩn danh/nội bộ giữ tham chiếu, và lạm dụng System.gc(). Học cách đọc log GC ( -Xlog:gc*, -XX:+PrintGCDetails), chọn GC phù hợp, xây cache bằng WeakHashMap, giám sát ( jvisualvm, jconsole), phân tích heap dump, và cấu hình đúng -Xmx/ -Xms. Cuối cùng — các ví dụ rò rỉ thực tế và cách khắc phục.
    Có sẵn
  • 1
  • ...
  • 27
  • 28
  • 29
  • 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