⁉️ Spark-запросы тормозят? Пора разобраться, как сделать их в разы быстрее
На открытом вебинаре мы разберём проверенные техники оптимизации, которые используют ведущие дата-инженеры. Покажем, как находить узкие места, ускорять join-операции и выжимать максимум из ресурсов кластера.
Вы получите конкретные приёмы — от оптимального партиционирования данных и управления кэшированием до выбора лучших форматов хранения. Всё на реальных примерах.
➡️ Присоединяйтесь 17 сентября в 20:00 МСК. Урок проходит в преддверии старта курса «Spark Developer», все участники получат скидку на обучение. Регистрация открыта: https://vk.cc/cPo7Oa
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
На открытом вебинаре мы разберём проверенные техники оптимизации, которые используют ведущие дата-инженеры. Покажем, как находить узкие места, ускорять join-операции и выжимать максимум из ресурсов кластера.
Вы получите конкретные приёмы — от оптимального партиционирования данных и управления кэшированием до выбора лучших форматов хранения. Всё на реальных примерах.
➡️ Присоединяйтесь 17 сентября в 20:00 МСК. Урок проходит в преддверии старта курса «Spark Developer», все участники получат скидку на обучение. Регистрация открыта: https://vk.cc/cPo7Oa
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
❤4👍2🔥2❤🔥1
Forwarded from Java Guru 🤓
Что будет результатом кода?
Anonymous Quiz
20%
RejectedExecutionException, так как shutdown() вызван до завершения submit()
40%
Вывод 42 через 1 секунду и корректное завершение.
9%
NullPointerException, так как future будет null
25%
InterruptedException, так как поток будет принудительно завершён
6%
Программа зависнет навсегда, так как shutdown() остановит все задачи
❤5🔥4👍3
В Java часто нужно работать с датами и временем. Вместо устаревших Date и Calendar лучше использовать современное API java.time, появившееся в Java 8. Оно более удобное, безопасное и читаемое.
Например, если нужно добавить дни к текущей дате:
import java.time.LocalDate;
public class Main {
public static void main(String[] args) {
LocalDate today = LocalDate.now();
LocalDate nextWeek = today.plusDays(7);
System.out.println("Сегодня: " + today);
System.out.println("Через неделю: " + nextWeek);
}
}
✅ Код становится проще и понятнее.
📌 Совет: всегда отдавайте предпочтение java.time вместо старых классов.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤21💯6🔥3
В свежем релизе — важные улучшения, о которых стоит знать каждому Java-разработчику:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥4🎉4❤1
Двухфакторная аутентификация (2FA) — стандарт безопасности, без которого нельзя представить современные приложения.
Как реализовать её на практике с помощью Spring Security? Какие есть подходы и сценарии использования? Это то, что нужно знать каждому начинающему backend-разработчику на Java.
На открытом уроке курса «Разработчик на Spring Framework» вы увидите, как работает 2FA в Spring Boot, и разберёте реальные примеры внедрения. Это не просто теория, а практические шаги, которые помогут вам прокачать скиллы и почувствовать уверенность в разработке безопасных сервисов.
Вебинар, который пройдёт 18 сентября в 20:00 МСК. Все участники получат скидку на обучение на курсе «Разработчик на Spring Framework». Регистрация открыта: https://vk.cc/cPpFp8
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Как реализовать её на практике с помощью Spring Security? Какие есть подходы и сценарии использования? Это то, что нужно знать каждому начинающему backend-разработчику на Java.
На открытом уроке курса «Разработчик на Spring Framework» вы увидите, как работает 2FA в Spring Boot, и разберёте реальные примеры внедрения. Это не просто теория, а практические шаги, которые помогут вам прокачать скиллы и почувствовать уверенность в разработке безопасных сервисов.
Вебинар, который пройдёт 18 сентября в 20:00 МСК. Все участники получат скидку на обучение на курсе «Разработчик на Spring Framework». Регистрация открыта: https://vk.cc/cPpFp8
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
1👍3🔥3❤2
Интеграция системы оповещений через почтовую рассылку
Нужна быстрая интеграция с системой оповещений для отправки уведомлений по электронной почте? Используйте AI, чтобы автоматизировать подключение почтового сервиса и эффективно управлять рассылками.
📝 Промпт:
💡 Расширения:
— Добавьте
— Добавьте
✅ Java библиотека #java
Нужна быстрая интеграция с системой оповещений для отправки уведомлений по электронной почте? Используйте AI, чтобы автоматизировать подключение почтового сервиса и эффективно управлять рассылками.
📝 Промпт:
Generate an email notification system integration for a Spring Boot 3 application.
— Set up SMTP configuration in application.properties with email provider details (e.g., Gmail, SendGrid).
— Implement EmailService to send notifications using JavaMailSender and MimeMessage.
— Create a method to send transactional emails (e.g., order confirmation, password reset).
— Integrate email templates using Thymeleaf or FreeMarker for dynamic content generation.
— Set up email queues using Spring’s @Async to process notifications asynchronously.
— Handle email failures gracefully with retry mechanisms and user feedback.
— Добавьте
Send welcome emails with a personalized subject and content for new user registrations для приветственных писем.— Добавьте
Implement email subscription management for users to opt-in/opt-out from specific notifications для управления подписками пользователей.Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥4❤2😁1
При работе с коллекциями часто нужно проверить элемент на наличие в списке.
Если использовать
List.contains(), то поиск будет O(n) — медленно на больших данных. Лучше сразу применять
Set (например, HashSet) для поиска за O(1). Пример
import java.util.*;
public class Main {
public static void main(String[] args) {
List<String> list = Arrays.asList("apple", "banana", "orange", "grape");
// Медленно — O(n)
boolean slowCheck = list.contains("orange");
// Быстро — O(1)
Set<String> set = new HashSet<>(list);
boolean fastCheck = set.contains("orange");
System.out.println("List check: " + slowCheck);
System.out.println("Set check: " + fastCheck);
}
}
📌 Итог:
- Для поиска в коллекции всегда используйте Set, если не нужен порядок.
- HashSet → быстрый доступ за O(1).
- TreeSet → доступ за O(log n), но с сортировкой элементов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18😁6🔥4❤3
Говорят, за автоматизацию платят больше. Ловите план, как на этом заработать 👌
Вы виртуозно тушите пожары? Но зачем тушить — если можно их предотвращать? Пора менять реактивную работу на проактивную, а рутину — на автоматизацию ✅
Вам не нужны азы. Нужен апгрейд — целенаправленная прокачка в востребованного DevOps-инженера 🔝
➡️ «DevOps Upgrade» от учебного центра Слёрм — интенсивный курс-профессия, обновлённый летом 2025
Только практика, без воды:
⏩ Ключевые инструменты: Docker, Kubernetes, CI/CD, мониторинг (Prometheus, Grafana) и автоматизация (Ansible, Terraform).
⏩ Новый воркшоп по Yandex Cloud.
⏩ Сквозной проект для портфолио: создание отказоустойчивой системы.
⏩ 2 сертификации: по Kubernetes и его мониторингу.
🌟 Бонус: курсы по Git, Linux и тренинги по самообучению.
22 сентября стоимость курса вырастет. Успейте зафиксировать текущую цену и инвестировать в свой карьерный шаг!
➡️ Переходите по ссылке, изучите программу — и станьте тем, кто предотвращает проблемы ✔️
Вы виртуозно тушите пожары? Но зачем тушить — если можно их предотвращать? Пора менять реактивную работу на проактивную, а рутину — на автоматизацию ✅
Вам не нужны азы. Нужен апгрейд — целенаправленная прокачка в востребованного DevOps-инженера 🔝
➡️ «DevOps Upgrade» от учебного центра Слёрм — интенсивный курс-профессия, обновлённый летом 2025
Только практика, без воды:
⏩ Ключевые инструменты: Docker, Kubernetes, CI/CD, мониторинг (Prometheus, Grafana) и автоматизация (Ansible, Terraform).
⏩ Новый воркшоп по Yandex Cloud.
⏩ Сквозной проект для портфолио: создание отказоустойчивой системы.
⏩ 2 сертификации: по Kubernetes и его мониторингу.
🌟 Бонус: курсы по Git, Linux и тренинги по самообучению.
22 сентября стоимость курса вырастет. Успейте зафиксировать текущую цену и инвестировать в свой карьерный шаг!
➡️ Переходите по ссылке, изучите программу — и станьте тем, кто предотвращает проблемы ✔️
❤5👍2🔥2
🚀 Индексы в PostgreSQL
Когда сервис начинает работать с десятками миллионов строк, простое findById уже не выглядит «мгновенным». Тут в игру вступают индексы.
🔍 Что такое индекс
Индекс в PostgreSQL — это отдельная структура данных, которая позволяет находить строки намного быстрее, чем полный перебор таблицы.
⚡️ Типы индексов и когда применять
— B-Tree (по умолчанию)
Отлично работает для операций =, <, >, ORDER BY.
Частый кейс: поиск по id, created_at, username.
— GIN (Generalized Inverted Index)
Для jsonb, массивов и полнотекстового поиска.
Например, поиск по тегам или WHERE metadata @> '{"os":"android"}'.
— GiST (Generalized Search Tree)
Для геоданных, поиска по диапазонам (tsrange, daterange).
— Hash Index
Для очень быстрого поиска по точному совпадению, но реже нужен (B-Tree почти всегда быстрее).
⚠️ На что обратить внимание
— Индекс ускоряет SELECT, но замедляет INSERT/UPDATE/DELETE (нужно обновлять и таблицу, и индекс).
— Слишком много индексов = «смерть от оптимизации». Держите баланс.
— Никогда не делайте индексы «на всё подряд». Индекс должен соответствовать реальным запросам.
❓ А вы чаще оптимизируете запросы через индексы или через переписывание логики?
✅ Java библиотека #java
Когда сервис начинает работать с десятками миллионов строк, простое findById уже не выглядит «мгновенным». Тут в игру вступают индексы.
🔍 Что такое индекс
Индекс в PostgreSQL — это отдельная структура данных, которая позволяет находить строки намного быстрее, чем полный перебор таблицы.
⚡️ Типы индексов и когда применять
— B-Tree (по умолчанию)
Отлично работает для операций =, <, >, ORDER BY.
Частый кейс: поиск по id, created_at, username.
CREATE INDEX idx_user_email ON users(email);
— GIN (Generalized Inverted Index)
Для jsonb, массивов и полнотекстового поиска.
Например, поиск по тегам или WHERE metadata @> '{"os":"android"}'.
CREATE INDEX idx_logs_metadata ON logs USING gin (metadata jsonb_path_ops);
— GiST (Generalized Search Tree)
Для геоданных, поиска по диапазонам (tsrange, daterange).
CREATE INDEX idx_places_geom ON places USING gist (geom);
— Hash Index
Для очень быстрого поиска по точному совпадению, но реже нужен (B-Tree почти всегда быстрее).
CREATE INDEX idx_sessions_sid ON sessions USING hash (session_id);
⚠️ На что обратить внимание
— Индекс ускоряет SELECT, но замедляет INSERT/UPDATE/DELETE (нужно обновлять и таблицу, и индекс).
— Слишком много индексов = «смерть от оптимизации». Держите баланс.
— Никогда не делайте индексы «на всё подряд». Индекс должен соответствовать реальным запросам.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤18👍8🔥5🍾2
Media is too big
VIEW IN TELEGRAM
В Java нет двумерных массивов?
Есть ли разница между двумерным массивом и массивом массивов?
🌐 🗣 СМОТРЕТЬ VKVIDEO
📺 🗣 СМОТРЕТЬ RUTUBE
✅ Java библиотека #java
Есть ли разница между двумерным массивом и массивом массивов?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤4🔥4
Используй 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 года). Читать статью»