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

课时

  • 评论
  • 关于我们
开始
开始学习
立即开始学习
  • 我的进度
  • 课程
  • 任务地图
  • 课程
  • 二进制序列化的问题:安全性与兼容性

    JAVA 25 SELF
    等级 45,课时 0
    本讲将解析 Java 中二进制序列化的风险:为什么从不受信任来源进行反序列化很危险(“gadget chain”、RCE),像 readObject 和 readResolve 这样的特殊方法会带来什么威胁,以及如何进行防护(白名单、放弃转用 JSON/ XML、使用诸如 Jackson 等安全库)。将详细讨论类版本兼容性与 serialVersionUID 字段的作用、遇到 InvalidClassException 时的行为、 transient/ static 的限制、性能问题,以及最佳实践与常见错误。
    可用
  • 泛型集合的序列化:特点

    JAVA 25 SELF
    等级 45,课时 1
    我们来解析类型擦除( type erasure)如何影响泛型集合的序列化:为什么在运行时 List<String> 与 List<Integer> 实际上都是同一个 ArrayList,通过 ObjectOutputStream/ ObjectInputStream 到底写入/读取了什么, ClassCastException 与关于 unchecked 转型的警告从何而来。我们会展示嵌套集合、 Map/ Set 的示例,提到 Gson/ Jackson,并给出安全反序列化的实践。
    可用
  • 序列化中的兼容性与向后兼容性(backward compatibility)

    JAVA 25 SELF
    等级 45,课时 2
    讲解如何在不破坏数据的情况下演进可序列化的类:为什么要固定 serialVersionUID,JVM 如何校验兼容性,哪些修改是安全的(添加/删除字段),哪些是致命的(更改类型、将类移动到其他包)。展示 transient/ static 的作用,通过 writeObject/ readObject 进行自定义序列化的技巧,二进制序列化与 XML/JSON 的区别,保障兼容性的策略以及典型错误(例如 InvalidClassException)。
    可用
  • 序列化数据的迁移与版本管理

    JAVA 25 SELF
    等级 45,课时 3
    如何在生产环境中安全演进可序列化类:当字段和类型发生变化会出现什么情况,类版本如何通过 serialVersionUID 工作,何时需要修改、何时保持不变,如何通过 readObject/ readFields 实现“惰性”迁移与“原地”(in-place)转换,以及有哪些高级技巧,例如 ObjectInputStream.readClassDescriptor()。我们将拆解一个包含两个类版本与典型错误的完整实战场景,包括 InvalidClassException 的陷阱。
    可用
  • 序列化的压缩与性能剖析

    JAVA 25 SELF
    等级 45,课时 4
    如何在 Java 中减小对象序列化的体积并加速:用 transient 排除多余字段,通过 Externalizable 获得完全控制,使用流式压缩( GZIPOutputStream、 ZipOutputStream),通过缓冲( BufferedOutputStream、 BufferedInputStream)加速 I/O,并通过 FileChannel. transferTo 进行快速复制。为评估性能,既使用 System. nanoTime() 做快速测量,也使用 JMH 进行可靠的微基准。最后以一个小实验收尾,并梳理典型错误。
    可用
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