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

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

Обратная связь: @proglibrary_feedback_bot

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

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
加入频道
Please open Telegram to view this post
VIEW IN TELEGRAM
Как устроен кеш в Spring Boot?

Spring Boot упрощает кеширование благодаря аннотациям и встроенной интеграции с разными кеш-провайдерами (EhCache, Caffeine, Redis и др.). Spring использует Spring Cache Abstraction, которая оборачивает кеширующую логику в аннотации:

▪️ @Cacheable — кладёт результат в кеш
▪️ @CachePut — обновляет кеш
▪️ @CacheEvict — удаляет из кеша

За кулисами используется прокси (через Spring AOP или CGLIB), который перехватывает вызовы методов, проверяет кеш и возвращает либо сохранённое значение, либо выполняет метод и кеширует результат.

🔍 Что под капотом

Если вызвать метод с @Cacheable, Spring выполняет несколько шагов:

1. Определяет ключ кеша


▪️ По умолчанию ключ формируется из параметров метода
▪️ Можно задать кастомный ключ через key = "#id"

2. Проверяет кеш-провайдер

▪️ Дефолтный провайдер — ConcurrentHashMap
▪️ Можно подключить Redis, Caffeine, EhCache и т. д.

3. Возвращает данные

▪️ Если значение есть в кеше — сразу отдаётся
▪️ Если нет – вызывается метод и результат сохраняется в кеше

⚠️ Нюансы

— Кеш работает только для Spring-управляемых бинов (если метод вызван внутри того же класса — кеш не сработает)
— Не кешируйте изменяемые объекты, иначе возможны неожиданные побочные эффекты
— Очищайте кеш, если данные меняются (@CacheEvict)
Please open Telegram to view this post
VIEW IN TELEGRAM
🧮🔠 Математика в действии: решаем хитрые задачи по прогнозированию, оптимизации и логике

Статья, которая поможет развить навыки решения задач с помощью математики.

➡️ Вот что вас ждет

1️⃣ Прогнозирование численности населения — используем цепи Маркова для предсказания миграций между городом и пригородами.

2️⃣ Минимизация затрат — находим минимальное скалярное произведение векторов для оптимального распределения задач между работниками.

3️⃣ Машина времени — решаем задачу максимального числа пересекающихся временных интервалов с помощью заметающей прямой.

4️⃣ Алгоритм Целлера — вычисляем день недели по дате. Проверка на практике.

🔵 Хочешь прокачаться в математике для ML? Тогда разбирайся с этими задачами и не упусти вебинар: «Математика для ML: от теории к практике».

👉 Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
Вам нравится читать контент на этом канале?

Возможно, вы задумывались о том, чтобы купить на нем интеграцию?

Следуйте 3 простым шагам, чтобы сделать это:

1) Нажмите на ссылку: Вход
2) Пополняйтесь удобным способом
3) Размещайте публикацию

Если тематика вашего поста подойдет нашему каналу, мы с удовольствием опубликуем его
⚙️ Ускоряем анализ SQL-запросов с помощью AI

Часто пишете SQL-запросы и хотите быстро оптимизировать их или проверить на ошибки? Используйте этот промпт:

📝 Промпт:


Analyze the following SQL query used in Java. Explain its purpose, optimize it for performance, and suggest alternative approaches. If applicable, discuss indexing strategies and transaction handling.

String sql = "[вставьте ваш SQL-запрос сюда]";


💡 Дополнительные возможности:

— Добавьте Explain how to use PreparedStatement to prevent SQL injection и получите безопасную версию кода.
— Добавьте Suggest a Hibernate or JPA equivalent, если хотите уйти от ручного SQL.
— Добавьте Optimize this for large datasets, если у вас миллионы записей в таблице.

💬 Используете AI для помощи в написании sql-запросов?

🐸 Библиотека джависта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝 💼 IT-конференции: как сходить на мероприятие и извлечь из него максимум пользы

🚀 IT-конференции — это не только про кофе-брейки и бесплатные стикеры. Это шанс завести полезные знакомства, узнать инсайдерскую информацию и найти новые карьерные возможности. Но для этого нужно не просто прийти, а правильно подготовиться и ловить важные моменты.

Как извлечь из мероприятия максимум пользы? Как сделать так, чтобы оно дало не только эмоции, но и реальные бонусы для вашей карьеры?

🔗 Подробнее в статье

🐸 Библиотека джависта
Please open Telegram to view this post
VIEW IN TELEGRAM
🔼 Оптимизация работы с JDBC в высоконагруженных приложениях

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

1️⃣ Настраиваем connection pool

Используйте HikariCP, Apache DBCP или C3P0 вместо стандартного DriverManager. Это позволит переиспользовать соединения, а не открывать новое на каждый запрос.

2️⃣ Используем подготовленные запросы (PreparedStatement)

Во-первых, это снижает нагрузку на базу за счёт кеширования плана запроса. Во-вторых, убирает SQL-инъекции на уровне JDBC.

3️⃣ Выбираем правильный тип курсора ResultSet

— TYPE_FORWARD_ONLY, если нужно просто пробежать по данным.
— TYPE_SCROLL_INSENSITIVE позволяет скроллить данные, но требует больше памяти.
— TYPE_SCROLL_SENSITIVE редко нужен, но обновляет данные в реальном времени.

4️⃣ Ограничиваем выборку данных (LIMIT / FETCH FIRST)

Не забирайте сразу всю таблицу – старайтесь выбирать только нужные поля и ограничивать количество строк.

5️⃣ Выключаем автокоммиты

По умолчанию, каждый запрос в JDBC – это отдельная транзакция. Включите setAutoCommit(false) и коммитите изменения пачками, чтобы уменьшить нагрузку.

6️⃣ Логируем медленные запросы

Если какие-то SQL-запросы выполняются слишком долго – используйте SLF4J + P6Spy или встроенные средства логирования в пуле соединений, чтобы их отлавливать.

💬 Какие техники считаете самыми полезными?

🐸 Библиотека джависта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Какой фреймворк для бэка выбрать?

Сколько разработчиков – столько и мнений. Одни не видят альтернативы Spring Boot, несмотря на его "магичность" и прожорливость. Другие кайфуют от Quarkus за его скорость, но не всегда могут убедить бизнес на него перейти. А кто-то вообще пилит микросервисы на Micronaut и радуется жизни.

💬 Всё ещё Spring или пора изучать что-то новое? Пишите ваше мнение в комментариях

🐸 Библиотека джависта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🔖 Фишка дебага в IntelliJ IDEA: Reset Frame

Если вам приходилось перезапускать весь дебаг из-за ошибки в анализе кода, есть лучший способ – Reset Frame. Он позволяет откатить выполнение метода и повторить его выполнение с начала, без полной перезагрузки приложения.

▪️ Как использовать


1. Запускаем дебаг и доходим до брейкпоинта.
2. Открываем окно Debug.
3. Во вкладке Frames (стек вызовов) выбираем нужный метод.
4. Нажимаем ПКМ → Reset Frame.
5. Код откатится на вход в метод, как будто вы только что в него зашли.

▪️ Когда это полезно


— Ошиблись при анализе и хотите пересмотреть состояние переменных
— Нужно повторно выполнить метод, не перезапуская весь процесс
— Дебажите рекурсию или сложные цепочки вызовов

⚠️ Важно

— Reset Frame не откатывает глобальные изменения (например, изменения в базе или внешних файлах).
— Он работает только в пределах одного метода – не выйдет вернуть выполнение назад на несколько вызовов.

▪️ Как использовать Reset Frame эффективнее

Можно комбинировать его с Evaluate Expression, чтобы перед повторным вызовом метода изменять переменные вручную.

💬 Пользовались Reset Frame раньше или только узнали?

🐸 Библиотека джависта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🏃‍♀️ 40+ каналов, которые должен читать каждый разработчик

Отобрали для вас полезные и проверенные каналы для программистов — в них вы найдете все самое интересное, от технических новостей до практических гайдов.

IT Job Hub | Работа и вакансии в IT — избранные IT-вакансии

Библиотека программиста — новости из мира IT и технологий

Книги для программистов — самые годные книги по любым языкам и стекам

IT-мемы — мемы про жизу айтишника

Proglib Academy — обучение и курсы, чтобы стать топовым специалистом

Азбука айтишника — азы из мира разработки

Библиотека нейросетей — лайфхаки и промпты для разных задач, баттлы нейронок и новости из мира ИИ

Библиотека фронтендера — все о JS, React, Angular и не только

Библиотека мобильного разработчика — лайфхаки и новости из мира Swift и Kotlin

Библиотека хакера — уязвимости, атаки, бэкдоры и как от них защититься

Библиотека тестировщика — самое интересное о том, как крашить код

🦫 Go
Библиотека Go-разработчика
Библиотека задач по Go
Библиотека Go для собеса
Вакансии по Go

#️⃣ C#
Библиотека шарписта
Библиотека задач по C#
Библиотека собеса по C#
Вакансии по C#

🔧 DevOps
Библиотека devops’а
Библиотека задач по DevOps
Библиотека собеса по DevOps
Вакансии по DevOps & SRE

🐘 PHP
Библиотека пхпшника
Библиотека задач по PHP
Библиотека PHP для собеса
Вакансии по PHP, Symfony, Laravel

🐍 Python
Библиотека питониста
Библиотека Python для собеса
Библиотека задач по Python
Вакансии по питону, Django, Flask

☕️ Java
Библиотека джависта
Библиотека задач по Java
Библиотека Java для собеса
Вакансии по Java

📊 Data Science
Библиотека дата-сайентиста
Библиотека задач по Data Science
Библиотека Data Science для собеса
Вакансии по Data Science

🎮 C++
Библиотека C/C++ разработчика
Библиотека задач по C++
Библиотека C++ для собеса
Вакансии по C++

Подписывайтесь на интересные вам каналы и сохраняйте пост в закладки, чтобы не потерять 🔑
Please open Telegram to view this post
VIEW IN TELEGRAM
🛠 Как внедрить CI/CD: 10 самых важных шагов

CI/CD — это ключ к быстрой, качественной и безопасной разработке ПО. Наш гайд поможет вам настроить эффективный пайплайн, автоматизировать рутину и ускорить релизы.

➡️ Что внутри статьи

▪️ Лучшие практики работы с Git
▪️ Автоматизация сборки и тестирования
▪️ Внедрение автоматизированного тестирования
▪️ Эффективное управление зависимостями
▪️ Автоматизированный деплой без простоя
▪️ Настройка мониторинга и логирования

📎 Читайте гайд

Азбука айтишника
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉 Поздравляем с 8 марта

Сегодня отмечаем вклад девушек-разработчиков, аналитиков, тестировщиков, тимлидов и всех, кто влюблён в код. Без вас IT не было бы таким, каким мы его знаем. С праздником, коллеги 💐

Женщины оставили огромный след в истории IT. Если вам кажется, что программирование — это исключительно «мужская территория», взгляните, вот лишь несколько легендарных женщин:

🔹 Ада Лавлейс — автор первой компьютерной программы ещё в 19 веке.
🔹 Грейс Хоппер — создала первый компилятор и популяризировала термин «баг».
🔹 Барбара Лисков — её принцип Liskov Substitution является основой ООП, в том числе в Java.
🔹 Эдит Кларк — первая женщина-инженер, внесшая вклад в вычислительные методы в энергетике.
🔹 Маргарет Гамильтон — разработала софт для посадки «Аполлона-11» на Луну.

А это только малая часть. В статье собраны ещё больше вдохновляющих историй.

🔗 Подробнее в статье

🐸 Библиотека джависта
Please open Telegram to view this post
VIEW IN TELEGRAM
🆕 Java Digest: что нового в мире Java

🔹 JEP-ы в фокусе:


Автонастройка хипа для Serial GC. Теперь JVM сама решает, сколько памяти нужно вашему приложению.
AOT-оптимизации. Меньше возни с кэшем, JVM научилась готовить его сама.
Cooperative JFR Sampling. Профилирование без лишних тормозов.

🔹 Релизы:

— JDK 24 (Build 36) и JDK 25 (Build 9): свежие сборки, багрепорты приветствуются.
— Hibernate ORM 7.0.0 (Beta 4): новая Jakarta Persistence 3.2 и прокачанный анализ моделей.
— Quarkus 3.18.2: фиксы и поддержка последних обновлений зависимостей.
— Micronaut 4.7.5: улучшения в безопасности, валидации и Kafka.

🐸 Библиотека джависта #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое Serial Garbage Collector?

Serial GC — это однопоточный сборщик мусора, работающий по принципу "Stop-the-World". Он останавливает выполнение всех потоков во время сборки мусора и использует копирующий алгоритм для молодых поколений (Young Gen) и компактирующий алгоритм для старших (Old Gen).

🔹 Как работает

1️⃣ В молодом поколении (Minor GC) используется копирующая стратегия: выжившие объекты перемещаются из Eden в Survivor, а из Survivor в Old Gen.
2️⃣ В старом поколении (Major GC / Full GC) выполняется уплотнение памяти для уменьшения фрагментации.
3️⃣ Так как GC работает в одном потоке, во время сборки остановка приложения неизбежна.

🔹 Когда использовать

В одноядерных системах или при ограниченных ресурсах, где многопоточный GC создаст больше нагрузки.
В маленьких JVM (до 1-2 ГБ памяти), где G1 или Parallel GC будут избыточны.
В приложениях без жестких требований к паузам, например, в небольших утилитах или CLI-инструментах.
Please open Telegram to view this post
VIEW IN TELEGRAM
👀 Переживёте ли вы Skynet?

Кто-то считает, что вежливость — базовый навык общения даже с машиной. Кто-то уверен, что железяке безразличны ваши манеры.

Пишете ли вы "Спасибо" и "Пожалуйста" AI? Что в целом думаете на этот счёт?

💬 Делитесь вашим мнением в комментариях.

🐸 Библиотека джависта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🔝 Java наступает Python на пятки

Java захватывает территорию Python на поле искусственного интеллекта — и в корпоративном секторе сопротивление может оказаться бесполезным, считают опрошенные порталом The New Stack эксперты.​

Саймон Риттер, заместитель технического директора компании Azul Systems, утверждает, что 2025-й может стать последним годом господства Python в сфере ИИ. По его словам, исследования показывают, что в течение ближайших 18 месяцев Java может обогнать Python в разработке ИИ-приложений.​

💬 Что думаете, есть ли у Python шансы?

🔗 Подробнее в статье

🐸 Библиотека джависта #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM