- Регистрация
- 1 Дек 2015
- Сообщения
- 146.079
- Реакции
- 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
Курс посвящен современным функциональным и реактивным подходам к разработке на 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
Для просмотра скрытого содержимого вы должны зарегистрироваться
Возможно, Вас ещё заинтересует:
- Осознанное целительство. 4 модуль [Наталья Патрушева]
- Поисковая система нового поколения с использованием искусственного интеллекта [you.com] [№5, на 1 месяц]
- Протон Впн. Proton VPN [protonvpn.com] [№2 на 12 месяцев]
- Заполняй и худей. Книга-тренинг [Виталия Власенкова] + Мое тело – мое дело [Юлия Бурова]
- Практикум Свет [Павел Кочкин]
- YouTube старт. Авторская программа по запуску кулинарного YouTube канала [Тариф Start] [Александр Оробейко]