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

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

1. Обзор

Метод String.trim() удаляет конечные и начальные пробелы. Но простое выполнение L-Trim или R-Trim не поддерживается.

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

2. пока Цикл

Самое простое решение — пройтись по строке, используя пару циклов while .

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

1. Обзор

В этом кратком руководстве мы изучим несколько различных способов записи массива байтов Java в файл. Мы начнем с самого начала, используя пакет Java IO. Далее мы рассмотрим пример с использованием Java NIO. После этого мы будем использовать Google Guava и Apache Commons IO.

2. Java ввод/вывод

Пакет Java IO существует со времен JDK 1.0 и предоставляет набор классов и интерфейсов для чтения и записи данных.

Давайте используем FileOutputStream для записи изображения в файл:

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

1. Обзор

Итак, в ряде других руководств мы говорили о BeanPostProcessor . В этом уроке мы применим их в реальном примере, используя EventBus Guava .

BeanPostProcessor Spring дает нам доступ к жизненному циклу компонента Spring для изменения его конфигурации.

BeanPostProcessor позволяет напрямую модифицировать сами bean-компоненты.

В этом уроке мы рассмотрим конкретный пример этих классов, интегрирующих EventBus Guava .

2. Настройка

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

1. Обзор

В этом руководстве рассматриваются пулы потоков в Java. Мы начнем с различных реализаций в стандартной библиотеке Java, а затем рассмотрим библиотеку Google Guava.

2. Пул потоков

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

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

1. Обзор

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

2. Интерфейс InstantSource

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

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

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

1. Обзор

Java 15 представила множество функций . В этой статье мы обсудим одну из новых функций под названием «Скрытые классы» в JEP-371 . Эта функция представлена как альтернатива Unsafe API , который не рекомендуется использовать за пределами JDK.

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

2. Что такое скрытый класс?

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

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

1. Обзор

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

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

Сначала мы рассмотрим свойства конфигурации JPA для генерации схемы. Затем мы рассмотрим, как использовать эти свойства в Spring Data JPA.

Наконец, мы рассмотрим альтернативу генерации DDL с использованием собственного API Hibernate.

2. Генерация схемы JPA

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

1. Обзор

В этом руководстве мы рассмотрим несколько возможных способов реализации тайм-аутов запросов для Spring REST API.

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

2. @Транзакционные тайм- ауты

Один из способов, которым мы можем реализовать тайм-аут запроса для вызовов базы данных, — это воспользоваться аннотацией Spring @Transactional . У него есть свойство тайм -аута , которое мы можем установить. Значение по умолчанию для этого свойства равно -1, что эквивалентно полному отсутствию времени ожидания. Для внешней настройки значения тайм-аута вместо этого необходимо использовать другое свойство — timeoutString .

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

1. Обзор

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

IntelliJ предоставляет справку и автозаполнение для встроенных bean-компонентов свойств. Тем не менее, требуется небольшая помощь, чтобы предоставить их для пользовательских свойств.

В этом кратком руководстве мы рассмотрим, как предоставить эти свойства IntelliJ, чтобы упростить процесс разработки.

2. Пользовательские свойства

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

1. Весна и Ява

>> Предварительное сравнение библиотек отказоустойчивости на JVM [ blog.frankel.ch ]

JVM, сбои и распределенные системы — обработка повторных попыток, тайм-аутов, прерывания цепи, ограничения скорости и т. д. в экосистеме JVM.

>> Делаем ваш RestTemplate отказоустойчивым с помощью Resilience4J [ arnoldgalovics.com ]

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

>> Трассировка с помощью Spring Boot, OpenTelemetry и Jaeger [ Reflectoring.io ]