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

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

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

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

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
Download Telegram
⚙️ JMeter (Apache JMeter)

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

Он идеально подходит для проверки стабильности приложения под нагрузкой, анализа времени отклика и поведения системы в условиях высоких нагрузок. JMeter можно использовать как для тестирования REST API, так и для сложных сценариев с использованием UI.

Преимущества JMeter:

— Поддержка различных типов тестирования: HTTP, FTP, баз данных и WebSocket.
— Гибкость при настройке нагрузки (параметры виртуальных пользователей, сценарии).
— Интеграция с CI/CD (Jenkins, GitLab CI).
— Расширенные отчёты с графиками и статистикой.
— Плагинная система для расширения функционала.
— Возможность интеграции с другими инструментами для мониторинга и анализа (например, Grafana).

🔗 JMeter GitHub

🐸 Библиотека джависта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥52👍2
😮 Виртуальные потоки: сравнение loom и vert.x

Виртуальные потоки вызывают много разногласий в кругах джавистов. Разобраться что к чему поможет Владимир Красильщик, pragmatic Java Developer, 01.tech. 30 августа он выступит на JVM Day в штаб-квартире Т-Банка. Расскажет про инженерный подход, основанный на измерениях и про реализации на платформенных и виртуальных потоках с ReentrantLock, через synchronized-секцию и на акторной модели, реализованной на vert.x

▪️На мероприятии также покажут демоверсии продуктов Т-Банка и других компаний, написанных на Java и Scala.

▪️Половина собранных средств Т-Банк планирует направить региональным вузам, которые готовят начинающих ИТ-специалистов. На сайте феста речь про КФУ (ИТИС) в Казани, УрФУ в Екатеринбурге и факультет вычислительной техники РГРТУ в Рязани. Так организаторы хотят поддержать развитие ИТ не только в столице, но и в других городах страны.

Для прохода на JVM Day необходимо заранее зарегистрироваться.

🐸 Библиотека джависта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥41
⚙️ Генерация аудита пользовательских действий в Spring Boot

Нужно отслеживать, кто что сделал в приложении: создал пользователя, обновил заказ или удалил файл? Реализуйте модуль аудита, который не просто логирует в консоль, а сохраняет структурированные события в базу или брокер. AI поможет с шаблоном, который можно встроить в любой микросервис.

📝 Промпт:


Generate a reusable audit logging module for a Spring Boot 3 application.

— Use Spring AOP to intercept service-layer methods annotated with @Auditable.
— Capture method name, parameters, execution time, and authenticated user details.
— Log audit events asynchronously to Kafka with a custom AuditEvent structure.
— Use JSON for message serialization and include correlation IDs in headers.
— Include fallback to local file logging in case of Kafka failure.
— Add integration with Spring Security to extract user identity from the context.
— Write unit and integration tests using JUnit 5 and Testcontainers.


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

— Добавьте Implement audit event persistence to PostgreSQL using Spring Data JPA, чтобы хранить критические события даже при сбоях брокера.
— Добавьте Include context metadata (request IP, user-agent) using ServletRequest attributes, чтобы повысить трассируемость действий пользователя.
— Добавьте Add audit dashboard using Spring Boot Admin and Grafana, чтобы визуализировать действия и аномалии в реальном времени.
— Добавьте Integrate OpenTelemetry spans around auditing logic, чтобы отслеживать поток аудита между микросервисами на уровне трассировки.

🐸 Библиотека джависта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥21
🎧 Что послушать — #подкаст

🔹 Javaswag #77
Дата выпуска: 21 мая 2025
Ведущий: Дмитрий Волыхин
Гость: Андрей Бреслав, создатель Kotlin
Продолжительность: примерно 1 час 53 минуты

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

🔹 Ключевые темы выпуска

00:00 — История создания Kotlin
10:11 — Разработка языка
14:40 — Этапы развития языка
19:16 — Влияние Java
23:44 — Неоднозначность грамматики
30:35 — Дженерики
35:57 — Успех Kotlin
41:27 — Проблемы экосистемы
46:30 — Мультиплатформа
54:05 — Выгорание
01:01:03 — Работа с языками программирования
01:10:30 — AI и его влияние
01:18:53 — Язык программирования следующего поколения
01:20:26 — Kotlin и Java: сравнение
01:28:45 — Swing и мультиплатформа
01:31:55 — Swift и Objective‑C
01:34:41 — Непопулярное мнение
01:39:30 — Будущее AI
01:42:52 — Инновации
01:45:09 — Проблемы амбициозных идей
01:46:28 — Инновации в корпорациях и стартапах
01:50:21 — Продуктивность

🔗 Слушать выпуск

🐸 Библиотека джависта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥21
🧠 Как выжать максимум из резюме на HeadHunter

Хорошее резюме — это только начало. Даже если вы профи, в поиске работы многое решает видимость анкеты в выдаче. А вот тут начинается борьба за внимание рекрутера.

🚧 Проблема: сотни схожих резюме. Ваше может просто затеряться.

🎯 Что помогает реально продвинуть резюме вверх:
— Автоподнятие и ручные апдейты
— Правильное имя файла резюме
— Ключевые слова, которых ищут HR
— Механика «откликов + запросы»
— И даже… использование разных браузеров (да-да)

🔗 Все 9 приёмов с примерами — в статье.

🐸 Библиотека джависта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍2👏1🤔1
🔥 Знакомьтесь, преподаватель нашего нового курса по ML — Мария Жарова.

В карточках рассказали, чем Мария занимается и какие советы даёт тем, кто хочет расти в IT и Data Science ☝️

А если вы уже поняли, что тянуть нечего, начните свой путь в ML правильно: с реальной практикой, поддержкой ментора и видимым результатом.

👉 Записывайтесь на курс
🆕 Java Digest: подборка материалов

🔹Benchmarking and profiling Java with JMH

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

🔹
Kotlin 2.2.0 Released

Вышел релиз Kotlin 2.2.0, содержащий исправления багов и значимые изменения. Подробнее в статье.

🐸 Библиотека джависта #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥21
🔥 Вы ещё можете застать старый добрый Proglib — с вечным доступом к курсам.

С 1 августа всё меняется: навсегда — останутся только те, кто успел купить сейчас.

-40% на все курсы. Включая обновлённый Python (кроме курса по AI-агентам)

Это не просто распродажа. Это — последняя точка входа в Proglib Academy по старым правилам.

📚 Выбрать и забрать свой курс навсегда → https://clc.to/TBtqYA
😮 Топ-вакансий для джавистов за неделю

Java-разработчик (Логистическая платформа) — 300 000 —‍ 490 000 ₽ — гибрид (Санкт-Петербург, Москва)

Junior Java разработчик — до 100 000 ₽ — гибрид (Москва)

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

Middle Java Developer — до 270 000 ₽ — удалёнка

➡️ Еще больше топовых вакансий — в нашем канале Java jobs
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥1
🔍 Правильное понимание Liskov Substitution Principle (LSP)

Принципе подстановки Лискова нередко трактуют слишком формально или упрощенно. Простой ответ: LSP требует, чтобы объекты подклассов могли заменять объекты базового класса без изменения поведения программы.

Однако, давайте разберем это более подробно.

🔹 Что на самом деле означает LSP?


В классическом виде (по Барбаре Лисков):
Объекты программы должны быть заменяемы экземплярами их подтипов без изменения правильности работы программы.


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

🔹 Часто встречаемые ошибки трактования LSP

1. Подмена функционала


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

Плохо:
class Bird {
void fly() { ... }
}

class Chicken extends Bird {
@Override
void fly() {
throw new UnsupportedOperationException("Chicken can't fly");
}
}


Этот пример нарушает LSP, потому что подкласс не может выполнять все действия родителя.

2. Нарушение инвариантов

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

Плохо:
class Rectangle {
int width, height;

void setWidth(int width) { this.width = width; }
void setHeight(int height) { this.height = height; }
}

class Square extends Rectangle {
@Override
void setWidth(int width) {
this.width = this.height = width;
}

@Override
void setHeight(int height) {
this.height = this.width = height;
}
}


В этом примере подкласс Square изменяет логику работы с размерами, нарушая ожидаемое поведение родительского класса.

🔹 Что на практике важно понимать о LSP

— Соблюдение контракта родительского класса

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

— Логика не должны быть нарушена, лишь расширена


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

— Наследование — это не просто копирование, а расширение возможностей

Правильное наследование позволяет создавать более специфичные классы без нарушения логики родительского класса.

🐸 Библиотека джависта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍74🔥3
Мощное завершение лета — конференция JVM Day 30 августа.

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

Основная программа состоит из трех секций: Java, Scala и Backend. Днем участников ждут доклады спикеров из Т-Банка, Яндекса, 2ГИС, Squad, 01. tech, а вечером — афтепати.

Купить билеты до 25 июля по старой цене можно тут.

До встречи в штаб-квартире Т-Банка.