JavaRush
Акция
Университет
Java FullStack
Python FullStack
new
Web 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. Пошаговая практика, мережда-схема потока операций и разбор типичных ошибок.
    Открыта
  • Безопасность сериализации: best practices

    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.
    Открыта
  • Проблема циклических ссылок: detection, обход

    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, производительность, а также best practices и типичные ошибки.
    Открыта
  • Сериализация 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» конвертацию, и какие есть advanced-приёмы вроде ObjectInputStream.readClassDescriptor(). Разберём полный практический сценарий с двумя версиями класса и типичными ошибками, включая ловушки InvalidClassException.
    Открыта
  • 1
  • ...
  • 19
  • 20
  • 21
  • 22
  • 23
  • ...
  • 57
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2025 JavaRush
MastercardVisa
"Программистами не рождаются" © 2025 JavaRush