Скачать 

[Stepik] FARM: Функциональная, асинхронная, реактивная, многопоточная Java (Игорь Судакевич)

Зарегистрируйтесь, чтобы посмотреть контент
Aноним
Для кого этот курс
  • 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
Преподаватель: Игорь Судакевич
Свою первую строчку кода написал в нежном 11-летнем возрасте в уже легендарном 1973-м году. По первому образованию (МИСиС) инженер-исследователь, специалист в области автоматизации физико-химического эксперимента. Затем учился в MBA-колледже Эдинбургского универа, также в МГУ (лингвистика). Master of Computer and Internet Technology от унив-та шт.Пенсильвания (Ivy League). 15 лет жил и работал в Японии, где занимался вопросами обработки больших массивов данных (Big Data) в Институте статистики ООН для стран Азиатского и Тихоокеанского региона (SIAP). Oracle Certified Professional, Authorized Oracle Instructor. Java-методист c 20-летним стажем. Вел вебинары и очные занятия в учебных центрах "Люксофт", "ФОРС", "Инвека", "Academy IT". В наст.время преподает в Учебном центре IBS (Москва).
Показать больше
 
Зарегистрируйтесь , чтобы посмотреть авторский контент.
farm stepik александр сайганов асинхронная вложение игорь судакевич инвестирование инвестиционное решение красный циркуль многопоточная java реактивная фундаментальный анализ функциональная
Похожие складчины
Найти больше схожих складчин

Зарегистрируйте учетную запись

У вас появится больше возможностей!

Создать учетную запись

Пройдите быструю регистрацию

Войти

Уже зарегистрированы? Войдите.

Сверху