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

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

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

По рекламе: @proglib_adv
Прайс: @proglib_advertising
Download Telegram
Очередной #дайджест для джависта

Как создать кастомный Java Runtimes с помощью Jlink — создается образ, который содержит только те модули, которые нужны приложению, что уменьшает размер приложения и повышает безопасность

Рекурсия в Java с примером решения задачи с LeetCode — про базис, рекурсивные методы и StackOverflowError

ScalaMatsuri 2024 — записи с июньской scala-конференция ScalaMatsuri 2024

webmagic — масштабируемый фреймворк веб-краулера для Java. Охватывает весь жизненный цикл: загрузку, управление url, извлечение контента и его сохранение

Что случилось с Java String Templates — из видео вы узнаете, почему String Templates не попадут в Java 23 и почему фича была задизайнена именно так
Для чего в Java используются статические блоки инициализации?

Статические блоки инициализация используются для выполнения кода, который должен выполняться один раз при инициализации класса загрузчиком классов, в момент, предшествующий созданию объектов этого класса при помощи конструктора. Такой блок (в отличие от нестатических, принадлежащих конкретном объекту класса) принадлежит только самому классу (объекту метакласса Class).
Fixture Monkey — инструмент на Java для автоматической генерации объектов для тестов

Позволяет упростить написание тестов, облегчая генерацию необходимых тестовых объектов.
При этом можно повторно использовать одни и те же конфигурации объектов в нескольких тестах.
🧔🧔 Как публиковать библиотеку в Maven Central Portal в 2024 году

Начиная с 12 марта 2024 года регистрация на OSSRH портале теперь недоступна. Большинство существующих туториалов в интернете описывают как раз опыт публикации через OSSRH на Maven Central из-за чего после марта 2024 года эти инструкции стали не актуальны для публикации проектов новых авторов.

В статье не пошаговая инструкция, а руководство к действию. Вдумчиво выполняйте этапы публикации и не забывайте про секцию Troubleshoting в конце.

Процесс публикации можно разбить на следующие шаги:

👉 Регистрация на Central Portal и верификация namespace
👉 Создания GPG ключа для подписи артефактов
👉 Локальная публикация проекта для теста
👉 Подключение JReleaser к проекту и публикация локально
👉 Настройка Github Actions для автоматической публикации

Продолжение тут

#туториал
Чем отличается ReentrantLock от обычного Lock?

Lock — это интерфейс, ReentrantLock — его реализация. «Reentrant» говорит о том, что один и тот же поток может перезахватывать уже захваченный лок. Интерфейс не требует этого свойства. Обычный блок synchronized тоже является reentrant — вложенная синхронизация на том же мониторе отработает без проблем.

Примеры не-reentrant локов из стандартной библиотеки — представления класса StampedLock, возвращаемые его методами asReadLock() и asWriteLock().
💥💥 Flyway + Spring Boot — настройка и написании миграций баз данных

Процедура проходит с помощью инструментов максимально эффективной и комфортной разработки сервисов и web приложений на Spring Boot в IntelliJ IDEA и административного пользовательского интерфейса на React Admin в VS Code.

00:00 — Зачем нужно версионировать БД?
00:51 — Задачи на сегодня
01:30 — Обзор Spring Boot приложения (via Amplicode Explorer)
03:17 — Подключение и настройка Flyway (генерация скриптов инициализации БД)
05:49 — Модификация JPA модели
06:52 — Генерация Flyway скриптов миграции для синхронизации JPA модели и схемы БД
09:04 — Запуск Spring Boot приложения

#видео
💵⚡️ДАРИМ 40 000₽ ЗА ВИДЕО

Конкурс года в «Библиотеке программиста»: смонтируйте короткий вертикальный ролик формата Shorts/Reels* на тему программирования и разработки — лучший автор получит 40 тысяч рублей 🤑

Подробные условия:
➡️смонтируйте короткий смешной вертикальный ролик (можно и нужно использовать мемы)
➡️отправьте нам в бота @ProglibContest_bot
➡️лучшие ролики (по мнению редакции) мы будем выкладывать в канал и в наш инстаграм*
➡️тот, чей ролик соберет больше всего просмотров в инстаграм*, получит приз — 40 тысяч рублей

Какие ролики мы не принимаем:
😟не вашего авторства (проверим!)
😟длинные, невертикальные, несмешные

Таймлайн:
2 августа — заканчиваем принимать видео
⬇️
3 августа — начинаем загружать лучшие видео в инстаграм
⬇️
9 августа — подводим итоги

*Организация Meta признана экстремистской в РФ
Please open Telegram to view this post
VIEW IN TELEGRAM
#дайджест перед выходными

🔃 Flyway + Spring Boot — настройка и написание миграций баз данных

🔃 Как готовить свой код к виртуальным потокам — почему надо что-то менять, с какими проблемами можно столкнуться и как их диагностировать

🔃 Фрагментация в ZGC — исследование направлено на уменьшение фрагментации в ZGC с помощью Custom Allocators

🔃 Чат WebSocket с использованием структурированного конкаренси, Ox и Tapir — вот вам идея для домашней тренировки новомодных Java 21 и Ox

🔃 Hack a Java application with the debugger — автор рассматривает использование дебаггера для взаимодействия и изменения поведения JVM-приложений в режиме реального времени
✍️ «Библиотека программиста» находится в поиске автора на написание книжных рецензий

Кто нужен?
● Энтузиасты (джуны и выше), которые которые разбираются в IT
● Любители книг, которые хотели бы получать деньги за чтение и написание рецензий
● Работаем с самозанятыми (компенсируем налог), ИП

Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴

✉️ Станьте частью нашей команды — присылайте резюме и примеры работ hello@proglib.io
🤔🤔 Как разработать онлайновый компилятор кода при помощи Java и Docker

Вы когда-нибудь задумывались, как устроены такие платформы как Codeforces и LeetCode? Как именно они компилируют и выполняют код, поступающий от множества пользователей и проверяют его в тестовых кейсах? Как определяют эффективность алгоритмов?
В этой статье будет подробный разбор того, как выстроить высокоэффективную платформу для решения задач.

Исходный код к этой статье выложен на Github

Продолжение тут

#гайд
📐📏 Работа с геометрией в JPA и Spring Boot 3

Автору понадобилось сделать добавление адресов клиентов, и проверку входит ли этот адрес в зону доставки.

В статье будет разобрано, что такое геометрия, как с ней можно работать в sql и no-sql базах данных

Продолжение тут

#гайд
Vert.x — это набор инструментов для создания реактивных приложений на JVM

Ядро Vert.x содержит достаточно низкоуровневую функциональность, включая поддержку HTTP, TCP, доступ к файловой системе и различные другие возможности. Можно использовать Vert.x непосредственно в своих приложениях.
🍇 18 основных паттернов микросервисной архитектуры

Рассказываем о паттернах, которые представляют собой набор проверенных решений типичных проблем и задач в микросервисной архитектуре. Их правильное применение может значительно улучшить масштабируемость и надежность системы.

Читать статью
💥💥 Новый пользовательский интерфейс по-умолчанию в IDE от JetBrains версии 2024.2

В своём блоге JetBrains сообщили, что New UI становится дефолтным пользовательским интерфейсом для IDE начиная с версии 2024.2.

В посте сказано, что новый интерфейс разработан «чтобы уменьшить визуальный беспорядок, обеспечить легкий доступ к основным функциям и постепенно раскрывать более продвинутые функции по мере необходимости. Новый интерфейс чистый и современный, обеспечивает более крупные и простые в использовании элементы управления, единую цветовую палитру, светлые и разборчивые значки, повышенную контрастность и улучшенные акценты».
Очередной #дайджест для джависта

Правильный DevOps для Spring Boot и Java — рассматривается оптимизация сборки образа приложения, изменение конфигурации приложения без релиза и выделение накатки миграции на БД в отдельную джобу

Hibernate JAVA_TIME_USE_DIRECT_JDBC setting — настройка в Hibernate, которая позволяет маппить типы времени из java.time напрямую, без прослойки в виде объекта Timestamp

Jakarta Data и Hibernate — описаны тонкости работы с репозиториями, а еще приводится реализация основных CRUD-операций и более сложных запросов

WebSockets в Scala: интеграция Redis и PostgreSQL — о приложении для чата в памяти, использующее WebSockets, с помощью библиотеки Http4s и не только

Как я решила задачу нахождения t-критерия Стьюдента как функции от доверительного интервала и числа степеней свободы — представлен авторский метод нахождения t-критерия, разработанный в процессе решения более крупной задачи