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

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

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

Для связи: @ruslan_kuyanets
Download Telegram
#статьи
😊 Юнит-тестирование сервисного уровня в приложении Spring Boot (JUnit 5 и Mockito)

Как настроить окружение для тестирования, включая добавление необходимых зависимостей, таких как spring-boot-starter-test, .

✔️В статье рассмотрим процесс создания тестов для сервисных компонентов, где репозитории заменяются на mock-объекты с помощью Mockito. Основное внимание уделяется проверке бизнес-логики приложения без взаимодействия с реальной базой данных, что позволяет обеспечить изоляцию тестов и повысить их эффективность.
Читать статью

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
#видео
🤓 Создание приложения-чатбота с помощью Spring Boot, React JS и ChatGPT API

В этом пошаговом руководстве пройдем через весь процесс разработки, от настройки бэкенда с помощью Spring Boot до создания интерактивного фронтенда с помощью React JS и интеграции API ChatGPT от OpenAI для интеллектуальных ответов.
📱 Cмотреть видео

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
🥺 Подробное руководство по реализации аутентификации и авторизации на основе JWT в приложении Spring Boot 3 с использованием Spring Security и базы данных MySQL.

В этом руководстве автор демонстрирует создание REST API для входа пользователей, генерации JWT и его возврата в ответе
Читать статью

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
#собес
🤔 Что такое перегрузка (overloading) метода?

Перегрузка - это определение методов с одинаковым именем, но с разным количеством или типами параметров. Она используется для повышения удобства и читабельности кода.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
😊 Попрощайтесь с GC и проблемами с многопоточностью!

Ведь можно улучшить качество кода на Java и Kotlin с профилировщиком IntelliJIDEA

Запишите снимок, а затем проанализируйте активность потоков во вкладке Timeline.
Подробнее

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 Шпаргалка по основам Java с примерами кода.

В ней есть всё, что может пригодиться начинающему разработчику.

Оригинал в хорошем качестве можно взять тут

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 CountDownLatch

CountDownLatch — это синхронизационный механизм, предоставляемый пакетом java.util.concurrent, который позволяет одному или нескольким потокам ждать, пока определенное количество операций завершится, прежде чем они смогут продолжить свою работу. Он полезен в ситуациях, когда нужно дождаться завершения нескольких параллельных задач, прежде чем продолжить выполнение кода.

CountDownLatch работает по принципу счетчика, который уменьшается с каждым вызовом метода countDown(). Когда счетчик достигает нуля, все ожидающие потоки могут продолжить свою работу.

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

Класс - это шаблон или "чертеж" для создания объектов, определяющий их свойства и поведение.
Объект - это конкретный экземпляр класса с определенными значениями свойств.
Интерфейс - это контракт, который определяет набор методов, которые должен реализовать класс.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
😊 Изучите приоритеты конфигурации Spring Boot и различия между файлами .yaml и .properties на наглядных примерах

Статья объясняет приоритетность загрузки конфигурационных файлов в приложениях (например, на Spring Boot) и сравнивает форматы YAML и properties: YAML удобнее для сложных структур благодаря иерархии, а properties-файлы проще и подходят для плоских настроек.
Подробнее

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🤓 Инструмент для бенчмаркинга и оптимизации Kafka

KafkaOptimize — включает скрипты для измерения пропускной способности, настройки серверных и клиентских параметров, а также для оптимизации производительности Kafka.

В нем реализована симуляция сетевой задержки и мониторинг аппаратных узких мест.
Ознакомиться

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
😎 Алгоритмы балансировки нагрузки

Балансировщики нагрузки распределяют входящий сетевой трафик между несколькими серверами, чтобы ни один сервер не испытывал чрезмерной нагрузки.

Эффективное распределение запросов увеличивает производительность и надёжность приложений.

Вот некоторые распространённые стратегии и алгоритмы, используемые в балансировке нагрузки: клик

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#собес
🤔 Что такое класс POJO? Приведите пример такого класса.

PJO (Plain Old Java Object) - это простой Java-класс без сложных зависимостей. Он используется для хранения данных и не содержит бизнес-логики.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
#видео
😊 Общение микросервисов между собой

Это видео посвящёно интеграции Apache Kafka с Spring. В нём рассматриваются:

🟠Создание Kafka-топика с использованием Spring
🟠Настройка Producer-а и Consumer-а для работы с одним топиком
🟠Организация взаимодействия между сервисами через Kafka
📱 Cмотреть видео

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
😊 Плагин IntelliJIDEA

Повышайте свою продуктивность, а именно: находите ответы быстрее прямо в IntelliJIDEA!

1⃣ Установите плагин Help Search через Настройки | Плагины | Маркетплейс.
2⃣ Нажмите ⇧⇧ | Shift+Shift, перейдите на вкладку Help и ищите любую нужную информацию!
Ссылка на плагин

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👍 Шпаргалка по Spring Framework

Включены ключевые технологии, такие как Spring Boot, Dependency Injection (DI), Inversion of Control (IoC), Spring MVC, Spring Data JPA, Spring Security и другие.

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

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#собес
🤔 Какие элементы могут содержать класс?

Класс может содержать поля (свойства), методы, конструкторы, статические блоки, вложенные классы, интерфейсы и аннотации.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЛитКод
Задача: 358. Rearrange String k Distance Apart

Дана строка s и целое число k, переставьте символы в s так, чтобы одинаковые символы находились на расстоянии не менее k друг от друга. Если невозможно переставить строку, верните пустую строку "".

Пример:
Input: s = "aabbcc", k = 3
Output: "abcabc"
Explanation: The same letters are at least a distance of 3 from each other.


👨‍💻 Алгоритм:

1⃣Создайте словарь частот для символов строки и определите максимальную частоту.

2⃣Разделите символы на группы по частоте и создайте сегменты для размещения символов.

3⃣Распределите оставшиеся символы по сегментам, проверяя условия, и объедините сегменты в итоговую строку.

😎 Решение:
class Solution {
public String rearrangeString(String s, int k) {
Map<Character, Integer> freqs = new HashMap<>();
int maxFreq = 0;

for (char c : s.toCharArray()) {
freqs.put(c, freqs.getOrDefault(c, 0) + 1);
maxFreq = Math.max(maxFreq, freqs.get(c));
}

Set<Character> mostChars = new HashSet<>();
Set<Character> secondChars = new HashSet<>();

for (char c : freqs.keySet()) {
if (freqs.get(c) == maxFreq) mostChars.add(c);
else if (freqs.get(c) == maxFreq - 1) secondChars.add(c);
}

StringBuilder[] segments = new StringBuilder[maxFreq];
for (int i = 0; i < maxFreq; i++) segments[i] = new StringBuilder();

for (char c : mostChars) {
for (int i = 0; i < maxFreq; i++) segments[i].append(c);
}
for (char c : secondChars) {
for (int i = 0; i < maxFreq - 1; i++) segments[i].append(c);
}

int segmentId = 0;
for (char c : freqs.keySet()) {
if (mostChars.contains(c) || secondChars.contains(c)) continue;
for (int freq = freqs.get(c); freq > 0; freq--) {
segments[segmentId].append(c);
segmentId = (segmentId + 1) % (maxFreq - 1);
}
}

for (int i = 0; i < maxFreq - 1; i++) {
if (segments[i].length() < k) return "";
}

return String.join("", segments);
}
}


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