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

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

1. Обзор

В этом уроке мы рассмотрим концепцию кражи работы в Java .

2. Что такое кража работы?

Кража работы была введена в Java с целью уменьшения конкуренции в многопоточных приложениях . Это делается с помощью фреймворка fork/join .

2.1. Разделяй и властвуй подход

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

1. Обзор

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

2. Что такое разрушитель?

Disruptor — это библиотека Java с открытым исходным кодом, написанная LMAX. Это среда параллельного программирования для обработки большого количества транзакций с малой задержкой (и без сложностей параллельного кода). Оптимизация производительности достигается за счет дизайна программного обеспечения, использующего эффективность базового оборудования.

2.1. Механическая симпатия

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

1. Обзор

В этом кратком руководстве мы увидим, как настроить параметры ведения журнала в Maven.

2. Командная строка

По умолчанию Maven регистрирует только журналы информации, предупреждений и ошибок . Кроме того, для ошибок он не показывает полную трассировку стека этого журнала. Чтобы увидеть полную трассировку стека, мы можем использовать опцию -e или --errors :

$ mvn -e clean compile
// truncated
cannot find symbol
symbol: variable name
location: class Compiled

at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:213)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)
...

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

1. Обзор

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

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

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

2. Пример нарушения

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

1. Обзор

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

В этом руководстве мы рассмотрим процесс измерения покрытия кода с помощью SonarQube и JaCoCo.

2. Описание

2.1. Покрытие кода

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

1. Обзор

В этой быстрой статье мы сосредоточимся на написании пользовательского фильтра для цепочки фильтров Spring Security.

2. Создание фильтра

Spring Security по умолчанию предоставляет ряд фильтров, и в большинстве случаев их достаточно.

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

1. Введение

Core Java предоставляет базовый API для асинхронных вычислений — будущее. CompletableFuture — одна из новейших его реализаций.

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

Больше статей о Vavr можно найти здесь .

2. Зависимость от Maven

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

1. Обзор

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

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

2. Подготовка

Нам понадобится несколько зависимостей Maven для запуска интеграционных тестов, которые мы будем использовать в этой статье. Прежде всего, нам понадобятся последние тестовые зависимости junit-jupiter-engine , junit-jupiter-api и Spring :

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

1. Обзор

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

Чтобы написать наш файл CSV, мы будем использовать классы в пакете java.io.

Мы поговорим о специальных символах и о том, как с ними обращаться. Мы настроим наш выходной файл на открытие в Microsoft Excel и Google Sheets.

После нашего примера с Java мы кратко рассмотрим некоторые доступные сторонние библиотеки для работы с CSV-файлами.

2. Написание с помощью PrintWriter

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

1. Введение

Сериализация — это преобразование состояния объекта в поток байтов; десериализация делает обратное. Другими словами, сериализация — это преобразование объекта Java в статический поток (последовательность) байтов, который затем можно сохранить в базе данных или передать по сети.

2. Сериализация и десериализация

Процесс сериализации не зависит от экземпляра; например, мы можем сериализовать объекты на одной платформе и десериализовать их на другой. Классы, подходящие для сериализации, должны реализовать специальный интерфейс маркера Serializable.

И ObjectInputStream , и ObjectOutputStream являются классами высокого уровня, расширяющими java.io.InputStream и java.io.OutputStream соответственно. ObjectOutputStream может записывать примитивные типы и графы объектов в OutputStream как поток байтов. Затем мы можем прочитать эти потоки, используя ObjectInputStream .