Сложность
Сложность
Продвинутый
Тип обучения
Тип обучения
Курс
Формат обучения
Формат обучения
С проверкой домашнего задания
Трудоустройство
Трудоустройство
Отсутствует
Сертификат
Сертификат
Да

Стоимость курса

69 900 ₽
нет рассрочки
Курс посвящен повышению производительности Java-приложений. В курсе рассматриваются различные подходы к профилированию, поиску узких мест, тюнингу виртуальной машины, настройки флагов JVM, библиотеки сериализации и кэширования, хранение данных вне кучи, бенчмаркинг, мониторинг и настройка памяти, и другие темы.

Что вы получите после обучения

Сертификат, ссылками на который можно делиться с другими людьми

Вас будут обучать

Специалист в области разработки ПО
Павел работает в Luxoft с 2005 года. За это время он принимал участие в ряде проектов для ведущих российских и зарубежных компаний, таких как Boeing, Почта России, DHL, MVideo. В настоящее время он играет роль ведущего инженера-программиста в проекте по поддержке крупнейшей розничной сети по продаже электроники и бытовой техники в России. Главный интерес Павла - разработка масштабируемых приложений Java, а также предоставление технических решений для повышения производительности и надежности приложений.

Образовательная организация

Оценка и обучение ИТ-специалистов по ключевым направлениям разработки программного обеспечения. Курсы от экспертов-практиков по языкам программирования, системному и бизнес-анализу, архитектуре ПО, ручному и автоматизированному тестированию ПО, Big Data и машинному обучению, управлению проектами и Agile. Действует скидка 10% на обучение физических лиц.

Программа курса

Разбираемые темы:
Модуль 1. Обзор тюнинга производительности – 5 ч.
Общие практики;
Стратегии тюнинга производительности;
Метрики производительности;
Как повысить производительность?
Инструменты для измерения производительности;
JMeter;
Нагрузочное тестирование с помощью JMeter;
Как повысить производительность с помощью архитектуры?
Лучшие практики для улучшения производительности кода.
Домашняя работа – 2 ч.
Модуль 2. Алгоритмы GC – 5 ч.
Использование памяти Java-объектами;
Общие подходы и алгоритмы сборщиков мусора;
Сборщик мусора Serial GC;
Сборщик мусора Parallel GC;
Сборщик мусора CMS;
Сборщик мусора G1;
Сборщик мусора Shenandoah;
Тюнинг сборщиков мусора;
Инструменты сбора и анализа метрик о сборке мусора;
Выбор оптимального сборщика мусора.
Модуль 3. JIT-компилятор HotSpot – 5 ч.
JIT компиляция;
Java байт-код;
Многослойная компиляция;
Кэш кода и его тюнинг;
Оптимизация кода;
Деоптимизация кода и когда она происходит;
Инструмент JITWatch для анализа результатов компиляции;
Виды оптимизаций;
Спекулятивные оптимизации;
Настройка компилятора;
AOT компиляция.
Домашняя работа – 2 ч.
Модуль 4. Флаги JVM – 3 ч.
Назначение и категории флагов JVM;
Общие флаги;
Флаги, связанные со строками;
Флаги управления памятью;
Safepoints и флаги, связанные с ними;
TLAB и флаги, связанные с ними;
План тюнинга JVM.
Модуль 5. Тестирование производительности алгоритмов (benchmarking) с помощью JMH – 2 ч.
Что такое benchmarking;
Знакомство с JMH;
API JMH;
Нетривиальные примеры;
Применение JMH на практике.
Домашняя работа – 2 ч.
Модуль 6. Использование памяти вне кучи (off-heap memory) – 3 ч.
Что такое sun.misc.Unsafe;
Методы Unsafe;
Производительность нативной памяти;
Создание структур данных в нативной памяти;
Оценка производительности нативной памяти и сравнение с памятью в куче;
Перспективный Foreign Memory Access API.
Модуль 7. Сериализация – 2 ч.
Сериализаторы JSON (GSON, Jackson);
Двоичные сериализаторы (Protobuf, Jackson Smile, Kryo, FST, One NIO);
Сравнение производительности различных сериализаторов.
Модуль 8. Профилирование Java – 4 ч.
Когда и как делать профилирование?
Сэмплирующие и инструментирующие профайлеры;
Использование Java VisualVM для профилирования;
Профилирование с помощью Spring AOP;
Профилирование с помощью IDEA и async profiler;
Java Flight Recorder;
Анализ логов Java Flight Recorder с помощью Mission Conrol;
Создание и логгирование кастомных событий JFR;
Использование Java агентов для внедрения в код и записи любых событий в Java Flight Recorder;
Написание программ для автоматического анализа логов JFR;
Сбор и анализ SQL запросов с помощью JFR;
Сбор и анализ REST запросов с помощью JFR.
Домашняя работа – 2 ч.
Модуль 9. Мониторинг и анализ данных кучи. Утечки памяти – 2 ч.
Инструменты для анализа данных в памяти;
Признаки утечек памяти;
Основные причины утечек памяти;
Поиск и обнаружение утечек памяти.
Модуль 10. GraalVM – 3 ч.
Экосистема GraalVM;
Среда выполнения GraalVM;
Polyglot API;
Компиляция и родной образ;
Контрольные показатели.
Модуль 11. Кэширование в приложениях Java – 3 ч.
Шаблоны кеширования;
Сравнение API кешей;
Кеширование запросов БД;
Кеширование HTTP запросов;
Основные метрики и настройки библиотек кеширования;
Сравнение популярных библиотек кеширования;
Кеширование сервисного уровня;
Кеширование Spring сервисов;
Приложения, использующие кеши разных уровней.
Модуль 12. Обзор других подходов к повышению производительности – 3 ч.
Параллельное программирование (пулы потоков, параллельные потоки, структура fork-join);
Асинхронное программирование;
Реактивное программирование (Reactor, VertX);
Оптимизация работы с базами данных;
Облачные вычисления (микросервисы, Spring Cloud);
Контрольные показатели и выводы.

Рейтинг курса

4
рейтинг
0
0
0
0
0

Может быть интересно

обновлено 07.04.2024 00:05
Java Advanced II: высокопроизводительная Java

Java Advanced II: высокопроизводительная Java

Оставить отзыв
Поделиться курсом с друзьями