Ещё больше практики! Научим Spring Framework и профилированию без всяких конференций

Вы читаете посты в нашем блоге и думаете: «Кому они нужны, я не хожу на конференции». А на конференции вы не ходите потому, что вам хочется научиться каким-то конкретным вещам, а не просто увеличить кругозор. Да, для кого-то это имеет смысл! Не только вы так думаете.

Специально для вас мы сделали нечто совершенно другое. За пару дней до Joker будут проводиться два полномасштабных тренинга. Каждый тренинг — два дня по 6–8 часов плотного обучения конкретным вещам. Группы небольшие, поэтому тренер работает с вами лично — рассказывает, дает задания, смотрит, как вы их выполняете, подсказывает.

Спрингу будет учить человек, которого все вы знаете — Евгений Борисов, один из лучших специалистов по Spring вне Pivotal. Профилированию Java-приложений будет учить Алексей Рагозин — инженер и тренер, имеющий более 10 лет опыта в области разработки высоконагруженных распределенных систем в различных индустриях.

Подробнее об этих тренингах можно прочитать под катом.

На иллюстрации — типичный стектрейс Spring. Просто на всякий случай, если вы его давно не видели.

yxf9g6mykjpbir7iyysq9oprqla.png

Можно ходить пешком, можно ездить на такси, можно сдать на права и водить машину самому, но максимальный контроль — у того, кто еще и понимает, что происходит под капотом.

Данный тренинг поможет вам пройти путь от пешехода до гонщика-механика. Мы научимся не просто пользоваться 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

df6af252e3bd9f169a2231e9cafc58e4.png Евгений пишет на Java с 2001 года и принял участие в большом количестве энтерпрайз-проектов. Пройдя путь от простого программиста до архитектора и устав от рутины, он ушел в свободные художники. Сегодня Женя пишет и проводит курсы, семинары и мастер-классы для различной аудитории: live-курсы по J2EE для офицеров израильской армии, Spring — по WebEx для румын, Hibernate через GoToMeeting для канадцев, Troubleshooting и Design Patterns для украинцев.


Что, где, когда

Дата и время: 17–18 октября 2018.

Место проведения:
zwcbntvov2mhubfmantcrk9pbl8.jpeg
Санкт-Петербург
Офис компании 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. Заключительная лекция. Особенности коммуникации промежуточных результатов анализа для нетехнической аудитории. Комбинирование профилирования и других способов исследования.


Алексей Рагозин


fvjpxcar6oafe3rghjrj7isncvq.jpeg

Автор курса и тренер, имеет более 10 лет опыта в области разработки высоконагруженных распределенных систем в различных индустриях. Алексей — активный докладчик на российских и зарубежных конференциях в области ПО и контрибьютор в Open Source.


Что, где, когда

Дата и время: 17–18 октября 2018.

Место проведения:
72q5xs4jlrdmcobehillql_gowy.jpeg
Санкт-Петербург
Офис компании OpenWay
Наб. Петроградская, 36, лит. «А».

План тренинга: 8 академических пар (90 минут), сгруппированные по дням.

Требования к оборудованию участников: участникам тренинга необходим ноутбук со следующим ПО:


  • комплект разработки Java (JDK) от Oracle — версия не ниже 8u144;
  • Apache Maven — версия не ниже 3.0.5;
  • git-клиент;
  • любая интегрированная среда разработки Java;
  • может быть использована любая операционная система.

Как записаться: заполнить форму, расположенную на официальном сайте, в самом низу вот этой страницы.

© Habrahabr.ru