Java Advanced II: Високопроизводителна Java - курс 67 500 RUB. от IBS Training Center, обучение 40 часа, Дата 29 януари 2024 г.
разни / / December 04, 2023
Павел работи в Luxoft от 2005 г. През това време той участва в редица проекти за водещи руски и чуждестранни компании като Boeing, Russian Post, DHL, MVideo. В момента той играе ролята на водещ софтуерен инженер в проект за подкрепа на най-голямата търговска верига за електроника и домакински уреди в Русия. Основният интерес на Павел е разработването на мащабируеми Java приложения и предоставянето на технически решения за подобряване на производителността и надеждността на приложенията.
Обхванати теми:
Модул 1. Преглед на настройката на производителността – 5 часа.
Общи практики;
Стратегии за настройка на производителността;
Показатели за ефективност;
Как да подобрим производителността?
Инструменти за измерване на ефективността;
JMeter;
Тестване на натоварване с помощта на JMeter;
Как да подобрим производителността с помощта на архитектура?
Най-добри практики за подобряване на производителността на кода.
Домашна работа – 2 часа.
Модул 2. GC алгоритми – 5 часа.
Използване на памет от Java обекти;
Общи подходи и алгоритми на събирачите на отпадъци;
Serial GC Garbage Collector;
Паралелен GC колектор за боклук;
CMS Garbage Collector;
Събирач на отпадъци G1;
Събирач на боклук Шенандоа;
Настройка на боклукчии;
Инструменти за събиране и анализиране на показатели за събиране на отпадъци;
Избор на оптимален събирач на боклук.
Модул 3. HotSpot JIT компилатор – 5 часа.
JIT компилация;
Java байт код;
Многослойна компилация;
Кеш код и неговата настройка;
Оптимизация на кода;
Деоптимизация на кода и кога се случва;
JITWatch инструмент за анализ на резултатите от компилацията;
Видове оптимизации;
Спекулативни оптимизации;
Настройки на компилатора;
AOT компилация.
Домашна работа – 2 часа.
Модул 4. JVM флагове - 3 часа.
Предназначение и категории JVM флагове;
Общи знамена;
Флагове, свързани с низове;
Флагове за управление на паметта;
Безопасни точки и флагове, свързани с тях;
TLAB и флагове, свързани с тях;
План за настройка на JVM.
Модул 5. Тестване на производителността на алгоритми (бенчмаркинг) с помощта на JMH – 2 часа.
Какво е бенчмаркинг;
Въведение в JMH;
JMH API;
Нетривиални примери;
Приложение на JMH в практиката.
Домашна работа – 2 часа.
Модул 6. Използване на памет извън хийпа (off-heap памет) – 3 часа.
Какво е sun.misc. опасно;
Небезопасни методи;
Ефективност на собствената памет;
Създаване на структури от данни в собствената памет;
Оценка на производителността на собствената памет и сравнение с паметта на купчината;
Обещаващ API за достъп до чужда памет.
Модул 7. Сериализация – 2 часа.
JSON сериализатори (GSON, Jackson);
Бинарни сериализатори (Protobuf, Jackson Smile, Kryo, FST, One NIO);
Сравняване на производителността на различни сериализатори.
Модул 8. Java Profiling – 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;
API на Полиглот;
Компилация и роден образ;
Бенчмаркове.
Модул 11. Кеширане в Java приложения - 3 часа.
Кеширане на модели;
Сравнение на API на кеша;
Кеширане на заявки към база данни;
Кеширане на HTTP заявки;
Основни метрики и настройки на кеширащи библиотеки;
Сравнение на популярни кеширащи библиотеки;
Кеширане на ниво услуга;
Кеширане на Spring услуги;
Приложения, които използват кешове на различни нива.
Модул 12. Преглед на други подходи за подобряване на производителността - 3 часа.
Паралелно програмиране (пулове от нишки, паралелни нишки, fork-join структура);
Асинхронно програмиране;
Реактивно програмиране (Reactor, VertX);
Оптимизиране на работата с бази данни;
Облачни изчисления (микроуслуги, Spring Cloud);
Критерии и заключения.