Библиотека джависта | Java, Spring, Maven, Hibernate
24.9K subscribers
1.86K photos
38 videos
42 files
2.64K links
Все самое полезное для Java-разработчика в одном канале.

Список наших каналов: https://yangx.top/proglibrary/9197

Обратная связь: @proglibrary_feedback_bot

По рекламе: @proglib_adv

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
加入频道
Okko приглашает встретить весну вместе с ребятами из Ozon Tech и red_mad_robot 🙌

📅Когда: 6 марта в 18.30
📍Где: Санкт-Петербург, офис Okko, БЦ Атлантик Сити, улица Савушкина 126Б, 24 этаж

👀На повестке:
• От Вани Коньшина, вед. инженера Okko: «Как расширить MDC контекст в реактивных приложениях на Kotlin Coroutines?»
• От Ильи Трусова, разработчика red_mad_robot: «Кодогенерируемая микросервисная архитектура с использованием RAG и GenAI при помощи Meroving».
• От Лёши Круглика, вед. инженера Okko: «Обработка естественного языка (NLP). Асинхронная архитектура. Какие механизмы есть для этого в Java?»
• От Вовы Букина, рук-ля безопасности платформы, и Тимофея Черных, руководителя продуктовой безопасности, из Ozon Tech: «Как можно эксплуатировать шаренные раннеры GitLab'а при атаках на цепочку поставок и как команда автоматизировала их проверку на безопасность».

Регистрируйся тут: https://okkomeetup.timepad.ru/event/3231462?erid=2W5zFJqBarL
This media is not supported in your browser
VIEW IN TELEGRAM
👨‍💻 StackQL: Интерактивное взаимодействие с API через SQL

StackQL предлагает унифицированную среду для управления облачными ресурсами с помощью знакомого SQL-синтаксиса.

Что это такое

StackQL — это открытый фреймворк на основе SQL, который позволяет пользователям выполнять запросы, провижининг и управление облачными и SaaS-ресурсами. Он поддерживает популярные облачные провайдеры, такие как Google Cloud, AWS, Microsoft Azure, Digital Ocean и другие.

Доступен для Windows, MacOS и Linux и поддерживает несколько режимов использования, включая интерактивную оболочку REPL, утилиту командной строки и выполнение запросов через файлы IQL.

Основные Возможности StackQL

Навигация по облачным API: используйте команды SHOW SERVICES и SHOW RESOURCES для ознакомления с доступными сервисами и ресурсами. Например:
SHOW SERVICES IN google LIKE '%compute%';SHOW RESOURCES IN google.compute LIKE '%instances%';


Операции CRUD: выполняйте создание, чтение, обновление и удаление ресурсов с помощью знакомых SQL-запросов.

Примеры:
Создание ресурса:
INSERT INTO google.compute.disks (project, zone, name, sizeGb)
SELECT 'stackql-demo', 'europe-north1-a', 'disk-1', 16;


Обновление ресурса:
UPDATE google.compute.disks
SET sizeGb = 32WHERE project = 'stackql-demo' AND zone = 'europe-north1-a' AND name = 'disk-1';


Удаление ресурса:
DELETE FROM google.compute.disks
WHERE disk = 'disk-1' AND project = 'stackql-demo' AND zone = 'europe-north1-a';


Управление состоянием ресурсов: используйте команды EXEC для управления состоянием ресурсов, такими как запуск и остановка виртуальных машин. Примеры:

Остановка инстанса:
EXEC google.compute.instances.stop  @instance = 'instance-1',
@project = 'stackql-demo', @zone = 'europe-north1-a';


Запуск инстанса:
EXEC google.compute.instances.start
@instance = 'instance-1', @project = 'stackql-demo',
@zone = 'europe-north1-a';


➡️ Подробнее про инструмент

🐸Библиотека devops'a
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Как JVM обрабатывает исключения

Интересно, как Java Virtual Machine обрабатывает исключения на уровне байт-кода? В статье подробно разбирается, что происходит «под капотом» при возникновении исключений в Java. Узнайте о структуре таблицы исключений, последовательности байт-код инструкций и о том, как JVM управляет потоком выполнения при возникновении ошибок.

🔗 Подробнее в статье
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Виртуальная стажировка Java – твой путь в мир коммерческой разработки!

🚀 Хочешь научиться писать код, который работает в проде? Тогда тебе сюда! На этом курсе ты:
Под руководством опытного ментора реализуешь проект с нуля до продакшена
Освоишь современные технологии и библиотеки, используемые в реальной разработке
Разберешься в архитектуре, тестировании, развертывании и интеграции

🛠️ Какие технологии освоишь?

- Spring Boot, Gradle, JPA, Hibernate
- RabbitMQ, Docker, Liquibase
- JUnit, Mockito, Lombok, GitHub
- Design patterns, DDD, Clean Code
…и многое другое!

🎯 Главная цель – прокачать инженерное мышление. Не просто кодить, а решать реальные задачи бизнеса с помощью IT.

📌 В конце ты получишь не только кейсовый опыт коммерческой разработки, но и готовый проект в портфолио.

💬 Вопросы? Пиши ментору:
🔹 Telegram: @javagurulv
📩 Email: [email protected]

🖇 Присоединяйся к сообществу!
👉 Телеграм-группа стажировки
👉 Курс на Stepik
Что такое авторизация и аутентификация?

▪️ Аутентификация — процесс проверки подлинности субъекта (пользователя или системы) на основе предоставленных им учетных данных (например, пары логин/пароль, сертификата или токена). Она подтверждает, что субъект является тем, за кого себя выдаёт.

▪️Авторизация — процесс определения прав и привилегий аутентифицированного субъекта в рамках определённой системы или ресурса. Она определяет, какие действия или ресурсы доступны субъекту после успешной аутентификации.

Аутентификация устанавливает личность субъекта, а авторизация — его полномочия в системе.
Please open Telegram to view this post
VIEW IN TELEGRAM
Совет на 2025-й — будьте осторожнее с выбором работы.

IT-рынок штормит: массовые сокращения, заморозка найма, снижение зарплат. В такое время особенно важно отличать стоящие офферы от проходных.

Знакомо? Открываешь вакансию, а там: «Ищем middle-разработчика с опытом 10 лет, знанием 15 языков и готовностью работать за печеньки. Офис в Челябинске, релокация за ваш счет» 🤦‍♂️

Чтобы не тратить время на сотни сомнительных предложений, подпишитесь на IT Job Hub. Там мы отфильтровываем весь мусор и публикуем только избранные вакансии в стабильных компаниях:

— Зарплаты на уровне рынка, а не на уровне голодного студента
— Никаких «мы молодая и дружная семья» — только адекватные условия
— Проверенные работодатели, а не стартапы из сомнительных сфер

Вакансии удобно разбиты по тегам: #python #java #go #data #devops и по другим направлениям. Без воды и лишнего спама — только проверенные вакансии в знакомых компаниях.

Подписывайтесь, если не хотите упустить работу мечты → @proglib_jobs
👑 JDBC vs JPA

🔵 JDBC (Java Database Connectivity) — это низкоуровневый API для работы с реляционными базами данных. Позволяет напрямую писать SQL-запросы и управлять соединениями.

✔️ Преимущества

— Полный контроль за счёт написания SQL-запросов.
— Без лишней магии запросы выполняются быстро.
— Работает с любой реляционной БД без привязки к ORM.

Недостатки

— Нужно самому писать маппинг объектов, обрабатывать исключения и управлять соединениями.
— Нет встроенного кэширования, ленивой загрузки и работы с графами объектов.
— Нужно следить за autocommit и rollback.

🔵 JPA (Java Persistence API) — это спецификация для работы с базами данных через объектно-реляционное отображение (ORM). Самая популярная реализация — Hibernate.

✔️ Преимущества

— Работа с БД ведётся через Entity, а SQL-запросы формируются автоматически.
— Поддержка связей (@OneToMany и т. д.), ленивой загрузки и кэширования.
— Поддержка автоматического управления транзакциями через EntityManager.

Недостатки

— Много аннотаций, конфигураций и магии.
— Автоматическая генерация запросов не всегда эффективна.
— Нужно разбираться, какой SQL-запрос Hibernate сгенерировал и почему.

💬 Пишите в комментах, что предпочитаете вы
Please open Telegram to view this post
VIEW IN TELEGRAM
📚 Mastering Spring Boot 3.0: A comprehensive guide to building scalable and efficient backend systems with Java and Spring (2024)

✍️ Автор: Ahmet Meric
📃 Страниц: 256

Автор подробно разбирает архитектурные паттерны DDD, CQRS и event sourcing, реактивнуб разработку REST API, продвинутые методы тестирования и обеспечение безопасности приложений. Также описывает подходы к контейнеризации и оркестрации с Spring Boot 3.0, а также интеграции Kafka для построения событийно-ориентированных систем.

Пошаговые примеры помогают освоить современные практики разработки и развертывания бэкенд-систем. Читатель научится применять архитектурные решения, настраивать тестирование и защищать приложения, используя все возможности Spring Boot 3.0.
👉 Интенсив «Архитектуры и шаблоны проектирования» для middle и senior-разработчиков

Проверьте свои знания, ответив на 8 вопросов – https://proglib.io/w/2842bea1

🧐 Кому подойдет?
Разработчикам, которые знают любой объектно-ориентированный язык программирования и хотят углубиться в архитектурные паттерны.

🎮 Как проходит обучение?
В течение всего интенсива вы будете создавать игру «Звездные войны» и применять ключевые архитектурные паттерны. В процессе изучите:
– Как строить гибкую архитектуру, которая не замедляет разработку
– Как применять IoC-контейнеры и писать модульные тесты
– Как использовать SOLID за пределами ООП
– Как внедрять CI/CD и снижать технический долг

👉 Подробная программа обучения

А по промокоду MIDDLE до 28 февраля вы получите дополнительную скидку на обучение
Please open Telegram to view this post
VIEW IN TELEGRAM
📌 Оптимизация Dependency Injection в Spring

Spring управляет созданием бинов через Dependency Injection (DI), но при большом количестве компонентов это замедляет запуск приложения и расходует память.

Используйте @Lazy, чтобы откладывать создание бина до первого вызова:
@Component
public class Component {

@Lazy
@Autowired
private Service service;
}


🔹 Когда применять


— Редко используемые сервисы (например, отчёты, аналитика).
— В крупных приложениях с тысячами зависимостей.
— В микросервисах для уменьшения потребления ресурсов.
— При загрузке тяжёлых конфигураций.
Please open Telegram to view this post
VIEW IN TELEGRAM
Документация PostgreSQL — лучший источник знаний о СУБД. Но она отличается огромным объемом: не каждый разработчик осилит 3024 страницы формата А4.

Опытный бэкендер составил список самых важных сведений, которые ему самому хотелось бы знать перед началом работы с PostgreSQL. Эта подборка сэкономит вам несколько недель изучения документации, и скорее всего, пригодится для работы с другими СУБД.

👉 Список самого важного
🛡 Поздравляем доблестных стражей Java:

▪️ Maven — ветеран dependency-войск. Качает половину интернета при первой сборке, потому что «вдруг понадобится».

▪️ Spring Boot — генерал магической дивизии. «Просто добавь @Annotation и оно заработает».

▪️ Garbage Collector — главный санитар JVM-фронта. Прибирается в куче и внезапно останавливает весь Java-мир.

Какого защитника выбираете вы? Пишите в комментариях 👇
🕯 Живая телеметрия без overhead

Если вам нужно анализировать производительность приложения в реальном времени, но профилировщики вроде VisualVM или async-profiler слишком тяжелые, то Java Flight Recorder (JFR) Event Streaming — ваш новый лучший друг.

JFR давно встроен в JVM и собирает метрики без ощутимого влияния на производительность (накладные расходы <1%). Раньше, чтобы получить данные, нужно было снимать дамп и разбирать его постфактум. Начиная с Java 14 пакет jdk.jfr.consumer предоставляет API, благодаря которому можно стримить события в реальном времени прямо в приложение.

🔹 Пример использования

Допустим, вы хотите следить за количеством вызовов System.gc() (или любыми другими JVM-событиями):
import jdk.jfr.consumer.*;

public class JfrStreamingExample {
public static void main(String[] args) {
try (var stream = EventStream.openRepository()) {
stream.onEvent("jdk.GarbageCollection", event ->
System.out.println("GC event: " + event.getLong("gcId"))
);
stream.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}

🔹 Что происходит

▪️ EventStream.openRepository() — подключается к JFR и слушает события онлайн
▪️ onEvent("jdk.GarbageCollection", callback) — подписывается на сборку мусора
▪️ stream.start(); — запускает стриминг

🔹 Где полезно

1️⃣ Мониторинг продакшена — следите за GC, JIT-компиляцией, блокировками потоков без перезапуска JVM.
2️⃣ Анализ нагрузки — получайте данные о CPU, аллокациях памяти, I/O в реальном времени.
3️⃣ Трассировка медленных запросов — находите узкие места без включения дорогих профилировщиков.

🔹 Что нужно знать

▪️ Работает без agent'ов и почти без overhead.
▪️ Доступно из коробки в OpenJDK 14+.
▪️ Встроенные события JVM уже можно стримить, но для своих нужно создать Custom JFR Events.

💬 Вы уже пробовали JFR Event Streaming?
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Фидбэк vs токсичность: как давать обратную связь коллегам и начальству

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

🔗 Подробнее в статье
Please open Telegram to view this post
VIEW IN TELEGRAM