Что такое Serial Garbage Collector?
Serial GC — этооднопоточный сборщик мусора, работающий по принципу "Stop-the-World" . Он останавливает выполнение всех потоков во время сборки мусора и использует копирующий алгоритм для молодых поколений (Young Gen) и компактирующий алгоритм для старших (Old Gen).
🟢 Как работает
1️⃣ В молодом поколении (Minor GC) используется копирующая стратегия: выжившие объекты перемещаются из Eden в Survivor, а из Survivor в Old Gen.
2️⃣ В старом поколении (Major GC / Full GC) выполняется уплотнение памяти для уменьшения фрагментации.
3️⃣ Так как GC работает в одном потоке, во время сборки остановка приложения неизбежна.
🟢 Когда использовать
—В одноядерных системах или при ограниченных ресурсах , где многопоточный GC создаст больше нагрузки.
—В маленьких JVM (до 1-2 ГБ памяти) , где G1 или Parallel GC будут избыточны.
—В приложениях без жестких требований к паузам, например , в небольших утилитах или CLI-инструментах.
Подписывайся на наш канал в Max🟪
Serial GC — это
—
—
—
Подписывайся на наш канал в Max
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥8❤1
Все знают
Ctrl + Alt + L (форматирование кода), но мало кто знает это сочетание:—
Ctrl + Alt + Shift + L → Гибкое форматирование— Позволяет выбрать, что именно форматировать: весь файл, выделенный код или даже только измененные строки.
— Можно отключить автоформатирование аннотаций, импортов или пробелов, если не хотите, чтобы IDEA ломала ваш стиль.
— Полезно, если работаете в команде с жесткими code style правилами, можно форматировать только нужные части, не трогая остальной код.
— Выделите код, затем
Ctrl + Alt + Shift + L, чтобы форматировать только его.— Используйте Settings → Editor → Code Style, чтобы настроить форматирование под себя.
Подписывайся на наш канал в Max
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥7❤4
Чек-лист: эффективная работа с многопоточностью
Держите под рукой этот чек-лист, чтобы избежать проблем с многопоточностью и повысить производительность кода:
🟢 Синхронизация
✓ Избегайте synchronized для долгих операций
✓ Используйте ReentrantLock для гибкой блокировки
✓ Следите за возможностью deadlock
🟢 Исполнители (Executors)
✓ FixedThreadPool подходит, когда количество потоков заранее известно и ограничено
✓ CachedThreadPool динамически создает потоки, но может привести к их неконтролируемому росту
✓ ForkJoinPool для задач, разбиваемых на подзадачи
🟢 Коллекции и очереди
✓ ConcurrentHashMap потокобезопасная альтернатива HashMap, но не подходит для сценариев с частыми изменениями
✓ BlockingQueue для потокобезопасных очередей
✓ CopyOnWriteArrayList хорош при редких изменениях списка, но ⚠️ медленный при частых модификациях (из-за копирования)
🟢 Работа с Future & CompletableFuture
✓ Используйте CompletableFuture для асинхронных операций вместо Future
✓ thenApply() и thenCompose() позволяют строить цепочки вызовов без блокировки
✓ exceptionally() для обработка ошибок без использования try-catch в коде
Автоматизируйте проверку кода с помощью FindBugs, SonarQube и Checkstyle.
❓ Какие задачи на проекте решаете с помощью многопоточки?
Подписывайся на наш канал в Max🟪
Держите под рукой этот чек-лист, чтобы избежать проблем с многопоточностью и повысить производительность кода:
✓ Избегайте synchronized для долгих операций
✓ Используйте ReentrantLock для гибкой блокировки
✓ Следите за возможностью deadlock
✓ FixedThreadPool подходит, когда количество потоков заранее известно и ограничено
✓ CachedThreadPool динамически создает потоки, но может привести к их неконтролируемому росту
✓ ForkJoinPool для задач, разбиваемых на подзадачи
✓ ConcurrentHashMap потокобезопасная альтернатива HashMap, но не подходит для сценариев с частыми изменениями
✓ BlockingQueue для потокобезопасных очередей
✓ CopyOnWriteArrayList хорош при редких изменениях списка, но ⚠️ медленный при частых модификациях (из-за копирования)
✓ Используйте CompletableFuture для асинхронных операций вместо Future
✓ thenApply() и thenCompose() позволяют строить цепочки вызовов без блокировки
✓ exceptionally() для обработка ошибок без использования try-catch в коде
Автоматизируйте проверку кода с помощью FindBugs, SonarQube и Checkstyle.
Подписывайся на наш канал в Max
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍4🔥2
Работаете с PostgreSQL и хотите забыть про простои и потери данных? 🤔
Не хотите оказаться в ситуации “руками переключать мастера” в 3 ночи?
Этот практикум OTUS для вас! 6 ноября в 20:00 - бесплатно по записи.
Разберем вместе с Senior Developer Unlimint:
Как устроен Patroni и почему его выбирают для High Availability
Как настроить кластеры Postgres, чтобы пережить любой фейловер без паники Демонстрация настройки кластера — всё покажем на живых примерах
Как избежать split-brain, не “запилить” себе геморроя с Etcd/Consul
Что мониторить, как обновлять, как спасать кластер после сбоев
Только живой разбор, без воды и маркетингового бла-бла.
Спикер: Андрей Поляков, Senior Developer в Unlimint
🎁Бонусы для участников:
Скидка 7% на любой курс OTUS
Видео-разбор: Мониторинг в highload-проектах
Чек-лист: 5 частых ошибок в отказоустойчивых хранилищах
Запишись сейчас — чтобы не искать решение в 3 часа ночи, когда что-то пойдет не так. Увидимся на эфире: https://tglink.io/fdd0de15fa18
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: 2W5zFH6UaHv
Не хотите оказаться в ситуации “руками переключать мастера” в 3 ночи?
Этот практикум OTUS для вас! 6 ноября в 20:00 - бесплатно по записи.
Разберем вместе с Senior Developer Unlimint:
Как устроен Patroni и почему его выбирают для High Availability
Как настроить кластеры Postgres, чтобы пережить любой фейловер без паники Демонстрация настройки кластера — всё покажем на живых примерах
Как избежать split-brain, не “запилить” себе геморроя с Etcd/Consul
Что мониторить, как обновлять, как спасать кластер после сбоев
Только живой разбор, без воды и маркетингового бла-бла.
Спикер: Андрей Поляков, Senior Developer в Unlimint
🎁Бонусы для участников:
Скидка 7% на любой курс OTUS
Видео-разбор: Мониторинг в highload-проектах
Чек-лист: 5 частых ошибок в отказоустойчивых хранилищах
Запишись сейчас — чтобы не искать решение в 3 часа ночи, когда что-то пойдет не так. Увидимся на эфире: https://tglink.io/fdd0de15fa18
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: 2W5zFH6UaHv
❤3👍2🔥2
📚 Java & Related Concepts — полный гайд по Java-экосистеме. Этот репозиторий представляет собой целую энциклопедию для Java-разработчиков. Автор структурировал материал от основ языка до продвинутых тем: многопоточность, проектирование систем, алгоритмы и даже Kotlin с Android-разработкой.
Проект имеет полезные разделы с примерами кода: от классических паттернов вроде Singleton до задач на динамическое программирование. Для тех, кто готовится к собеседованиям, есть подборка LeetCode-шаблонов и реальных interview-задач.
🖥 GitHub
Подписывайся на наш канал в Max🟪
Проект имеет полезные разделы с примерами кода: от классических паттернов вроде Singleton до задач на динамическое программирование. Для тех, кто готовится к собеседованиям, есть подборка LeetCode-шаблонов и реальных interview-задач.
Подписывайся на наш канал в Max
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥4❤1
Безопасность — базовая вещь. Spring Security по умолчанию кидает вас в дефолтную форму логина. Но в реальности — нужна своя, кастомная.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests(auth -> auth
.requestMatchers("/login", "/css/**").permitAll()
.anyRequest().authenticated()
)
.formLogin(form -> form
.loginPage("/login")
.defaultSuccessUrl("/dashboard", true)
.permitAll()
)
.logout(logout -> logout
.logoutSuccessUrl("/login?logout")
);
return http.build();
}
@Bean
public UserDetailsService userDetailsService() {
var user = User.withUsername("admin")
.password("{noop}admin123") // Для простоты, без шифрования
.roles("ADMIN")
.build();
return new InMemoryUserDetailsManager(user);
}
}
src/main/resources/templates/login.html (если используете Thymeleaf):
<!DOCTYPE html>
<html>
<head><noscript>Login</noscript></head>
<body>
<h2>Login</h2>
<form method="post" action="/login">
<label>Username: <input type="text" name="username" /></label><br/>
<label>Password: <input type="password" name="password" /></label><br/>
<button type="submit">Login</button>
</form>
</body>
</html>
@RestController
public class DashboardController {
@GetMapping("/dashboard")
public String dashboard() {
return "Welcome to the dashboard!";
}
}
Подписывайся на наш канал в Max
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍6🔥5
⚡Открытая трансляция главного зала HighLoad++ 2025!
🖐️ Подключайтесь и слушайте доклады от спикеров MTС Web Services (MWS), VK Tech, Яндекса, Т-Банка, СберТеха и других компаний.
HighLoad++ 2025 — это конференция, которая определяет будущее высоконагруженных систем.
📍6 и 7 ноября все желающие могут бесплатно посмотреть онлайн-трансляцию главного зала. Открытую трансляцию мы организовали совместно с генеральным партнером конференции — МТС Web Services (MWS).
МТС Web Services (MWS) — бигтех-компания, предоставляющая облачные и Al-сервисы, а также платформенные решения под задачи бизнеса: от работы с данными до разработки продуктов и оптимизации бизнес-процессов.
Как всегда, в главном зале — топовые эксперты и самые актуальные темы.
✅ Подробности и расписание на сайте
🖐️ Подключайтесь и слушайте доклады от спикеров MTС Web Services (MWS), VK Tech, Яндекса, Т-Банка, СберТеха и других компаний.
HighLoad++ 2025 — это конференция, которая определяет будущее высоконагруженных систем.
📍6 и 7 ноября все желающие могут бесплатно посмотреть онлайн-трансляцию главного зала. Открытую трансляцию мы организовали совместно с генеральным партнером конференции — МТС Web Services (MWS).
МТС Web Services (MWS) — бигтех-компания, предоставляющая облачные и Al-сервисы, а также платформенные решения под задачи бизнеса: от работы с данными до разработки продуктов и оптимизации бизнес-процессов.
Как всегда, в главном зале — топовые эксперты и самые актуальные темы.
✅ Подробности и расписание на сайте
❤3👍2🔥2
Поработать с Kafka или RabbitMQ, но нет времени вникать в тонкости конфигурации и шаблонного кода? AI справится с этим за секунды — с учётом лучших практик и особенностей выбранного брокера.
📝 Промпт:
Generate a Spring Boot service that integrates with [Kafka/RabbitMQ] to handle asynchronous message processing for [описание бизнес-задачи].
Include configuration, producer, and consumer code.
Ensure reliability with retry mechanisms, message acknowledgment, and error handling.
Use Spring Cloud Stream or native client APIs. Explain architectural choices and trade-offs.
— Добавьте
Dead Letter Queue (DLQ) для обработки неуспешных сообщений— Настройте
observability (Micrometer + Prometheus/Grafana) для мониторинга очередейПодписывайся на наш канал в Max
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2🔥2
🎥 Открытый урок «Наблюдаемость микросервиса: метрики + Prometheus/Grafana».
🗓 11 ноября в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Java Developer. Advanced».
Что будет на вебинаре:
✔️ Полезные метрики для микросервисов: технические и продуктовые; типовые анти-метрики.
✔️ Интеграция Spring Actuator/Micrometer и экспорт /actuator/prometheus.
✔️ Сбор в Prometheus: таргеты, ретенция, базовые правила алертинга.
✔️ Дашборды «для разработчика» в Grafana: структура панелей, аннотации, drill-down.
В результате вебинара вы:
- Сможете выделять действительно важные метрики, подключить Actuator/Micrometer, настроить сбор в Prometheus и собрать базовый дашборд в Grafana.
Кому будет интересно:
Java backend-разработчикам, DevOps/SRE и инженерам, отвечающим за эксплуатацию микросервисов.
🔗 Ссылка на регистрацию: https://vk.cc/cR2r3Q
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
🗓 11 ноября в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Java Developer. Advanced».
Что будет на вебинаре:
В результате вебинара вы:
- Сможете выделять действительно важные метрики, подключить Actuator/Micrometer, настроить сбор в Prometheus и собрать базовый дашборд в Grafana.
Кому будет интересно:
Java backend-разработчикам, DevOps/SRE и инженерам, отвечающим за эксплуатацию микросервисов.
🔗 Ссылка на регистрацию: https://vk.cc/cR2r3Q
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍2🔥2
Работаете в большом Java-проекте и боитесь, что при переименовании метода или переменной что-то сломаете? IntelliJ IDEA умеет безопасно и быстро переименовывать элементы кода с помощью Shift + F6.
— Вместо ручного поиска и замены по всему проекту IDEA обновит все ссылки на метод, переменную или класс автоматически.
— Переименование учитывает контекст — не затронет одноимённые элементы в других частях кода.
— Работает со всеми элементами: методами, классами, переменными, параметрами и даже с ресурсами.
— Наведите курсор на имя метода, класса или переменной, которую хотите переименовать.
— Нажмите Shift + F6.
— Введите новое имя. IDEA покажет, где будет произведено переименование.
— Подтвердите и все ссылки обновятся мгновенно.
Очень удобно, когда нужно быстро рефакторить код, не опасаясь сломать логику, особенно в крупных проектах с множеством взаимосвязей.
Подписывайся на наш канал в Max
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍10🔥4⚡1😁1
OpenAPI + Spring: ускоряем разработку и повышаем качество API
Разработка REST API — рутинная? Только если без OpenAPI. Узнайте, как избавиться от ручной синхронизации между фронтом, бэком и тестами.
На вебинаре разберём:
• зачем нужна OpenAPI-спецификация и как с ней жить удобно;
• генерацию кода и документации;
• интеграцию OpenAPI в Spring-приложение;
• советы по масштабируемости и поддержке API.
После вебинара вы сможете:
— быстро внедрить OpenAPI в свой проект;
— сократить ошибки на стыке команд;
— улучшить поддержку и документирование микросервисов.
12 ноября в 20:00 открытый урок проходит в преддверие старта курса «Разработчик на Spring Framework». Все участники получат скидку на обучение.
👉 Регистрация бесплатная, но количество мест ограничено — успей занять своё место:
https://vk.cc/cR6vHU
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Разработка REST API — рутинная? Только если без OpenAPI. Узнайте, как избавиться от ручной синхронизации между фронтом, бэком и тестами.
На вебинаре разберём:
• зачем нужна OpenAPI-спецификация и как с ней жить удобно;
• генерацию кода и документации;
• интеграцию OpenAPI в Spring-приложение;
• советы по масштабируемости и поддержке API.
После вебинара вы сможете:
— быстро внедрить OpenAPI в свой проект;
— сократить ошибки на стыке команд;
— улучшить поддержку и документирование микросервисов.
12 ноября в 20:00 открытый урок проходит в преддверие старта курса «Разработчик на Spring Framework». Все участники получат скидку на обучение.
👉 Регистрация бесплатная, но количество мест ограничено — успей занять своё место:
https://vk.cc/cR6vHU
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👍5🔥5❤3
—
curl -Ls https://sh.jbang.dev | bash -s - app setupJBang позволяет интерактивно с Java из командной строки и очень быстро писать простые сценарии
Подписывайся на наш канал в Max
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍7🔥4
Более чем за десять лет работы со Spring Framework и Enterprise Java автор успел полюбить Spring Framework, возненавидеть и в итоге пересмотреть свои подходы к работе с ним. То же самое касается работы с рефлексией в целом и работы с АОП в частности.
Всё это из-за того, что магия фреймворков иногда ломается, и делает это очень неочевидно.
Подписывайся на наш канал в Max
Please open Telegram to view this post
VIEW IN TELEGRAM
VK Видео
Когда ломается магия фреймворков...
Более чем за десять лет работы со Spring Framework и Enterprise Java я успел полюбить Spring Framework, возненавидеть и в итоге пересмотреть свои подходы к работе с ним. То же самое касается работы с рефлексией в целом и работы с АОП в частности. Всё это…
👍7🔥3❤2
Знаете, в чём самая частая ловушка автоматизации?
Слить ресурсы в “идеальный” фреймворк, который годами будет поддерживать один энтузиаст, а ценности почти не даст.
Второй сценарий — пытаться всё автоматизировать вручную, игнорируя современные инструменты на базе ИИ, и внезапно оказаться в хвосте “конвейера тестов”.
Хотите выбраться из этого круга?
👨💻13 ноября в 20:00 собираемся на Практикум! Спикер: Павел Балахонов, 15+ лет автоматизации.
Узнаем:
— Что реально даёт платформа управления автотестами с ИИ, а где скрыты грабли.
— Когда “универсальный фреймворк” превращается в долгострой и почему ИИ — не просто модный хайп, а must-have в современных проектах.
Обсудим:
— Как не слить ресурсы в “универсальный” фреймворк без профита
— Почему платформа автотестирования = гибкость, а не компромисс
— Как реально внедрять ИИ: практика и подводные камни
— Почему распределение автотестов по потокам — это новый “золотой стандарт”
— И бонус — где платформы с ИИ реально экономят время команды
🎁Бонусы для всех участников:
7% скидка на любой курс OTUS
Настольный гайд: “Использование базовых команд Docker CLI”
Подборка musy-have уроков для middle+ QA
Дата: 13 ноября, 20:00
Ограниченное количество мест - успейте: https://tglink.io/18f1391e96b7
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: 2W5zFHSjBVa
Слить ресурсы в “идеальный” фреймворк, который годами будет поддерживать один энтузиаст, а ценности почти не даст.
Второй сценарий — пытаться всё автоматизировать вручную, игнорируя современные инструменты на базе ИИ, и внезапно оказаться в хвосте “конвейера тестов”.
Хотите выбраться из этого круга?
👨💻13 ноября в 20:00 собираемся на Практикум! Спикер: Павел Балахонов, 15+ лет автоматизации.
Узнаем:
— Что реально даёт платформа управления автотестами с ИИ, а где скрыты грабли.
— Когда “универсальный фреймворк” превращается в долгострой и почему ИИ — не просто модный хайп, а must-have в современных проектах.
Обсудим:
— Как не слить ресурсы в “универсальный” фреймворк без профита
— Почему платформа автотестирования = гибкость, а не компромисс
— Как реально внедрять ИИ: практика и подводные камни
— Почему распределение автотестов по потокам — это новый “золотой стандарт”
— И бонус — где платформы с ИИ реально экономят время команды
🎁Бонусы для всех участников:
7% скидка на любой курс OTUS
Настольный гайд: “Использование базовых команд Docker CLI”
Подборка musy-have уроков для middle+ QA
Дата: 13 ноября, 20:00
Ограниченное количество мест - успейте: https://tglink.io/18f1391e96b7
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: 2W5zFHSjBVa
👍2🔥2❤1
Fastexcel
Это легкая и производительная библиотека Java для работы с файлами Excel. Она позволяет читать, создавать и модифицировать электронные таблицы XLSX, используя простой и понятный API.
Подписывайся на наш канал в Max🟪
Это легкая и производительная библиотека Java для работы с файлами Excel. Она позволяет читать, создавать и модифицировать электронные таблицы XLSX, используя простой и понятный API.
Подписывайся на наш канал в Max
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍6🔥2
Приглашаем на открытый урок.
🗓 20 ноября в 19:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Kotlin Backend Developer. Professional».
Программа вебинара:
Вебинар будет полезен:
Бэкенд-разработчикам на Kotlin, тимлидам и всем, кто хочет писать более чистый и поддерживаемый код.
В результате вебинара:
Научитесь создавать собственные DSL и применять их при разработке
🔗 Ссылка на регистрацию: https://vk.cc/cR9yrX
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍2🔥2
Предположим, есть метод, который может выбросить IOException и FileNotFoundException в какой последовательности должны идти блоки catch? Сколько блоков catch будет выполнено?
Общее правило: обрабатывать исключения нужно от «младшего» к старшему. Т.е. нельзя поставить в первый блок
Таким образом, исходя из факта, что
Подписывайся на наш канал в Max🟪
Общее правило: обрабатывать исключения нужно от «младшего» к старшему. Т.е. нельзя поставить в первый блок
catch(Exception ex) {}, иначе все дальнейшие блоки catch() уже ничего не смогут обработать, т.к. любое исключение будет соответствовать обработчику catch(Exception ex).Таким образом, исходя из факта, что
FileNotFoundException extends IOException сначала нужно обработать FileNotFoundException, а затем уже IOException.Подписывайся на наш канал в Max
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍1🔥1
ConnectBot — это клиент Secure Shell для Android, позволяющий подключаться к удаленным серверам по криптографически защищенному каналу.
ConnectBot удобнее всего использовать в Android Studio.
Быстрый старт с Docker и Jenkins CI:
docker run -it -v $(pwd):/workspace \
-v jenkinsfile-runner-cache:/var/jenkinsfile-runner-cache \
-v jenkinsfile-runner:/var/jenkinsfile-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $(which docker):$(which docker) \
-e ANDROID_ADB_SERVER_ADDRESS=host.docker.internal \
jenkins/jenkinsfile-runner
Подписывайся на наш канал в Max
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2❤1
Java-разработчики, у вас спрашивали про DDD на собеседовании?
А вы не знали, что ответить — кроме «ну это про бизнес-логику»?
Пора закрыть пробелы.
На практическом курсе по DDD и архитектуре микросервисов для Java-разработчиков вы:
✅ Соберёте сервис «Диспетчеризации заказов» с нуля
✅ Реализуете Aggregate, Value Object, Domain Service
✅ Освоите Clean Architecture, gRPC, Kafka, CQS
✅ Получите проект в портфолио — и уверенность в собеседованиях
👨🏫 Курс ведёт Кирилл Ветчинкин — действующий архитектор в Авито, ex-Staff Engineer в Купер, работает с 2019 года.
Всё на Java — никакого отрыва от вашей среды.
12 модулей, 6 недель практики, ревью от эксперта и живые эфиры.
Уже более 350 разработчиков прошли — теперь очередь за вами.
🔗 Записаться на курс https://microarch.ru/courses/ddd/languages/java?utm_source=posev&utm_medium=erid:2VtzqvCf2zB&utm_campaign=7
Реклама. ИП Ветчинкин К.Е. ИНН: 773376451099 Erid: 2VtzqvCf2zB
А вы не знали, что ответить — кроме «ну это про бизнес-логику»?
Пора закрыть пробелы.
На практическом курсе по DDD и архитектуре микросервисов для Java-разработчиков вы:
✅ Соберёте сервис «Диспетчеризации заказов» с нуля
✅ Реализуете Aggregate, Value Object, Domain Service
✅ Освоите Clean Architecture, gRPC, Kafka, CQS
✅ Получите проект в портфолио — и уверенность в собеседованиях
👨🏫 Курс ведёт Кирилл Ветчинкин — действующий архитектор в Авито, ex-Staff Engineer в Купер, работает с 2019 года.
Всё на Java — никакого отрыва от вашей среды.
12 модулей, 6 недель практики, ревью от эксперта и живые эфиры.
Уже более 350 разработчиков прошли — теперь очередь за вами.
🔗 Записаться на курс https://microarch.ru/courses/ddd/languages/java?utm_source=posev&utm_medium=erid:2VtzqvCf2zB&utm_campaign=7
Реклама. ИП Ветчинкин К.Е. ИНН: 773376451099 Erid: 2VtzqvCf2zB
🔥2❤1