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

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

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

Для связи: @ruslan_kuyanets
Download 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 проверяет, существует ли уже такая строка в пуле, и если существует, возвращает ссылку на существующий объект, а не создает новый. Это помогает экономить память и ускоряет выполнение программы.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🤯 В Java ключевые слова бывают двух типов: зарезервированные и контекстные.

Зарезервированные ключевые слова нельзя использовать, например, для имени метода — метод с именем try не скомпилируется

Контекстные ключевые слова, напротив, можно использовать в качестве идентификаторов в большинстве случае

Начиная с Java 24, контекстные ключевые слова включают следующие:

exports     opens       requires    uses        yield
module permits sealed var
non-sealed provides to when
open record transitive with


Их можно использовать почти везде, где допустимо имя идентификатора

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😱 Какие типы ссылок существуют?

Существует 4 типа ссылок, которые определяют, как объект будет обрабатываться сборщиком мусора (Garbage Collector).

1⃣ Strong Reference

Это ссылки, которые используются по умолчанию.
String strongRef = new String("Strong Reference");


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

2⃣ Soft Reference

Создаются с помощью класса SoftReference. Soft ссылка удерживает объект в памяти, пока в JVM достаточно свободной памяти. Если памяти не хватает, объект будет удален.
SoftReference<String> softRef = new SoftReference<>(new String("Soft Reference"));
String softObj = softRef.get();


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

3⃣ Weak Reference

Создаются с помощью класса WeakReference. Объект, на который ссылается слабая ссылка, удаляется сборщиком мусора, как только на него больше нет сильных или мягких ссылок.
WeakReference<String> weakRef = new WeakReference<>(new String("Weak Reference"));
String weakObj = weakRef.get();


Часто используются в структурах данных, таких как WeakHashMap, для предотвращения удержания ненужных объектов.
Удобны для создания ссылок на временные объекты.

4⃣ Phantom Reference

Создаются с помощью класса PhantomReference. Эти ссылки используются исключительно для отслеживания, когда объект будет удален сборщиком мусора.
PhantomReference<String> phantomRef = new PhantomReference<>(new String("Phantom Reference"), new ReferenceQueue<>());


Метод get() у фантомной ссылки всегда возвращает null.
Объекты, на которые ссылаются фантомные ссылки, добавляются в ReferenceQueue, когда сборщик мусора их удаляет.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😇 OpenGLFX — библиотека для интеграции OpenGL-графики с JavaFX!

Она добавляет компонент GLCanvas, который позволяет отображать графику OpenGL как обычный элемент JavaFX. Библиотека поддерживает различные движки рендеринга, включая LWJGL, JOGL, LWJGL2 и LibGDX, и оптимизирована для каждой платформы.
Гитхаб

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

Примитивные классы - это классы-обертки для примитивных типов данных, которые позволяют использовать примитивы как объекты. Например, Integer для типа int, Double для типа double .

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
😊 Лучшие практики программирования на Java
Читать клик

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😐 learn.java — официальный сайт от Oracle для изучения Java. Здесь всё чётко и по делу

🟠 Установка JDK и настройка IDE
🟠 Пошаговые уроки по основам Java
🟠 Практические задания в онлайн-редакторе
🟠 Мини-проекты для закрепления знаний
🟠 Дополнительные ресурсы для углубленного обучения

Плюс — есть Java Playground, где можно писать и запускать код прямо в браузере, без лишних установок

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
Component → Controller → Service → Repository → База данных → Ответ

Так проходит поток данных в приложении Spring Boot — чисто и по слоям

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

Observability (наблюдаемость) - это способность системы предоставлять метрики, логи и трассировки, чтобы быстро находить и исправлять ошибки.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🛞 Многопоточность в Java

Есть основной метод, а вместе с ним — несколько потоков

Каждый поток выполняет свою задачу одновременно с другими

Это даёт прирост в скорости и производительности.

Полезно, когда нужно делать несколько вещей сразу — например, загружать файлы или обслуживать пользователей

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😵‍💫 ProcessHandle.info()

Метод ProcessHandle.info() позволяет получать информацию о запущенных процессах в системе, таких как аргументы командной строки, время запуска и использование ресурсов. Это полезно для мониторинга процессов в Java-приложениях.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😎 Аннотации @OneToMany и @ManyToOne помогают определить связи между сущностями в базе данных

Пример:

Пользователь может иметь много заказов →

@OneToMany(mappedBy = "user")
private List<Order> orders;


Каждый заказ принадлежит одному пользователю →

@ManyToOne
@JoinColumn(name = "user_id")
private User user;


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

Chaos Engineering - это практика внесения искусственных сбоев в систему, чтобы проверить её устойчивость. Это позволяет заранее выявить слабые места и предотвратить крупные аварии.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
😊 Pattern Matching в switch — Java
Читать клик

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
📞 Балансировка производительности и потокобезопасности
Читать клик

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
❤️‍🔥 Заметки о java.util.Stream

Stream API (поток) — принципиально новый способ работы с коллекциями в Java (по крайней мере он был таким на момент релиза).

В данной статье речь пойдёт о наиболее интересных и показательных примерах использования Stream.
Обсудим, как применять Stream API эффективно, делая код лучше и избегая ошибок.
о java.util.Stream

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