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

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

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

Для связи: @ruslan_kuyanets
Download Telegram
#полезное
😘 Зачем использовать `@ConditionalOnProperty`?

- Включение или отключение бинов и конфигураций на основе значений в application.properties без изменения кода
- Загрузка разных бинов для разных сред с помощью конфигурационных параметров
- Исключение лишних бинов снижает потребление памяти и упрощает логику

🟠Включить бин, если свойство существует:
Используется аннотация @ConditionalOnProperty(name="my.prop").
Бин будет создан, если свойство my.prop существует и его значение не "false".

🟠Включить бин, если свойство равно определённому значению:
Добавляется параметр havingValue="yes".
Бин будет создан только в том случае, если значение свойства строго равно "yes".

🟠Включить бин, если свойство отсутствует:
Используется параметр matchIfMissing=true.
Бин будет создан даже в случае, если соответствующее свойство вообще не определено в конфигурации.

🟠Переключение реализаций в зависимости от значения свойства:
Определяются несколько бинов с разными значениями havingValue.
Будет создан только тот бин, значение которого соответствует текущему значению свойства.

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

Жизненный цикл Spring Bean состоит из этапов создания, настройки зависимостей, инициализации, использования и уничтожения. Контейнер автоматически выполняет все эти шаги, вызывая методы, такие как @PostConstruct для настройки перед использованием и @PreDestroy для завершения работы. Пользователи могут настраивать этапы жизненного цикла через интерфейсы или аннотации.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👋 Лучшие практики работы с транзакциями Spring
Читать подробнее

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#полезное
😐 Проект на Spring Boot + Spring AI + OpenAI.

Он принимает текст или файл с заметками встречи и автоматически генерирует JSON-тикеты с классификацией (баг, фича и т.д.).

Теперь в open source: чистый код и готовность к импорту в JIRA.

GitHub: https://github.com/ayushstwt/smart-ticket-ai.git

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
🥱 Лучший способ использовать аннотацию Spring Transactional
Читать подробнее

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

Bean в Spring - это обьект, который управляется контейнером Spring loC (Inversion of Control). Бины обычно создаются, настраиваются и используются для инкапсуляции бизнес-логики, управления данными или предоставления сервисов. Контейнер Spring автоматически управляет жизненным циклом бина, его зависимостями и настройками.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
😊 Принципы SOLID на примерах из жизни и разработки

В статье автор объясняет принципы SOLID через примеры из реальной жизни и кода, показывая, как их применение улучшает качество и структуру программ.

Рассматриваются способы построения гибких и поддерживаемых приложений на Java, с акцентом на каждый из пяти принципов.
Читать статью

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
#полезное
👨‍💻 Запрос Hibernate WITH RECURSIVE
Читать подробнее

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


MemorySegment.allocateNative() из Java Foreign Function & Memory API (FFM API, начиная с Java 19) позволяет безопасно управлять нативной памятью без Unsafe. Это полезно для высокопроизводительных приложений, работающих с C-библиотеками.
Документация

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

Основные области видимости Spring: Singleton, Prototype, Request, Session, Application, WebSocket.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🥱 webmagic — масштабируемый фреймворк веб-краулера для Java

webmagic охватывает весь жизненный цикл краулера: загрузку, управление url, извлечение контента и его сохранение.

GitHub
Доки

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🥄 Spring Boot + Swagger

Документирование API без лишней головной боли.

Полное руководство читай здесь: тык

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
🛞 Кто не в курсе: Spring Debugger — это инструмент в IntelliJ IDEA, который помогает разбираться в контексте Spring Boot-приложения.

Прямо в проекте можно:

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

Удобно для дебага, особенно когда неясно, почему бин не поднялся или почему конфигурация работает не так, как ожидалось.

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

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

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😱 Совет дня:

Проверка (assert) одиночного объекта против List<Object> в ответах при использовании MockMvcTester в Spring.

- Первый блок проверяет, что по /api/posts/1 возвращается Post, у которого title равен "Post title here"

- Второй блок проверяет, что по /api/posts приходит список из 4 элементов типа Post

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

Используй java.lang.reflect.Proxy, чтобы перехватывать вызовы методов на этапе выполнения.
Это позволяет эмулировать AOP без Spring — идеально подходит для обработки сквозной логики (cross-cutting concerns).

В этом примере мы логируем до и после вызова метода.
Такой подход даёт гибкий способ динамически абстрагировать поведение.

> Динамические прокси позволяют внедрять поведение — например, логирование, тайминг или проверку безопасности — без изменений исходного кода.

Этот паттерн активно используется во фреймворках вроде Spring и Hibernate.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
🤓 Конкурентность vs параллелизм - это НЕ одно и то же

Конкурентность:

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

Хотя один CPU-ядро может обрабатывать только одну задачу за раз, оно достигает конкурентности, быстро переключаясь между задачами.

Пример: Слушание музыки во время написания кода. CPU быстро переключается между этими задачами так эффективно, что кажется, будто обе выполняются одновременно.

Основная цель конкурентности — максимизировать использование процессора, минимизируя время простоя.

Параллелизм:

Параллелизм означает выполнение нескольких задач одновременно.

Для достижения параллелизма задачи разбиваются на более мелкие независимые подзадачи и обрабатываются одновременно на нескольких процессорах, ядрах или GPU.

Пример: Обучение модели глубокого обучения, разделив датасет на батчи и обрабатывая каждый батч одновременно на нескольких GPU.

Цель параллелизма — ускорить обработку, выполняя несколько задач одновременно.

Они не являются взаимно исключающимися:

🟠Можно иметь конкурентность без параллелизма.
🟠Можно иметь параллелизм без конкурентности.
🟠Или можно использовать и то, и другое для высокопроизводительных систем.

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

Istio - это service mesh, который управляет сетевым взаимодействием сервисов внутри Kubernetes. Он позволяет контролировать трафик, настраивать балансировку нагрузки, управлять безопасностью (аутентификацией и авторизацией) и обеспечивать мониторинг сетевых взаимодействий между микросервисами.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 Функциональное программирование в Java с использованием Streams и лямбд:

Streams обрабатывают фильтрацию, сортировку и свёртку данных, а лямбды упрощают определение функций. В Spring они используются для построения реактивных API, а в задачах алгоритмического программирования — для оптимизации обработки данных.

Выше приведён пример REST-эндпойнта на Spring, фильтрующего пользователей, и функции в стиле олимпиадного программирования для поиска лидеров по очкам.

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