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

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

1. Обзор

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

2. Листинг

Если мы хотим вывести список всех файлов в каталоге и пропустить дальнейшее изучение подкаталогов, мы можем просто использовать java.io.File#listFiles :

public Set<String> listFilesUsingJavaIO(String dir) {
return Stream.of(new File(dir).listFiles())
.filter(file -> !file.isDirectory())
.map(File::getName)
.collect(Collectors.toSet());
}

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

1. Обзор

Система модулей платформы Java (JPMS) обеспечивает более надежную инкапсуляцию, большую надежность и лучшее разделение задач.

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

Это может навести нас на мысль, что модульность и слабая связь — это функции, которые просто не могут сосуществовать в одной и той же системе. Но на самом деле могут!

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

2. Родительский модуль

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

1. Обзор

В этой статье мы покажем причину NoSuchFieldError и узнаем, как ее устранить.

2. Ошибка НоСучФилд

Как следует из названия, NoSuchFieldError возникает, когда указанное поле не существует. NoSuchFieldError расширяет класс IncompiledClassChangeError и вызывается, когда приложение пытается получить доступ или изменить поле объекта или статическое поле класса, но в объекте или классе больше нет этого поля .

` Класс IncompileClassChangeError расширяет класс [LinkageError](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/LinkageError.html) и возникает, когда мы вносим несовместимые изменения в определение класса. Наконец, LinkageError расширяет Error` и показывает, что класс имеет некоторую зависимость от другого несовместимо измененного класса.

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

1. Обзор

В этой статье мы увидим, как захватить микрофон и записать входящий звук на Java, чтобы сохранить его в файл WAV. Для захвата входящего звука с микрофона мы используем Java Sound API, часть экосистемы Java.

Java Sound API — это мощный API для захвата, обработки и воспроизведения звука, состоящий из 4 пакетов. Мы сосредоточимся на пакете javax.sound.sampled , который предоставляет все интерфейсы и классы, необходимые для захвата входящего звука .

2. Что такое TargetDataLine ?

TargetDataLine — это тип объекта DataLine , который мы используем для захвата и чтения данных, связанных со звуком, и он собирает данные с устройств захвата звука, таких как микрофоны. `` Интерфейс предоставляет все методы, необходимые для чтения и захвата данных, а также считывает данные из буфера целевой строки данных.

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

1. Обзор

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

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

2. Пример входной строки

Прежде всего, давайте подготовим входную строку в качестве примера:

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

1. Введение

В этом руководстве мы обсудим , как планировщик потоков Java выполняет потоки на основе приоритета . Кроме того, мы рассмотрим типы приоритетов потоков в Java.

2. Типы приоритета

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

  • Минимальный приоритет
  • Нормальный приоритет
  • Максимальный приоритет

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

1. Обзор

Javadoc — это способ создания документации в формате HTML из исходного кода Java.

В этом руководстве мы сосредоточимся на тегах @version и @since в комментариях к документам.

2. Использование @version и @since

В этом разделе мы поговорим о том, как правильно использовать теги @version и @since .

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

1. Обзор

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

Мы также увидим различия в методах fail() между JUnit 4 и JUnit 5 . ``

2. Использование ошибочного утверждения

Утверждение о сбое не проходит тест, безоговорочно вызывая AssertionError .

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

1. Обзор

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

2. Ошибка хранилища сертификатов

Всякий раз, когда приложение Java открывает SSL-соединение с удаленной стороной, оно должно проверить, заслуживает ли сервер доверия или нет, путем проверки своих сертификатов . Если корневой сертификат не содержится в файле хранилища сертификатов, возникает исключение безопасности:

Untrusted: Exception in thread "main" javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

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

1. Введение

Одной из новых функций, которые предлагает нам Java 9 , является возможность создавать JAR-файлы с несколькими выпусками (MRJAR) . Как говорится в предложении по улучшению JDK , это позволяет нам иметь разные версии класса для конкретных выпусков Java в одном и том же JAR.

В этом руководстве мы рассмотрим, как настроить файл MRJAR с помощью Maven.

2. Мавен

Maven — один из наиболее часто используемых инструментов сборки в экосистеме Java; одна из его возможностей — упаковка проекта в JAR.