Для чего в Java используются статические блоки инициализации?
Статические блоки инициализация используются для выполнения кода, который должен выполняться один раз при инициализации класса загрузчиком классов, в момент, предшествующий созданию объектов этого класса при помощи конструктора. Такой блок (в отличие от нестатических, принадлежащих конкретном объекту класса) принадлежит только самому классу (объекту метакласса Class).
Статические блоки инициализация используются для выполнения кода, который должен выполняться один раз при инициализации класса загрузчиком классов, в момент, предшествующий созданию объектов этого класса при помощи конструктора. Такой блок (в отличие от нестатических, принадлежащих конкретном объекту класса) принадлежит только самому классу (объекту метакласса Class).
Fixture Monkey — инструмент на Java для автоматической генерации объектов для тестов
Позволяет упростить написание тестов, облегчая генерацию необходимых тестовых объектов.
При этом можно повторно использовать одни и те же конфигурации объектов в нескольких тестах.
Позволяет упростить написание тестов, облегчая генерацию необходимых тестовых объектов.
При этом можно повторно использовать одни и те же конфигурации объектов в нескольких тестах.
🧔🧔 Как публиковать библиотеку в Maven Central Portal в 2024 году
Начиная с 12 марта 2024 года регистрация на OSSRH портале теперь недоступна. Большинство существующих туториалов в интернете описывают как раз опыт публикации через OSSRH на Maven Central из-за чего после марта 2024 года эти инструкции стали не актуальны для публикации проектов новых авторов.
В статье не пошаговая инструкция, а руководство к действию. Вдумчиво выполняйте этапы публикации и не забывайте про секцию Troubleshoting в конце.
Процесс публикации можно разбить на следующие шаги:
👉 Регистрация на Central Portal и верификация namespace
👉 Создания GPG ключа для подписи артефактов
👉 Локальная публикация проекта для теста
👉 Подключение JReleaser к проекту и публикация локально
👉 Настройка Github Actions для автоматической публикации
Продолжение тут
#туториал
Начиная с 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().
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 приложения
#видео
Процедура проходит с помощью инструментов максимально эффективной и комфортной разработки сервисов и 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 приложения
#видео
Конкурс года в «Библиотеке программиста»: смонтируйте короткий вертикальный ролик формата Shorts/Reels* на тему программирования и разработки — лучший автор получит 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-приложений в режиме реального времени
🔃 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
Кто нужен?
● Энтузиасты (джуны и выше), которые которые разбираются в IT
● Любители книг, которые хотели бы получать деньги за чтение и написание рецензий
● Работаем с самозанятыми (компенсируем налог), ИП
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
✉️ Станьте частью нашей команды — присылайте резюме и примеры работ hello@proglib.io
🤔🤔 Как разработать онлайновый компилятор кода при помощи Java и Docker
Вы когда-нибудь задумывались, как устроены такие платформы как Codeforces и LeetCode? Как именно они компилируют и выполняют код, поступающий от множества пользователей и проверяют его в тестовых кейсах? Как определяют эффективность алгоритмов?
В этой статье будет подробный разбор того, как выстроить высокоэффективную платформу для решения задач.
Исходный код к этой статье выложен на Github
Продолжение тут
#гайд
Вы когда-нибудь задумывались, как устроены такие платформы как Codeforces и LeetCode? Как именно они компилируют и выполняют код, поступающий от множества пользователей и проверяют его в тестовых кейсах? Как определяют эффективность алгоритмов?
В этой статье будет подробный разбор того, как выстроить высокоэффективную платформу для решения задач.
Исходный код к этой статье выложен на Github
Продолжение тут
#гайд
Forwarded from Библиотека devops’а
🍇 18 основных паттернов микросервисной архитектуры
Рассказываем о паттернах, которые представляют собой набор проверенных решений типичных проблем и задач в микросервисной архитектуре. Их правильное применение может значительно улучшить масштабируемость и надежность системы.
Читать статью
Рассказываем о паттернах, которые представляют собой набор проверенных решений типичных проблем и задач в микросервисной архитектуре. Их правильное применение может значительно улучшить масштабируемость и надежность системы.
Читать статью
💥💥 Новый пользовательский интерфейс по-умолчанию в IDE от JetBrains версии 2024.2
В своём блоге JetBrains сообщили, что New UI становится дефолтным пользовательским интерфейсом для IDE начиная с версии 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-критерия, разработанный в процессе решения более крупной задачи
➕ Правильный 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-критерия, разработанный в процессе решения более крупной задачи
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
🐘🔮 Иллюзия согласованности в PostgreSQL: как избежать неприятных сюрпризов
Несмотря на то, что PostgreSQL обеспечивает строгую согласованность данных благодаря использованию многоверсионного параллельного контроля (MVCC), порядок выполнения транзакций может быть неожиданным для клиента. Это может привести к ситуации, когда записи появляются в неправильном порядке. Рассказываем, как и почему это происходит, и что делать для минимизации подобных проблем.
Читать статью
Несмотря на то, что PostgreSQL обеспечивает строгую согласованность данных благодаря использованию многоверсионного параллельного контроля (MVCC), порядок выполнения транзакций может быть неожиданным для клиента. Это может привести к ситуации, когда записи появляются в неправильном порядке. Рассказываем, как и почему это происходит, и что делать для минимизации подобных проблем.
Читать статью