Java Backend | YeaHub
491 subscribers
101 photos
22 videos
2 files
215 links
Теория, подготовка к интервью и курсы для Java разработчиков

YeaHub — это платформа для IT-специалистов, объединяющая обучение, карьерный рост, развитие и сообщество единомышленников.

Платформа: https://yeahub.ru

Для связи: @ruslan_kuyanets
Download Telegram
#полезное
👍 Совет для IntelliJ — свой значок проекта

Можно задать кастомную иконку для проекта в IntelliJ — она будет отображаться на экране приветствия

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #CIcd
🤔 Что такое canary deployment?

Canary deployment - это стратегия развертывания, при которой новая версия приложения сначала запускается для небольшой части пользователей. Если тестирование проходит успешно, она постепенно заменяет старую версию.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👨‍💻 Locale.getDefault()

Locale.getDefault() позволяет получить текущую локаль системы, что полезно для работы с форматированием дат, чисел и текста.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
😬 Совет для джавистов в IntelliJ IDEA:

Знаешь ли ты, что можно использовать встроенный HTTP-клиент IntelliJ, чтобы ускорить работу с Java?

После этого тебе Postman больше не понадобится.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#medium
Задача: 673. Number of Longest Increasing Subsequence

Дан массив целых чисел nums, верните количество самых длинных строго возрастающих подпоследовательностей.

Пример:
Input: n = 1, presses = 1
Output: 2
Explanation: Status can be:
- [off] by pressing button 1
- [on] by pressing button 2


Алгоритм:

1⃣Объявите два массива динамического программирования length и count, и инициализируйте их значениями length[i]=1 и count[i]=1. Итерируйте i от 0 до n−1. Для каждого i итерируйте j от 0 до i−1 и, если nums[j] < nums[i], обновите length[i] и count[i] в зависимости от значений length[j] и count[j].

2⃣Найдите максимальное значение в массиве length и сохраните его в переменной maxLength. Инициализируйте переменную result = 0.

3⃣Итерируйте i от 0 до n−1 и, если length[i] = maxLength, добавьте count[i] к result. Верните result.

Решение:
class Solution {
public int findNumberOfLIS(int[] nums) {
int n = nums.length;
int[] length = new int[n];
int[] count = new int[n];
Arrays.fill(length, 1);
Arrays.fill(count, 1);

for (int i = 0; i < n; i++) {
for (int j = 0; j < i; j++) {
if (nums[j] < nums[i]) {
if (length[j] + 1 > length[i]) {
length[i] = length[j] + 1;
count[i] = 0;
}
if (length[j] + 1 == length[i]) {
count[i] += count[j];
}
}
}
}

int maxLength = Arrays.stream(length).max().getAsInt();
int result = 0;

for (int i = 0; i < n; i++) {
if (length[i] == maxLength) {
result += count[i];
}
}

return result;
}
}


👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #CIcd
🤔 Что такое blue-green deployment?

Blue-green deployment - это стратегия развертывания, при которой две среды (синяя и зелёная) работают параллельно. Новая версия приложения разворачивается в зелёной среде, тестируется, а затем весь трафик переключается на неё, превращая её в новую продакшн-среду.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🛞 Анонс: Azure Command Launcher для Java

jaz — новый инструмент запуска JVM, оптимизированный под Azure. Он предлагает более подходящие настройки по умолчанию для Java-приложений в контейнерах и на виртуалках.

И это ещё не всё — впереди больше обновлений.
подробнее

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#статьи
😅 Нашёл годную статью — подробный гайд по ООП в Java: принципы, концепты и реальные примеры. Если ты новичок или хочешь освежить базу — заходи смело. Всё объяснено доступно и с кодом.
источник

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😎 Thread.getState()

Thread.getState() позволяет получить текущее состояние потока. Это полезно при отладке многопоточных программ, чтобы отслеживать, выполняется ли поток, заблокирован или завершён.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #CIcd
🤔 Что такое контейнер?

Контейнер - это легковесный, изолированный пакет, содержащий код приложения, зависимости и настройки. Он позволяет запускать приложения независимо от среды, упрощая их развертывание и масштабирование.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🛞 Интерфейс JpaRepository

Это готовое решение для CRUD-операций. Просто унаследуйся от JpaRepository<Entity, ID> — и получи save, find, delete, update без лишнего кода

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
image_2025-05-27_07-57-06.png
255 KB
#полезное
😇 Java Lombok: Аннотация @Data — всё в одном

Аннотация @Data объединяет в себе несколько часто используемых аннотаций Lombok:

🟠 @ToString — генерирует метод toString()
🟠 @Getter — создаёт геттеры для всех нестатических полей
🟠 @Setter — создаёт сеттеры для всех нестатических полей
🟠 @EqualsAndHashCode — генерирует equals() и hashCode()
🟠 @RequiredArgsConstructor — создаёт конструктор для всех final и @NonNull полей

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
❤️‍🔥 Charset.forName()

Charset.forName() позволяет получить кодировку по её названию и использовать её для преобразования строк. Это полезно при работе с различными кодировками, например, UTF-8, ISO-8859-1 и Windows-1251.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #CIcd
🤔 Что такое Jenkinsfile?

Jenkinsfile - это текстовый файл, в котором описаны этапы CI/CD-пайплайна: сборка, тестирование, развертывание. Он позволяет управлять процессами Jenkins с помощью кода, обеспечивая прозрачность и повторяемость.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👍 JDK 25: String::hashCode стал быстрее

В новой версии JDK 25 улучшили производительность класса String: теперь метод String::hashCode в большинстве случаев сворачивается на этапе компиляции (constant folding).

Это значит:
– Меньше затрат в рантайме
– Быстрее работа с ключами в HashMap
– Эффективнее часто используемые строки
Подробнее

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😵‍💫 Совет по 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: предпочитай внедрение через конструктор, а не через поля

На то есть разные причины:

🟠 Зависимости можно пометить как final, гарантируя, что они не изменятся после создания.

🟠 Повышает надёжность класса и безопасность при работе с потоками

🟠 Заставляет вызывающий код (или DI-контейнер) передать все необходимые зависимости

🟠 Упрощает модульное тестирование, позволяя подставлять моки или стабы через конструктор

🟠 Все зависимости видны в конструкторе, что чётко показывает, что нужно классу для работы.

🟠 Внедрение через конструктор не использует рефлексию или доступ к приватным полям (в отличие от внедрения через поля), что повышает производительность и снижает риски

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM