🧑🎓🧑🎓 Expression Problem и Объектные алгебры
Expression Problem (EP) — это классическая задача в программировании на совмещение несовместимого.
Автор задачи формулирует следующие цели: создать такую абстракцию, что позволяла бы расширять иерархию в двух направлениях: добавлять новые классы и добавлять новые методы для обработки иерархии, сохраняя при этом строгую статическую типизацию и не требуя изменений существующего кода.
Продолжение тут
#гайд
Expression Problem (EP) — это классическая задача в программировании на совмещение несовместимого.
Автор задачи формулирует следующие цели: создать такую абстракцию, что позволяла бы расширять иерархию в двух направлениях: добавлять новые классы и добавлять новые методы для обработки иерархии, сохраняя при этом строгую статическую типизацию и не требуя изменений существующего кода.
Продолжение тут
#гайд
Apache SeaTunnel
Высокопроизводительный инструмент распределенной интеграции данных нового поколения, способный ежедневно синхронизировать огромные объемы данных.
SeaTunnel способен стабильно и эффективно синхронизировать данные в режиме реального времени и уже используется в продакшене почти 100 компаниями.
Написан полностью на Java
#софт
Высокопроизводительный инструмент распределенной интеграции данных нового поколения, способный ежедневно синхронизировать огромные объемы данных.
SeaTunnel способен стабильно и эффективно синхронизировать данные в режиме реального времени и уже используется в продакшене почти 100 компаниями.
Написан полностью на Java
#софт
Очередной #дайджест для джависта
⏬ Как создать кастомный Java Runtimes с помощью Jlink — создается образ, который содержит только те модули, которые нужны приложению, что уменьшает размер приложения и повышает безопасность
⏬ Рекурсия в Java с примером решения задачи с LeetCode — про базис, рекурсивные методы и StackOverflowError
⏬ ScalaMatsuri 2024 — записи с июньской scala-конференция ScalaMatsuri 2024
⏬ webmagic — масштабируемый фреймворк веб-краулера для Java. Охватывает весь жизненный цикл: загрузку, управление url, извлечение контента и его сохранение
⏬ Что случилось с Java String Templates — из видео вы узнаете, почему String Templates не попадут в Java 23 и почему фича была задизайнена именно так
⏬ Как создать кастомный Java Runtimes с помощью Jlink — создается образ, который содержит только те модули, которые нужны приложению, что уменьшает размер приложения и повышает безопасность
⏬ Рекурсия в Java с примером решения задачи с LeetCode — про базис, рекурсивные методы и StackOverflowError
⏬ ScalaMatsuri 2024 — записи с июньской scala-конференция ScalaMatsuri 2024
⏬ webmagic — масштабируемый фреймворк веб-краулера для Java. Охватывает весь жизненный цикл: загрузку, управление url, извлечение контента и его сохранение
⏬ Что случилось с Java String Templates — из видео вы узнаете, почему String Templates не попадут в Java 23 и почему фича была задизайнена именно так
Forwarded from Библиотека задач по Java | тесты, код, задания
Forwarded from Библиотека задач по Java | тесты, код, задания
Для чего в 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
● Любители книг, которые хотели бы получать деньги за чтение и написание рецензий
● Работаем с самозанятыми (компенсируем налог), ИП
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
✉️ Станьте частью нашей команды — присылайте резюме и примеры работ [email protected]
Кто нужен?
● Энтузиасты (джуны и выше), которые которые разбираются в IT
● Любители книг, которые хотели бы получать деньги за чтение и написание рецензий
● Работаем с самозанятыми (компенсируем налог), ИП
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
✉️ Станьте частью нашей команды — присылайте резюме и примеры работ [email protected]
🤔🤔 Как разработать онлайновый компилятор кода при помощи Java и Docker
Вы когда-нибудь задумывались, как устроены такие платформы как Codeforces и LeetCode? Как именно они компилируют и выполняют код, поступающий от множества пользователей и проверяют его в тестовых кейсах? Как определяют эффективность алгоритмов?
В этой статье будет подробный разбор того, как выстроить высокоэффективную платформу для решения задач.
Исходный код к этой статье выложен на Github
Продолжение тут
#гайд
Вы когда-нибудь задумывались, как устроены такие платформы как Codeforces и LeetCode? Как именно они компилируют и выполняют код, поступающий от множества пользователей и проверяют его в тестовых кейсах? Как определяют эффективность алгоритмов?
В этой статье будет подробный разбор того, как выстроить высокоэффективную платформу для решения задач.
Исходный код к этой статье выложен на Github
Продолжение тут
#гайд
Forwarded from Библиотека девопса | DevOps, SRE, Sysadmin
🍇 18 основных паттернов микросервисной архитектуры
Рассказываем о паттернах, которые представляют собой набор проверенных решений типичных проблем и задач в микросервисной архитектуре. Их правильное применение может значительно улучшить масштабируемость и надежность системы.
Читать статью
Рассказываем о паттернах, которые представляют собой набор проверенных решений типичных проблем и задач в микросервисной архитектуре. Их правильное применение может значительно улучшить масштабируемость и надежность системы.
Читать статью