Курс на Stepik
Обложка курса «Project Reactor: Базовый уровень для Java-разработчиков» на Stepik
900 ₽

Project Reactor: Базовый уровень для Java-разработчиков ★ 0.000

Открыть на
STEPIK.ORG

Практический курс по Project Reactor для Java-разработчиков на Stepik. Освойте реактивное программирование с нуля через сотни интерактивных тестов! Разбираем Mono/Flux, операторы (map, flatMap, filter), backpressure, обработку ошибок, планировщики, работу со временем и контекст. Каждый модуль закрепляется тестовыми сценариями: от базовых трансформаций до ветвления, retry и рефакторинга синхронного кода. Итог — осознанное применение Reactor в Spring без антипаттернов.

Показатель Текущие показатели Рост
Значение 🏆 Рейтинг 3 дн 7 дн 30 дн
Количество учеников на курсе «Project Reactor: Базовый уровень для Java-разработчиков»Учеников на курсе 6
Сертификаты, выданные на курсе «Project Reactor: Базовый уровень для Java-разработчиков»Сертификатов выдано 0
Отзывы о курсе «Project Reactor: Базовый уровень для Java-разработчиков»Отзывов получено 0
Рейтинг курса «Project Reactor: Базовый уровень для Java-разработчиков»Рейтинг курса 0.000
Уроки в курсе «Project Reactor: Базовый уровень для Java-разработчиков»Количество уроков 90
Тесты в курсе «Project Reactor: Базовый уровень для Java-разработчиков»Количество квизов 470
Время прохождения курса «Project Reactor: Базовый уровень для Java-разработчиков»Время прохождения курса —
Стоимость курса «Project Reactor: Базовый уровень для Java-разработчиков»Стоимость курса 900 ₽ —
Обновления курса «Project Reactor: Базовый уровень для Java-разработчиков»Обновления курса — —
Дата публикации курса «Project Reactor: Базовый уровень для Java-разработчиков»Дата публикации курса — ———
Последнее обновление курса «Project Reactor: Базовый уровень для Java-разработчиков»Последнее обновление — ———
Сложность normal — ———

Содержание курса

Разделы в курсе «Project Reactor: Базовый уровень для Java-разработчиков» 13 разделов Уроки в курсе «Project Reactor: Базовый уровень для Java-разработчиков» 90 уроков Тесты в курсе «Project Reactor: Базовый уровень для Java-разработчиков» 470 тестов Время прохождения курса «Project Reactor: Базовый уровень для Java-разработчиков» 0 ч. Последнее обновление курса «Project Reactor: Базовый уровень для Java-разработчиков» обн. 5 октября 2026

Введение в реактивный подход и основы Project Reactor

8 уроков
1. Реактивное программирование и манифест реактивных систем ↗
2. Отличие реактивного потока от Java Stream API и коллекций ↗
3. Reactive Streams: Publisher, Subscriber, Subscription, Processor ↗
4. Что такое Mono и Flux: ключевые отличия ↗
5. Как данные движутся по цепочке операторов Project Reactor ↗
6. Жизненный цикл: Assembly time vs Execution time ↗
7. Ленивые вычисления ↗
8. Закрепление ↗

Создание Flux и Mono (Фабричные методы)

8 уроков
1. Создание из готовых данных ↗
2. Создание из стандартных источников Java ↗
3. Работа с пустыми или ошибочными значениями ↗
4. Динамическое создание потоков ↗
5. Сложное создание потоков ↗
6. Бесконечные и временные потоки ↗
7. Отложенное создание ↗
8. Закрепление ↗

Базовые операторы трансформации и фильтрации

9 уроков
1. Фильтрация элементов: filter() ↗
2. Преобразование элементов: map() ↗
3. Удаление дубликатов: distinct() и distinctUntilChanged() ↗
4. Ограничение потока: take(), takeUntil(), takeWhile() ↗
5. Пропуск элементов и отложенная подписка ↗
6. Извлечение конкретных элементов: next(), elementAt() ↗
7. Проверки и предикаты: any(), all(), hasElements() ↗
8. Сбор данных в коллекции ↗
9. Закрепление ↗

Работа с побочными эффектами (side-effects и логирование)

6 уроков
1. Зачем нужны операторы doOn... ↗
2. Логирование потока: операторы log() и checkpoint ↗
3. Перехват сигналов жизненного цикла ↗
4. Обработка завершения и отмены ↗
5. Отличие doOnNext() от map() (Аналог peek() из Stream API) ↗
6. Закрепление ↗

Комбинирование и ветвление потоков

9 уроков
1. Зачем нужен flatMap() в реактивном мире ↗
2. Разница между map() и flatMap() ↗
3. Альтернативы flatMap() ↗
4. Переключение на новейший поток: switchMap() ↗
5. Слияние нескольких потоков: Flux.merge(), Flux.concat() ↗
6. Поочередное объединение: Flux.zip() и zipWith() ↗
7. Комбинирование последних значений: Flux.combineLatest() ↗
8. Переиспользование цепочек операторов с transform() ↗
9. Закрепление ↗

Управление потоком данных (Backpressure) и Агрегация

6 уроков
1. Что такое Backpressure (обратное давление) и зачем оно нужно ↗
2. Стратегии управления избытком данных ↗
3. Операторы пакетной обработки ↗
4. Группировка элементов ↗
5. Накопление состояния: reduce() против scan() ↗
6. Закрепление ↗

Потоки управления, Время и Ошибки

9 уроков
1. Почему в Reactor нет Optional, и как его заменяет Mono.empty() ↗
2. Подмена пустого потока: switchIfEmpty() и defaultIfEmpty() ↗
3. Игнорирование результата: операторы then() ↗
4. Философия обработки ошибок в реактивных потоках ↗
5. Возврат резервного значения при ошибке ↗
6. Переключение на резервный поток при ошибке ↗
7. Повторная обработка ошибок: onErrorMap() ↗
8. Автоматический повтор запросов ↗
9. Закрепление ↗

Concurrency и Планировщики (Schedulers)

7 уроков
1. Миф о том, что Reactor по умолчанию параллелен ↗
2. Что такое Scheduler и его виды ↗
3. Переключение потока выполнения «сверху вниз» ↗
4. Переключение потока выполнения «снизу вверх» ↗
5. Разница между переключениями на живых примерах ↗
6. Использование parallel() и runOn() для честного параллелизма ↗
7. Закрепление ↗

Продвинутые концепции Reactor

6 уроков
1. Холодные (Cold) и Горячие (Hot) издатели: в чем разница ↗
2. Превращение холодного потока в горячий ↗
3. Кэширование данных: cache() ↗
4. Использование контекста: ContextView и contextWrite() ↗
5. Интеграция с блокирующим кодом ↗
6. Закрепление ↗

Антипаттерны, частые ошибки и Рефакторинг

7 уроков
1. Повторное использование цепочек и подписка внутри doOnNext ↗
2. Нарушение иммутабельности и изменение внешнего состояния ↗
3. Mono.block() внутри цепочки и плагин BlockHound ↗
4. Слишком длинные и нечитаемые цепочки операторов ↗
5. Ошибки при потере сигналов ↗
6. Когда реактивность усложняет жизнь ↗
7. Закрепление ↗

Тестирование

7 уроков
1. Почему стандартные JUnit Assertions не работают с асинхронным ко ↗
2. Базовое тестирование с StepVerifier ↗
3. Тестирование пограничных сценариев ↗
4. Управление временем в тестах: VirtualTimeScheduler ↗
5. Контроль реактивного контекста ↗
6. Создание управляемых моков-издателей с помощью TestPublisher ↗
7. Закрепление ↗

Практика и Задачи

6 уроков
1. Базовые задачи на filter, map, collect ↗
2. Задачи на ветвление потоков (flatMap, concatMap, switchMap) ↗
3. Задачи на обработку ошибок (onErrorResume, retry) ↗
4. Задачи на агрегацию и группировку данных (buffer, groupBy) ↗
5. Задачи на работу со временем (interval, timeout, delayElements) ↗
6. Рефакторинг синхронного кода со Stream API на Project Reactor ↗

Финал

2 урока
1. Финал ↗
2. Продолжение пути ↗