Скачать Java Advanced I: функциональное, асинхронное и реактивное программирование [IBS]

Sky90

VIP складчик
Platinum
Премиум
Администратор
Регистрация
1 Дек 2015
Сообщения
146.078
Реакции
777.031
Java Advanced I: функциональное, асинхронное и реактивное программирование [IBS]




Курс посвящен современным функциональным и реактивным подходам к разработке на Java, повышающем производительность бекэнда, и включает изучение неблокирующего ввода-вывода NIO2, асинхронных промисов CompletableFuture, библиотек реактивного программирования RxJava и Reactor, интерфейса асинхронного доступа к БД R2DBC, потоковый протокол SSE, реактивные репозитории Spring Data reactive, WebClient, протоколы WebSocket и RSocket, а также практические примеры применения.



Спойлер: Разбираемые темы

Модуль 1. Функциональная Java (теория - 2 ч. + практика 1 ч.) ч)
Функциональные интерфейсы
Ссылки на метод
Потоки данных
Map / filter / reduce
Агрегационные функции
Reduce при параллельной и последовательной обработке
Цепочки потребителей
Потоковые коллекторы


Модуль 2. Executor framework. Fork-Join pool (теория - 3 ч.)
Использование Executors
Future интерфейс
Использование интерфейса Callable
Отмена задач
ForkJoin Framework
Создание пула задач ForkJoin
Параллельные потоки в Java 8+
ForkJoin vs. параллельные потоки vs. последовательные потоки

Модуль 3. Неблокирующий ввод-вывод NIO (теория - 3 ч. + практика - 2 ч.)
Основные различия между Java NIO и IO
Потоково-ориентированный или буферно-ориентированный
Блокирующий против неблокирующего ввода-вывода
Java NIO Buffer
Java NIO Channel
Direct буфер
Mapped file буфер
Java NIO Selector
Асинхронный ввод / вывод с NIO
Блокировка файла
Cервер NIO
Архитектура сервера Netty


Модуль 4. Асинхронная Java (Completable Future) (теория - 3 ч. + практика - 2 ч.)
Проблемы синхронного кода
NodeJS архитектура
Параллельная обработка потока данных
CompletableFuture: sync и async методы
Объединение (combine), составление (composing) и быстрейший побеждает (quicker wins)
Обработка исключений в CompletableFuture
Отмена CompletableFuture
Использование CompletableFuture для реального потока данных

Домашняя работа. Практика (2 часа).
Модуль 5. Реактивное программирование (теория - 8 ч.)
Что такое реактивность?
Основы RxJava: наблюдатель и наблюдаемый (Observable и Observer)
Реактивные потоки в Java 9 (Java Reactive Streams)
Методы для побочных эффектов (side effects)
Обработка ошибок
Горячие и холодные потоки (hot/cold)
Разделяемые и подключаемые потоки (shared/connectable)
Освобождение потоков (disposing)
Реактивные операторы (полный каталог)
Subjects
Распараллеливание потоков (Schedulers)
Противодавление (backpressure) и интерфейс Flowable
Тестирование реактивных потоков

Модуль 6. Проект Reactor (теория - 4 ч.)
Операторы Flux / Mono в Reactor
Работа с backpressure в Reactor
Reactor и многопоточность (Reactor Schedulers)
Parallel Flux потоки
Оборачивание синхронных вызовов
Тестирование Reactor
Процессоры (Reactor processors)

Модуль 7. Spring WebFlux и практическое реактивное программирование (теория - 6 ч. + практика - 2 ч.)
Реактивный доступ к БД
Реактивные драйверы R2DBC
Spring Data - реактивные репозитории
Поддержка страниц (paging) в Spring Data reactive
WebFlux: функциональные контроллеры
Spring REST контроллеры, возвращающие реактивные данные (Mono / Flux)
Spring REST контроллеры, возвращающие SSE (server-sent event)
WebClient: получение реактивных данных с сервера
SSE и протоколы WebSocket
Использование WebSocket для передачи / получения данных JSON
Использование WebSocket для передачи / извлечения двоичных данных
Протокол RSocket
Контроллер RSocket на стороне сервера
RSocket клиент: обмен JSON и двоичными данными
RSocket с балансировкой нагрузки
RSocket с взвешенной балансировкой нагрузки
Использование реактивных потоков с брокером сообщений (RabbitMQ)
Spring Data MongoDB реактивные репозитории
Бенчмарки: R2DBC против JDBC и WebFlux против Web MVC
Архитектура и шаблоны реактивного программирования





Продолжение: часть 2



 
Сверху