Библиотека джависта | Java, Spring, Maven, Hibernate
Все самое полезное для Java-разработчика в одном канале. Как запустить своего ии-агента: https://clc.to/tvpmDQ Для обратной связи: @proglibrary_feeedback_bot По рекламе: @proglib_adv РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
Ko'proq ko'rsatish📈 Telegram kanali Библиотека джависта | Java, Spring, Maven, Hibernate analitikasi
Библиотека джависта | Java, Spring, Maven, Hibernate (@javaproglib) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 22 423 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 6 062-o'rinni va Rossiya mintaqasida 29 965-o'rinni egallagan.
📊 Auditoriya ko‘rsatkichlari va dinamika
невідомо sanasidan buyon loyiha tez o‘sib, 22 423 obunachiga ega bo‘ldi.
13 Iyun, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -70 ga, so‘nggi 24 soatda esa -1 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.
- Tasdiqlash holati: Tasdiqlanmagan
- Jalb etish (ER): Auditoriya o‘rtacha 8.97% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 5.16% ini tashkil etuvchi reaksiyalarni to‘playdi.
- Post qamrovi: Har bir post o‘rtacha 2 011 marta ko‘riladi; birinchi sutkada odatda 1 157 ta ko‘rish yig‘iladi.
- Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 15 ta reaksiya keladi.
- Tematik yo‘nalishlar: Kontent джависта, навигация, jooq, corejava, hibernate kabi asosiy mavzularga jamlangan.
📝 Tavsif va kontent siyosati
Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
“Все самое полезное для Java-разработчика в одном канале.
Как запустить своего ии-агента: https://clc.to/tvpmDQ
Для обратной связи: @proglibrary_feeedback_bot
По рекламе: @proglib_adv
РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4”
Yuqori yangilanish chastotasi (oxirgi ma’lumot 14 Iyun, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.
Ma'lumot yuklanmoqda...
| Sana | Obunachilarni jalb qilish | Esdaliklar | Kanallar | |
| 14 Iyun | +1 | |||
| 13 Iyun | +6 | |||
| 12 Iyun | +4 | |||
| 11 Iyun | +1 | |||
| 10 Iyun | +2 | |||
| 09 Iyun | 0 | |||
| 08 Iyun | +1 | |||
| 07 Iyun | +1 | |||
| 06 Iyun | +5 | |||
| 05 Iyun | 0 | |||
| 04 Iyun | +5 | |||
| 03 Iyun | +3 | |||
| 02 Iyun | +4 | |||
| 01 Iyun | +5 |
| 2 | 🎥 До открытого урока — несколько дней. Подготовили небольшую подборку материалов от нашего спикера Дмитрия Юдина.
Дмитрий руководит AI/ML-направлением в Сloud․ru и развивает Evolution AI Factory — среду для работы с GenAI: от инфраструктуры обучения LLM до внедрения интеллектуальных агентов.
С чего начать:
📺 AI-инструменты для разработчиков — как код, автотесты и ассистенты меняют рутину инженера.
📺 AI-эволюция бизнеса в эпоху генеративных моделей — агентные системы в реальных продуктах.
📺 Разработка мертва? — дискуссия о будущем профессии и роли AI в ней.
📖 Применение LLM в бизнесе — статья Дмитрия о практике внедрения и роли облака.
Одна из ключевых тем Дмитрия — практическое применение агентных систем и их ограничения.
Именно об этом — бесплатный урок 18 июня в 19:00: «Мультиагентные системы: почему большинство архитектур переусложнены» 🔥
🎁 Для участников подготовили промокод на скидку 10 000 ₽ на курс «Разработка ИИ-агентов».
👉 Успей занять место на открытом уроке | 671 |
| 3 | ✔️ Java-тест: задачка с реального собеса
Наш подписчик прислал реальную задачу с собеса в Яндекс. Сможете решить? 👇
📦 Задание
Реализуйте банкомат и тесты к нему. Инициализируется набором купюр, умеет выдавать купюры под заданную сумму либо отвечать отказом. При выдаче купюры списываются с баланса.
/**
* Банкомат.
* Инициализируется набором купюр, выдаёт купюры под сумму либо отказывает.
* При выдаче купюры списываются с баланса.
*
* Номиналы:
* - 50, 100, 500, 1000, 5000 ₽
* - 20, 100, 500 EUR
*
* Валюты обрабатываются раздельно, обмен не поддерживается.
* Банкомат может использоваться многопоточно (резервирование выдачи).
* Поддержку многопоточности можно вынести в отдельную итерацию.
*/
public class ATM {
public ??? withdraw(???) {
// TODO
}
}
📋 Требования
— Сами определите, что withdraw принимает и что возвращает.
— Валюты считаются раздельно, обмена нет.
— Сумму, которую нельзя собрать имеющимися купюрами, отклоняем (частичная выдача недопустима).
— Покройте решение тестами.
— Бонус: сделайте безопасным для вызова из нескольких потоков.
Ставьте → 🔥, если нравится формат. Если нет → 🌚
💬 Решения под спойлер. Сравним, какое будет лучше.
🐸 Библиотека собеса по Java
#practise | 906 |
| 4 | 💻 3 курса по цене одного — собери стек для оффера в топовую IT-компанию
Для следующего карьерного шага мало писать код. Работодатели ждут не только знания языка, но и понимания архитектуры, алгоритмов, автоматизации, AI-инструментов и агентных систем.
Одно направление закрывает только часть задачи.
Поэтому сейчас мы предлагаем освоить сразу несколько востребованных навыков — выбери любой курс и получи доступ еще к двум бесплатно 🔥
Собери стек навыков под свою цель:
🔹 подготовка к сильным компаниям (алгоритмы, архитектура);
🔹 переход в AI-направление (ИИ-агенты, AgentOps);
🔹 развитие в ML и Data Science (математика, основы ML);
🔹 новый оффер и рост дохода.
Полученные знания применяешь в работе уже во время обучения.
⏳ Акция действует 48 часов — 13 и 14 июня.
👉 Переходи на сайт, выбирай курсы и оставляй заявку — за 10 минут поможем собрать комплект под твою цель. | 1 049 |
| 5 | 🗃 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 221 |
| 6 | 🐸Библиотека джависта
#DevLife | 1 324 |
| 7 | 🔥 Строишь ИИ-агентов? Руководитель AI/ML-направления Сloud․ru покажет, где большинство архитектур ломаются, и как этого избежать.
18 июня в 19:00 совместно с Сloud․ru проведём открытый урок «Мультиагентные системы: почему большинство архитектур переусложнены».
Спикер — Дмитрий Юдин, эксперт по масштабированию и оптимизации вычислительных ресурсов для ML. Под его руководством развивается Evolution AI Factory — цифровая среда для работы с GenAI. Он занимается развитием сервисов генеративного ИИ, инфраструктуры для обучения больших языковых моделей и внедрением интеллектуальных агентов.
Что получишь на уроке:
— критерии выбора между одним агентом и мультиагентной системой;
— разбор популярных архитектурных ошибок;
— реальные ограничения современных ИИ-агентов;
— практические рекомендации по проектированию агентных систем.
🎁 Для участников урока подготовили промокод на скидку 10 000 ₽.
🗓️ Когда: 18 июня, 19:00 (МСК)
👉 Занять место на открытом уроке | 1 228 |
| 8 | ▶️ Запись Mobius конференции
Анна Жаркова, лид мобильной разработки ГК «Юзтех», выступила на конференции с докладом о том, как Swift и Kotlin учатся говорить друг с другом, и что из этого выходит на практике.
В докладе:
🔹 прямой экспорт Kotlin/Native в Swift от JetBrains и что это меняет для кроссплатформенной разработки;
🔹 инструмент SwiftJava от Apple — конвертация кода между языками без KMP;
🔹 как и когда использовать каждое из решений в реальных iOS и Android-приложениях;
🔹 натив vs кроссплатформа: плюсы, минусы и лучшие практики.
🎬 Смотреть
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта
#CoreJava | 1 421 |
| 9 | 😮 Топ-вакансий для джавистов за неделю
Junior Backend Developer — от 120 000 до 200 000 ₽ — гибрид (Москва)
JAVA-разработчик — от 170 000 ₽ — удалёнка
Senior Java Developer — от 320 000 ₽ — удалёнка
➡️ Еще больше топовых вакансий — в нашем канале Java jobs | 1 535 |
| 10 | @TransactionalEventListener с фазой AFTER_COMMIT. Транзакция откатилась. Что произойдёт с событием? | 1 545 |
| 11 | 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 |
| 12 | 🤫 Тихое отключение батчинга инсертов
Выставил 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 | 1 750 |
| 13 | 🐸Библиотека джависта
#DevLife | 1 713 |
| 14 | 🤫 Признайтесь: у вас в проде до сих пор крутится Spring Boot 2.7?
Если послушать конференции и треды на Хабре, то кажется, что весь мир давно переехал на 3.x, а кто не успел, тот прямо сейчас домигрирует.
Только в курилке инженеры говорят другое.
На самом деле огромная часть систем спокойно живёт на 2.7. Прод работает, инциденты не сыпятся, бизнес доволен. Просто вслух об этом говорить почему-то неловко, будто старая версия фреймворка автоматически делает тебя «неаккуратным инженером».
Статья без морализаторства разбирает то, о чём не всегда говорят:
— почему javax → jakarta — это только входной билет, а не сама миграция;
— почему «там просто версию поднять» ломается ровно в тот момент, когда Hibernate начинает генерить чуть-чуть другой SQL;
— почему security-кейс — единственный аргумент, который стабильно проходит приоритизацию;
— и чем на самом деле вы платите, оставаясь на 2.7 (спойлер: не стабильностью, а отсрочкой).
🔗 Читай подробнее
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта
#CoreJava | 1 720 |
| 15 | 🔥 Инженерная методичка по ИИ от Романа Барлоса (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 706 |
| 16 | ⚡️ Магия 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 903 |
| 17 | 🐸Библиотека джависта
#DevLife | 1 893 |
| 18 | ⚡️ Apache Fory — 4.3k ⭐️
Стандартная Java-сериализация медленная и жирная по байтам. Берёшь Kryo → лучше, но возишься с регистрацией классов и тюнингом.
Apache Fory (бывший Fury, переименовали в 2025-м) — это сериализация, которая делает и то, и другое. Генерит сериализаторы в рантайме через JIT, использует zero-copy и даёт до 170x против JDK-сериализации. IDL не нужен:
import org.apache.fory.Fory;
import org.apache.fory.config.Language;
Fory fory = Fory.builder()
.withLanguage(Language.JAVA)
.requireClassRegistration(true)
.build();
fory.register(Order.class);
byte[] bytes = fory.serialize(order);
Order copy = (Order) fory.deserialize(bytes);
Это drop-in замена JDK / Kryo / Hessian — со 100% совместимым API (writeObject/readObject, Externalizable и т.д.), только в разы быстрее. Корректно тащит shared- и циклические ссылки, умеет schema evolution (можно добавлять/удалять поля независимо на двух концах), поддерживает GraalVM native image через AOT без рефлексии. А режим xlang сериализует один и тот же объект между Java, Python, C++, Go, Rust, JS, Scala, Kotlin и TypeScript.
Идеален для высоконагруженного RPC, кэшей, передачи данных между сервисами и кросс-язычных пайплайнов, где сериализация — это узкое место.
📱 Репозиторий
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта
#Enterprise | 2 105 |
| 19 | 😎 Знакомьтесь с экспертом Proglib.academy: Senior Software Engineer и Team Lead в Yandex Cloud Роман Барлос
Роман — консультант нашего курса «Разработка ИИ-агентов». Он работает на стыке cloud-native архитектуры и AI, активно внедряя современные ИИ-подходы в реальные процессы разработки.
За что его ценит IT-комьюнити?
🟣 Team Lead и AI-евангелист в команде UX Yandex Cloud
14-лет в разработке. Занимается AI-адопшеном в команде Yandex Cloud, проводит мастер-классы и продвигает лучшие практики для повышения эффективности разработчиков.
🟣 Техлид Sourcecraft Code Assistant
С сильным практическим бэкграундом принимал участие как технический лид в создании мощного AI-расширения для VS Code.
🟣 Создатель полезного Open Source
Разрабатывает утилиты, которые позволяют быстро начать эксперименты с инференсом и агентами в локальном окружении: например, набор скриптов vllm-setup для быстрого запуска окружения и mini-proxy — минималистичный прокси для OpenAI API провайдеров.
🟣 Автор интерактивных ML-визуализаций
Объясняет сложные концепции наглядно. Создал серию залипательных обучающих материалов, где можно вживую пощупать работу сетей Хопфилда, машин Больцмана и VC-размерности.
Роман регулярно делится инженерными наработками, инсайтами и экспертизой в своем авторском Telegram-канале
На курсе Роман выступает консультантом программы: он помогает формировать содержание уроков с опорой на актуальные инженерные практики и жесткие требования индустрии.
Узнать больше о программе и разработке автономных систем:
👉 Курс «Разработка ИИ-агентов»
Так, продолжаем знакомить вас с командой?
👍 — Да, ждем новых лиц
🔥 — Жду полезные материалы от Романа | 1 725 |
| 20 | ✔️ Spring-тест: идемпотентность платёжного эндпоинта
Напишите защиту от двойного списания 👇
📦 Задание
Клиент при сетевом таймауте повторяет POST /payments и списание проходит дважды. Реализуйте идемпотентность по заголовку Idempotency-Key.
@PostMapping("/payments")
public PaymentResult pay(
@RequestHeader("Idempotency-Key") String key,
@RequestBody PaymentRequest request) {
// Ваша реализация
}
📋 Требования
— Повторный запрос с тем же ключом возвращает результат первого вызова и НЕ выполняет списание заново.
— Разные ключи → разные операции.
— Конкурентные запросы с одним ключом (двойной клик / параллельные ретраи) не должны привести к двойному выполнению.
— Ключ хранится с TTL (например, 24 часа).
Ставьте → 🔥, если нравится формат. Если нет → 🌚
💬 Решения под спойлер. Сравним, какое будет лучше.
🐸 Библиотека собеса по Java
#practise | 1 671 |
Endi mavjud! Telegram Tadqiqoti 2025 — yilning asosiy insaytlari 
