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

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

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

Для связи: @ruslan_kuyanets
Download Telegram
#полезное
👋 Базовые приёмы экономии памяти в Java

1⃣ Ленивая инициализация "тяжёлых" полей

🟠 Используйте lazy initialization, чтобы откладывать создание объекта до момента, когда он действительно понадобится.

2⃣ Избегайте анонимных внутренних классов в циклах

🟠 Каждое такое использование создаёт объект внутреннего класса — это скрытая нагрузка на память.

3⃣ Используйте статические фабричные методы

🟠 Они позволяют экономить память за счёт повторного использования уже созданных экземпляров, вместо создания новых при каждом вызове.

4⃣ Применяйте метод intern()

🟠 Метод intern() класса String возвращает каноническое представление строки.
Используя intern(), можно гарантировать, что одна и та же строка будет представлена в памяти в виде единственного объекта, даже если она создаётся многократно.

String s1 = "hello";
String s2 = "hello".intern();


5⃣ Используйте паттерн Flyweight для повторяющихся неизменяемых данных

🟠 Экономит память за счёт разделения общих экземпляров (используется, например, в Integer.valueOf(), Boolean.TRUE и т.п.).

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
#Собес #Spring
🤔 Что такое Spring Boot и в чём его основное преимущество?

Spring Boot - это инструмент для быстрого создания приложений на базе Spring Framework. Он предоставляет автоматические настройки, готовые стартеры для интеграции зависимостей и встроенные серверы приложений. Благодаря этому Spring Boot позволяет минимизировать конфигурацию и быстро разрабатывать приложения, особенно микросервисы.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
🛞 Наблюдаемость Java-бэкенда с помощью OpenTelemetry
Читать подробнее

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
😵‍💫 Пакетная обработка JDBC через StatelessSession в Hibernate

Статья объясняет, как использовать StatelessSession в Hibernate 6 для быстрой пакетной вставки, обновления и удаления данных с помощью JDBC Batching — без лишнего кеша и с высокой производительностью.
Читать подробнее

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😴 Советы по Java Stream API: Ленивое вычисление с использованием Supplier<Stream<T>>

Когда возникает необходимость повторно использовать потоковую обработку, можно воспользоваться Supplier. В обычных случаях поток (Stream) нельзя использовать повторно после его обработки.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #Spring
🤔 Разница между Spring и Spring Boot

Spring Framework — это универсальный фреймворк для создания приложений с гибкой конфигурацией. Spring Boot, в свою очередь, дополняет Spring, предоставляя автоматическую конфигурацию и встроенные серверы для быстрого создания приложений. Spring Boot подходит для быстрого старта проектов, минимизируя количество ручной конфигурации.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
😎 Профилирование JDBC с помощью VisualVM
Читать подробнее

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

HashSet — это коллекция для хранения уникальных элементов без гарантии порядка. Относится к пакету java.util и реализует интерфейс Set, внутренне опираясь на HashMap.

Основные особенности Java HashSet:

🟠Дубликаты игнорируются. Если добавить элемент, который уже есть в множестве — ничего не произойдёт.
🟠Элементы не упорядочены ни по добавлению, ни по значению.
🟠Допускается один null-элемент.

Производительность: Базовые операции add, remove, contains выполняются за константное время O(1), при условии качественной хеш-функции.

Даже если дважды добавить строку "BMW" — в сете она появится только один раз.


Часто используемые операции:

add(E e) — добавляет элемент, если его ещё нет
remove(Object o) — удаляет элемент, если он есть
contains(Object o) — проверяет наличие элемента
size() — возвращает количество элементов
clear() — очищает сет

Как работает внутри

HashSet использует внутренний HashMap, где элементы сета хранятся как ключи, а значением выступает фиктивный объект. Это позволяет обеспечить уникальность и быстрый доступ.

При выводе содержимого HashSet — элементы отображаются в произвольном порядке.

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


CompletableFuture.delayedExecutor() позволяет выполнить задачу с отложенным запуском без блокировки основного потока. Это удобный инструмент для асинхронных операций с задержкой.
Документация

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #Spring
🤔 В чем разница между Dependency Injection и Inversion of Control?

loC — это общий принцип проектирования, согласно которому управление объектами и их зависимостями передается внешнему контейнеру или фреймворку. Dependency Injection - это конкретный способ реализации loC, при котором зависимости обьекта предоставляются ему извне, а не создаются внутри. ІС можно реализовать не только через DI, но и другими методами, например, через фабричный метод или событийное управление.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
❤️‍🔥 Чувак сделал минималистичный лаунчер для Minecraft для личного использования.

Теперь, когда кто-то из друзей спрашивает, какой лаунчер посоветуешь без вирусов — просто кидаю им свой :P


Ссылки на скачивание и исходники (если интересно, как такой написать):

🟠Скачать: https://github.com/sammwyy/MiniLaunch/releases
(Жми на ссылку с именем minilaunch.jar)

🟠Исходный код лаунчера на Java:
https://github.com/sammwyy/MiniLaunch

После скачивания просто дважды кликни по .jar, и всё готово

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
👨‍💻 Перевод Spring Boot на HTTPS без ругани браузера

Данная статья рассчитана на тех, кто хочет сделать так, чтобы их Spring Boot приложение могло работать с HTTPS без предупреждений со стороны браузера о небезопасном подключении.

В этой статье разбирается именно работа со Spring Boot и вшитым в него Apache Tomcat.
Читать статью

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
📞 Реализация паттернов проектирования на Java

Паттерны проектирования — это готовые решения распространенных задач, с которыми разработчики сталкиваются при создании сложных систем.

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

Что внутри:
🟠 Реализация классических паттернов с чистым и понятным кодом

🟠 Детальные объяснения принципов работы

🟠 Блок-схемы, иллюстрирующие работу каждого паттерна


Понимание паттернов помогает писать более гибкий и поддерживаемый код, а этот репозиторий — хороший инструмент для изучения и практики.
Ссылка на GitHub

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

Spring контекст (или ApplicationContext) - это ядро Spring Framework, которое управляет жизненным циклом бинов и их зависимостями. Он позволяет создавать, настраивать и связывать обьекты приложения. Контекст поддерживает интернационализацию, обработку событий, доступ к ресурсам и интеграцию с внешними технологиями. Конфигурация контекста может быть выполнена через XML, аннотации или Java-классы.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😎 JMH для микробенчмаркинга производительности:

JMH (Java Microbenchmark Harness) — это инструмент для измерения производительности небольших фрагментов кода, идеально подходит для оптимизации алгоритмов. В этом примере сравнивается простая цикл-реализация и использование Stream API.

🟠 JMH гарантирует точные и воспроизводимые тесты производительности
🟠 Используется для оптимизации критичных участков кода в продакшен-приложениях

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🤯 Как работает HashMap в Java?

1⃣Внутреннее устройство – https://javarevisited.blogspot.com/2010/02/how-hashmap-works-in-java.html
2⃣Механика методов get и put – https://java67.com/2013/06/how-get-method-of-hashmap-or-hashtable-works-internally.html

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