CodeGym
促销
学习
课程
任务
调查 & 测验
游戏
帮助
日程
社区
Users
论坛
聊天
文章
成功故事
动态
评价
订阅
浅色主题

课时

  • 评论
  • 关于我们
开始
开始学习
立即开始学习
  • 我的进度
  • 课程
  • 任务地图
  • 课程
  • Creating Objects via Reflection

    JAVA 25 SELF
    等级 62,课时 3
    如何在运行时动态创建对象并管理类:为什么 Class.newInstance() 已经过时,如何正确使用 getConstructor/ getDeclaredConstructor 和 Constructor.newInstance,如何通过 Method.invoke 调用方法,以及通过 Field 读取/修改字段。我们将梳理常见异常(如 ReflectiveOperationException 等)、模块系统的限制、实用做法,以及一个用于动态实例化的迷你工具。另外——一张清晰的流程示意图。
    可用
  • 反射与依赖注入(Dependency Injection)

    JAVA 25 SELF
    等级 62,课时 4
    在本讲中我们解析 Java 中反射的实践:如何通过 Class、 Field 和 Method 读取私有字段( setAccessible( true))并构建一个简单的序列化器;DI 容器如何通过注解( @Inject、 @Autowired)经由构造器和字段注入依赖;基于 Proxy 与 InvocationHandler 的动态代理如何拦截调用;它们在实践中用于哪些场景( Spring、 JUnit、 Jackson),以及常见的限制与错误。
    可用
  • 日志记录基础:java.util.logging、Log4j、SLF4J

    JAVA 25 SELF
    等级 63,课时 0
    为什么应用需要日志,以及为什么仅靠 System.out.println 在生产环境并不可靠。我们将讲解 ERROR/ WARN/ INFO/ DEBUG/ TRACE 这些级别,内置的 java.util.logging 以及配置文件 logging.properties,并认识 Log4j 2、 Logback 和日志门面 SLF4J。我们将与控制台输出进行对比,添加依赖,并讲解配置与使用中的典型错误。
    可用
  • 日志格式与日志级别:best practices

    JAVA 25 SELF
    等级 63,课时 1
    讲解一条好的日志消息由哪些部分组成(时间、级别 INFO/ ERROR、logger 名称、文本、堆栈),如何通过 SLF4J/Log4j2 模板正确格式化(用 "{}" 替代字符串拼接),如何记录异常( logger.error(..., ex)),何时使用 ERROR/ WARN/ INFO/ DEBUG/ TRACE 等级,以及最佳实践:不要包含敏感数据、消息清晰易懂、使用关联 ID( orderId、 userId)和合理配置 log4j2.xml。
    可用
  • 多线程与 Web 应用中的日志记录

    JAVA 25 SELF
    等级 63,课时 2
    如何在多线程与 Web 环境中让日志可靠:现成库的线程安全性( Logback、 Log4j 2、 java.util.logging)、 MDC 上下文及 requestId 传递、与 Spring 过滤器和错误处理器的集成、与 System.out 的区别、线程池的细节以及微服务中的追踪(traceId, OpenTelemetry)。讲解实用示例与常见错误,使用 SLF4J 与 Logger 作为 static final 字段。
    可用
  • JVM 监控:JMX、VisualVM、Java Flight Recorder

    JAVA 25 SELF
    等级 63,课时 3
    这节课是关于监控 JVM 的实用指南:如何通过 JMX 和 JConsole 读取标准指标,如何在 VisualVM 中可视化查看内存、线程并对方法进行性能剖析(包括 heap dump 与 thread dump),以及如何使用 Java Flight Recorder 录制“黑匣子”,并在 JDK Mission Control 中进行分析。我们会展示启动命令( -XX:StartFlightRecording),讲解 GC/线程 的典型分析场景以及常见错误。
    可用
  • 性能剖析与代码优化:工具与方法

    JAVA 25 SELF
    等级 63,课时 4
    讲清性能剖析与监控的区别、哪些指标重要(方法耗时、内存、线程、锁),以及应该使用哪些工具: VisualVM、 Java Flight Recorder,还有商业剖析器。实操分析一个“慢”的计算器,学习查找“热点”、分析 heap dump,并通过更换算法、减少分配和缓存来消除瓶颈。最后用一张优化流程的可视化图和常见错误解析作结。
    可用
  • JVM 内存结构:栈、堆、PermGen/MetaSpace

    JAVA 25 SELF
    等级 64,课时 0
    在 JVM 运行过程中,局部变量、对象以及类的元数据分别会进入哪里:我们将拆解线程栈、堆以及 PermGen → MetaSpace 的演进。还会讨论 GC 的工作方式、常见的内存错误( StackOverflowError、 OutOfMemoryError)以及启动参数对其的影响( -Xss、 -Xmx、 -XX:MaxMetaspaceSize)。附上示意图、mermaid 图表和可运行示例。
    可用
  • 垃圾回收器:G1、ZGC、Shenandoah,对比

    JAVA 25 SELF
    等级 64,课时 1
    在本讲中我们将解析垃圾回收器( GC)在 JVM 中如何工作,经典的 Serial/ Parallel/ CMS 与现代的 G1、 ZGC 和 Shenandoah 有何不同,什么是Young Generation与Old Generation,为什么会发生 Stop-the-World Pause以及如何将其最小化。实践中我们将看到如何通过标志启用不同的 GC( -XX:+UseG1GC、 -XX:+UseZGC、 -XX:+UseShenandoahGC),如何设置Pause( -XX:MaxGCPauseMillis)与堆大小( -Xms/ -Xmx),如何阅读日志( -Xlog:gc*)以及如何避免常见错误(例如强制调用 System.gc())。
    可用
  • 局部变量、内存泄漏、弱引用

    JAVA 25 SELF
    等级 64,课时 2
    通过本课你将了解局部变量存放在哪里(线程栈)以及它与堆有何不同,为什么在 Java 中尽管有 GC 仍然可能发生内存泄漏,以及如何避免它们。我们将分析真实场景:“常驻”的 static-集合、未取消订阅的监听器和缓存。认识引用家族: SoftReference、 WeakReference、 PhantomReference,以及容器 WeakHashMap。练习修复泄漏,并讨论为什么调用 System.gc() 只是给 JVM 的提示而非命令,以及 OutOfMemoryError 可能带来的后果。
    可用
  • 内存分析工具:jmap、jvisualvm

    JAVA 25 SELF
    等级 64,课时 3
    JVM 内存问题诊断实用指南:使用 jmap 工具生成堆转储( heap dump),通过 -heap 和 -histo 查看摘要,在 jvisualvm 中分析应用(标签页 Monitor、 Heap Dump、 Threads、 Profiler),通过示例定位一次泄漏,并了解 Eclipse MAT 和 jconsole。最后给出常见错误与建议。
    可用
  • 解析内存使用中的常见错误

    JAVA 25 SELF
    等级 64,课时 4
    动手解析为什么 Java 应用会发生内存“泄漏”并变卡:遗忘的监听器( addActionListener/ removeActionListener)、永不清理的静态集合、未关闭的资源(建议: try-with-resources)、持有外部引用的匿名/内部类,以及滥用 System.gc()。我们将学会阅读 GC 日志( -Xlog:gc*、 -XX:+PrintGCDetails)、选择回收器、基于 WeakHashMap 构建缓存、进行监控( jvisualvm、 jconsole)、分析堆转储,并正确设置 -Xmx/ -Xms。最后——真实的泄漏示例及其修复。
    可用
  • 1
  • ...
  • 27
  • 28
  • 29
  • 30
Learn
  • 注册
  • Java 课程
  • 任务帮助
  • 定价
  • Java 语法
社区
  • 用户
  • 文章
  • 论坛
  • 聊天
  • 成功故事
  • 动态
  • 联盟计划
Company
  • 关于我们
  • 联系方式
  • 评价
  • 媒体中心
  • CodeGym for EDU
  • 常见问题
  • 支持
CodeGymCodeGym 是一个从零开始学习 Java 编程的在线课程。该课程是初学者掌握 Java 的完美方式。它包含 1200+ 个带即时验证的任务,以及必要的 Java 基础理论。为了帮助你在学习中取得成功,我们实现了一系列激励功能:测验、编码项目、关于高效学习的内容,以及 Java 开发者职业相关内容。
关注我们
界面语言
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
“程序员是培养出来的,不是天生的” © 2026 CodeGym
MastercardVisa
“程序员是培养出来的,不是天生的” © 2026 CodeGym