Перейти к основному содержимому

· 2 мин. чтения

1. Весна и Ява

>> Советы Spring: интеграция Kotlin DSL с Spring [ spring.io ]

Краткое руководство с примером приложения для мониторинга файловой системы.

>> Сопоставление шаблонов Java: InstanceOf (JEP 305) [ vojtechruzicka.com ]

Усовершенствованная функция instanceof в Java 14 поддерживает неявное приведение типов, что делает код более лаконичным, удобным для чтения и менее подверженным ошибкам .

>> Начало работы с Quarkus [ infoq.com ]

· 6 мин. чтения

1. Обзор

До JUnit 5, чтобы представить классную новую функцию, команда JUnit должна была сделать это с основным API. С JUnit 5 команда решила, что пришло время расширить возможности основного API JUnit за пределы самого JUnit, основная философия JUnit 5 называется « предпочитать точки расширения функциям ».

В этой статье мы сосредоточимся на одном из таких интерфейсов точек расширения — ParameterResolver , который можно использовать для ввода параметров в методы тестирования. Существует несколько различных способов сообщить платформе JUnit о вашем расширении (процесс, известный как «регистрация»), и в этой статье мы сосредоточимся на декларативной регистрации (т. е. регистрации через исходный код).

2. Разрешитель параметров

Внедрение параметров в ваши методы тестирования можно было выполнить с помощью JUnit 4 API, но это было довольно ограничено. С помощью JUnit 5 API Jupiter можно расширить — за счет реализации ParameterResolver — для обслуживания объектов любого типа в ваших методах тестирования. Давайте посмотрим.

· 7 мин. чтения

1. Введение

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

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

2. Предоставление кода авторизации

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

· 3 мин. чтения

1. Обзор

Часто бывает полезно отделить наши службы от их конфигурации. Для двенадцатифакторного приложения мы должны хранить конфигурацию в среде .

Конечно, это означает, что нам понадобится способ внедрить конфигурацию в наш сервис.

В этом руководстве мы добьемся этого, передав переменные среды в контейнер Docker .

2. Использование –env , -e

· 2 мин. чтения

1. Обзор

В этом кратком руководстве мы рассмотрим утверждения AssertJ, посвященные исключениям.

2. Без AssertJ

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

try {
// ...
} catch (Exception e) {
// assertions
}

· 5 мин. чтения

1. Обзор

В этом руководстве мы собираемся изучить различные способы сравнения двух HashMaps в Java .

Мы обсудим несколько способов проверки сходства двух HashMaps . Мы также будем использовать Java 8 Stream API и Guava, чтобы получить подробные различия между различными HashMaps .

2. Использование Map.equals()

Во- первых, мы будем использовать Map.equals() , чтобы проверить, имеют ли два HashMap одинаковые записи:

· 4 мин. чтения

1. Обзор

В этом руководстве мы рассмотрим концепцию поверхностной и глубокой копии HashMap, а также несколько методов копирования HashMap в Java.

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

2. Мелкие и глубокие копии

Во-первых, давайте разберемся с концепцией мелких и глубоких копий в HashMaps .

· 4 мин. чтения

1. Обзор

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

Прежде чем мы начнем, давайте кратко вспомним, как объекты сравниваются в Java.

Обычно объекты могут выражать естественный порядок путем реализации метода compareTo() из интерфейса Comparable . Однако порядок, отличный от естественного, может использоваться через объект Comparator . Мы увидим их более подробно по ходу дела.

2. До Java 8

· 13 мин. чтения

1. Обзор

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

Прежде чем мы приступим к реализации, важно отметить, что основные интерфейсы коллекций List и Set расширяют Collection , а Map — нет.

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

Пары ключ-значение хранятся в так называемых корзинах, которые вместе составляют то, что называется таблицей, которая на самом деле является внутренним массивом.

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

· 4 мин. чтения

1. Введение

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

Чтобы узнать больше об интерфейсе карты , вы можете прочитать эту статью .

2. Итеративный подход