1. Введение
В этом кратком руководстве мы узнаем, что вызывает ошибку среды выполнения Java java.lang.UnsupportedClassVersionError: Unsupported major.minor version
и как ее исправить.
2. Взгляд на ошибку
Начнем с примера ошибки:
В этом руководстве мы узнаем, как реализовать кольцевой буфер в Java.
Кольцевой буфер (или Circular Buffer) — это ограниченная круговая структура данных, которая используется для буферизации данных между двумя или более потоками . Поскольку мы продолжаем писать в кольцевой буфер, он циклически повторяется по мере достижения конца.
В этой статье мы собираемся изучить, что такое Vavr , зачем он нам нужен и как его использовать в наших проектах.
Vavr — это функциональная библиотека для Java 8+, предоставляющая неизменяемые типы данных и функциональные управляющие структуры.
Чтобы использовать Vavr, вам нужно добавить зависимость:
В этом уроке мы собираемся сравнить производительность некоторых популярных библиотек примитивных списков в Java .
Для этого мы протестируем методы add(), get()
и contains() для каждой библиотеки.
Теперь давайте выясним, какая библиотека предлагает быстро работающий API коллекций примитивов .
В этом руководстве мы концептуально поймем, что такое сервлеты и контейнеры сервлетов и как они работают .
Мы также увидим их в контексте запроса, ответа, объектов сеанса, общих переменных и многопоточности.
Сервлеты — это компонент среды JEE, используемый для веб-разработки. По сути, это Java-программы, работающие внутри границ контейнера. В целом они отвечают за прием запроса, его обработку и отправку ответа . Введение в сервлеты Java обеспечивает хорошее базовое понимание предмета.
В этом руководстве мы рассмотрим реализацию кругового связанного списка в Java.
Циклический связанный список — это вариант связанного списка , в котором последний узел указывает на первый узел, завершая полный круг узлов . Другими словами, этот вариант связанного списка не имеет пустого
элемента в конце.
Благодаря этому простому изменению мы получаем некоторые преимущества:
Всякий раз, когда мы объявляем переменную или создаем объект, он сохраняется в памяти. На высоком уровне Java делит память на два блока: стек и кучу . Обе памяти хранят определенные типы данных и имеют разные схемы их хранения и доступа.
В этом руководстве мы рассмотрим различные параметры и узнаем, какая область является наиболее подходящей для хранения пула констант String .
Пул констант String
— это специальная область памяти. Когда мы объявляем строковый
литерал, JVM создает объект в пуле и сохраняет его ссылку в стеке. Перед созданием каждого объекта String
в памяти JVM выполняет несколько шагов, чтобы уменьшить нагрузку на память. `` ``
Сборка мусора — это чудо языка программирования Java, предоставляющее нам автоматическое управление памятью. Сборка мусора скрывает детали необходимости ручного выделения и освобождения памяти. Хотя этот механизм является фантастическим, иногда он работает не так, как нам хотелось бы. В этом руководстве мы рассмотрим параметры ведения журнала Java для статистики сборки мусора и узнаем, как перенаправить эту статистику в файл .
Во-первых, давайте рассмотрим флаги JVM, связанные с ведением журнала GC в версиях Java до Java 9.
-XX:+ПечатьГК
В этой быстрой статье мы увидим, как JVM обеспечивает сбор недостижимых, но циклических ссылок.
Во-первых, мы рассмотрим различные типы алгоритмов GC. После этого мы увидим, как циклические ссылки обрабатываются в JVM.
Также стоит отметить, что GC не является частью спецификации JVM и оставлен на усмотрение разработчика . Следовательно, каждая реализация JVM может иметь разные стратегии GC или вообще не иметь их.
В этой статье мы сосредоточимся на одной конкретной реализации JVM: HotSpot JVM. Мы также можем использовать термины JVM и HotSpot JVM взаимозаменяемо на протяжении всей статьи.
При написании программы или разработке производственного корпоративного приложения использование System.out.println
кажется самым простым и легким вариантом. В путь к классам не нужно добавлять дополнительные библиотеки и выполнять дополнительные настройки.
Но использование System.out.println
сопряжено с несколькими недостатками, которые влияют на его удобство использования во многих ситуациях. В этом уроке мы обсудим, почему и когда мы хотим использовать Logger вместо старых простых System.out
и System.err
. Мы также покажем несколько быстрых примеров с использованием среды ведения журналов Log4J2.
Прежде чем мы начнем, давайте рассмотрим необходимые зависимости и конфигурации Maven.