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

1310 записей с тегом "Java"

Посмотреть все теги

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

1. Обзор

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

Сначала мы дадим обзор его назначения и объясним проблему, которую он пытается решить. Затем мы рассмотрим UML-диаграмму State и реализацию практического примера.

2. Шаблон проектирования состояний

Основная идея паттерна State состоит в том, чтобы позволить объекту изменять свое поведение без изменения его класса. Кроме того, благодаря его реализации код должен оставаться чище без множества операторов if/else.

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

1. Введение

В этом кратком руководстве мы проиллюстрируем разницу между Collections.emptyList() и новым экземпляром списка.

2. Неизменность

Основное различие между java.util.Collections.emptyList() и новым списком, например, new ArrayList<>() , заключается в неизменности.

Collections.emptyList() возвращает список ( java.util.Collections.EmptyList ), который нельзя изменить.

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

1. Введение

Эта статья посвящена динамическим прокси-серверам Java — одному из основных механизмов прокси-серверов, доступных нам в этом языке.

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

Динамические прокси позволяют одному классу с одним единственным методом обслуживать несколько вызовов методов к произвольным классам с произвольным количеством методов. Динамический прокси можно рассматривать как своего рода Фасад , но такой, который может претендовать на реализацию любого интерфейса. Под прикрытием он направляет все вызовы методов одному обработчику — методу invoke() .

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

Эта функция встроена в стандартный JDK, поэтому никаких дополнительных зависимостей не требуется.

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

1. Обзор

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

Мы рассмотрим решения, использующие ядро Java и внешние библиотеки.

2. Автобокс

В Java аргументы универсального типа должны быть ссылочными типами. Это означает, что мы не можем сделать что-то вроде List<int> .

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

1. Обзор

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

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

2. Аргумент компилятора

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

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

1. Обзор

Аннотации — форма метаданных, которую можно добавить в код Java. Эти аннотации могут быть обработаны во время компиляции и встроены в файлы классов или могут быть сохранены и доступны во время выполнения с помощью Reflection .

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

2. Аннотация

Java позволяет создавать новые аннотации , используя существующие. В простейшей форме аннотация представлена символом @ , за которым следует имя аннотации:

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

1. Введение

В этом руководстве мы покажем, как анализировать файл XML с помощью StAX. Мы реализуем простой синтаксический анализатор XML и посмотрим, как он работает, на примере.

2. Парсинг с помощью StAX

StAX — одна из нескольких библиотек XML в Java . Это библиотека с эффективным использованием памяти, включенная в JDK, начиная с Java 6. StAX не загружает весь XML в память. Вместо этого он извлекает данные из потока только в прямом направлении. Поток читается объектом XMLEventReader .

3. Класс XMLEventReader

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

1. Обзор

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

2. Мотивация и причины проекта Valhalla

В одном из своих выступлений Брайан Гетц, архитектор языка Java в Oracle, сказал, что одним из основных мотивов проекта Valhalla является желание адаптировать язык Java и среду выполнения к современному оборудованию . Когда был задуман язык Java (примерно 25 лет назад на момент написания), стоимость выборки памяти и арифметической операции была примерно одинаковой.

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

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

1. Обзор

В этом кратком руководстве мы поговорим о библиотеке Classgraph — в чем она помогает и как мы можем ее использовать.

Classgraph помогает нам находить целевые ресурсы в пути к классам Java, создает метаданные о найденных ресурсах и предоставляет удобные API для работы с метаданными.

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

Круто то, что Classgraph работает быстро, так как работает на уровне байт-кода , то есть проверяемые классы не загружаются в JVM и не использует отражение для обработки.

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

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

1. Введение

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

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

2. Настройка

Давайте воспользуемся Maven Central , чтобы найти самую последнюю версию и добавить зависимость Maven: