ServletConfig
ServletConfig — это интерфейс в Java, который предоставляет информацию о настройках сервлета. Каждый сервлет веб-приложения имеет свой объект ServletConfig, который позволяет сервлету получать доступ к параметрам и настройкам, определенным в файле развёртывания (web.xml) или в других конфигурационных файлах. Это полезно для настройки и переопределения поведения сервлета без изменения его исходного кода.
#для_продвинутых
ServletConfig — это интерфейс в Java, который предоставляет информацию о настройках сервлета. Каждый сервлет веб-приложения имеет свой объект ServletConfig, который позволяет сервлету получать доступ к параметрам и настройкам, определенным в файле развёртывания (web.xml) или в других конфигурационных файлах. Это полезно для настройки и переопределения поведения сервлета без изменения его исходного кода.
#для_продвинутых
👍8
Чем отличается LongAdder от AtomicLong?
LongAdder — это класс, введенный в Java 8, который представляет собой альтернативу классу AtomicLong для выполнения атомарных операций над переменными типа
Основные отличия LongAdder от AtomicLong:
— LongAdder разделяет внутренние счетчики между потоками, что позволяет потокам увеличивать разные счетчики и объединять их при необходимости. Это уменьшает конкуренцию между потоками, что может повысить производительность.
— Когда несколько потоков одновременно увеличивают LongAdder, он автоматически разделяет изменения между внутренними счетчиками, таким образом, уменьшая ожидание блокировки.
— Для получения общей суммы всех внутренних счетчиков LongAdder предоставляет метод
#для_продвинутых
LongAdder — это класс, введенный в Java 8, который представляет собой альтернативу классу AtomicLong для выполнения атомарных операций над переменными типа
long. Он предоставляет более высокую производительность в некоторых сценариях, чем AtomicLong, особенно в случаях, когда множество потоков изменяют одну и ту же переменную.Основные отличия LongAdder от AtomicLong:
— LongAdder разделяет внутренние счетчики между потоками, что позволяет потокам увеличивать разные счетчики и объединять их при необходимости. Это уменьшает конкуренцию между потоками, что может повысить производительность.
— Когда несколько потоков одновременно увеличивают LongAdder, он автоматически разделяет изменения между внутренними счетчиками, таким образом, уменьшая ожидание блокировки.
— Для получения общей суммы всех внутренних счетчиков LongAdder предоставляет метод
sum(), который объединяет значения счетчиков.#для_продвинутых
👍6
CompletableFuture
CompletableFuture — это класс в Java, введенный в Java 8, который представляет собой асинхронную задачу, которая будет выполнена в будущем и возвращает результат. CompletableFuture предоставляет множество методов для работы с асинхронными задачами, комбинирования их и управления их выполнением.
Основные возможности CompletableFuture включают:
— Вы можете запустить задачу асинхронно и продолжить выполнение кода без блокировки.
— CompletableFuture позволяет комбинировать результаты нескольких задач, выполняя определенные действия при завершении каждой задачи.
— Вы можете указать обработчики ошибок для обработки исключений, возникающих во время выполнения задачи.
— Вы можете блокировать выполнение кода и ждать завершения задачи.
#для_продвинутых
CompletableFuture — это класс в Java, введенный в Java 8, который представляет собой асинхронную задачу, которая будет выполнена в будущем и возвращает результат. CompletableFuture предоставляет множество методов для работы с асинхронными задачами, комбинирования их и управления их выполнением.
Основные возможности CompletableFuture включают:
— Вы можете запустить задачу асинхронно и продолжить выполнение кода без блокировки.
— CompletableFuture позволяет комбинировать результаты нескольких задач, выполняя определенные действия при завершении каждой задачи.
— Вы можете указать обработчики ошибок для обработки исключений, возникающих во время выполнения задачи.
— Вы можете блокировать выполнение кода и ждать завершения задачи.
#для_продвинутых
👍9
ConcurrentSkipListSet
Основные особенности
—
— Элементы в
—
#для_продвинутых
ConcurrentSkipListSet — это реализация интерфейса Set, предназначенная для хранения уникальных элементов в отсортированном порядке. Она основана на структуре данных, называемой Skip List, и обеспечивает эффективную поддержку многопоточности.Основные особенности
ConcurrentSkipListSet:—
ConcurrentSkipListSet не позволяет хранить дублирующиеся элементы. Если вы попытаетесь добавить в него элемент, который уже существует, операция добавления завершится успешно, но элемент не будет дублироваться.— Элементы в
ConcurrentSkipListSet хранятся в отсортированном порядке по их естественному порядку (если элементы реализуют интерфейс Comparable) или с использованием заданного компаратора.—
ConcurrentSkipListSet является потокобезопасной структурой данных. Она обеспечивает безопасное чтение и запись элементов из нескольких потоков без необходимости явной синхронизации.#для_продвинутых
👍5
Sorted set
SortedSet — это интерфейс в Java Collection Framework, который предоставляет упорядочение элементов в множестве. Элементы упорядочиваются с помощью их естественного порядка или с помощью компаратора, который обычно предоставляется при создании отсортированного множества.
SortedSet имеет несколько дополнительных операций, которые позволяют использовать упорядочение элементов:
- first() и last() возвращают первый и последний элементы в множестве соответственно.
- headSet(), tailSet() и subSet() возвращают подмножества элементов, которые находятся до, после или между заданными элементами соответственно.
В этом примере мы создаем TreeSet (класс, который реализует SortedSet) и добавляем в него несколько строк. Поскольку строки реализуют интерфейс Comparable, они упорядочиваются в алфавитном порядке. Затем мы используем различные методы SortedSet для получения первого и последнего элементов, а также подмножеств элементов.
SortedSet — это интерфейс в Java Collection Framework, который предоставляет упорядочение элементов в множестве. Элементы упорядочиваются с помощью их естественного порядка или с помощью компаратора, который обычно предоставляется при создании отсортированного множества.
SortedSet имеет несколько дополнительных операций, которые позволяют использовать упорядочение элементов:
- first() и last() возвращают первый и последний элементы в множестве соответственно.
- headSet(), tailSet() и subSet() возвращают подмножества элементов, которые находятся до, после или между заданными элементами соответственно.
В этом примере мы создаем TreeSet (класс, который реализует SortedSet) и добавляем в него несколько строк. Поскольку строки реализуют интерфейс Comparable, они упорядочиваются в алфавитном порядке. Затем мы используем различные методы SortedSet для получения первого и последнего элементов, а также подмножеств элементов.
👍5❤1🔥1
Сколько объектов станут доступны для сборщика мусора после выполнения строки 1?
Anonymous Quiz
28%
5
36%
6
32%
1
4%
11
👍14
DateTimeFormatter
#для_продвинутых
DateTimeFormatter — это класс в языке программирования Java, который используется для форматирования и разбора даты и времени. Он является частью пакета java.time, который был введен в Java 8 для улучшения работы с датами и временем.DateTimeFormatter позволяет задавать желаемый формат вывода даты и времени, а затем преобразовывать объекты LocalDate, LocalTime, LocalDateTime, ZonedDateTime и другие объекты, представляющие дату и время, в строки с этим форматом, а также выполнять обратную операцию — парсить строки с датой и временем в объекты даты и времени.#для_продвинутых
👍11❤1
Нестатические блоки инициализации
Нестатические блоки инициализации — это специальные блоки кода, которые используются для инициализации полей экземпляра (переменных) объекта при создании экземпляра класса. Они предназначены для выполнения кода инициализации, который должен быть выполнен каждый раз при создании нового объекта класса.
Нестатические блоки инициализации описываются внутри класса и выполняются при создании экземпляра класса перед выполнением конструктора. Они объявляются с использованием фигурных скобок и не имеют имени.
#для_продвинутых
Нестатические блоки инициализации — это специальные блоки кода, которые используются для инициализации полей экземпляра (переменных) объекта при создании экземпляра класса. Они предназначены для выполнения кода инициализации, который должен быть выполнен каждый раз при создании нового объекта класса.
Нестатические блоки инициализации описываются внутри класса и выполняются при создании экземпляра класса перед выполнением конструктора. Они объявляются с использованием фигурных скобок и не имеют имени.
#для_продвинутых
👍18
Double-brace инициализация
Double-brace инициализация — это нестандартная инициализация объекта, которая использует двойные фигурные скобки для создания и инициализации коллекций, таких как списки (List) или множества (Set) в одной строке. Этот метод инициализации обычно используется для краткости кода, но его использование не является рекомендуемой практикой в реальных проектах из-за своей неочевидности и потенциальных проблем.
Конечно, вместо double-brace инициализации лучше использовать стандартные способы создания и инициализации коллекций в Java, такие как вызов конструктора и методов добавления элементов.
#для_продвинутых
Double-brace инициализация — это нестандартная инициализация объекта, которая использует двойные фигурные скобки для создания и инициализации коллекций, таких как списки (List) или множества (Set) в одной строке. Этот метод инициализации обычно используется для краткости кода, но его использование не является рекомендуемой практикой в реальных проектах из-за своей неочевидности и потенциальных проблем.
Конечно, вместо double-brace инициализации лучше использовать стандартные способы создания и инициализации коллекций в Java, такие как вызов конструктора и методов добавления элементов.
#для_продвинутых
👍13🔥2
Что выведет следующий код?
Anonymous Quiz
27%
Произойдет ошибка компиляции
21%
Во время исполнения возникнет исключение NullPointerException
43%
null
9%
1
👍18
Thread.UncaughtExceptionHandler
Интерфейс
Этот метод вызывается, когда в потоке t возникает неотловленное исключение e. Вы можете предоставить свою собственную реализацию этого метода, чтобы определить, как обрабатывать неотловленные исключения. Это может быть полезно, например, для записи информации об исключении в журнал, отправки уведомлений или выполнения других действий, когда неотловленное исключение возникает в приложении.
#для_продвинутых
Thread.UncaughtExceptionHandler — это интерфейс в языке программирования Java, который используется для обработки неотловленных исключений (uncaught exceptions) в потоках (threads). Когда исключение возникает в потоке и не обрабатывается внутри этого потока, оно передается обработчику неотловленных исключений, если такой обработчик был установлен.Интерфейс
Thread.UncaughtExceptionHandler имеет один метод:void uncaughtException(Thread t, Throwable e);
Этот метод вызывается, когда в потоке t возникает неотловленное исключение e. Вы можете предоставить свою собственную реализацию этого метода, чтобы определить, как обрабатывать неотловленные исключения. Это может быть полезно, например, для записи информации об исключении в журнал, отправки уведомлений или выполнения других действий, когда неотловленное исключение возникает в приложении.
#для_продвинутых
👍6❤2
Метод substring()
Метод
#для_начинающих
Метод
substring() имеет два варианта и возвращает новую строку, которая является подстрокой данной строки. Подстрока начинается с символа, заданного индексом, и продолжается до конца данной строки или до endIndex-1, если введен второй аргумент.#для_начинающих
👍1
Метод split
Метод split() используется для разбиения строки на подстроки по заданному разделителю. Он принимает один параметр — регулярное выражение, по которому будет производиться разбиение строки и возвращает массив строк (String[]), содержащий подстроки.
Если в качестве разделителя передать пробел (" "), то строка разбивается по пробелам на отдельные слова. Также можно указать число в качестве второго параметра, это будет лимит количества элементов.
Метод split() используется для разбиения строки на подстроки по заданному разделителю. Он принимает один параметр — регулярное выражение, по которому будет производиться разбиение строки и возвращает массив строк (String[]), содержащий подстроки.
Если в качестве разделителя передать пробел (" "), то строка разбивается по пробелам на отдельные слова. Также можно указать число в качестве второго параметра, это будет лимит количества элементов.
👍12
Метод setUp()
Метод
#для_начинающих
Метод
setUp() (или before(), в предыдущих версиях JUnit) используется для настройки начальных условий перед выполнением каждого тестового метода. Этот метод выполняется перед каждым тестовым методом, который помечен аннотацией @Test. Это позволяет вам подготовить общие данные, создать объекты и настроить другие условия перед тестированием.#для_начинающих
👍11
try-with-resources
try-with-resources (иногда также называемый «try-with-catch») — это конструкция, предназначенная для автоматического управления ресурсами, такими как файлы, сокеты или другие ресурсы, которые должны быть закрыты после использования. Эта конструкция была введена в Java 7 и предоставляет удобный способ обеспечения корректного завершения ресурсов.
Основная идея «try-with-resources» заключается в том, что вы можете объявить один или несколько ресурсов внутри блока
try-with-resources (иногда также называемый «try-with-catch») — это конструкция, предназначенная для автоматического управления ресурсами, такими как файлы, сокеты или другие ресурсы, которые должны быть закрыты после использования. Эта конструкция была введена в Java 7 и предоставляет удобный способ обеспечения корректного завершения ресурсов.
Основная идея «try-with-resources» заключается в том, что вы можете объявить один или несколько ресурсов внутри блока
try, и эти ресурсы будут автоматически закрыты при завершении блока try. Это устраняет необходимость явного вызова метода close() для ресурсов и позволяет избежать утечек ресурсов.👍13
Функция isBlank()
Функция
#для_начинающих
Функция
isBlank() предназначена для проверки, состоит ли строка из пробелов или является пустой после удаления начальных и конечных пробелов (trim).#для_начинающих
Spring Batch
Spring Batch — это фреймворк для обработки больших объемов данных в приложениях Java. Он предоставляет множество инструментов и функциональности для управления и выполнения множества задач в пакетном режиме, таких как чтение, обработка и запись данных. Spring Batch обеспечивает множество возможностей для управления ошибками, масштабируемостью и мониторингом задач.
#для_продвинутых
Spring Batch — это фреймворк для обработки больших объемов данных в приложениях Java. Он предоставляет множество инструментов и функциональности для управления и выполнения множества задач в пакетном режиме, таких как чтение, обработка и запись данных. Spring Batch обеспечивает множество возможностей для управления ошибками, масштабируемостью и мониторингом задач.
#для_продвинутых
❤4
Метод System.nanoTime()
Метод
#для_начинающих
Метод
System.nanoTime() используется для получения текущего времени в наносекундах. Этот метод обычно используется для измерения времени выполнения участка кода или производительности приложения с высокой точностью.#для_начинающих
👍12