#полезное
😵💫 Совет по Java API
Используйте
Она помогает не допустить случайного добавления второго абстрактного метода в интерфейс, который должен быть функциональным.
Если вы попытаетесь добавить ещё один абстрактный метод в такой интерфейс, компилятор выдаст ошибку
👉 Новости 👉 База вопросов
Используйте
@FunctionalInterface
как защиту на уровне компиляцииОна помогает не допустить случайного добавления второго абстрактного метода в интерфейс, который должен быть функциональным.
Если вы попытаетесь добавить ещё один абстрактный метод в такой интерфейс, компилятор выдаст ошибку
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👋 ScopedValue.where()
👉 Новости 👉 База вопросов
ScopedValue.where()
позволяет безопасно передавать контекстные данные внутри потока, избегая утечек памяти и сложностей ThreadLocal
. Данные доступны только внутри заданного блока кода.Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #bash
🤔 Как удалить все .log файлы в директории?
Чтобы удалить все
Для удаления в подкаталогах используйте:
👉 Новости 👉 База вопросов
Чтобы удалить все
.log
файлы в текущей папке, выполните:rm *. log
Для удаления в подкаталогах используйте:
find . -name "*.1og" -delete
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🫡 В этом гайде автор показывает, как парсить структурированные строки в Java
Большинство разработчиков используют регулярные выражения,
Класс
👉 Новости 👉 База вопросов
Большинство разработчиков используют регулярные выражения,
split()
или ручную нарезку строк. Но эти техники подвержены ошибкам, плохо читаются и, что важнее всего — небезопасны на этапе компиляции.Класс
StringFormat
делает парсинг настолько простым, что даже новичок может реализовать его в одну строку.Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
😊 В этом гайде автор делится, как писать удобные интеграционные тесты в Spring Boot
Многие разработчики либо перегружают
Класс
👉 Новости 👉 База вопросов
Многие разработчики либо перегружают
@SpringBootTest
, либо пишут сложные конструкции с @MockBean
. Но такие подходы тормозят сборку, плохо читаются и, что важнее всего — дают ложное чувство покрытия.Класс
MockMvc
и аннотация @WebMvcTest
делают тестирование контроллеров лёгким и быстрым, можно проверить весь HTTP-флоу без запуска сервера.Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 Совет по Java: предпочитай внедрение через конструктор, а не через поля
На то есть разные причины:
🟠 Зависимости можно пометить как
🟠 Повышает надёжность класса и безопасность при работе с потоками
🟠 Заставляет вызывающий код (или DI-контейнер) передать все необходимые зависимости
🟠 Упрощает модульное тестирование, позволяя подставлять моки или стабы через конструктор
🟠 Все зависимости видны в конструкторе, что чётко показывает, что нужно классу для работы.
🟠 Внедрение через конструктор не использует рефлексию или доступ к приватным полям (в отличие от внедрения через поля), что повышает производительность и снижает риски
👉 Новости 👉 База вопросов
На то есть разные причины:
final
, гарантируя, что они не изменятся после создания.Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #bash
🤔 Как вывести только каталоги в папке?
Чтобы отобразить только папки, используйте:
Или команду
👉 Новости 👉 База вопросов
Чтобы отобразить только папки, используйте:
Is -d */
Или команду
find
:find . -type d
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🤯 JLine TerminalBuilder.build()
Документация
👉 Новости 👉 База вопросов
TerminalBuilder.build()
из библиотеки JLine
позволяет создавать интерактивные терминалы с поддержкой ANSI-цветов, автодополнения и управления вводом. Это полезно для создания CLI-приложений с удобным интерфейсом.Документация
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🛞 Ставить
🟠 Использовать
🟠 Использовать транзакции на уровне методов — Даёт точный контроль и ясность
🟠 Использовать
🟠 Избегать
🟠 Оставлять транзакционные методы
🟠 Логировать или отслеживать поведение транзакций — Помогает выявлять неожиданные проблемы
👉 Новости 👉 База вопросов
@Transactional
везде подряд плохая практика — сначала разберись, когда он действительно нужен:@Transactional
только в сервисном слое — Отделяет бизнес-логику от веб-логики@Transactional(readOnly = true)
— Оптимизирует операции только для чтения@Transactional
в репозиториях — Репозитории не должны управлять транзакциямиpublic
— Необходимо для работы Spring-проксиPlease open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
🥄 Это просто огонь. В одном из следующих релизов jetbrains / intellijidea появится фича, которая позволяет в пару кликов сгенерировать JPA-энтити из существующей схемы БД
И ещё, мне сказали, что SpringData JDBC тоже скоро завезут
👉 Java Portal
И ещё, мне сказали, что SpringData JDBC тоже скоро завезут
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #bash
🤔 Как посчитать количество строк в файле?
Для подсчёта строк в файле используйте:
Эта команда выведет количество строк в файле.
👉 Новости 👉 База вопросов
Для подсчёта строк в файле используйте:
wc -1 file.txt
Эта команда выведет количество строк в файле.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🤓 Java API Tip
Безопасное приведение
Используй
Без него преобразование произойдёт молча — и ты можешь получить некорректный результат без всяких ошибок.
Используй
👉 Новости 👉 База вопросов
Безопасное приведение
long
к int
Используй
Math.toIntExact()
— этот метод возвращает значение long, но выбрасывает ArithmeticException
, если оно не помещается в int
Без него преобразование произойдёт молча — и ты можешь получить некорректный результат без всяких ошибок.
Используй
toIntExact
, когда важно контролировать переполнениеPlease open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#видео
😐 Указание типа после ключевого слова
Об этом и многом другом — в видео
👉 Новости 👉 База вопросов
new
— это действительно допустимая конструкция в Java.Об этом и многом другом — в видео
Please open Telegram to view this post
VIEW IN TELEGRAM