uz
Feedback
Библиотека джависта | Java, Spring, Maven, Hibernate

Библиотека джависта | Java, Spring, Maven, Hibernate

Kanalga Telegram’da o‘tish

Все самое полезное для 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.

22 423
Obunachilar
-124 soatlar
-347 kunlar
-7030 kunlar
Obunachilarni jalb qilish
Iyun '26
Iyun '26
+38
0 kanalda
May '26
+136
3 kanalda
Get PRO
Aprel '26
+85
5 kanalda
Get PRO
Mart '26
+69
1 kanalda
Get PRO
Fevral '26
+103
2 kanalda
Get PRO
Yanvar '26
+75
0 kanalda
Get PRO
Dekabr '25
+98
4 kanalda
Get PRO
Noyabr '25
+94
1 kanalda
Get PRO
Oktabr '25
+117
2 kanalda
Get PRO
Sentabr '25
+120
1 kanalda
Get PRO
Avgust '25
+93
4 kanalda
Get PRO
Iyul '25
+78
0 kanalda
Get PRO
Iyun '25
+118
0 kanalda
Get PRO
May '25
+106
0 kanalda
Get PRO
Aprel '25
+178
15 kanalda
Get PRO
Mart '25
+294
52 kanalda
Get PRO
Fevral '25
+200
31 kanalda
Get PRO
Yanvar '25
+231
51 kanalda
Get PRO
Dekabr '24
+196
38 kanalda
Get PRO
Noyabr '24
+216
48 kanalda
Get PRO
Oktabr '24
+253
36 kanalda
Get PRO
Sentabr '24
+339
37 kanalda
Get PRO
Avgust '24
+319
36 kanalda
Get PRO
Iyul '24
+422
35 kanalda
Get PRO
Iyun '24
+372
34 kanalda
Get PRO
May '24
+460
35 kanalda
Get PRO
Aprel '24
+438
38 kanalda
Get PRO
Mart '24
+610
30 kanalda
Get PRO
Fevral '24
+573
32 kanalda
Get PRO
Yanvar '24
+561
26 kanalda
Get PRO
Dekabr '23
+466
36 kanalda
Get PRO
Noyabr '23
+372
3 kanalda
Get PRO
Oktabr '23
+503
23 kanalda
Get PRO
Sentabr '23
+676
0 kanalda
Get PRO
Avgust '23
+570
0 kanalda
Get PRO
Iyul '23
+446
0 kanalda
Get PRO
Iyun '23
+448
0 kanalda
Get PRO
May '23
+560
0 kanalda
Get PRO
Aprel '23
+226
0 kanalda
Get PRO
Mart '23
+762
0 kanalda
Get PRO
Fevral '23
+359
0 kanalda
Get PRO
Yanvar '23
+387
0 kanalda
Get PRO
Dekabr '22
+469
0 kanalda
Get PRO
Noyabr '22
+542
0 kanalda
Get PRO
Oktabr '22
+289
0 kanalda
Get PRO
Sentabr '22
+368
0 kanalda
Get PRO
Avgust '22
+439
0 kanalda
Get PRO
Iyul '22
+557
0 kanalda
Get PRO
Iyun '22
+503
0 kanalda
Get PRO
May '22
+275
0 kanalda
Get PRO
Aprel '22
+383
0 kanalda
Get PRO
Mart '22
+399
0 kanalda
Get PRO
Fevral '22
+225
0 kanalda
Get PRO
Yanvar '22
+364
0 kanalda
Get PRO
Dekabr '21
+334
0 kanalda
Get PRO
Noyabr '21
+297
0 kanalda
Get PRO
Oktabr '21
+263
0 kanalda
Get PRO
Sentabr '21
+329
0 kanalda
Get PRO
Avgust '21
+425
0 kanalda
Get PRO
Iyul '21
+371
0 kanalda
Get PRO
Iyun '21
+334
0 kanalda
Get PRO
May '21
+586
0 kanalda
Get PRO
Aprel '21
+702
0 kanalda
Get PRO
Mart '21
+633
0 kanalda
Get PRO
Fevral '21
+660
0 kanalda
Get PRO
Yanvar '21
+568
0 kanalda
Get PRO
Dekabr '20
+18 204
0 kanalda
Sana
Obunachilarni jalb qilish
Esdaliklar
Kanallar
14 Iyun+1
13 Iyun+6
12 Iyun+4
11 Iyun+1
10 Iyun+2
09 Iyun0
08 Iyun+1
07 Iyun+1
06 Iyun+5
05 Iyun0
04 Iyun+5
03 Iyun+3
02 Iyun+4
01 Iyun+5
Kanal postlari
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-компанию Для следующего карьерного шага мало писать код. Рабо
💻 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
🐸Библиотека джависта #DevLife
1 324
7
🔥 Строишь ИИ-агентов? Руководитель AI/ML-направления Сloud․ru покажет, где большинство архитектур ломаются, и как этого избе
🔥 Строишь ИИ-агентов? Руководитель 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
🐸Библиотека джависта #DevLife
1 713
14
🤫 Признайтесь: у вас в проде до сих пор крутится Spring Boot 2.7? Если послушать конференции и треды на Хабре, то кажется, ч
🤫 Признайтесь: у вас в проде до сих пор крутится Spring Boot 2.7? Если послушать конференции и треды на Хабре, то кажется, что весь мир давно переехал на 3.x, а кто не успел, тот прямо сейчас домигрирует. Только в курилке инженеры говорят другое. На самом деле огромная часть систем спокойно живёт на 2.7. Прод работает, инциденты не сыпятся, бизнес доволен. Просто вслух об этом говорить почему-то неловко, будто старая версия фреймворка автоматически делает тебя «неаккуратным инженером». Статья без морализаторства разбирает то, о чём не всегда говорят: — почему javax → jakarta — это только входной билет, а не сама миграция; — почему «там просто версию поднять» ломается ровно в тот момент, когда Hibernate начинает генерить чуть-чуть другой SQL; — почему security-кейс — единственный аргумент, который стабильно проходит приоритизацию; — и чем на самом деле вы платите, оставаясь на 2.7 (спойлер: не стабильностью, а отсрочкой). 🔗 Читай подробнее ══════ Навигация ══════ Вакансии • Задачи • Собесы 🐸 Библиотека джависта #CoreJava
1 720
15
🔥 Инженерная методичка по ИИ от Романа Барлоса (Team Lead в Yandex Cloud) Продолжаем делиться экспертизой команды курса «Раз
🔥 Инженерная методичка по ИИ от Романа Барлоса (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
🐸Библиотека джависта #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 Роман Барлос Роман — консульт
😎 Знакомьтесь с экспертом 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