Библиотека джависта | 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
😶‍🌫️😶‍🌫️ Изоляция в тестах с Kafka

Опыт запуска Kafka в тестовых сценариях достиг высокого уровня удобства благодаря использованию Testcontainers и улучшенной поддержке в Spring Boot 3.1 с помощью аннотации @ServiceConnection. Однако написание и поддержка интеграционных тестов с Kafka по-прежнему представляют собой вызов.

В статье описывается подход, который значительно упрощает процесс тестирования, обеспечивая изоляцию тестов и предоставляя набор инструментов для достижения этой цели. При успешной реализации изоляции, тесты с Kafka могут быть организованы так, что на этапе проверки результатов обеспечивается полный доступ ко всем сообщениям, возникшим в ходе теста, избегая при этом необходимости в использовании методов принудительного ожидания, таких как Thread.sleep()

Читать статью

#туториал
ServletContext

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

Некоторые из основных методов ServletContext:

getInitParameter(String name): возвращает значение инициализационного параметра сервлета, указанного по имени.
getInitParameterNames(): возвращает имена всех инициализационных параметров сервлета.
getAttribute(String name): возвращает значение атрибута, сохраненного в контексте сервлета по имени.
setAttribute(String name, Object object): устанавливает значение атрибута в контексте сервлета.
getRequestDispatcher(String path): возвращает объект RequestDispatcher, который используется для включения другого ресурса (например, другого сервлета или JSP-страницы) в текущий запрос.
getRealPath(String path): преобразует виртуальный путь в абсолютный путь на сервере.
Агрегация

Агрегация — это отношение между классами, когда один класс содержит ссылки на объекты другого класса. Важно отметить, что агрегация является одним из способов управления отношениями между классами в ООП.

Примером агрегации может быть, например, класс «Университет», который содержит коллекцию объектов класса «Студент». В этом случае, «Университет» агрегирует (содержит) множество объектов «Студент». Важно, чтобы объекты «Студент» оставались независимыми и могли существовать отдельно от объекта «Университет».
📚Quick Functional Programming (2023)

✍️Автор: David Matuszek

📃Страниц: 128

Функциональное программирование - это мощный инструмент, который вы можете использовать в дополнение ко всем своим обычным инструментам, в той мере, в какой ваш текущий основной язык поддерживает его. Большинство языков имеют хотя бы базовую поддержку.

Попробуйте функциональное программирование. Вы можете быть удивлены, насколько сильно один инструмент может помочь вам в повседневном программировании.


Скачать книгу
📚Pro Jakarta EE 10: Open Source Enterprise Java-based Cloud-native Applications Development (2023)

✍️Автор: Peter Späth

📃Страниц: 512

Эта книга поможет вам создавать более сложные корпоративные облачные и другие приложения на базе Java, которые могут работать в корпоративных и других критически важных средах.

Что внутри:
🔸Создавайте сложные приложения Jakarta EE
🔸Создайте рабочий процесс профессиональной разработки с помощью Jakarta EE
🔸Создавайте более продвинутые приложения для веб-разработки
🔸Работайте с более продвинутыми вспомогательными технологиями для повышения зрелости и стабильности приложений в корпоративной среде

Скачать книгу
Очередной #дайджест по Java

Обязательные знания для тимлида — в помощь всем текущим и будущим руководителям

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

Программирую, учусь и работаю 24/7 но этого все еще мало — история о вредном трудоголизме

Изоляция в тестах с Kafka — опыт запуска Kafka в тестовых сценариях

Создание REST API с использованием Spring WebFlux и Security — рассмотрен пример создания REST API с использованием следующих технологий: Spring Boot 3, Spring Security (JWT), Spring WebFlux, Spring Data R2DBC
PreferencesFactory

Интерфейс PreferencesFactory используется для создания объектов Preferences.

Он предоставляет два метода:
systemRoot(): возвращает корневой узел предпочтений системы.
userRoot(): возвращает корневой узел предпочтений пользователя, вызвавшего метод.

Поставщики новых реализаций Preferences должны предоставлять соответствующие реализации PreferencesFactory, чтобы их можно было установить вместо реализации по умолчанию, зависящей от платформы.
🗺️ Где составить дорожную карту: ТОП-10 сервисов

Сервисы, которые подойдут для составления карьерной карты и не только.

Подборка материалов по теме:
🧪 Дорожная карта тестировщика в 2023 году
🛣️ Дорожная карта: что это, как ее составить и почему она обязательно нужна разработчику
Дорожная карта Java-разработчика в 2023 году

Читать статью

#гайд
Мёртвая нить

Мёртвая нить (deadlock) означает ситуацию, когда две или более нити (потока исполнения) блокируются и ожидают ресурсы, которые удерживают друг друга, что приводит к тому, что ни одна из них не может продолжить свою работу. В итоге программа оказывается в застойном состоянии, так как нити блокируют друг друга и не могут разблокироваться без внешнего вмешательства.

Чтобы избежать мёртвой нити, следует стремиться к тому, чтобы нити блокировали ресурсы в одном и том же порядке. Если это невозможно, можно использовать техники, такие как использование метода tryLock() из java.util.concurrent.locks.Lock, которые позволяют более гибко управлять блокировками и избегать мёртвой нити.
Очередной #дайджест для джавистов

👩‍💻 Spring Cloud Config и Git — хранение и распространение конфигураций приложений

👩‍💻 Динамическое создание слушателей в Kafka — как создать слушатель в Kafka на лету в процессе работы приложения

👩‍💻 Java NIO(New I/O) против IO — рассказ о блокирующем/неблокирующем чтении из потоков данных

👩‍💻 Введение в Java NIO Selector — о том, как работает механизм для мониторинга одного или нескольких каналов NIO и распознавания, когда один или несколько становятся доступными для передачи данных

👩‍💻 Engineering director — разговор о карьерной лестнице технических менеджеров, представляемую исключительно через количественный рост в зоне ответственности
🏗️📄 ТОП-10 онлайн-конструкторов резюме

Эта статья для тех, кто устал скидывать работодателям шаблонное резюме, сделанное на Хедхантере, и хочет попробовать что-нибудь новое.

👉 Читать статью
👉 Зеркало