Java библиотека
31.6K subscribers
2.31K photos
85 videos
9 files
2.09K links
Книги, статьи, мемы и многое другое для Java программиста!

По сотрудничеству и рекламе: @NadikaKir

Канал в перечне РКН: https://vk.cc/cJrT4A

Мы на бирже: https://telega.in/c/javalib/

Сообщество VK https://vk.com/javatutorial
Download Telegram
Двухфакторная аутентификация (2FA) — стандарт безопасности, без которого нельзя представить современные приложения.

Как реализовать её на практике с помощью Spring Security? Какие есть подходы и сценарии использования? Это то, что нужно знать каждому начинающему backend-разработчику на Java.

На открытом уроке курса «Разработчик на Spring Framework» вы увидите, как работает 2FA в Spring Boot, и разберёте реальные примеры внедрения. Это не просто теория, а практические шаги, которые помогут вам прокачать скиллы и почувствовать уверенность в разработке безопасных сервисов.

Вебинар, который пройдёт 18 сентября в 20:00 МСК. Все участники получат скидку на обучение на курсе «Разработчик на Spring Framework». Регистрация открыта: https://vk.cc/cPpFp8

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
1👍3🔥32
Интеграция системы оповещений через почтовую рассылку

Нужна быстрая интеграция с системой оповещений для отправки уведомлений по электронной почте? Используйте 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 для управления подписками пользователей.

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥42😁1
👩‍💻 Java полезный совет

При работе с коллекциями часто нужно проверить элемент на наличие в списке.
Если использовать 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), но с сортировкой элементов.

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18😁6🔥43
Говорят, за автоматизацию платят больше. Ловите план, как на этом заработать 👌

Вы виртуозно тушите пожары? Но зачем тушить — если можно их предотвращать? Пора менять реактивную работу на проактивную, а рутину — на автоматизацию

Вам не нужны азы. Нужен апгрейд — целенаправленная прокачка в востребованного 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.
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 (нужно обновлять и таблицу, и индекс).
— Слишком много индексов = «смерть от оптимизации». Держите баланс.
— Никогда не делайте индексы «на всё подряд». Индекс должен соответствовать реальным запросам.

А вы чаще оптимизируете запросы через индексы или через переписывание логики?

Java библиотека #java
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
👍144🔥4
👩‍💻 Продвинутый совет по Spring Boot

Используй ApplicationPidFileWriter, чтобы при старте приложения записывать его PID в файл.
Это удобно для ops-скриптов, health-checks в контейнерах и мониторинга процессов. 🔥

🔜 Документация

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍157🔥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
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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥4
Forwarded from Java Guru 🤓
Где потенциальная проблема в коде?
👍8🔥43
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
👍43🔥21
🔥 От разработчика до архитектора высоконагруженных систем! 🚀

Высоконагруженные системы — необходимость для крупных проектов. Пройдите тест, проверьте свои знания и получите скидку на курс «Highload Architect» от OTUS.

Вы научитесь:

Проектировать масштабируемые системы, способные обрабатывать миллионы запросов
Оптимизировать производительность и работать с отказоустойчивыми архитектурами
Использовать современные инструменты и технологии для создания высоконагруженных решений
Применять лучшие практики в проектировании и разработке серверных приложений

📌 Пройдите тест и получите скидку на курс! Подробности уточняйте у менеджера

👉 Пройти тест https://vk.cc/cPyxDo

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
4👍2🔥2
Задачи с собеседований: Поиск первого уникального символа в строке (jun+)

— Как найти первый уникальный символ в строке?

🔘 Ключевые моменты:

- Используйте доп. структуру данных для хранения количества вхождений каждого символа
- Предложите в комментарии другие варианты решения.

Реализация через Map на картинке 👆

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥54
🔍Тестовое собеседование с Java-разработчиком из МТС уже завтра

17 сентября(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика.

Как это будет:
📂 Илья Аров, старший разработчик в МТС, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Илья будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Илье

Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.

Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot

Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍43🔥2
Вышла Java 25

Вышла общедоступная версия Java 25. В этот релиз попало около 2600 закрытых задач и 18 JEP'ов.

Java 25 является LTS-релизом, а значит у него будут выходить обновления как минимум 5 лет с момента выхода (до сентября 2030 года).

Читать статью
🔥30🎉7🍾62
Java библиотека pinned «Вышла Java 25 Вышла общедоступная версия Java 25. В этот релиз попало около 2600 закрытых задач и 18 JEP'ов. Java 25 является LTS-релизом, а значит у него будут выходить обновления как минимум 5 лет с момента выхода (до сентября 2030 года). Читать статью»
🖥 awesome-low-level-design — полезный репозиторий, который предназначен для изучения низкоуровневого проектирования (Low-Level Design, LLD) и подготовки к собеседованию на эту тему

🌟 Здесь содержатся ресурсы по основным принципам ООП, SOLID, паттернам проектирования, диаграммам UML и другим концепциям, а также задачи для практики проектирования различных систем. Решения задач написаны на разных ЯП, в том числе и на Java!

🔐 Лицензия: GPL-3.0

🖥 GitHub

@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍43
📌Приглашаем вас на два бесплатных вебинара курса «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
3👍3🔥2
👩‍💻 Полезный приём в Java: record + sealed interface для удобных и безопасных доменных моделей.

С помощью 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;
- компилятор гарантирует, что рассмотрены все варианты;
- код становится выразительным и легко расширяемым.

🔥 Такой подход отлично подходит для бизнес-логики: платежи, статусы заказов, события системы.

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1613🔥42
⚡️ JUnit 5: @ClassTemplate

В JUnit 5 появилась интересная аннотация @ClassTemplate. Она полезна, когда один и тот же набор тестов нужно выполнить в разных контекстах. Например: проверить класс с разными локалями, флагами или окружениями.

Обычно в таких случаях мы либо дублируем тестовые классы, либо городим параметризованные тесты. Но @ClassTemplate позволяет описать тест один раз, а запускать его несколько раз — каждый раз в новом окружении.

🔍 Как это работает

— Помечаем тестовый класс @ClassTemplate.
— Регистрируем ClassTemplateInvocationContextProvider, который возвращает список «контекстов» (например, en/it).
— JUnit прогоняет один и тот же класс для каждого контекста.

💡 Пример

— Есть Greeter, который должен возвращать приветствие по-английски и по-русски.
— Мы пишем один тест → JUnit запускает его дважды: для en и для ru.
— В отчёте два результата, код теста при этом один.

⚠️ Важные детали

— Работает начиная с JUnit 5.13.
— Для читаемых логов удобнее запускать через JUnit Console Launcher.
— Отличается от @TestTemplate тем, что переиспользует весь класс, а не отдельные методы.

А вы чаще решаете такие задачи параметризацией или дублированием тестов?

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍177🔥3
🏗 Курс “Software Architect” от OTUS — набор заканчивается. Успейте пройти вступительный тест и занять место в группе!

Почему стоит присоединиться прямо сейчас:

• 100% практики на реальных проектах
• Проектирование гибких архитектур
• Микросервисы, интеграции, Big Data
• Современные паттерны: CQRS, Event Sourcing и др.

💡 Кому подойдёт:
• Разработчикам, готовым выйти на новый уровень
• Архитекторам, углубляющим экспертизу
• Тимлидам и менеджерам

После курса вы сможете:

• Проектировать масштабируемые архитектуры
• Оптимизировать взаимодействие сервисов
• Повышать качество и устойчивость систем

Места в группе ограничены — пройдите вступительное тестирование сегодня, чтобы успеть!

https://vk.cc/cPCgpi


Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
4👍2🔥2