Используй ApplicationPidFileWriter, чтобы при старте приложения записывать его PID в файл.
Это удобно для ops-скриптов, health-checks в контейнерах и мониторинга процессов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤7🔥7🎅1
Grafana Stack - закрываем все современные потребности Observability
Хотите получить полный контроль над состоянием ваших систем и сервисов? На этом вебинаре мы разберём, как с помощью Grafana Stack построить полноценную Observability-платформу: от визуализации и алертов до сбора метрик и логов из разных источников. Вы научитесь собирать всё в одной точке, устранять "слепые зоны" и реагировать на инциденты ещё до того, как о них узнает пользователь.
📌 Что будет на вебинаре:
— Обзор компонентов Grafana Stack: Grafana, Loki, Tempo, Alerting, Plugins
— Интеграция с источниками данных (Prometheus, Elasticsearch, и др.)
— Настройка дашбордов: фильтры, шаблоны, переменные, UX-практики
— Конфигурация алертов: триггеры, уведомления, антипаттерны
— Практика: построим наглядную систему мониторинга на реальных метриках
👉 Регистрация и подробности о курсе Observability: мониторинг, логирование, трейсинг: https://vk.cc/cPx8xy
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Хотите получить полный контроль над состоянием ваших систем и сервисов? На этом вебинаре мы разберём, как с помощью Grafana Stack построить полноценную Observability-платформу: от визуализации и алертов до сбора метрик и логов из разных источников. Вы научитесь собирать всё в одной точке, устранять "слепые зоны" и реагировать на инциденты ещё до того, как о них узнает пользователь.
📌 Что будет на вебинаре:
— Обзор компонентов Grafana Stack: Grafana, Loki, Tempo, Alerting, Plugins
— Интеграция с источниками данных (Prometheus, Elasticsearch, и др.)
— Настройка дашбордов: фильтры, шаблоны, переменные, UX-практики
— Конфигурация алертов: триггеры, уведомления, антипаттерны
— Практика: построим наглядную систему мониторинга на реальных метриках
👉 Регистрация и подробности о курсе Observability: мониторинг, логирование, трейсинг: https://vk.cc/cPx8xy
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
❤5👍3🔥3
⚙️ Async Profiler
Async Profiler — это современный профайлер для JVM, который показывает, где именно «горит» CPU и где происходят утечки памяти. В отличие от классических профайлеров, он использует низкоуровневые возможности ОС (perf, JVMTI) и практически не влияет на производительность.
📌 Что умеет:
— Делает CPU и allocation flame graph'ы
— Минимальный overhead
— Поддерживает анализ Java и нативного кода вместе
— Умеет снимать снапшоты и строить красивые SVG-отчёты
🧠 Особенно полезен, если у вас микросервисы или приложения с нагрузкой 24/7 — можно ловить узкие места без остановки сервиса.
🔗 Async Profiler на GitHub
✅ Java библиотека #java
Async Profiler — это современный профайлер для JVM, который показывает, где именно «горит» CPU и где происходят утечки памяти. В отличие от классических профайлеров, он использует низкоуровневые возможности ОС (perf, JVMTI) и практически не влияет на производительность.
📌 Что умеет:
— Делает CPU и allocation flame graph'ы
— Минимальный overhead
— Поддерживает анализ Java и нативного кода вместе
— Умеет снимать снапшоты и строить красивые SVG-отчёты
🧠 Особенно полезен, если у вас микросервисы или приложения с нагрузкой 24/7 — можно ловить узкие места без остановки сервиса.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥4
Forwarded from Java Guru 🤓
Где потенциальная проблема в коде?
Anonymous Quiz
27%
@Autowired на UserService
13%
@PathVariable Long id нужно заменить на @RequestParam
43%
Если userService.getUserById(id) вернет null -> NPE
3%
Лучше @Controller вместо @RestController
14%
ResponseEntity.ok(user) не нужен, нужно просто вернуть User
👍4❤3🔥2⚡1
🔥 От разработчика до архитектора высоконагруженных систем! 🚀
Высоконагруженные системы — необходимость для крупных проектов. Пройдите тест, проверьте свои знания и получите скидку на курс «Highload Architect» от OTUS.
Вы научитесь:
✅ Проектировать масштабируемые системы, способные обрабатывать миллионы запросов
✅ Оптимизировать производительность и работать с отказоустойчивыми архитектурами
✅ Использовать современные инструменты и технологии для создания высоконагруженных решений
✅ Применять лучшие практики в проектировании и разработке серверных приложений
📌 Пройдите тест и получите скидку на курс! Подробности уточняйте у менеджера
👉 Пройти тест https://vk.cc/cPyxDo
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Высоконагруженные системы — необходимость для крупных проектов. Пройдите тест, проверьте свои знания и получите скидку на курс «Highload Architect» от OTUS.
Вы научитесь:
✅ Проектировать масштабируемые системы, способные обрабатывать миллионы запросов
✅ Оптимизировать производительность и работать с отказоустойчивыми архитектурами
✅ Использовать современные инструменты и технологии для создания высоконагруженных решений
✅ Применять лучшие практики в проектировании и разработке серверных приложений
📌 Пройдите тест и получите скидку на курс! Подробности уточняйте у менеджера
👉 Пройти тест https://vk.cc/cPyxDo
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
❤4👍2🔥2
Задачи с собеседований: Поиск первого уникального символа в строке (jun+)
— Как найти первый уникальный символ в строке?
🔘 Ключевые моменты:
- Используйте доп. структуру данных для хранения количества вхождений каждого символа
- Предложите в комментарии другие варианты решения.
Реализация через Map на картинке👆
✅ Java библиотека #java
— Как найти первый уникальный символ в строке?
- Используйте доп. структуру данных для хранения количества вхождений каждого символа
- Предложите в комментарии другие варианты решения.
Реализация через Map на картинке
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥5❤4
17 сентября(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика.
Как это будет:
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot
Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤3🔥2
Вышла Java 25
Вышла общедоступная версия Java 25. В этот релиз попало около 2600 закрытых задач и 18 JEP'ов.
Java 25 является LTS-релизом, а значит у него будут выходить обновления как минимум 5 лет с момента выхода (до сентября 2030 года).
Читать статью
Вышла общедоступная версия Java 25. В этот релиз попало около 2600 закрытых задач и 18 JEP'ов.
Java 25 является LTS-релизом, а значит у него будут выходить обновления как минимум 5 лет с момента выхода (до сентября 2030 года).
Читать статью
VK
Вышла Java 25
Вышла общедоступная версия Java 25. В этот релиз попало около 2600 закрытых задач и 18 JEP'ов. Release Notes можно посмотреть здесь. Полн..
🔥30🎉7🍾6❤2
Java библиотека pinned «Вышла Java 25 Вышла общедоступная версия Java 25. В этот релиз попало около 2600 закрытых задач и 18 JEP'ов. Java 25 является LTS-релизом, а значит у него будут выходить обновления как минимум 5 лет с момента выхода (до сентября 2030 года). Читать статью»
@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍4❤3
📌Приглашаем вас на два бесплатных вебинара курса «Elastic/OpenSearch Advanced»
💎Вебинар №1: «Мощный функционал OpenSearch, доступный бесплатно»
⏰ 18 сентября в 20:00 мск
🔹На вебинаре:
- Обсудим функции, которые в Elastic доступны только в платной подписке, а в OpenSearch — бесплатно - Разберём практические сценарии использования и ограничения каждой функции - Покажем примеры настройки и интеграции в реальных задачах
💎Вебинар №2: «Что нового появилось в ElasticSearch за 4 года после появления OpenSearch»
⏰ 24 сентября в 20:00 мск
🔹На вебинаре:
- Обзор ключевых нововведений в ElasticSearch за последние 4 года - Разбор назначений, архитектуры и практических сценариев использования каждой функции - Сравнение с аналогичными возможностями в OpenSearch и обсуждение ограничений
Регистрация на вебинары ➡️ https://vk.cc/cPAy9h
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
💎Вебинар №1: «Мощный функционал OpenSearch, доступный бесплатно»
⏰ 18 сентября в 20:00 мск
🔹На вебинаре:
- Обсудим функции, которые в Elastic доступны только в платной подписке, а в OpenSearch — бесплатно - Разберём практические сценарии использования и ограничения каждой функции - Покажем примеры настройки и интеграции в реальных задачах
💎Вебинар №2: «Что нового появилось в ElasticSearch за 4 года после появления OpenSearch»
⏰ 24 сентября в 20:00 мск
🔹На вебинаре:
- Обзор ключевых нововведений в ElasticSearch за последние 4 года - Разбор назначений, архитектуры и практических сценариев использования каждой функции - Сравнение с аналогичными возможностями в OpenSearch и обсуждение ограничений
Регистрация на вебинары ➡️ https://vk.cc/cPAy9h
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
❤3👍3🔥2
С помощью
sealed можно чётко ограничить набор допустимых типов, а record делает код компактным и иммутабельным. Пример 👇
sealed interface Payment permits CardPayment, CashPayment, CryptoPayment {}
record CardPayment(String cardNumber, double amount) implements Payment {}
record CashPayment(double amount) implements Payment {}
record CryptoPayment(String wallet, double amount) implements Payment {}
Теперь можно использовать switch с исчерпывающей проверкой:
static String process(Payment p) {
return switch (p) {
case CardPayment c -> "Оплата картой: " + c.amount();
case CashPayment c -> "Оплата наличными: " + c.amount();
case CryptoPayment c -> "Крипта из кошелька: " + c.wallet();
};
}
✅ Преимущества:
- меньше if/instanceof;
- компилятор гарантирует, что рассмотрены все варианты;
- код становится выразительным и легко расширяемым.
🔥 Такой подход отлично подходит для бизнес-логики: платежи, статусы заказов, события системы.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤13🔥4☃2
В JUnit 5 появилась интересная аннотация @ClassTemplate. Она полезна, когда один и тот же набор тестов нужно выполнить в разных контекстах. Например: проверить класс с разными локалями, флагами или окружениями.
Обычно в таких случаях мы либо дублируем тестовые классы, либо городим параметризованные тесты. Но @ClassTemplate позволяет описать тест один раз, а запускать его несколько раз — каждый раз в новом окружении.
— Помечаем тестовый класс @ClassTemplate.
— Регистрируем ClassTemplateInvocationContextProvider, который возвращает список «контекстов» (например, en/it).
— JUnit прогоняет один и тот же класс для каждого контекста.
— Есть Greeter, который должен возвращать приветствие по-английски и по-русски.
— Мы пишем один тест → JUnit запускает его дважды: для en и для ru.
— В отчёте два результата, код теста при этом один.
— Работает начиная с JUnit 5.13.
— Для читаемых логов удобнее запускать через JUnit Console Launcher.
— Отличается от @TestTemplate тем, что переиспользует весь класс, а не отдельные методы.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤7🔥3
🏗 Курс “Software Architect” от OTUS — набор заканчивается. Успейте пройти вступительный тест и занять место в группе!
Почему стоит присоединиться прямо сейчас:
• 100% практики на реальных проектах
• Проектирование гибких архитектур
• Микросервисы, интеграции, Big Data
• Современные паттерны: CQRS, Event Sourcing и др.
💡 Кому подойдёт:
• Разработчикам, готовым выйти на новый уровень
• Архитекторам, углубляющим экспертизу
• Тимлидам и менеджерам
✅ После курса вы сможете:
• Проектировать масштабируемые архитектуры
• Оптимизировать взаимодействие сервисов
• Повышать качество и устойчивость систем
Места в группе ограничены — пройдите вступительное тестирование сегодня, чтобы успеть!
https://vk.cc/cPCgpi
Почему стоит присоединиться прямо сейчас:
• 100% практики на реальных проектах
• Проектирование гибких архитектур
• Микросервисы, интеграции, Big Data
• Современные паттерны: CQRS, Event Sourcing и др.
💡 Кому подойдёт:
• Разработчикам, готовым выйти на новый уровень
• Архитекторам, углубляющим экспертизу
• Тимлидам и менеджерам
✅ После курса вы сможете:
• Проектировать масштабируемые архитектуры
• Оптимизировать взаимодействие сервисов
• Повышать качество и устойчивость систем
Места в группе ограничены — пройдите вступительное тестирование сегодня, чтобы успеть!
https://vk.cc/cPCgpi
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576❤4👍2🔥2
Forwarded from Java Guru 🤓
Что будет результатом кода?
Anonymous Quiz
14%
Статус заказа изменится на PROCESSING
6%
Произойдет LazyInitializationException
63%
Транзакция откатится полностью, и статус заказа не изменится
11%
Метод завершится с ошибкой, но заказ останется в статусе COMPLETED
6%
Ошибка компиляции
👍11🔥3❤🔥1
— Statement используется для
— PreparedStatement
Поэтому в реальных проектах почти всегда используют
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥14👍6❤5🎄1
⚡️Тест по мониторингу архитектуры
Ответьте на 15 вопросов и проверьте, насколько вы готовы к обучению на курсе — "Observability: мониторинг, логирование, трейсинг" от Отус.
Научитесь строить эффективные системы мониторинга и логирования. Курс идеально подойдет администраторам Linux, DevOps-инженерам и разработчикам, которые хотят повысить квалификацию и увеличить доход.
➡️ ПРОЙТИ ТЕСТ: https://vk.cc/cPFPO8
🤝 Бонусом за успешно пройденный тест, получишь доступ к записям лучших вебинаров курса.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Ответьте на 15 вопросов и проверьте, насколько вы готовы к обучению на курсе — "Observability: мониторинг, логирование, трейсинг" от Отус.
Научитесь строить эффективные системы мониторинга и логирования. Курс идеально подойдет администраторам Linux, DevOps-инженерам и разработчикам, которые хотят повысить квалификацию и увеличить доход.
➡️ ПРОЙТИ ТЕСТ: https://vk.cc/cPFPO8
🤝 Бонусом за успешно пройденный тест, получишь доступ к записям лучших вебинаров курса.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👍4❤3🔥2
Чёткая схема API помогает наладить диалог между провайдером и клиентом, а единый формат ошибок — избавить потребителей от хаоса в коде и лишних поводов для «боли».
{
"timestamp": "2021-15-08T14:32:17.947+0000",
"status": 500,
"error": "Internal Server Error",
"path": "/test"
}
Такая форма ответа не всегда содержит тип ошибки для обработки на клиенте, а также предоставляет мало контекста для формирования пользовательских сообщений.
{
"error": {
"type": "USER_NOT_FOUND",
"message": "User with ID 12345 not found.",
"status": 500,
"path": "/integration/apps",
"timestamp": "2021-15-08T14:32:17.947+0000",
"data": {
"userId": "12345"
}
}
}
public final class AppException extends RuntimeException {
private final ErrorType type;
private Map<String, Object> data;
// конструктор и геттеры...
}
public enum ErrorType {
USER_NOT_FOUND(404), AUTHENTICATION_FAILED(401), …;
private final int status;
// геттеры...
}
Используем @ControllerAdvice с @ExceptionHandler(AppException.class) для перехвата ошибок и возвращения QErrorResponse, содержащего нужную структуру
Создаём свой ErrorController, заменяющий BasicErrorController, и возвращаем данные в таком же формате QErrorResponse:
@RestController
@RequestMapping("${server.error.path:${error.path:/error}}")
public class RestErrorController extends AbstractErrorController {
// логика формирования QErrorResponse…
}
Это гарантирует, что любые ошибки возвращаются в одинаковом формате .
— Унификация ответа облегчает обработку ошибок на клиенте.
— Контекст в data позволяет выдавать более понятные сообщения пользователю.
— Расширяемость дает возможность добавлять новые типы ошибок при сохранении консистентности.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13🔥13👍8
❓Java Guru - вопросы и задачи с собеседований. Канал с помощью которого ты точно получишь оффер!
👩💻 Android Developer - канал для андроид разработчиков! Статьи, вопросы и задачи с собеседований, лайфхаки.
👩💻 Kotlin Developer - самый топовый канал для котлин разработчика!
📕 Книги для Java программиста - канал с книгами по Java. Постоянно выходят новинки как на русском так и на английском языке!
📰 Java News - канал с последними новостями из мира Java!
📕 Книги для Java программиста - канал с книгами по Java. Постоянно выходят новинки как на русском так и на английском языке!
📰 Java News - канал с последними новостями из мира Java!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍2🔥2