JavaRush
AI Academy
new
Акция
Университет
Java FullStack
Python FullStack
AI Native Developer
new
Web FullStack
Обучение
Курсы
Задачи
Опросы
Игры
Помощь
График пинков
Стажировка
Сообщество
Пользователи
Форум
Чат
Статьи
Истории успеха
Активности
Отзывы
Подписки
Светлая тема

Лекции

  • Отзывы
  • О нас
  • CS50
Начать
Начать обучение
Начать обучение
  • Мое обучение
  • Курсы
  • Университет
  • Карта квестов
  • Лекции
  • Проблемы производительности IO: узкие места

    JAVA 25 SELF
    41 уровень,0 лекция
    Эта лекция о том, что такое «узкое место» в вводе-выводе и как его обнаруживать и устранять. Разберём, почему операции диска и сети значительно медленнее RAM, какие анти‑паттерны часто встречаются (чтение по одному байту через read(), синхронные логи и др.), как помогают буферы ( BufferedInputStream, BufferedReader), профилировщики ( VisualVM, JProfiler) и замеры времени через System. currentTimeMillis (). Проведём практический эксперимент с чтением файла "bigfile.txt", сравним скорость с буфером и без, посмотрим на влияние SSD/HDD и сети и перечислим типичные ошибки.
    Открыта
  • NIO Channels и ByteBuffer

    JAVA 25 SELF
    41 уровень,1 лекция
    Практическое введение в неблокирующий ввод-вывод Java NIO: разбираем, чем каналы 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: разбиваем на куски (chunks), читаем по позициям через RandomAccessFile и FileChannel, распараллеливаем задачи с ExecutorService/ ForkJoinPool, а для простого копирования используем zero-copy через transferTo/ transferFrom. Разбираем выбор размера куска, границы строк, синхронизацию результатов и типичные ошибки.
    Открыта
  • Работа с большими файлами: 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 лекция
    В лекции разбираем, как сериализовать и десериализовать объекты в Java с помощью парных потоков ObjectOutputStream и ObjectInputStream: что такое маркерный интерфейс java.io.Serializable, как работают методы writeObject() и readObject(), почему поля static и transient не попадают в поток, какие исключения встречаются ( NotSerializableException, InvalidClassException), и на что влияет serialVersionUID. На практике сериализуем один объект и список объектов в файл и разбираем типичные ошибки.
    Открыта
  • Сериализация коллекций: List, Map, Set

    JAVA 25 SELF
    42 уровень,4 лекция
    Практическое руководство по сериализации коллекций в Java: как сохранять и восстанавливать List, Map, Set через ObjectOutputStream/ ObjectInputStream; почему большинство коллекций уже реализуют 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
  • ...
  • 57
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2026 JavaRush
MastercardVisa
"Программистами не рождаются" © 2026 JavaRush