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

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

前往频道在 Telegram

Все самое полезное для Java-разработчика в одном канале. Список наших каналов: https://t.me/proglibrary/9197 Для обратной связи: @proglibrary_feeedback_bot По рекламе: @proglib_adv РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4

显示更多

📈 Telegram 频道 Библиотека джависта | Java, Spring, Maven, Hibernate 的分析概览

频道 Библиотека джависта | Java, Spring, Maven, Hibernate (@javaproglib) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 22 431 名订阅者,在 技术与应用 类别中位列第 6 056,并在 俄罗斯 地区排名第 30 006

📊 受众指标与增长动态

невідомо 创建以来,项目保持高速增长,吸引了 22 431 名订阅者。

根据 10 六月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -83,过去 24 小时变化为 -4,整体触达仍然可观。

  • 认证状态: 未认证
  • 互动率 (ER): 平均受众互动率为 8.56%。内容发布后 24 小时内通常能获得 4.99% 的反应,占订阅者总量。
  • 帖子覆盖: 每篇帖子平均可获得 1 921 次浏览,首日通常累积 1 120 次浏览。
  • 互动与反馈: 受众积极参与,单帖平均反应数为 13
  • 主题关注点: 内容集中在 джависта, навигация, jooq, corejava, hibernate 等核心主题上。

📝 描述与内容策略

作者将该频道定位为表达主观观点的平台:
Все самое полезное для Java-разработчика в одном канале. Список наших каналов: https://t.me/proglibrary/9197 Для обратной связи: @proglibrary_feeedback_bot По рекламе: @proglib_adv РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4

凭借高频更新(最新数据采集于 11 六月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。

22 431
订阅者
-424 小时
-327
-8330
吸引订阅者
六月 '26
六月 '26
+26
在0个频道中
五月 '26
+136
在3个频道中
Get PRO
四月 '26
+85
在5个频道中
Get PRO
三月 '26
+69
在1个频道中
Get PRO
二月 '26
+103
在2个频道中
Get PRO
一月 '26
+75
在0个频道中
Get PRO
十二月 '25
+98
在4个频道中
Get PRO
十一月 '25
+94
在1个频道中
Get PRO
十月 '25
+117
在2个频道中
Get PRO
九月 '25
+120
在1个频道中
Get PRO
八月 '25
+93
在4个频道中
Get PRO
七月 '25
+78
在0个频道中
Get PRO
六月 '25
+118
在0个频道中
Get PRO
五月 '25
+106
在0个频道中
Get PRO
四月 '25
+178
在15个频道中
Get PRO
三月 '25
+294
在52个频道中
Get PRO
二月 '25
+200
在31个频道中
Get PRO
一月 '25
+231
在51个频道中
Get PRO
十二月 '24
+196
在38个频道中
Get PRO
十一月 '24
+216
在48个频道中
Get PRO
十月 '24
+253
在36个频道中
Get PRO
九月 '24
+339
在37个频道中
Get PRO
八月 '24
+319
在36个频道中
Get PRO
七月 '24
+422
在35个频道中
Get PRO
六月 '24
+372
在34个频道中
Get PRO
五月 '24
+460
在35个频道中
Get PRO
四月 '24
+438
在38个频道中
Get PRO
三月 '24
+610
在30个频道中
Get PRO
二月 '24
+573
在32个频道中
Get PRO
一月 '24
+561
在26个频道中
Get PRO
十二月 '23
+466
在36个频道中
Get PRO
十一月 '23
+372
在3个频道中
Get PRO
十月 '23
+503
在23个频道中
Get PRO
九月 '23
+676
在0个频道中
Get PRO
八月 '23
+570
在0个频道中
Get PRO
七月 '23
+446
在0个频道中
Get PRO
六月 '23
+448
在0个频道中
Get PRO
五月 '23
+560
在0个频道中
Get PRO
四月 '23
+226
在0个频道中
Get PRO
三月 '23
+762
在0个频道中
Get PRO
二月 '23
+359
在0个频道中
Get PRO
一月 '23
+387
在0个频道中
Get PRO
十二月 '22
+469
在0个频道中
Get PRO
十一月 '22
+542
在0个频道中
Get PRO
十月 '22
+289
在0个频道中
Get PRO
九月 '22
+368
在0个频道中
Get PRO
八月 '22
+439
在0个频道中
Get PRO
七月 '22
+557
在0个频道中
Get PRO
六月 '22
+503
在0个频道中
Get PRO
五月 '22
+275
在0个频道中
Get PRO
四月 '22
+383
在0个频道中
Get PRO
三月 '22
+399
在0个频道中
Get PRO
二月 '22
+225
在0个频道中
Get PRO
一月 '22
+364
在0个频道中
Get PRO
十二月 '21
+334
在0个频道中
Get PRO
十一月 '21
+297
在0个频道中
Get PRO
十月 '21
+263
在0个频道中
Get PRO
九月 '21
+329
在0个频道中
Get PRO
八月 '21
+425
在0个频道中
Get PRO
七月 '21
+371
在0个频道中
Get PRO
六月 '21
+334
在0个频道中
Get PRO
五月 '21
+586
在0个频道中
Get PRO
四月 '21
+702
在0个频道中
Get PRO
三月 '21
+633
在0个频道中
Get PRO
二月 '21
+660
在0个频道中
Get PRO
一月 '21
+568
在0个频道中
Get PRO
十二月 '20
+18 204
在0个频道中
日期
订阅者增长
提及
频道
11 六月0
10 六月+2
09 六月0
08 六月+1
07 六月+1
06 六月+5
05 六月0
04 六月+5
03 六月+3
02 六月+4
01 六月+5
频道帖子
😮 Топ-вакансий для джавистов за неделю Junior Backend Developer — от 120 000 до 200 000 ₽ — гибрид (Москва) JAVA-разработчик — от 170 000 ₽ — удалёнка Senior Java Developer — от 320 000 ₽ — удалёнка ➡️ Еще больше топовых вакансий — в нашем канале Java jobs

2
@TransactionalEventListener с фазой AFTER_COMMIT. Транзакция откатилась. Что произойдёт с событием?
1 000
3
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
4
🤫 Тихое отключение батчинга инсертов Выставил 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 304
5
🐸Библиотека джависта #DevLife
🐸Библиотека джависта #DevLife
1 408
6
🤫 Признайтесь: у вас в проде до сих пор крутится Spring Boot 2.7? Если послушать конференции и треды на Хабре, то кажется, ч
🤫 Признайтесь: у вас в проде до сих пор крутится Spring Boot 2.7? Если послушать конференции и треды на Хабре, то кажется, что весь мир давно переехал на 3.x, а кто не успел, тот прямо сейчас домигрирует. Только в курилке инженеры говорят другое. На самом деле огромная часть систем спокойно живёт на 2.7. Прод работает, инциденты не сыпятся, бизнес доволен. Просто вслух об этом говорить почему-то неловко, будто старая версия фреймворка автоматически делает тебя «неаккуратным инженером». Статья без морализаторства разбирает то, о чём не всегда говорят: — почему javax → jakarta — это только входной билет, а не сама миграция; — почему «там просто версию поднять» ломается ровно в тот момент, когда Hibernate начинает генерить чуть-чуть другой SQL; — почему security-кейс — единственный аргумент, который стабильно проходит приоритизацию; — и чем на самом деле вы платите, оставаясь на 2.7 (спойлер: не стабильностью, а отсрочкой). 🔗 Читай подробнее ══════ Навигация ══════ Вакансии • Задачи • Собесы 🐸 Библиотека джависта #CoreJava
1 469
7
🔥 Инженерная методичка по ИИ от Романа Барлоса (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 436
8
⚡️ Магия 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 546
9
🐸Библиотека джависта #DevLife
🐸Библиотека джависта #DevLife
1 580
10
⚡️ 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
1 680
11
😎 Знакомьтесь с экспертом 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 539
12
✔️ Spring-тест: идемпотентность платёжного эндпоинта Напишите защиту от двойного списания 👇 📦 Задание Клиент при сетевом таймауте повторяет POST /payments и списание проходит дважды. Реализуйте идемпотентность по заголовку Idempotency-Key. @PostMapping("/payments") public PaymentResult pay( @RequestHeader("Idempotency-Key") String key, @RequestBody PaymentRequest request) { // Ваша реализация } 📋 Требования — Повторный запрос с тем же ключом возвращает результат первого вызова и НЕ выполняет списание заново. — Разные ключи → разные операции. — Конкурентные запросы с одним ключом (двойной клик / параллельные ретраи) не должны привести к двойному выполнению. — Ключ хранится с TTL (например, 24 часа). Ставьте → 🔥, если нравится формат. Если нет → 🌚 💬 Решения под спойлер. Сравним, какое будет лучше. 🐸 Библиотека собеса по Java #practise
1 425
13
🐸Библиотека джависта #DevLife
🐸Библиотека джависта #DevLife
1 804
14
👩‍💻 Руководство по Git Подробная документацию по Git на русском языке. От базовых команд до продвинутых тем вроде pack-файлов, переменных окружения и внутреннего устройства Git. Подойдёт и новичкам и тем, кто хочет глубже понимать, как Git работает под капотом. 🔗 Подробнее ══════ Навигация ══════ Вакансии • Задачи • Собесы 🐸 Библиотека джависта #Enterprise
1 972
15
⚡️ Продолжаем знакомить вас с экспертами курса AgentOps! — Сергей Нотевский расскажет, как выстроить FinOps для AI-продуктов:
⚡️ Продолжаем знакомить вас с экспертами курса AgentOps! — Сергей Нотевский расскажет, как выстроить FinOps для AI-продуктов: оптимизировать затраты на разработку и продакшен, внедрить model routing, semantic cache и систему алертов для контроля расходов — Эмиль Сатаев разберет Context Engineering: управление контекстом, защиту от prompt injection, работу с длинными контекстами и построение безопасного пайплайна входа для AI-систем — Михаил Бондаревский покажет, как подготовить инфраструктуру для AI-агентов: Docker, sandboxing, streaming, docker-compose и воспроизводимое окружение для разработки и продакшена — Мурат Хажгериев расскажет про Enterprise Integrations & MCP: когда MCP действительно нужен, как подключать внешние сервисы и реализовывать интеграции с OAuth2 delegation — Герман Сабиров разберет Governance & Compliance для AI-систем: data flow, audit logs, требования 152-ФЗ, локализацию данных и построение compliance-подхода на уровне архитектуры Курс для backend-разработчиков, тимлидов и LLM инженеров о том, как внедрять AI-логику в бэкенд IT-продуктов и сохранять стабильность сервиса. 👉 Изучить обновленную программу AgentOps и занять место.
2 181
16
🏛 ArchUnit — 3.7k ⭐️ Кто-то дёрнул репозиторий прямо из контроллера «по-быстрому», ревьюер не заметил — и слои потекли. Документация в Confluence про это не в курсе. ArchUnit превращает архитектурные правила в обычные unit-тесты. Он читает байткод твоих классов и проверяет зависимости, а значит, нарушение падает прямо в CI, как любой другой красный тест: import com.tngtech.archunit.core.importer.ClassFileImporter; import com.tngtech.archunit.lang.ArchRule; import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.classes; @Test void controllers_must_not_touch_repositories() { var imported = new ClassFileImporter().importPackages("com.myapp"); ArchRule rule = classes() .that().resideInAPackage("..controller..") .should().onlyDependOnClassesThat() .resideOutsideOfPackage("..repository.."); rule.check(imported); } 🔹 Из коробки: → проверка слоёв (layered) и onion-архитектуры одним fluent-вызовом; → поиск циклических зависимостей между пакетами; → контроль неймингов и аннотаций. Работает с любым тест-фреймворком — JUnit, TestNG, без разницы. Для легаси есть «заморозка»: фиксируешь текущие нарушения как baseline и блокируешь только новые, разгребая старые постепенно. Можно даже задавать правила PlantUML-диаграммой и проверять код на соответствие картинке. Версия 1.4.2, поддержка вплоть до Java 26. Идеален, когда в команде больше трёх человек и архитектуру хочется не объяснять на словах, а зафиксировать в коде. 📱 Репозиторий ══════ Навигация ══════ Вакансии • Задачи • Собесы 🐸 Библиотека джависта #Enterprise
1 969
17
🐸Библиотека джависта #DevLife
🐸Библиотека джависта #DevLife
1 858
18
⚙️ HikariCP в проде: пять настроек, которые часто крутят неправильно Пул соединений в Spring Boot работает «из коробки», поэтому в application.properties обычно либо пусто, либо строчка про размер пула. И всё хорошо ровно до первого пика, когда в логах начинает мелькать Connection is not available, request timed out after 30000ms, а сервис уходит в полупаралич: не падает, но и не работает. Разбираем параметры, которые чаще всего настроены не так. 1️⃣ maximumPoolSize: «больше» ≠ «лучше» Классика — поставить 100 «на всякий, у нас тысяча юзеров онлайн». Но каждый коннекшн к Postgres — это процесс на стороне БД, память, контекст транзакции. 100 параллельных запросов от одного бэкенда — это не параллельность, а очередь: CPU и диск всё равно одни. Формула из pool sizing guide самого HikariCP: connections = (core_count * 2) + effective_spindle_count Для 8 ядер + SSD это ~17 коннекшенов. И помни про реплики: 5 подов по 20 = 100 коннекшенов к одной базе только от этого сервиса, а у Postgres max_connections обычно 100–200. Перешагнул → FATAL: sorry, too many clients already. Прежде чем раздувать пул, загляни в pg_stat_activity. В 9 из 10 случаев там медленные запросы без индекса, idle in transaction или локи. Больше коннекшенов = больше параллельных медленных запросов. 2️⃣ minimumIdle = maximumPoolSize, а не половине Туториалы любят min-idle: 5 / max: 20 → «в холостом держим 5, в пик расширяемся». Звучит экономно, а на деле каждый новый коннекшн — это TCP + TLS + auth + инициализация сессии = 30–100 мс сверху на первые запросы при расширении. Спайк на старте дня → красивый пик p99 → ложный инцидент. HikariCP проектировался как фиксированный пул. Дефолт minimumIdle == maximumPoolSize, и автор прямо просит не трогать. Хочешь экономить — уменьшай maximumPoolSize, а не разноси его с minimumIdle. 3️⃣ maxLifetime: всегда меньше любого внешнего таймаута Дефолт 30 минут. Проблема: если что-то в инфраструктуре закроет коннекшн раньше, чем HikariCP его «состарит», ловишь Connection is closed. А закрыть может многое: ▪️ AWS NLB — idle TCP через 350 сек ▪️ AWS ALB — 60 сек ▪️ корпоративный фаервол — 5–15 мин, без логов ▪️ PgBouncer server_idle_timeout — 600 сек ▪️ Postgres idle_in_transaction_session_timeout — нередко 10 мин Ставь с запасом 30–60 сек меньше самого короткого внешнего таймаута. Не видишь внешних таймаутов — 300000 (5 мин) разумный дефолт. 4️⃣ keepaliveTime: чтобы коннекшн не протух в idle Дефолт 0 → выключено. В средах с агрессивным conntrack или короткими idle-таймаутами файрвола соединение тихо рвётся, и следующий клиент получает Broken pipe / Connection reset на первом же запросе. Включаешь — и HikariCP раз в N мс гоняет SELECT 1 по простаивающим коннекшенам. spring.datasource.hikari: keepalive-time: 30000 # 30 сек max-lifetime: 300000 # keepalive ОБЯЗАТЕЛЬНО меньше Минимум — 30 сек, меньше HikariCP проигнорит. Нагрузка копеечная: 20 коннекшенов = 40 пингов в минуту. 5️⃣ connectionTimeout: это твой SLA Дефолт 30 сек — почти всегда абсурд. Если API должно отвечать за 500 мс, клиент через 30 сек уже давно получил 504 от ingress. А бэкенд продолжает копить запросы, потоки висят в ожидании коннекшна, сервис застревает на минуты. Лучше fail fast: spring.datasource.hikari.connection-timeout: 2000 # 2 сек Пул исчерпан → быстрый 503, очередь не растёт, алерт срабатывает сразу. Сверху можно навесить circuit breaker (Resilience4j). ⚠️ И отдельно про Actuator: /actuator/health/db дёргает базу. При исчерпанном пуле он тоже встаёт в очередь → DOWN → k8s liveness рестартит под → нагрузка переезжает на соседей → каскад. Лечится коротким connectionTimeout + liveness, который не трогает базу вообще. И главное помни: HikariCP — это просто пул. Если в сервисе медленные запросы без индексов, ни твики таймаутов, ни раздувание пула не помогут — получишь больше параллельных медленных запросов, и база встанет ещё быстрее. Сначала pg_stat_activity, pg_stat_statements, EXPLAIN ANALYZE — потом настройка пула. ══════ Навигация ══════ Вакансии • Задачи • Собесы 🐸 Библиотека джависта #Enterprise
1 936
19
@Scheduled(fixedRate = 5000) — предыдущее выполнение заняло 8 секунд. Когда запустится следующее?
1 982
20
🐳 Магия Docker Compose Поменяли конфиг одного сервиса и не хотите перезапускать весь стек из 10 контейнеров? docker compose up -d --no-deps service-name пересоздаст только указанный сервис. 🔹 Зачем это нужно — Перезапуск одного сервиса вместо всего стека экономит минуты на тяжёлых проектах. — --no-deps не трогает зависимости, так что БД и Redis останутся на месте. — -d запускает в фоне, терминал свободен для другой работы. 🔹 Как использовать — Пересоздать один сервис: docker compose up -d --no-deps api — Пересобрать и запустить: docker compose up -d --no-deps --build api — Посмотреть логи только одного: docker compose logs -f api — Рестарт без пересоздания: docker compose restart api — Масштабировать: docker compose up -d --scale worker=3 💡 restart не подхватывает изменения в docker-compose.yml или Dockerfile, для этого нужен up -d. Если обновили env-переменные или порты — только up -d применит изменения. ══════ Навигация ══════ Вакансии • Задачи • Собесы 🐸 Библиотека джависта #Enterprise
2 164