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

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

Для обратной связи: @proglibrary_feeedback_bot

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

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
Download Telegram
⚙️ Генерация системы мониторинга микросервисов с Spring Boot

Хотите создать мощный инструмент мониторинга для ваших микросервисов? Используйте AI, чтобы автоматически генерировать код для сбора метрик, логирования и трассировки запросов в реальном времени. Это поможет эффективно отслеживать производительность и устранять узкие места в системе.

📝 Промпт:

Generate a monitoring system for microservices in a Spring Boot 3 application.

— Integrate Spring Actuator to expose application health metrics and endpoints.
— Use Micrometer for collecting metrics such as response time, request count, and error rates.
— Implement distributed tracing with OpenTelemetry and Zipkin for tracking requests across multiple services.
— Enable log aggregation with ELK Stack (Elasticsearch, Logstash, and Kibana) for centralized log management.
— Set up Prometheus and Grafana for visualizing real-time performance metrics on custom dashboards.
— Configure automatic health checks and alerting using Spring Boot Admin and Prometheus Alerts.
— Create custom metrics to track domain-specific application performance, such as user sign-ups or payment processing times.


💡 Расширения:

— Добавьте Integrate application performance profiling using JProfiler для захвата и анализа подробных данных о производительности.
— Добавьте Set up integration with Datadog or New Relic для получения дополнительных аналитических данных и обнаружения аномалий в приложении.
— Добавьте Implement circuit breaker patterns with Resilience4j для повышения стабильности системы при высоком трафике или сбоях сервисов.
— Добавьте Enable traceability for all API calls with correlation IDs для обеспечения сквозной трассировки запросов в распределенной системе.

🐸 Библиотека джависта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62🔥1😁1🥱1
🆕 Java Digest: подборка материалов

🔹 Demystifying Spring Boot With Spring Debugger

Обзор плагина Spring Debugger от JetBrains. Этот плагин позволяет удобнее дебажить Spring-приложения, а еще наглядно показывает, какие бины загружены в контекст, какие свойства какими значениями проинициализированы и какая транзакция активна на момент той или иной точки остановки.

🔹
Spring Data JPA и Hibernate: ориентируемся на производительность. Часть 1

Перевод доклада Мацея Валковяка Performance oriented Spring Data JPA & Hibernate, сделанный командой Spring АйО. Это первая из трех частей, и она сконцентрирована на управлении коннектами к БД.

🔹 Premature Design Is Not Design

В статье автор рассказывает о том, как преждевременное переусложенение дизайна приложений может привести к проблемам. Приводятся два примера: использование RBAC и DRY.

🐸 Библиотека джависта #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42🔥1
😮 Топ-вакансий для джавистов за неделю

Java-разработчик — 250 000 —‍ 450 000 ₽ — гибрид (Москва, Санкт-Петербург, Екатеринбург, Новосибирск, Казань)

Java-разработчик (Система непрерывной интеграции и развёртывания) — 250 000 —‍ 450 000 ₽ —гибрид (Москва, Санкт-Петербург, Екатеринбург, Новосибирск, Казань)

Java разработчик (продукт «Справочники») — от 200 000 до 300 000 ₽ —гибрид (Москва)

Java Developer — 280 000 —‍ 320 000 ₽ —гибрид (Москва)

➡️ Еще больше топовых вакансий — в нашем канале Java jobs
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32🔥2
🔍 Как подключить Apache Kafka к проекту

Apache Kafka — это распределённая система обработки потоковых данных, которая часто используется для обработки больших объёмов сообщений в реальном времени. В этом посте мы разберём пошаговое подключение Kafka к проекту.

1️⃣ Подготовка

Для начала вам нужно добавить зависимости.
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>3.0.0</version>
</dependency>
ИЛИ
implementation 'org.apache.kafka:kafka-clients:3.0.0'


Убедитесь, что у вас установлен Apache Kafka и Zookeeper, или используйте сервисы, такие как Confluent Cloud.

2️⃣ Настройка KafkaProducer

KafkaProducer используется для отправки сообщений в Kafka. Вот пример создания продюсера, который будет отправлять сообщения в топик Kafka.

Шаг 1. Создайте конфигурацию продюсера:
public class KafkaProducerConfig {

public KafkaProducer<String, String> createProducer() {
Properties properties = new Properties();
properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());

return new KafkaProducer<>(properties);
}
}


Шаг 2. Отправка сообщения:
public class KafkaMessageSender {

public void sendMessage(String topic, String message) {
KafkaProducer<String, String> producer = new KafkaProducerConfig().createProducer();

ProducerRecord<String, String> record = new ProducerRecord<>(topic, message);

try {
producer.send(record, (metadata, exception) -> {
if (exception != null) {
exception.printStackTrace();
} else {
System.out.println("Сообщение отправлено в " + metadata.topic());
}
});
} catch (Exception e) {
e.printStackTrace();
} finally {
producer.close();
}
}
}


3️⃣ Настройка KafkaConsumer

Шаг 1. Создайте конфигурацию консюмера:
public class KafkaConsumerConfig {

public KafkaConsumer<String, String> createConsumer() {
Properties properties = new Properties();
properties.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
properties.put(ConsumerConfig.GROUP_ID_CONFIG, "consumer-group");
properties.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());
properties.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());

return new KafkaConsumer<>(properties);
}
}


Шаг 2. Чтение сообщений:

public class KafkaMessageReceiver {

public void receiveMessages(String topic) {
KafkaConsumer<String, String> consumer = new KafkaConsumerConfig().createConsumer();
consumer.subscribe(Arrays.asList(topic));

try {
while (true) {
var records = consumer.poll(1000);

for (ConsumerRecord<String, String> record : records) {
System.out.println("Получено сообщение: " + record.value());
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
consumer.close();
}
}
}


4️⃣ Запуск Kafka Producer и Consumer

Запустите сервер Kafka и Zookeeper (если используете локальную установку).

▪️ Включите продюсер:
public class Main {
public static void main(String[] args) {
KafkaMessageSender sender = new KafkaMessageSender();
sender.sendMessage("my_topic", "Привет, Kafka!");
}
}


▪️ Запустите консюмер для получения сообщений:
public class Main {
public static void main(String[] args) {
KafkaMessageReceiver receiver = new KafkaMessageReceiver();
receiver.receiveMessages("my_topic");
}
}


💬 Как вы используете Kafka в своих проектах?

🐸 Библиотека джависта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍136🔥2👾1
Последний шанс залутать курсы Proglib Academy с выгодой 40% и пожизненным доступом.

До 1 августа действует скидка на курсы по математике для Data Science, алгоритмам и структурам данных, обновлённому Python, frontend-разработке с нуля, основам IT для непрограммистов, базовым моделям ML, а также архитектурам и шаблонам проектирования.

Выбираем и забираем 👈

P.S. Акция не распространяется на курсы «AI-агенты для DS-специалистов» и «ML для старта в Data Science».
🧠 Вайб-кодинг: что это и как это влияет на разработку

Вайб-кодинг — это когда разработчик описывает задачу на естественном языке, а AI генерирует код. Это ускоряет процесс, но важно контролировать качество.

🚧 Проблема: сгенерированный код может быть неэффективным или иметь дыры в безопасности.

🎯 Что нужно учитывать при использовании вайб-кодинга:
— Быстрое создание прототипов
— Доступность для людей без технического образования
— Риски качества и безопасности кода

🔗 Подробнее о вайб-кодинге в статье

🐸 Библиотека джависта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5🌚53👍1
⚙️ Java Object Layout (JOL)

JOL — это инструмент от тех же разработчиков, что и JMH, и он помогает понять, как Java хранит объекты в памяти. Особенно полезен при оптимизации производительности и снижении потребления памяти.

📌 Что умеет JOL:

— Показывает внутреннюю структуру объектов Java (поля, пэддинг, смещения)
— Помогает исследовать выравнивание, заполнение и особенности layout'а объектов в разных JVM
— Учитывает влияние флагов типа -XX:ObjectAlignmentInBytes
— Есть аннотации и API для анализа объектов прямо из кода
— Поддерживает анализ "на месте" без запуска внешнего инструмента

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

🔗 JOL на GitHub

🐸 Библиотека джависта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍73🔥3
Как часто в реальных проектах используется обработка исключений?

Наш подписчик спрашивает:

Я только начинаю работать с обработкой исключений. В учебниках часто приводят примеры с try-catch, но в реальных проектах я не встречал их так часто. Насколько часто в реальных проектах используется обработка исключений? И в каких случаях она действительно необходима?


🔹 Как вы используете обработку исключений в своих проектах?

— В каких ситуациях вы предпочитаете использовать try-catch?
— Какие ошибки чаще всего приходится обрабатывать?
— Какие подходы к обработке исключений сработали для вас лучше всего?

💬 Делитесь в комментариях вашим мнением и опытом.

P.S. Если хотите задать вопрос, заполните нашу гугл-форму. Это займет 5 минут.

🐸 Библиотека джависта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍2🔥1👾1
👑 Магия IntelliJ IDEA: Dependency Analyzer

Когда проект обрастает модулями, библиотеками и зависимостями, легко потерять нить. Dependency Analyzer помогает навести порядок в зависимостях и избавить проект от хлама.

🔹 Что делает

— Показывает все зависимости (включая транзитивные) в виде дерева
— Помогает обнаружить дублирующиеся зависимости, неиспользуемые библиотеки и конфликты версий
— Даёт рекомендации по удалению или замене

🔹 Зачем это нужно

— Упрощает анализ pom.xml или build.gradle — не нужно гадать, откуда взялась та или иная версия
— Помогает оптимизировать сборку и ускорить CI
— Снижает риски уязвимостей за счёт удаления неиспользуемых библиотек

🔹 Как использовать

— Откройте окно Maven/Gradle
— Нажмите кнопку Analyze Dependencies.
— IDEA покажет дерево с путями, версиями и проблемами
— Можно быстро перейти к конфигурации и исправить

🐸 Библиотека джависта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍3🔥1
В каком году была выпущена первая версия языка Java?
Anonymous Quiz
26%
1990
70%
1995
3%
2000
1%
2005
👍93🔥3
Как найти длину самой длинной строки в списке?
Anonymous Quiz
11%
list.stream().filter(s -> s.length() > max).count();
3%
list.stream().mapToInt(String::length).sum();
17%
list.stream().map(String::length).max((a, b) -> b - a).orElse(0);
61%
list.stream().mapToInt(String::length).max().orElse(0);
7%
Посмотреть ответ
🔥10👍32👏2
😮 Топ-вакансий для джавистов за неделю

Senior Java-разработчик (Трайб Digital) — 350 000 —‍ 400 000 ₽ — удалёнка

Java Разработчик (Senior) — от 250 000 до 350 000 ₽ — удалёнка

Java разработчик — от 200 000 до 300 000 ₽ — удалёнка

Java разработчик (Senior) — от 450 000 ₽ — удалёнка

➡️ Еще больше топовых вакансий — в нашем канале Java jobs
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1👏1
🔍 ClassGraph

Если вы когда-либо писали плагины, делали автоконфигурацию или искали классы с аннотациями — вам пригодится ClassGraph. Это быстрый и гибкий инструмент для сканирования classpath'а, аналог Reflections, но с куда лучшей производительностью и расширенной функциональностью.

📌 Что умеет ClassGraph:

— Находит классы по аннотациям, интерфейсам, суперклассам
— Позволяет искать ресурсы, inner-классы, модули, методы и поля
— Работает с JAR-файлами, модулями JPMS, Android, OSGi и даже нестандартной загрузкой классов
— Позволяет делать глубокий анализ зависимостей и иерархий
— Поддерживает черный/белый список пакетов (include/exclude)

⚡️ Почему лучше, чем Reflections:

— Существенно быстрее при сканировании большого classpath
— Умнее — может обрабатывать class-loader’ы, не теряя контекста
— Поддерживает более новые фичи JVM, включая модули (Java 9+)
— Активно поддерживается и обновляется

🧠 Полезно для:

— Фреймворков с динамической загрузкой
— Плагинных систем
— Анализа и визуализации зависимостей
— Разработки DI-контейнеров, автосканеров и DSL'ов

🔗 classgraph на GitHub

🐸 Библиотека джависта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥31
🤔 Зачем вообще понимать, как работает ML?

Сейчас многие просто запускают модельку в sklearn — и радуются точности 0.92.

Вроде всё работает… но почему?
А когда сломается — что делать?


Машинное обучение — это система, которую можно понять.

Если знаешь, что делает градиентный спуск, зачем нужен бустинг и как дерево принимает решения — ты не просто «запускаешь», ты управляешь моделью.

👉 Мы сделали курс, чтобы в это было реально въехать:

— без сложных формул;
— с интуитивными объяснениями;
— от простого к сложному.

Если хочешь перейти от «гуглю код» к «понимаю, как это работает» — ты по адресу!

Стартуем в сентябре — бронируй место на курсе уже сейчас
3
⚙️ Интеграция Stripe для обработки платежей

Нужна быстрая интеграция с платежной системой? Используйте AI, чтобы автоматизировать подключение Stripe для безопасной обработки транзакций.

📝 Промпт:

Generate a Stripe payment integration for a Spring Boot 3 application.

— Set up Stripe API keys and configure them in application.properties.
— Implement StripePaymentService to handle payment requests using Stripe.create() for charges.
— Set up webhook endpoints to listen for payment status updates (e.g., success, failure).
— Integrate secure tokenization of credit card data using Stripe’s Java SDK.
— Handle errors gracefully and provide transaction feedback to users.
— Implement recurring payments using Stripe Subscriptions API for subscription-based models.


💡 Расширения:

— Добавьте Set up customer data storage with Stripe’s Customer objects to manage users’ payment methods для управления способами оплаты пользователей.
— Добавьте Enable refund processing via Stripe API for failed or canceled transactions для неудачных или отменённых транзакций.

🐸 Библиотека джависта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥21