Ещё больше практики! Научим Spring Framework и профилированию без всяких конференций
Вы читаете посты в нашем блоге и думаете: «Кому они нужны, я не хожу на конференции». А на конференции вы не ходите потому, что вам хочется научиться каким-то конкретным вещам, а не просто увеличить кругозор. Да, для кого-то это имеет смысл! Не только вы так думаете.
Специально для вас мы сделали нечто совершенно другое. За пару дней до Joker будут проводиться два полномасштабных тренинга. Каждый тренинг — два дня по 6–8 часов плотного обучения конкретным вещам. Группы небольшие, поэтому тренер работает с вами лично — рассказывает, дает задания, смотрит, как вы их выполняете, подсказывает.
Спрингу будет учить человек, которого все вы знаете — Евгений Борисов, один из лучших специалистов по Spring вне Pivotal. Профилированию Java-приложений будет учить Алексей Рагозин — инженер и тренер, имеющий более 10 лет опыта в области разработки высоконагруженных распределенных систем в различных индустриях.
Подробнее об этих тренингах можно прочитать под катом.
На иллюстрации — типичный стектрейс Spring. Просто на всякий случай, если вы его давно не видели.
Можно ходить пешком, можно ездить на такси, можно сдать на права и водить машину самому, но максимальный контроль — у того, кто еще и понимает, что происходит под капотом.
Данный тренинг поможет вам пройти путь от пешехода до гонщика-механика. Мы научимся не просто пользоваться Spring, но и расширять его возможности, а для этого нам придется залезть глубоко под капот. Поговорим обо всех основных компонентах Spring, обсудим разные виды контекстов и их конгломератов, рассмотрим интеграцию Spring с другими популярными технологиями, такими как Hibernate, web, security, validation.
Тренинг будет максимально практичным. Много кода будет писаться вживую. Будет весело, сурово, но максимально понятно.
Ключевые темы
День 1
- Основные концепции, шаблоны проектирования и философия Spring, продвинутый reflection, написание собственного фреймворка а-ля Spring
- Различные виды контекстов (XML, annotations, Java Config, Groovy Script)
- BeanDefinition
- BeanPostProcessors
- Dynamic Proxy + CGLib
- BeanFactoryPostProcessors
- Аннотации Spring и написание собственных аннотаций
- Как расширять возможности Spring
- Qualifiers
- Factory Bean и наследование BeanDefinition
- Java Config
- Best practices: смешанные контексты и когда чем пользоваться, обновление прототипов в Singleton-бинах, двойные прокси, поиск метаданных оригинального класса в прокси
- Шаблоны проектирования при помощи Spring
День 2
- Обновление прототипов в Singleton
- Custom Scope
- Spring AOP
- Написание аспектов
- AOP Best Practiсe
- Профили и Conditionals
- Введение в ORM на примере JPA + Hibernate
- Использование Hibernate через Spring
- Декларативные транзакции в Spring
- Дополнительные модули Spring (Spring Data, Spring Data Rest, Spring MVC)
- Введение в Spring Boot
- Dependency Management
- Main Spring Boot annotations
@EnableAutoConfiguration
- SpringApplication
- EnvironmentPostProcessors & Environment
- Application.properties / YML
- Стартеры
- Существующие стартеры
- Spring.factories
- Custom Starter
Евгений Борисов
Naya Technologies
Евгений пишет на Java с 2001 года и принял участие в большом количестве энтерпрайз-проектов. Пройдя путь от простого программиста до архитектора и устав от рутины, он ушел в свободные художники. Сегодня Женя пишет и проводит курсы, семинары и мастер-классы для различной аудитории: live-курсы по J2EE для офицеров израильской армии, Spring — по WebEx для румын, Hibernate через GoToMeeting для канадцев, Troubleshooting и Design Patterns для украинцев.
Что, где, когда
Дата и время: 17–18 октября 2018.
Место проведения:
Санкт-Петербург
Офис компании Nexign
Уральская ул., 4
Требования к оборудованию участников: Желательно иметь ноутбук со следующим ПО: IntelliJ IDEA (крайне рекомендуется 2017+), Java 8.
Как записаться: заполнить форму, расположенную на официальном сайте, в самом низу вот этой страницы.
На практике задачи, требующие применения профайлера, случаются в очень критичные для бизнеса моменты, когда права на ошибку не так много. Поэтому у разработчиков обычно нет возможности научиться эффективно владеть этим инструментом на собственном опыте. Конечно, исключением являются специальные перформанс-инженеры, занимающиеся профилированием всё рабочее время —, но даже им нужно учиться друг у друга.
Однако эффективное использование профайлера в критической ситуации может драматически сократить время решения проблемы (от недель и месяцев до считанных дней), а иногда — решить судьбу всего проекта. Профилирование нужно.
Данный тренинг даёт разработчику ключевые знания и навыки для эффективного применения профайлера в своей работе и позволяет заполнить описанный выше пробел в навыках.
Он будет полезен Java-разработчикам и Java-архитекторам (всех уровней подготовки), Big Data-инженерам и SRE (Site Reliability Engineer).
Ключевые темы
- Секция 1. Введение. Подход к анализу проблемы сверху вниз. Классификация типовых проблем и дерево принятия решений. Базовая диагностика проблемного приложения с использованием инструментов JDK.
- Секция 2. Поиск «горячего кода» методом сэмплирования дампов потоков. Работа с VisualVM. Визуализация результатов сэмплирования: дерево вызовов, инвертированное дерево вызовов, Flame Graph.
- Секция 3. Сброка мусора и его влияние на производительность. Анализ логов сборки мусора. События сборки мусора в Mission Control / Java Flight Recorder. Критерии нормальной работы сборщика мусора.
- Секция 4. Анализ содержимого памяти JVM. Использование гистограмм классов для анализа статической и динамической нагрузки на память. Получение дампа памяти JVM и работа с ним. Использование языка запросов OQL для анализа дампов.
- Секция 5. Углублённая работа с Java Flight Recorder. Семплирование аллокаций памяти и другие возможности инструмента.
- Секция 6. Закрепление темы сэмплирования дампов потоков. Демонстрация смещения оценки, характерной для сэмплирования.
- Секция 7. Использование трассировки при поиске узких мест. Трассировка с использованием Visual VM. Трассировка с помощью BTrace. Анализ проблем многопоточности. Демонстрация различных вариантов межпоточных блокировок (deadlocks) и методы их обнаружения.
- Секция 8. Заключительная лекция. Особенности коммуникации промежуточных результатов анализа для нетехнической аудитории. Комбинирование профилирования и других способов исследования.
Алексей Рагозин
Автор курса и тренер, имеет более 10 лет опыта в области разработки высоконагруженных распределенных систем в различных индустриях. Алексей — активный докладчик на российских и зарубежных конференциях в области ПО и контрибьютор в Open Source.
Что, где, когда
Дата и время: 17–18 октября 2018.
Место проведения:
Санкт-Петербург
Офис компании OpenWay
Наб. Петроградская, 36, лит. «А».
План тренинга: 8 академических пар (90 минут), сгруппированные по дням.
Требования к оборудованию участников: участникам тренинга необходим ноутбук со следующим ПО:
- комплект разработки Java (JDK) от Oracle — версия не ниже 8u144;
- Apache Maven — версия не ниже 3.0.5;
- git-клиент;
- любая интегрированная среда разработки Java;
- может быть использована любая операционная система.
Как записаться: заполнить форму, расположенную на официальном сайте, в самом низу вот этой страницы.