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

课时

  • 评论
  • 关于我们
开始
开始学习
立即开始学习
  • 我的进度
  • 课程
  • 任务地图
  • 课程
  • IO 性能问题:瓶颈

    JAVA 25 SELF
    等级 41,课时 0
    本讲讲述什么是输入/输出中的“瓶颈”,以及如何发现并消除它。我们将分析为何磁盘与网络操作明显慢于内存(RAM),常见的反模式有哪些(通过 read() 逐字节读取、同步日志等),缓冲( BufferedInputStream、 BufferedReader)、性能分析器( VisualVM、 JProfiler)以及通过 System. currentTimeMillis () 进行时间测量如何提供帮助。我们将进行一个读取文件 "bigfile.txt" 的实践实验,对比有无缓冲的速度,观察 SSD/HDD 与网络的影响,并列举典型错误。
    可用
  • NIO 通道与 ByteBuffer

    JAVA 25 SELF
    等级 41,课时 1
    Java NIO 非阻塞 I/O 的实用入门:解析通道 Channel 和缓冲区 ByteBuffer 与流 InputStream/ OutputStream 的区别,如何使用 FileChannel 进行读写,借助 position()/ truncate() 进行定位,处理缓冲区参数( capacity、 limit、 position、 mark),以及在 allocate() 与 allocateDirect() 之间做选择。还展示了 zero-copy 操作 transferTo()/ transferFrom(),以及常见错误,比如忘记调用 flip() 和缓冲区模式不正确。
    可用
  • 超大文件:chunking 模式

    JAVA 25 SELF
    等级 41,课时 2
    如何在不触发 OutOfMemoryError 的情况下高效处理动辄几十 GB 的文件:将其按块(chunks)切分,使用 RandomAccessFile 和 FileChannel 按位置读取,借助 ExecutorService/ ForkJoinPool 并行化任务;而对简单拷贝使用通过 transferTo/ transferFrom 的零拷贝(zero-copy)。我们将讨论块大小的选择、行边界的处理、结果同步以及常见错误。
    可用
  • 处理大文件:chunking、memory mapping

    JAVA 25 SELF
    等级 41,课时 3
    如何在 Java 中安全且快速地处理海量文件:通过流与缓冲按块(chunking)读取,调节缓冲区大小以提升性能,使用 MappedByteBuffer 和 FileChannel 将文件映射到内存,实现超高速随机访问。我们将解析 memory mapping 的优缺点、资源与并行方面的建议,以及典型错误(例如 OutOfMemoryError、遗忘关闭的描述符、搜索时块重叠)。
    可用
  • 归档/压缩:java.util.zip

    JAVA 25 SELF
    等级 41,课时 4
    一堂关于在 Java 中处理归档与压缩的实战讲座:了解包 java.util.zip,流 ZipInputStream/ ZipOutputStream 以及随机访问类 ZipFile;通过 Deflater( 0… 9, DEFAULT_COMPRESSION)控制压缩级别;使用 GZIPInputStream/ GZIPOutputStream 处理单个文件;借助 Files.walk 和基于 PathMatcher 的过滤( "glob:**/*.txt")来打包/解包目录。还将讨论安全性:通过路径规范化防护 Zip Slip,以及对 zip bomb 进行体积控制;最后我们将实现一个带通配符的迷你 CLI “zip/unzip”。
    可用
  • 对象序列化入门:为什么需要它

    JAVA 25 SELF
    等级 42,课时 0
    为何以及如何在 Java 中“打包”对象:使用 ObjectOutputStream/ ObjectInputStream 将对象转换为字节流并再还原,在多次运行之间保存状态、通过网络传输以及缓存结果。解析接口 Serializable 的作用,关键字 transient 的细节以及诸如 "save.dat" 这样的文件名,讨论安全风险与版本兼容性。实践:游戏迷你存档、客户端↔服务器消息发送与计算结果缓存。
    可用
  • Serializable 接口:基本原理

    JAVA 25 SELF
    等级 42,课时 1
    讲解 Java 中的序列化基础:标记接口 java.io.Serializable,如何通过 implements Serializable 标记类,对字段的要求( static、 transient),使用 ObjectOutputStream/ ObjectInputStream 逐步演示对象的写入与读取;调用 writeObject/ readObject 时“底层”发生了什么;以及常见错误(不可序列化的字段、内部类、 static 字段的行为,以及通过 serialVersionUID 控制的类版本)。
    可用
  • 标准序列化格式:二进制与文本

    JAVA 25 SELF
    等级 42,课时 2
    在本讲中,我们将比较 Java 的二进制序列化(通过类 ObjectOutputStream 和 ObjectInputStream)与文本格式( JSON、 XML):工作原理、速度与紧凑性、版本兼容性与安全性。我们会分析优点与限制,展示使用 Jackson(包括 Maven 依赖)的实践,并给出何时选择哪种格式的建议,以及常见错误。
    可用
  • ObjectOutputStream、ObjectInputStream:操作流

    JAVA 25 SELF
    等级 42,课时 3
    在本讲中,我们讲解如何使用成对的对象流 ObjectOutputStream 和 ObjectInputStream 在 Java 中对对象进行序列化与反序列化:什么是标记接口 java.io.Serializable, writeObject() 和 readObject() 方法如何工作,为什么 static 和 transient 字段不会进入流,会遇到哪些异常( NotSerializableException、 InvalidClassException),以及 serialVersionUID 有何影响。实践部分把一个对象和对象列表序列化到文件,并解析典型错误。
    可用
  • 集合的序列化:List, Map, Set

    JAVA 25 SELF
    等级 42,课时 4
    Java 集合序列化实用指南:如何通过 ObjectOutputStream/ ObjectInputStream 保存和恢复 List、 Map、 Set;为什么大多数集合已经实现了 Serializable;对元素的要求; HashSet/ HashMap 中的顺序行为;处理嵌套和空集合;常见陷阱( InvalidClassException、 serialVersionUID、 transient/ static)。最后以一个“虚拟图书馆”的完整示例收尾。
    可用
  • 控制序列化流程:writeObject、readObject

    JAVA 25 SELF
    等级 43,课时 0
    如何拦截默认序列化并将流程掌控在自己手中:使用具有严格签名的私有方法 writeObject/ readObject( private void writeObject( ObjectOutputStream out) throws IOException),调用 defaultWriteObject()/ defaultReadObject(),通过 transient 排除字段,添加校验和与日志,别忘了 serialVersionUID 以及版本兼容性。讲解常见错误、与 ObjectOutputStream/ ObjectInputStream 的配合以及实用示例。
    可用
  • transient 字段, serialVersionUID

    JAVA 25 SELF
    等级 43,课时 1
    Java 序列化实战指南:什么时候以及如何使用 transient 将字段排除在流之外,反序列化时会发生什么(默认值),如何在 readObject 方法中恢复状态; serialVersionUID 是什么,如何声明( private static final long serialVersionUID = 1L),何时修改以及为什么最好显式指定。展示了可运行示例、风险场景与典型错误。
    可用
  • 1
  • ...
  • 18
  • 19
  • 20
  • 21
  • 22
  • ...
  • 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