Библиотека джависта | Java, Spring, Maven, Hibernate
25.4K subscribers
1.3K photos
26 videos
36 files
2.21K links
Все самое полезное для Java-разработчика в одном канале.

Список наших каналов: https://t.me/proglibrary/8353
Учиться у нас: https://proglib.io/w/907158ab

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

По рекламе: @proglib_adv
Прайс: @proglib_advertising
Download Telegram
🧪 🛣️ Дорожная карта тестировщика в 2023 году

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

А еще у нас есть статья про то, как составить свою собственную дорожную карту и что это такое — прочитать можно тут

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

#туториал
🤔🤔 Познавательный разбор задач с решениями по мотивам Yandex Cup 2023.
В соревновании в каждом из 6 направлений присутствует 5 задач и повышением уровня сложности.

Первая задача рассматривается в материале.

Крутой способ потренить логику, понимание ТЗ и языковые скиллы, а также, вкладывание в сроки т. к. время ограничено.

Изучить

#туториал
🧑‍💻🪜 6 карьерных советов программисту

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

#туториал

Читать статью
⚙️⚙️ Framework для автоматизации тестирования на Java

В качестве языка программирования была выбрана Java, сборщик проектов — Maven, среда тестирования — JUnit5.

Для работы с БД выбран Hibernate. Он широко известен как в кругу автоматизаторов, так и в кругу разработчиков. Hibernate — это фреймворк для Java, предназначен для работы с базой данных. Объекты в нем описываются на языке программирования с применением принципов ООП. Запросы в базу можно писать как в стандартном виде SQL, так и с помощью HQL. HQL — это Hibernate Query Language — объектно‑ориентированный язык запросов, который очень похож на SQL, но, в отличие от него, работает с объектами и полями, в то время как SQL работает с таблицами и столбцами в базе.

В статье будет пример работы с базой.

#туториал
😶‍🌫️😶‍🌫️ Изоляция в тестах с Kafka

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

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

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

#туториал
🤔 Всё ещё используете If/else валидацию в Spring 6.0+ / SpringBoot 3.0+?

Если да, то вам следовало бы обновить свой код, используя приведенные ниже рекомендации.

Чтобы избежать влияния несанкционированных параметров на ваш бизнес, в ваших веб-сервисах должна быть реализована проверка параметров на уровне контроллера! В большинстве случаев параметры запроса можно разделить на два следующих вида:

👉 POST и PUT-запросы, использующие requestBody для передачи параметров.
👉 GET-запросы, использующие requestParam/PathVariable для передачи параметров.

Читать далее

#туториал
Хеш-таблицы в Java: секреты производительности

Посмотрим на проблемы, которые возникают при имплементации хеш-таблицы, когда сложность добавления или удаления из нее не O(1), а линейная, и какие потенциальные атаки можно провести на эту структуру данных (и как их избегают в современных языках программирования на примере Java).

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

#туториал
⚙️⚙️ Настройка HTTPS для контейнеризированных Java-сервисов

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

Изучить

#туториал
Искусство ETL. Пишем собственный движок SQL на Spark

В данной серии статей автор подробно расскажет о том, как написать на Java собственный интерпретатор объектно-ориентированного диалекта SQL с использованием Spark RDD API, заточенный на задачи подготовки и трансформации наборов данных.

Читать статью
#туториал
🎢🎢 Настройка конвейерной сборки Java-проектов в GitLab

Автоматическая доставка проектных артефактов в тестовые и продуктивные среды является безусловной необходимостью современных процессов промышленной разработки ПО.

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

Предполагается, что у вас уже установлены Docker и ssh-сервер и вы немного умеете со всем этим обращаться.

Продолжить можно здесь

#туториал
🤩🤩 Принципы SOLID, только понятно

При написании кода программисту следует руководствоваться определенными правилами. Часто эти правила написаны если не кровью, то слезами разработчиков, которые потом стараются исправить ваш код. Если это вообще возможно :)

Принципы S.O.L.I.D. — это 5 принципов, которые желательно принять во внимание программисту. В этой серии постов мы рассмотрим их один за другим. Принципы справедливы почти для любого современного ЯП.

👉 Single Responsibility Principle — принцип единственной ответственности
👉 Open Closed Principle — принцип открытости-закрытости
👉 Liskov Substitution Principle — принцип подстановки Барбары Лисков
👉 Interface Segregation Principle — принцип разделения интерфейса
👉 Dependency Inversion Principle — принцип инверсии зависимостей

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

#туториал
👉👉 Перемещение указателя на смещение в Kafka

В статье описывается задача, в которой необходимо слушать сообщения с определенного смещения(offset) в Kafka. Для решения данной задачи потребуется интерфейс ConsumerSeekAware и найти позицию с которой нужно начать слушание. Так же необходимо будет создать механизм перезапуска слушателя сообщений Kafka. В примерах кода используются Java и Spring фреймворк.

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

#туториал
😓😓 Перевод Spring Boot приложения с HTTP на HTTPS без ругани браузера

Данная статья расчитана на тех, кто хочет сделать так, чтобы их Spring Boot приложение могло работать с HTTPS без предупреждений со стороны браузера о небезопасном подключении. В этой статье работаем именно со Spring Boot и вшитым в него Apache Tomcat.

Статья игнорирует всевозможные правила безопасности Linux и призвана показать как достичь элементарной работы с HTTPS в Spring Boot, не сильно углубляясь в смежные темы.

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

#туториал
🎢🎢 Генерация OpenAPI из Spring Boot MVC

Очень обширный туториал, который подойдет для среднего и продвинутого специалиста.

Для генерации будет использоваться зависимость springdoc-openapi-starter-webmvc-ui.

Библиотека поддерживает:

👉 OpenAPI 3
👉 Spring Boot V3 (для V2 используется другая зависимость, более подробно в документации)
JSR-303
👉 Swagger UI (будет сгенерирована страница с интерфейсом, через который мы сможем отправлять запросы на сервер)
👉 OAuth 2 (это проверять не будем, но добавим токен типа Bearer)
👉 GraalVM native images (не будем проверять)

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

#туториал
🤔🤔 Custom Kafka Deserializer и Spring’овый контекст

Речь пойдет о том, как инжектить в статические поля, с примерами.

На практике десериализаторов, представленных в ядре Spring, хватает в 99% случаев. Но бывают ситуации, когда всё же требуется описать свою логику предобработки входящего сообщения.

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

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

#туториал