Можно ли использовать
private или protected переменные в interface?Ответ:
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍5🔥4
С версии 13 в Java появились текстовые блоки — это обычные строки типа
String, но записанные в тройные кавычки """. После компиляции они становятся обычными строковыми объектами и если строка в текстовом блоке повторяется в коде, Java может хранить её в одном месте в памяти, чтобы экономить ресурсы.
Текстовые блоки позволяют удобно работать с многострочными данными, такими как SQL-запросы или HTML-код, без лишних символов и переносов строк.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤42👍18👀8🔥2
👍10❤6
В статье рассматривается новая функция в Spring Security — поддержка волшебных ссылок (magic links) для аутентификации.
Автор объясняет, как настроить одноразовые токены и интегрировать их в приложение для упрощения процесса входа пользователей.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥5❤2
Дано целое число
num, многократно складывайте все его цифры, пока в результате не останется только одна цифра, и верните ее.Пример 1:
Входные данные:
num = 38Вывод:
2Пример 2:
Входные данные:
num = 1701Вывод:
9Please open Telegram to view this post
VIEW IN TELEGRAM
👍16
EnumMap — это специализированный класс для работы с enum-ключами, который обеспечивает высокую производительность и экономию памяти. Его основные особенности:EnumMap хранит ключи в виде массива, что позволяет эффективно использовать память и выполнять операции добавления, поиска и удаления за O(1).EnumMap автоматически упорядочиваются в соответствии с порядком значений в enum, что удобно для ситуаций, где важен порядок.Please open Telegram to view this post
VIEW IN TELEGRAM
❤55👍11🔥4💯3
❤9👍5🤔3
В статье рассматриваются особенности использования JOOQ и Hibernate в проектах на Java и их подходы к работе с данными.
Автор объясняет, как JOOQ обеспечивает статическую типизацию для работы с SQL, а Hibernate управляет объектно-реляционным отображением, и почему они не являются взаимозаменяемыми.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤4
Что такое HTTP?
Ответ:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22🔥9❤2
Оптимизация SQL-запросов — важная часть работы любого разработчика, особенно если дело касается больших данных.
В статье вы узнаете, как ускорить выполнение запросов с помощью конструкций
IN, JOIN и ANY(ARRAY[]), а также других методов, позволяющих сократить объем вычислений и улучшить производительность.Please open Telegram to view this post
VIEW IN TELEGRAM
❤11🔥3👍2
В статье рассматриваются методы поиска потенциальных уязвимостей в коде на этапе разработки с помощью статического анализа.
Автор объясняет, как с помощью аннотаций и анализа потоков данных выявлять дефекты безопасности, такие как XSS, XXE и SQL-инъекции, анализируя исходный код без необходимости его выполнения.
Please open Telegram to view this post
VIEW IN TELEGRAM
😁6❤4👍3🔥2⚡1
Дано целое число
n, верните наименьшее число идеальных квадратных чисел, сумма которых равна n.Идеальный квадрат - это целое число, равное квадрату целого числа (например, 1, 4, 9 и 16).
Пример 1:
Входные данные:
n = 12Вывод:
3Пояснение:
12 = 4 + 4 + 4Пример 2:
Входные данные:
n = 13Вывод:
2Пояснение:
13 = 4 + 9Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4❤3
На первый взгляд, ветка
default в switch кажется удобным решением для обработки "всего остального". Но на самом деле это может стать источником ошибок. Разберем три подхода: с default, без нее и с выбросом исключения.defaultdefault часто используют для обработки неожиданных случаев. Это позволяет избежать ошибок компиляции, но может скрыть проблемы:switch (type) {
case ADMIN -> handleAdmin();
case USER -> handleUser();
default -> logUnexpectedType();
}Если добавить новое значение, например, GUEST, оно автоматически попадет в default. Это может привести к некорректной работе, если логика в default не подходит для нового значения.
defaultИногда лучший способ избежать проблем — вовсе отказаться от ветки
default. Это особенно полезно, если вы работаете с перечислениями (enum).switch (type) {
case ADMIN -> handleAdmin();
case USER -> handleUser();
}Такой код заставит компилятор проверять, учтены ли все значения. Если вы забудете про новое, программа не соберется, что поможет выявить ошибку на этапе разработки.
Если вы уверены, что ветка
default необходима, используйте ее для выброса исключения:switch (type) {
case ADMIN -> handleAdmin();
case USER -> handleUser();
default -> throw new IllegalArgumentException("Unexpected type: " + type);
}В этом случае, если появится новое значение, программа не выполнит некорректную логику, а остановится с явной ошибкой. Это поможет быстрее найти и устранить проблему.
Подытожим: Ветка
default может скрывать ошибки и усложнять поддержку. Лучше обрабатывать все варианты явно или использовать default только для выброса исключений. Такой подход сделает код безопаснее и надежнее.Please open Telegram to view this post
VIEW IN TELEGRAM
❤44👍13🔥4