JavaRush
Новорічна акція
Університет
Java FullStack
Python FullStack
new
Навчання
Курси
Задачі
Опитування
Ігри
Допомога
Графік стусанів
Стажування
Спільнота
Користувачі
Форум
Чат
Статті
Історії успіху
Дії
Відгуки
Передплати
Світла тема

Лекції

  • Відгуки
  • Про нас
  • CS50
Почати
Почати навчання
Почати навчання
  • Моє навчання
  • Курси
  • Університет
  • Карта квестів
  • Лекції
  • Externalizable: тонке налаштування серіалізації

    JAVA 25 SELF
    43 рівень, 2 лекція
    Розширюємо базову серіалізацію в Java: коли «автоматики» Serializable замало, на допомогу приходить ручний контракт Externalizable з методами writeExternal/ readExternal. У лекції розбираємо, як повністю контролювати формат даних, зменшувати розмір файлів і підтримувати зворотну сумісність, порівнюємо з потоками ObjectOutputStream/ ObjectInputStream, показуємо приклади, плюси/мінуси та типові помилки (обов’язковий public конструктор без параметрів, порядок запису/читання тощо).
    Відкрита
  • Налаштування поведінки серіалізації: кастомні методи

    JAVA 25 SELF
    43 рівень, 3 лекція
    У лекції розглядаємо, як впливати на процес серіалізації та десеріалізації в Java за допомогою методів writeReplace і readResolve: навіщо підміняти об’єкт на проксі, як зберегти синглтон, що робити з незмінними об’єктами та як це співвідноситься з writeObject/ readObject. Покрокова практика, Mermaid-схема потоку операцій і розбір типових помилок.
    Відкрита
  • Безпека серіалізації: найкращі практики

    JAVA 25 SELF
    43 рівень, 4 лекція
    Практичний гід із безпечної серіалізації в Java: чим небезпечна десеріалізація з ненадійних джерел, як захищатися за допомогою ObjectInputFilter, ключового слова transient, явного serialVersionUID, перевірки типів через instanceof та альтернативних форматів обміну (JSON/Proto). Усередині — наочні приклади коду, фільтрація дозволених класів і розбір типових помилок.
    Відкрита
  • Серіалізація вкладених об’єктів: особливості

    JAVA 25 SELF
    44 рівень, 0 лекція
    У цій лекції розглядаємо, як Java виконує глибоку серіалізацію графа об’єктів: що відбувається з полями‑посиланнями, чому всі вкладені об’єкти мають реалізовувати Serializable, як уникнути NotSerializableException і в яких випадках допомагає модифікатор transient. На прикладах покажемо серіалізацію/десеріалізацію об’єктів із вкладеністю, колекціями та циклічними посиланнями, а також розглянемо типові помилки, пов’язані з serialVersionUID і великими графами об’єктів.
    Відкрита
  • Вкладені та ієрархічні об’єкти: серіалізація графів

    JAVA 25 SELF
    44 рівень, 1 лекція
    Як Java серіалізує складні структури даних — від вкладених колекцій та ієрархій наслідування до циклічних графів об’єктів. Розберімо, чому працює серіалізація Map<String, List<Book>>, як зберігаються реальні типи нащадків у List<Animal>, що робить механізм посилань у випадку циклів і які підводні камені можуть траплятися. Поговоримо про роль ObjectOutputStream/ ObjectInputStream, методів writeObject/ readObject, поля serialVersionUID і модифікатора transient.
    Відкрита
  • Проблема циклічних посилань: виявлення та обхід

    JAVA 25 SELF
    44 рівень, 2 лекція
    Розбираємо, що таке циклічні посилання в об’єктних графах, чим вони небезпечні для серіалізації та як із ними впоратися. Показано, як стандартні потоки Java — ObjectOutputStream/ ObjectInputStream — автоматично відстежують вже зустрінуті об’єкти та записують посилання (handles), запобігаючи StackOverflowError. Розберемо підводні камені кастомної серіалізації ( writeObject/ readObject, defaultWriteObject/ defaultReadObject), а також стратегії обходу циклів у JSON: анотації @JsonIdentityInfo, @JsonBackReference/ @JsonManagedReference, вилучення полів за допомогою transient і використання ідентифікаторів.
    Відкрита
  • Ідентичність об’єктів під час бінарної серіалізації

    JAVA 25 SELF
    44 рівень, 3 лекція
    Як Java зберігає та відновлює ідентичність об’єктів під час бінарної серіалізації: чому еквівалентність через a. equals( b) не дорівнює ідентичності ( a == b), як ObjectOutputStream/ ObjectInputStream відстежують граф об’єктів і записують «повторні посилання» замість дублів, чому це коректно працює за наявності циклів, і як методи writeReplace() і readResolve() можуть вплинути на підсумкову ідентичність. Розбір із прикладами: цикли, спільні посилання, практика і типові помилки.
    Відкрита
  • Розбір типових помилок під час серіалізації колекцій

    JAVA 25 SELF
    44 рівень, 4 лекція
    У цій лекції розберемо найчастіші проблеми під час серіалізації колекцій: від java.io.NotSerializableException (коли елементи не реалізують Serializable) і пасток дженериків із ClassCastException до несумісності версій класів через serialVersionUID. Поговоримо про нюанси незмінних колекцій ( List.of(), Set.of(), Map.of()), поведінку полів transient/ static, а також про продуктивність і розмір файлів, де стануть у пригоді потоковий запис та стискання ( GZIPOutputStream). Ви отримаєте практичні поради, приклади коду та рекомендації щодо безпечної десеріалізації ( readObject/ writeObject).
    Відкрита
  • Проблеми бінарної серіалізації: безпека, сумісність

    JAVA 25 SELF
    45 рівень, 0 лекція
    У лекції розберемо ризики бінарної серіалізації в Java: чому десеріалізація з недовірених джерел небезпечна (ланцюжки «gadget chain», RCE), чим загрожують спеціальні методи на кшталт readObject і readResolve, та як захищатися (whitelisting, відмова на користь JSON/ XML, безпечні бібліотеки на кшталт Jackson). Детально розглянемо сумісність версій класів і роль поля serialVersionUID, поведінку під час InvalidClassException, обмеження transient/ static, продуктивність, а також найкращі практики та типові помилки.
    Відкрита
  • Серіалізація generics‑колекцій: особливості

    JAVA 25 SELF
    45 рівень, 1 лекція
    Розбираємося, як стирання типів ( type erasure) впливає на серіалізацію generics‑колекцій: чому під час виконання 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.
    Відкрита
  • 1
  • ...
  • 19
  • 20
  • 21
  • 22
  • 23
  • ...
  • 57
Навчання
  • Курси програмування
  • Реєстрація
  • Курс Java
  • Допомога із задачами
  • Ціни
Спільнота
  • Користувачі
  • Статті
  • Форум
  • Чат
  • Історії успіху
  • Дії
Компанія
  • Про нас
  • Контакти
  • Відгуки
  • FAQ
  • Підтримка
JavaRush JavaRush — це інтерактивний онлайн-курс вивчення Java-програмування з нуля. Він містить 1200 практичних задач із перевіркою розв'язання одним клацанням, необхідний мінімум знань із теоретичних основ Java, а ще мотивувальні «фішки», які допоможуть пройти курс до кінця: ігри, опитування, цікаві проєкти й статті про ефективне навчання та кар'єру Java‑девелопера.
Підписуйтесь
Мова інтерфейсу
Русский English
Українська
Програмістами не народжуються © 2025 JavaRush
MastercardVisa
Програмістами не народжуються © 2025 JavaRush