Содержание курса
Что такое "реактивность"
16 уроков
1.
Знакомство с реактивностью
↗
2.
Простейшая имплементация паттерна Observer
↗
3.
Асинхронная имплементация паттерна Observer
↗
4.
Суть реактивности
↗
5.
Оператор combineLatest() c двумя асинхронными паблишерами
↗
6.
Знакомство с marble-диаграммами
↗
7.
Введение в реактивную парадигму
↗
8.
Что такое "парадигма"
↗
9.
Событийный цикл
↗
10.
Реактивный подход
↗
11.
Разница между понятиями "синхронный" и "асинхронный"
↗
12.
Принципиальная разница между Java- и Rx-стримами
↗
13.
Что такое "неблокирующее противодавление"
↗
14.
Теоретические положения реактивной парадигмы
↗
15.
Реактивный API в стандартной библиотеке
↗
16.
Наипростейшая имплементация реактивного стрима
↗
Библиотека Reactor
41 урок
1.
Введение в библиотеку Reactor
↗
2.
Знакомство с базовыми возможностями: оператор just()
↗
3.
Оператор interval()
↗
4.
Оператор create()
↗
5.
Оператор subscribe() и Disposable-объекты
↗
6.
Операторы range(), generate(), вариации create()
↗
7.
Операторы с побочным эффектом
↗
8.
"Горячие" и "холодные" паблишеры, оператор cache()
↗
9.
Оператор from()
↗
10.
Принципы обработки исключений в реактивных конвейерах
↗
11.
Оператор onErrorReturn()
↗
12.
Операторы onErrorResume(), retry() и onErrorContinue()
↗
13.
Операторы filter(), map(), sort() и elementAt()
↗
14.
Операторы skip() и take()
↗
15.
Операторы skipWhile() и takeWhile()
↗
16.
Оператор distinct()
↗
17.
Оператор distinctUntilChanged()
↗
18.
Операторы scan() и reduce()
↗
19.
Оператор groupBy()
↗
20.
Оператор timestamp()
↗
21.
Операторы count(), all() и any()
↗
22.
Мутирующие коллекторы в List, SortedList, Map и MultiMap
↗
23.
Операторы merge() и mergeWith()
↗
24.
Оператор concat()
↗
25.
Операторы flatMap(), concatMap(), flatMapSequential()
↗
26.
Оператор switchMap()
↗
27.
Операторы zip() и zipWith()
↗
28.
Пожарная сигнализация на операторе combineLatest()
↗
29.
ConnectableFlux и операторы publish(), autoconnect() и refCount(
↗
30.
Отложенная эмиссия на операторе defer()
↗
31.
Обзор диспетчеров (Schedulers)
↗
32.
Диспетчер immediate() и оператор subscribeOn()
↗
33.
paralle() и single(); publishOn(); композитный Disposable
↗
34.
Параллельный Flux
↗
35.
Обертка для блокирующего вызова
↗
36.
Переполнение
↗
37.
onBackpressureBuffer(), Drop(),Error(), DROP_LATEST, DROP_OLDEST
↗
38.
Контролируемая и "ручная" стратегии обработки противодавления
↗
39.
Процессоры и "синки" (Sinks)
↗
40.
Тестирование с помощью библиотеки Reactor Test
↗
41.
Дом.задание по библиотеке Project Reactor: постановка задачи
↗
Реактивность в Спринге
17 уроков
1.
Знакомство с WebFlux'ом
↗
2.
Демо: Live coding - Баз.приемы использования WebFlux - Часть 1
↗
3.
Демо: Live coding - Баз.приемы использования WebFlux - Часть 2
↗
4.
Демо: Live coding - Баз.приемы использования WebFlux - Часть 3
↗
5.
R2DBC и реактивный доступ к БД
↗
6.
WebClient, JSON Streaming и SSE
↗
7.
Демо: WebClient в связке с H2
↗
8.
Что такое RSocket
↗
9.
Практика: пример использования протокола RSocket
↗
10.
Сопоставление RSocket, WebSocket и SSE
↗
11.
Демо: пример использования WebSocket
↗
12.
Бенчмаркинг решений на WebFlux
↗
13.
Вынесенные уроки (по материалам доклада на междун.конф-ции)
↗
14.
Передача контекста по реакт.трубе и оператор deferWithContext()
↗
15.
"Подводные камни" виртуальных подпроцессов
↗
16.
Введение к демонстрации реактивного канала с MongoDB и RabbitMQ
↗
17.
Демо: Связка WebClient, MongoDB и RabbitMQ
↗
Дополнительные демо-примеры
4 урока
1.
Примеры использования реактивных операторов в JavaFX GUI
↗
2.
Имплементация CRUD-операций с реакт.доступом к MongoDB
↗
3.
Тестирование очередного WebFlux-приложения
↗
4.
Сборка скелетного проекта с R2DBC
↗