Библиотека джависта | Java, Spring, Maven, Hibernate
Все самое полезное для Java-разработчика в одном канале. Как запустить своего ии-агента: https://clc.to/tvpmDQ Для обратной связи: @proglibrary_feeedback_bot По рекламе: @proglib_adv РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
Show more📈 Analytical overview of Telegram channel Библиотека джависта | Java, Spring, Maven, Hibernate
Channel Библиотека джависта | Java, Spring, Maven, Hibernate (@javaproglib) in the Russian language segment is an active participant. Currently, the community unites 22 411 subscribers, ranking 6 060 in the Technologies & Applications category and 29 958 in the Russia region.
📊 Audience metrics and dynamics
Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 22 411 subscribers.
According to the latest data from 15 June, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -76 over the last 30 days and by -6 over the last 24 hours, overall reach remains high.
- Verification status: Not verified
- Engagement rate (ER): The average audience engagement rate is 8.86%. Within the first 24 hours after publication, content typically collects 5.12% reactions from the total number of subscribers.
- Post reach: On average, each post receives 1 986 views. Within the first day, a publication typically gains 1 148 views.
- Reactions and interaction: The audience actively supports content: the average number of reactions per post is 14.
- Thematic interests: Content is focused on key topics such as джависта, навигация, jooq, corejava, hibernate.
📝 Description and content policy
The author describes the resource as a platform for expressing subjective opinions:
“Все самое полезное для Java-разработчика в одном канале.
Как запустить своего ии-агента: https://clc.to/tvpmDQ
Для обратной связи: @proglibrary_feeedback_bot
По рекламе: @proglib_adv
РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4”
Thanks to the high frequency of updates (latest data received on 16 June, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.
Data loading in progress...
| Date | Subscriber Growth | Mentions | Channels | |
| 16 June | 0 | |||
| 15 June | +2 | |||
| 14 June | +2 | |||
| 13 June | +6 | |||
| 12 June | +4 | |||
| 11 June | +1 | |||
| 10 June | +2 | |||
| 09 June | 0 | |||
| 08 June | +1 | |||
| 07 June | +1 | |||
| 06 June | +5 | |||
| 05 June | 0 | |||
| 04 June | +5 | |||
| 03 June | +3 | |||
| 02 June | +4 | |||
| 01 June | +5 |
| 2 | ⌛ Сохраняйте шпаргалку по Kubernetes
🐸 Библиотека джависта
#CoreJava | 1 122 |
| 3 | 🔍 Магия awk
Логи сервера в plain text, нужно быстро подсчитать количество запросов по HTTP-статусам? awk — ваш Swiss Army Knife для обработки текстовых данных прямо в терминале.
🔹 Зачем это нужно
— Мгновенная агрегация данных из логов без загрузки в БД или Python.
— Работает с любым текстовым форматом.
— Есть на каждом сервере.
🔹 Как использовать
— Подсчёт по статусам (nginx access.log): awk '{print $9}' access.log | sort | uniq -c | sort -rn
— Среднее время ответа: awk '{sum+=$NF; n++} END {print sum/n}' access.log
— Только 5xx ошибки: awk '$9 ~ /^5/' access.log
— Топ-10 IP по количеству запросов: awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -10
— Вывести конкретные поля: awk -F',' '{print $1, $3}' data.csv
═══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта
#Enterprise | 1 291 |
| 4 | 🐸Библиотека джависта
#DevLife | 1 322 |
| 5 | 🎥 До открытого урока — несколько дней. Подготовили небольшую подборку материалов от нашего спикера Дмитрия Юдина.
Дмитрий руководит AI/ML-направлением в Сloud․ru и развивает Evolution AI Factory — среду для работы с GenAI: от инфраструктуры обучения LLM до внедрения интеллектуальных агентов.
С чего начать:
📺 AI-инструменты для разработчиков — как код, автотесты и ассистенты меняют рутину инженера.
📺 AI-эволюция бизнеса в эпоху генеративных моделей — агентные системы в реальных продуктах.
📺 Разработка мертва? — дискуссия о будущем профессии и роли AI в ней.
📖 Применение LLM в бизнесе — статья Дмитрия о практике внедрения и роли облака.
Одна из ключевых тем Дмитрия — практическое применение агентных систем и их ограничения.
Именно об этом — бесплатный урок 18 июня в 19:00: «Мультиагентные системы: почему большинство архитектур переусложнены» 🔥
🎁 Для участников подготовили промокод на скидку 10 000 ₽ на курс «Разработка ИИ-агентов».
👉 Успей занять место на открытом уроке | 1 295 |
| 6 | ✔️ Java-тест: задачка с реального собеса
Наш подписчик прислал реальную задачу с собеса в Яндекс. Сможете решить? 👇
📦 Задание
Реализуйте банкомат и тесты к нему. Инициализируется набором купюр, умеет выдавать купюры под заданную сумму либо отвечать отказом. При выдаче купюры списываются с баланса.
/**
* Банкомат.
* Инициализируется набором купюр, выдаёт купюры под сумму либо отказывает.
* При выдаче купюры списываются с баланса.
*
* Номиналы:
* - 50, 100, 500, 1000, 5000 ₽
* - 20, 100, 500 EUR
*
* Валюты обрабатываются раздельно, обмен не поддерживается.
* Банкомат может использоваться многопоточно (резервирование выдачи).
* Поддержку многопоточности можно вынести в отдельную итерацию.
*/
public class ATM {
public ??? withdraw(???) {
// TODO
}
}
📋 Требования
— Сами определите, что withdraw принимает и что возвращает.
— Валюты считаются раздельно, обмена нет.
— Сумму, которую нельзя собрать имеющимися купюрами, отклоняем (частичная выдача недопустима).
— Покройте решение тестами.
— Бонус: сделайте безопасным для вызова из нескольких потоков.
Ставьте → 🔥, если нравится формат. Если нет → 🌚
💬 Решения под спойлер. Сравним, какое будет лучше.
🐸 Библиотека собеса по Java
#practise | 1 138 |
| 7 | 💻 3 курса по цене одного — собери стек для оффера в топовую IT-компанию
Для следующего карьерного шага мало писать код. Работодатели ждут не только знания языка, но и понимания архитектуры, алгоритмов, автоматизации, AI-инструментов и агентных систем.
Одно направление закрывает только часть задачи.
Поэтому сейчас мы предлагаем освоить сразу несколько востребованных навыков — выбери любой курс и получи доступ еще к двум бесплатно 🔥
Собери стек навыков под свою цель:
🔹 подготовка к сильным компаниям (алгоритмы, архитектура);
🔹 переход в AI-направление (ИИ-агенты, AgentOps);
🔹 развитие в ML и Data Science (математика, основы ML);
🔹 новый оффер и рост дохода.
Полученные знания применяешь в работе уже во время обучения.
⏳ Акция действует 48 часов — 13 и 14 июня.
👉 Переходи на сайт, выбирай курсы и оставляй заявку — за 10 минут поможем собрать комплект под твою цель. | 1 294 |
| 8 | 🗃 Transactional Outbox: как не потерять событие между БД и брокером
Классическая ситуация: в одном запросе надо сохранить заказ в БД и отправить OrderCreated в Kafka. Выглядит элементарно:
orderRepository.save(order);
kafkaTemplate.send("orders", event); // 💥
Но это dual write — два независимых внешних действия без общей транзакции. И любой сбой ломает консистентность:
▪️ БД закоммитилась, приложение упало до отправки → событие потеряно, соседние сервисы не узнали о заказе
▪️ Событие ушло, а транзакция откатилась → фантомное событие про заказ, которого нет
▪️ Распределённые транзакции (2PC/XA) тут — дорога в ад: медленно, хрупко, Kafka их толком не тянет.
📌 Идея паттерна
Не пишем в брокер напрямую. В той же транзакции БД, что и бизнес-данные, кладём событие в табличку outbox:
INSERT INTO orders (...);
INSERT INTO outbox (id, aggregate, type, payload, created_at) (...);
COMMIT;
Обе вставки в одной локальной транзакции → они атомарны. Либо есть и заказ, и событие, либо ничего. Dual write исчезает: остаётся один источник правды.
🔍 Кто доставляет в Kafka?
Отдельный процесс — message relay. Два подхода:
1️⃣ Polling Publisher — фоновый воркер периодически читает новые строки из outbox, шлёт в брокер, помечает отправленными (или удаляет). Просто и прозрачно, но есть лаг поллинга и нагрузка на БД.
2️⃣ CDC (Debezium) — читаем не таблицу, а WAL/binlog базы. Debezium ловит инсерты в outbox и стримит почти в реалтайме. Сложнее в инфре, зато без поллинга и лишних запросов.
Outbox превращает ненадёжный dual write в один атомарный коммит + асинхронную доставку. Платите за это дубликатами (лечатся идемпотентностью) и eventual consistency. | 1 450 |
| 9 | 🐸Библиотека джависта
#DevLife | 1 524 |
| 10 | 🔥 Строишь ИИ-агентов? Руководитель AI/ML-направления Сloud․ru покажет, где большинство архитектур ломаются, и как этого избежать.
18 июня в 19:00 совместно с Сloud․ru проведём открытый урок «Мультиагентные системы: почему большинство архитектур переусложнены».
Спикер — Дмитрий Юдин, эксперт по масштабированию и оптимизации вычислительных ресурсов для ML. Под его руководством развивается Evolution AI Factory — цифровая среда для работы с GenAI. Он занимается развитием сервисов генеративного ИИ, инфраструктуры для обучения больших языковых моделей и внедрением интеллектуальных агентов.
Что получишь на уроке:
— критерии выбора между одним агентом и мультиагентной системой;
— разбор популярных архитектурных ошибок;
— реальные ограничения современных ИИ-агентов;
— практические рекомендации по проектированию агентных систем.
🎁 Для участников урока подготовили промокод на скидку 10 000 ₽.
🗓️ Когда: 18 июня, 19:00 (МСК)
👉 Занять место на открытом уроке | 1 452 |
| 11 | ▶️ Запись Mobius конференции
Анна Жаркова, лид мобильной разработки ГК «Юзтех», выступила на конференции с докладом о том, как Swift и Kotlin учатся говорить друг с другом, и что из этого выходит на практике.
В докладе:
🔹 прямой экспорт Kotlin/Native в Swift от JetBrains и что это меняет для кроссплатформенной разработки;
🔹 инструмент SwiftJava от Apple — конвертация кода между языками без KMP;
🔹 как и когда использовать каждое из решений в реальных iOS и Android-приложениях;
🔹 натив vs кроссплатформа: плюсы, минусы и лучшие практики.
🎬 Смотреть
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта
#CoreJava | 1 563 |
| 12 | 😮 Топ-вакансий для джавистов за неделю
Junior Backend Developer — от 120 000 до 200 000 ₽ — гибрид (Москва)
JAVA-разработчик — от 170 000 ₽ — удалёнка
Senior Java Developer — от 320 000 ₽ — удалёнка
➡️ Еще больше топовых вакансий — в нашем канале Java jobs | 1 679 |
| 13 | @TransactionalEventListener с фазой AFTER_COMMIT. Транзакция откатилась. Что произойдёт с событием? | 1 774 |
| 14 | Collectors.toMap падает там, где HashMap.put молчит
Привычка к map.put() подводит при переходе на стримы:
Map<String, User> byEmail = users.stream()
.collect(Collectors.toMap(User::email, u -> u));
Здесь две мины:
1. Дубликаты ключей → `IllegalStateException`. Map.put тихо перезаписал бы значение, а toMap без merge-функции бросает «Duplicate key». Фикс — третий аргумент:
.collect(Collectors.toMap(User::email, u -> u, (a, b) -> b)); // оставить последний
2. `null` в значении → `NullPointerException`. Под капотом toMap использует Map.merge, который по контракту не допускает null-значение. HashMap сам по себе null-значения разрешает — поэтому баг ловится не на ровной коллекции, а на «редких» данных в проде:
.collect(Collectors.toMap(User::email, User::nickname)); // nickname == null -> NPE
Если значение может быть null — собирай вручную в HashMap через forEach/reduce или фильтруй заранее. Стоит держать в голове: toMap строже, чем тот Map, который он создаёт.
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта
#CoreJava | 1 |
| 15 | 🤫 Тихое отключение батчинга инсертов
Выставил hibernate.jdbc.batch_size, ждёшь один батч на 100 строк, а в логах 100 отдельных INSERT. Если ID у сущности такой:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
…то батчинг не работает в принципе. Из официальной доки Hibernate: insert-батчинг на уровне JDBC прозрачно отключается при использовании identity-генератора.
Причина в стратегии write-behind. С IDENTITY сгенерированный ID известен только после выполнения INSERT (через getGeneratedKeys()). А значит Hibernate обязан выполнить вставку немедленно при persist(), и накопить пачку для одного батча уже не может.
Решение — SEQUENCE с оптимизатором pooled / pooled-lo: он резервирует диапазон значений в памяти (одна выборка из последовательности на N строк), ID известен заранее, write-behind и батчинг включаются:
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq")
@SequenceGenerator(name = "seq", allocationSize = 50)
private Long id;
MySQL SEQUENCE не имеет, там IDENTITY часто единственный вариант, и батчинг приходится вытягивать отдельными трюками (rewriteBatchedStatements=true + ручные приёмы).
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта
#CoreJava | 2 034 |
| 16 | 🐸Библиотека джависта
#DevLife | 1 955 |
| 17 | 🤫 Признайтесь: у вас в проде до сих пор крутится Spring Boot 2.7?
Если послушать конференции и треды на Хабре, то кажется, что весь мир давно переехал на 3.x, а кто не успел, тот прямо сейчас домигрирует.
Только в курилке инженеры говорят другое.
На самом деле огромная часть систем спокойно живёт на 2.7. Прод работает, инциденты не сыпятся, бизнес доволен. Просто вслух об этом говорить почему-то неловко, будто старая версия фреймворка автоматически делает тебя «неаккуратным инженером».
Статья без морализаторства разбирает то, о чём не всегда говорят:
— почему javax → jakarta — это только входной билет, а не сама миграция;
— почему «там просто версию поднять» ломается ровно в тот момент, когда Hibernate начинает генерить чуть-чуть другой SQL;
— почему security-кейс — единственный аргумент, который стабильно проходит приоритизацию;
— и чем на самом деле вы платите, оставаясь на 2.7 (спойлер: не стабильностью, а отсрочкой).
🔗 Читай подробнее
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта
#CoreJava | 1 820 |
| 18 | 🔥 Инженерная методичка по ИИ от Романа Барлоса (Team Lead в Yandex Cloud)
Продолжаем делиться экспертизой команды курса «Разработка ИИ-агентов».
Роман собрал мастхев-инструменты и ключевые работы для тех, кто хочет выйти за рамки вайбкодинга.
🛠️ Полезные инструменты:
• Understand Anything — граф знаний по коду и зависимостям.
• DeepTutor — open-source платформа для персонализированного обучения.
• Superpowers — набор практик для системной разработки с ИИ.
• Awesome Agent Skills — коллекция навыков для ИИ-агентов.
📚 Ключевые работы по LLM:
• Attention Is All You Need (2017) — архитектура Transformer.
• GPT-1 (2018) — начало эпохи GPT.
• GPT-2 (2019) — решение новых задач без дообучения.
• GPT-3 (2020) — обучение на примерах из запроса.
• InstructGPT (2022) — RLHF и современные чат-боты.
На курсе Роман выступает консультантом программы: помогает формировать содержание уроков с опорой на актуальные инженерные практики».
Занять свое место на потоке:
👉 Курс «Разработка ИИ-агентов» | 1 928 |
| 19 | ⚡️ Магия curl
Нужно скачать файл и продолжить загрузку после обрыва? curl -C - автоматически продолжит с того места, где остановился — не нужно качать заново.
🔹 Зачем это нужно
— Загрузка больших файлов через нестабильное соединение.
— Автоматически определяет размер уже скачанной части и продолжает.
— Работает с HTTP, FTP и даже SFTP.
🔹 Как использовать
— Скачать с возможностью продолжения: curl -C - -O https://example.com/dump.sql.gz
— С прогресс-баром: curl -C - -# -O https://example.com/large-file.tar.gz
— Ограничить скорость: curl --limit-rate 10M -O https://example.com/file.iso
— В конкретный файл: curl -C - -o backup.tar.gz https://example.com/backup
— С авторизацией: curl -C - -u user:pass -O https://repo.example.com/artifact.jar
💡 Заверни в цикл для автоматического ретрая: while ! curl -C - -O https://example.com/dump.sql.gz; do sleep 5; done — скрипт будет пытаться докачать, пока не получится.
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта
#Enterprise | 1 965 |
| 20 | 🐸Библиотека джависта
#DevLife | 1 973 |
Available now! Telegram Research 2025 — the year's key insights 
