CodeGym
AI Academy
促銷
CodeGym University
學習
課程
任務
問卷 & 測驗
遊戲
說明
行程
社群
用戶
論壇
聊天
文章
成功故事
動態
評價
訂閱
淺色主題

課程

  • 評論
  • 關於我們
開始
開始學習
立即開始學習
  • My Progress
  • Courses
  • 任務地圖
  • 課程
  • 二進位序列化的問題:安全性、相容性

    JAVA 25 SELF
    等級 45,課程 0
    本講座解析 Java 中二進位序列化的風險:為何從不受信任來源進行反序列化很危險(「gadget chain」鏈、RCE)、像 readObject 與 readResolve 等特殊方法有何風險,以及如何防護(白名單 whitelisting、改用 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 的可靠微基準。最後以一個小型實驗和常見錯誤解析作結。
    可用
學習
  • 註冊
  • Java 課程
  • 題目協助
  • 價格
  • Java 語法
社群
  • 用戶
  • 文章
  • 論壇
  • 聊天
  • 成功故事
  • 動態
  • 聯盟計畫
公司
  • 關於我們
  • 聯絡方式
  • 評價
  • 新聞中心
  • 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