Обучение длится 40 часов
Автор: Игорь Судакевич
FARM:Функциональная, асинхронная, реактивная, многопоточная Java

Для кого этот курс

  • Java-программисты Middle-уровня, желающие глубоко освоить приемы создания асинхронно-реактивного кода для событийно-ориентированной и потоковой обработки данных, в т.ч. в Spring-приложениях.

Начальные требования

  • Уверенное владение Java, желательно знание Spring и принципов взаимодействия с СУБД.

Состав учебной программы:

Модуль 1 (факультативный) — функциональная java (~6 часов видеолекций)

  • Лямбда-выражения и встроенные функциональные интерфейсы
  • Примитивные специализации, унарные и бинарные версии функциональных интерфейсов
  • Метод map(), в т.ч. Его примитивные специализации
  • Поиск «короткозамыкающими» операторами
  • Применение класса Optional, в т.ч. Его примитивных специализаций
  • Фильтрация и обработка данных на stream-объектах, в т.ч. Работа с методом flatmap()
  • Сортировка коллекций с применением stream api
  • Сегментирование / классификация элементов с помощью утилитарного класса collectors
  • Немутирующие редукторы при параллельной и последовательной обработке
  • Каррированные функции
  • Динамическая типизация и произвольные лямбда-выражения
  • Глубокое погружение в ссылки на методы

Модуль 2 — асинхронная java (~6 часов видеолекций)

Подмодуль 2. 1 – completable future

  • Проблемы синхронного кода в блокирующих сценариях
  • Sync и async методы в классе completablefuture
  • Combine-, composе- и anyof-операции
  • Специфика обработки исключений в completablefuture
  • Completablefuture в сценариях с пользовательскими executorservice-пулами
  • Отмена completablefuture
  • Применение completablefuture в потоках данных на практике
  • Подмодуль 2. 2 – неблокирующий ввод/вывод на базе nio
  • Основные различия между java nio и io
  • Потоко- и буфер-ориентированный ввод/вывод
  • Блокирующий и неблокирующий ввод/вывод
  • Java nio buffer, channel и selector
  • Direct и non-direct буферы
  • Mappedfilebuffer
  • Асинхронный ввод / вывод средствами nio
  • Класс filelock и избирательная блокировка файлов
  • Примеры промышленной nio-архитектуры (сервер netty, node. Js и др. )

Модуль 3 — реактивная java (~21 часов видеолекций)

Подмодуль 3. 1 – библиотека rxjava

  • Понятие «реактивность» и цели реактивного манифеста
  • Основы rxjava: observable и observer
  • Реактивные потоки в java 9
  • Методы с побочными эффектами
  • Обработка ошибок в полностью функциональном стиле
  • «горячие» и «холодные» паблишеры
  • Расшаренные и connectable-паблишеры
  • Утилизация реактивного конвейера (disposing)
  • Каталог наиболее востребованных реактивных операторов rxjava
  • Subjects
  • Многопоточность в реактивных стимах на базе schedulers
  • Противодавление (backpressure) и flowable-паблишеры
  • Тестирование реактивных конвейеров в rxjava

Подмодуль 3. 2 – библиотека reactor

  • Флагманские паблишеры flux / mono и их операторы
  • Работа с backpressure в reactor
  • Поддержка многопоточности в reactor
  • Распараллеливание flux-конвейеров
  • Обертки для синхронных вызовов
  • Reactor-процессоры
  • Тестирование реактивных конвейеров в reactor

Подмодуль 3. 3 – spring webflux и практическое реактивное программирование

  • Spring rest контроллеры, возвращающие реактивные данные как mono и flux
  • Функциональные контроллеры в webflux
  • Server-sent events (sses)
  • Webclient для получения потока реактивных данных от сервера
  • Реактивный доступ к субд
  • Реактивный драйвер r2dbc
  • Реактивные репозитории в spring data
  • Работа с реактивным репозиторием в spring data на примере mongodb
  • Бенчмаркинг для r2dbc и webflux против web mvc с jdbc
  • Рекомендуемые практики реактивного программирования
  • Бонусные лекции: реактивная имплементация брокера сообщений kafka

Модуль 4 (факультативный) — многопоточная java (~6 часов видеолекций)

  • Создание рабочих подпроцессов (threads) на базе runnable- и callable-объектов, и применение интерфейсов executorservice и future для асинхронного исполнения задач
  • Выявление потенциальных проблем конкурентного режима, в т. Ч. Статическая блокировка (deadlock), зависание по недоступу к ресурсу (starvation), динамическая блокировка (livelock) и состояние гонки (race conditions / data race)
  • Применение ключевого слова synchronized и пакета java. Util. Concurrent. Atomic для управления порядком исполнения подпроцессов
  • Работа с синхронизационными примитивами, в частности, на базе интерфейса lock и классов reentrantlock, condition, cyclicbarrier, semaphore и др.
  • Fork/join framework и рекурсивная парадигма, в т. Ч. Top-down и bottom-up
Дата последнего обновления: 9 июня 2025

Темы

Другие курсы

Оптимизация SQL запросов на примере ClickHouse
Оптимизация SQL запросов на примере ClickHouse
Автор: Трофим Воробьев
Инди курс по Pygame - учимся создавать свои игры
Инди курс по Pygame - учимся создавать свои игры
Автор: Артем Егоров
Начать карьеру в IT: Курс для QA по основам ПК и ПО
Начать карьеру в IT: Курс для QA по основам ПК и ПО
Автор: Татьяна Репичева
Библиотеки Python для Data Science
Библиотеки Python для Data Science
Автор: Юлия Пономарева
Подробнее
4 000
-46%
Современный Agile для разработчиков
Современный Agile для разработчиков
Подробнее
3 799
6 990
Автоматизация тестирования с Playwright на Java. Базовый
Автоматизация тестирования с Playwright на Java. Базовый
Автор: Олег Тодор
Подробнее
1 800
Автоматизация тестирования c Java и TestNG
Автоматизация тестирования c Java и TestNG
Автор: Константин Барзаковский
Подробнее
2 100
Практический курс по тестированию бэкенда
Практический курс по тестированию бэкенда
Автор: Надежда Дудник
Подробнее
29 990
-43%
Bitrix-разработчик с нуля
Bitrix-разработчик с нуля
Авторы: Группа авторов
Подробнее
56 700
99 500
2 487
/мес
Назад
Смотреть дальше