#полезное
📞 Pattern.asMatch
Predicate()
Метод
👉 Новости 👉 База вопросов
Predicate()
Метод
Pattern.asMatchPredicate()
, добавленный в Java 11, позволяет преобразовать регулярное выражение в предикат, который можно использовать для фильтрации потоков или проверки строк на полное совпадение с шаблоном.Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
🤯 Быстрее находите и устраняйте ошибки в коде с IntelliJIDEA
Используйте
Куда бы ни был установлен курсор, IDE сразу перенесёт вас к проблеме с полезными объяснениями и предложениями по быстрому исправлению
👉 Новости 👉 База вопросов
Используйте
⇧F2
(macOS) / Shift + F2
(Windows, Linux), чтобы переходить между проблемами.Куда бы ни был установлен курсор, IDE сразу перенесёт вас к проблеме с полезными объяснениями и предложениями по быстрому исправлению
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 В чем разница между = = и equals()?
Оператор
👉 Новости 👉 База вопросов
Оператор
==
сравнивает ссылки на объекты, то есть проверяет, указывают ли две переменные на один и тот же объект в памяти. Метод equals()
сравнивает содержимое объектов, что важно, если нужно проверить равенство значений объектов.Please open Telegram to view this post
VIEW IN TELEGRAM
#ЛитКод
Задача: 563. Binary Tree Tilt
Дано корневое значение бинарного дерева. Вернуть сумму значений наклонов всех узлов дерева.
Наклон узла дерева - это абсолютная разница между суммой всех значений узлов левого поддерева и всех значений узлов правого поддерева. Если у узла нет левого потомка, то сумма значений узлов левого поддерева считается равной 0. То же правило применяется, если у узла нет правого потомка.
Пример:
👨💻 Алгоритм:
1⃣ Определите рекурсивную функцию, которая вычисляет сумму значений узлов поддерева и наклон текущего узла.
2⃣ Для каждого узла вычислите сумму значений левого и правого поддерева, а также их наклон, добавляя наклон к общей сумме.
3⃣ Верните общую сумму наклонов всех узлов.
😎 Решение:
👉 Новости 👉 База вопросов
Задача: 563. Binary Tree Tilt
Дано корневое значение бинарного дерева. Вернуть сумму значений наклонов всех узлов дерева.
Наклон узла дерева - это абсолютная разница между суммой всех значений узлов левого поддерева и всех значений узлов правого поддерева. Если у узла нет левого потомка, то сумма значений узлов левого поддерева считается равной 0. То же правило применяется, если у узла нет правого потомка.
Пример:
Input: root = [1,2,3]
Output: 1
Explanation:
Tilt of node 2 : |0-0| = 0 (no children)
Tilt of node 3 : |0-0| = 0 (no children)
Tilt of node 1 : |2-3| = 1 (left subtree is just left child, so sum is 2; right subtree is just right child, so sum is 3)
Sum of every tilt : 0 + 0 + 1 = 1
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode() {}
TreeNode(int val) { this.val = val; }
TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}
public class Solution {
private int totalTilt = 0;
public int findTilt(TreeNode root) {
sumAndTilt(root);
return totalTilt;
}
private int sumAndTilt(TreeNode node) {
if (node == null) {
return 0;
}
int leftSum = sumAndTilt(node.left);
int rightSum = sumAndTilt(node.right);
int nodeTilt = Math.abs(leftSum - rightSum);
totalTilt += nodeTilt;
return node.val + leftSum + rightSum;
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👍 JWT vs Сессии — что выбрать для авторизации?
Кратко и наглядно разобрали плюсы и минусы двух популярных подходов
👉 Новости 👉 База вопросов
Кратко и наглядно разобрали плюсы и минусы двух популярных подходов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🥺 Генератор надёжных паролей на Java
Пароль с заглавными, строчными, цифрами и спецсимволами? Легко.
С помощью библиотеки
👉 Новости 👉 База вопросов
Пароль с заглавными, строчными, цифрами и спецсимволами? Легко.
С помощью библиотеки
Passay
можно сгенерировать крепкий 10-символьный пароль буквально в пару строк.Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Какая разница между String, StringBuffer и StringBuilder?
String - неизменяемый класс, каждый раз при изменении строки создаетсяновый обьект.
StringBuffer - изменяемый класс, потокобезопасен, но менее эффективен,чем StringBuilder.
StringBuilder - изменяемый класс, не является потокобезопасным, но более эффективен в однопоточных приложениях.
👉 Новости 👉 База вопросов
String - неизменяемый класс, каждый раз при изменении строки создаетсяновый обьект.
StringBuffer - изменяемый класс, потокобезопасен, но менее эффективен,чем StringBuilder.
StringBuilder - изменяемый класс, не является потокобезопасным, но более эффективен в однопоточных приложениях.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🏕 Типы выходных файлов, создаваемых при компиляции Java-кода
Native Image — > Нативный образ — > Работает без JVM
👉 Новости 👉 База вопросов
.class
— > Выполняется в JVM.jar
— > Упаковка кода для повторного использования.jmod
— >Поддерживает модульные Java-приложенияNative Image — > Нативный образ — > Работает без JVM
.war
— >Развёртывание веб-приложений на Java.ear
— > Развёртывание корпоративных Java-приложений.apk
— > Установка Java-приложений на Android.so
— > Компиляция в нативный код (shared object)Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🤯 Лучшие советы по API REST
Скачать PDF на русском — здесь
Сохрани себе для быстрой шпаргалки
👉 Новости 👉 База вопросов
Скачать PDF на русском — здесь
Сохрани себе для быстрой шпаргалки
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
😬 Повышайте качество кода, сохраняя его чистым и единообразным
С этим легко справиться благодаря функциям автоформатирования кода в IntelliJIDEA.
Выделите фрагмент кода и нажмите
👉 Новости 👉 База вопросов
С этим легко справиться благодаря функциям автоформатирования кода в IntelliJIDEA.
Выделите фрагмент кода и нажмите
⌘⌥L
(на macOS) или Ctrl+Alt+L
(на Windows/Linux), чтобы отформатировать его согласно настройкам стиля вашего проектаPlease open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😎 Продвинутые дженерики в Java
Если ты уже знаком с базовыми дженериками, пора копнуть глубже:
—> Ограниченные типы (
—> Подстановочные знаки (
—> Стирание типов (
👉 Новости 👉 База вопросов
Если ты уже знаком с базовыми дженериками, пора копнуть глубже:
—> Ограниченные типы (
<T extends Number>
) — позволяют задать верхнюю (или нижнюю) границу для параметра типа.—> Подстановочные знаки (
? extends
, ? super
) — дают гибкость при работе с обобщёнными методами и коллекциями.—> Стирание типов (
type erasure
) — механизм, из-за которого вся информация о типах удаляется во время компиляции, и на этапе выполнения остаются только Object и приведенияPlease open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Почему массив символов лучше строки для хранения пароля?
Массив символов предпочтительнее строки для хранения пароля, так как его содержимое можно безопасно очистить после использования. В отличие от строк, которые являются неизменяемыми и не могут быть очищены, массив символов позволяет уничтожить данные, минимизируя риски утечек информации.
👉 Новости 👉 База вопросов
Массив символов предпочтительнее строки для хранения пароля, так как его содержимое можно безопасно очистить после использования. В отличие от строк, которые являются неизменяемыми и не могут быть очищены, массив символов позволяет уничтожить данные, минимизируя риски утечек информации.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🛞 Основы Java Enum
Синтаксис
🟠 Все значения — это константы
🟠 Java преобразует их в
Особенности
▫ Перечисления (enums) не могут наследовать другие классы, так как уже наследуют
▫ Enum может реализовывать интерфейсы
▫ Конструкторы могут быть только приватными, иначе будет выброшено исключение
Пример Enum с конструктором на фото
👉 Новости 👉 База вопросов
Синтаксис
enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;
}
public static final
переменныеОсобенности
java.lang.Enum
Пример Enum с конструктором на фото
Please open Telegram to view this post
VIEW IN TELEGRAM
image_2025-04-18_09-03-49.png
1.5 MB
#полезное
😎 Что такое MapStruct?
MapStruct — это мощный процессор аннотаций для Java, который автоматически генерирует мапперы между объектами прямо на этапе компиляции
Очень быстрый, безопасный по типам и отлично работает в IDE
Идеально подходит для преобразования между Entity и DTO в REST API
👉 Новости 👉 База вопросов
MapStruct — это мощный процессор аннотаций для Java, который автоматически генерирует мапперы между объектами прямо на этапе компиляции
Очень быстрый, безопасный по типам и отлично работает в IDE
Идеально подходит для преобразования между Entity и DTO в REST API
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👨💻 На фото показана проблема N+1 в JPA и её решение.
🟠
🟠
Показана разница в коде и как избежать лишних запросов при загрузке связанных сущностей (Author → Book)
👉 Новости 👉 База вопросов
findAll()
— вызывает 1 запрос к авторам + по 1 запросу на книги каждого автора → N+1 запросовJOIN FETCH
в @Query
— решает проблему, загружая авторов и их книги одним SQL-запросомПоказана разница в коде и как избежать лишних запросов при загрузке связанных сущностей (Author → Book)
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Какие GOF-шаблоны используются в пуле строк?
Для реализации пула строк в Java используется шаблон "Пул объектов" (Object Pool). Он позволяет повторно использовать объекты, в данном случае строки, вместо создания новых. В Java это реализовано через внутренний механизм работы с пулом строк. Кроме того, такие шаблоны, как "Одиночка" (Singleton) и "Фабрика" (Factory), могут быть использованы для управления доступом к строкам в пуле.
👉 Новости 👉 База вопросов
Для реализации пула строк в Java используется шаблон "Пул объектов" (Object Pool). Он позволяет повторно использовать объекты, в данном случае строки, вместо создания новых. В Java это реализовано через внутренний механизм работы с пулом строк. Кроме того, такие шаблоны, как "Одиночка" (Singleton) и "Фабрика" (Factory), могут быть использованы для управления доступом к строкам в пуле.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
😊 8 алгоритмов балансировки нагрузки, которые стоит знать
1⃣ Round Robin – запросы распределяются равномерно между серверами по очереди.
2⃣ Least Connections – запрос направляется на сервер с наименьшим числом активных соединений.
3⃣ Weighted Round Robin – серверам присваиваются веса, и запросы распределяются с учетом этих весов.
4⃣ Weighted Least Connections – учитывается как число соединений, так и вес сервера.
5⃣ IP Hash - запрос направляется на сервер в зависимости от хэша IP-адреса клиента.
6⃣ Least Response Time – запрос идет на сервер с наименьшим временем ответа.
7⃣ Random – сервер выбирается случайным образом.
8⃣ Least Bandwidth – запрос идет на сервер с наименьшей текущей загрузкой сети.
👉 Новости 👉 База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👋 Ты используешь
🟠
🟠
🟠
👉 Новости 👉 База вопросов
CompletableFuture
, но где-то по ходу выполнения возникает исключение. Как с ним справиться? CompletableFuture
предоставляет 3 способа обработки исключений exceptionally()
— этот метод принимает функцию обработки ошибки, которая выполняется, когда происходит исключение. Здесь у нас есть доступ только к ошибке, но не к данным, возвращённым с предыдущего этапа. handle()
— этот метод принимает результат и исключение и выполняется всегда после завершения предыдущего этапа. Это может быть как в случае успешного выполнения, так и при возникновении исключений. whenComplete()
— метод похож на handle()
, но не изменяет результат. Он возвращает CompletableFuture
и может быть использован в цепочке. Используется для выполнения побочных действий после завершения, вне зависимости от результатаPlease open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🤓 Порядок выполнения блоков кода при наследовании в Java
1⃣ Статический блок родителя
2⃣ Статический блок потомка
3⃣ Инициализационный (instance) блок родителя
4⃣ Конструктор родителя
5⃣ Инициализационный (instance) блок потомка
6⃣ Конструктор потомка
При создании объекта класса-наследника сначала выполняются все статические и инициализационные блоки родителя, затем конструкция родителя, и только после этого — логика наследника
👉 Новости 👉 База вопросов
При создании объекта класса-наследника сначала выполняются все статические и инициализационные блоки родителя, затем конструкция родителя, и только после этого — логика наследника
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Что такое пул строк и для чего он нужен?
Пул строк в Java - это область памяти, где хранятся все уникальные строковые литералы. Когда создается новая строка, Java проверяет, существует ли уже такая строка в пуле, и если существует, возвращает ссылку на существующий объект, а не создает новый. Это помогает экономить память и ускоряет выполнение программы.
👉 Новости 👉 База вопросов
Пул строк в Java - это область памяти, где хранятся все уникальные строковые литералы. Когда создается новая строка, Java проверяет, существует ли уже такая строка в пуле, и если существует, возвращает ссылку на существующий объект, а не создает новый. Это помогает экономить память и ускоряет выполнение программы.
Please open Telegram to view this post
VIEW IN TELEGRAM