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

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

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

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

1. Обзор

В этом кратком руководстве мы узнаем, как получить размер файла в Java , используя Java 7, новую Java 8 и Apache Common IO.

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

2. Стандартный ввод-вывод Java

Начнем с простого примера вычисления размера файла — с помощью метода File.length() : ``

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

1. Введение

LinkedList — это двусвязный список, реализующий интерфейсы List и Deque . Он реализует все необязательные операции со списками и разрешает все элементы (включая null ).

2. Особенности

Ниже вы можете найти наиболее важные свойства LinkedList :

  • Операции, индексирующие список, будут проходить по списку с начала или с конца, в зависимости от того, что ближе к указанному индексу.
  • Это не синхронизировано
  • Его итераторы Iterator и ListIterator являются отказоустойчивыми (это означает, что после создания итератора, если список будет изменен, будет выдано исключение ConcurrentModificationException )
  • Каждый элемент представляет собой узел, который хранит ссылку на следующий и предыдущий элементы.
  • Он поддерживает порядок вставки

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

1. Введение

В этой статье мы сосредоточимся на классе PriorityBlockingQueue и рассмотрим несколько практических примеров.

Исходя из предположения, что мы уже знаем, что такое очередь , мы сначала продемонстрируем , как элементы в PriorityBlockingQueue упорядочены по приоритету .

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

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

2. Приоритет элементов

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

1. Обзор

В этой быстрой статье мы рассмотрим несколько простых преобразований объектов String в различные типы данных, поддерживаемые в Java.

2. Преобразование String в int или Integer

Если нам нужно преобразовать String в примитивный тип оболочки int или Integer , мы можем использовать API-интерфейсы parseInt() или valueOf() , чтобы получить соответствующее возвращаемое значение int или Integer :

@Test
public void whenConvertedToInt_thenCorrect() {
String beforeConvStr = "1";
int afterConvInt = 1;

assertEquals(Integer.parseInt(beforeConvStr), afterConvInt);
}

@Test
public void whenConvertedToInteger_thenCorrect() {
String beforeConvStr = "12";
Integer afterConvInteger = 12;

assertEquals(Integer.valueOf(beforeConvStr).equals(afterConvInteger), true);
}

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

1. Обзор

В этой статье мы рассмотрим WeakHashMap из пакета java.util .

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

Проще говоря, WeakHashMap — это основанная на хеш-таблицах реализация интерфейса Map с ключами типа WeakReference .

Запись в WeakHashMap будет автоматически удалена, когда ее ключ больше не используется в обычном режиме, а это означает, что нет ни одной ссылки , указывающей на этот ключ. Когда процесс сборки мусора (GC) отбрасывает ключ, его запись фактически удаляется из карты, поэтому этот класс ведет себя несколько иначе, чем другие реализации Map .

2. Сильные, мягкие и слабые ссылки

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

1. Введение

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

2. Лямбды в Java 8

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

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

1. Введение

В этой статье мы рассмотрим класс ConcurrentModificationException .

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

Наконец, мы попробуем некоторые обходные пути на практических примерах.

2. Запуск исключения ConcurrentModificationException

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

1. Введение

В этой статье мы рассмотрим несколько примеров вопросов и ответов на собеседовании по дженерикам Java.

Обобщения — это основная концепция Java, впервые представленная в Java 5. Из-за этого почти все кодовые базы Java будут использовать их, почти гарантируя, что разработчик в какой-то момент столкнется с ними. Вот почему важно правильно их понимать, и именно поэтому о них, скорее всего, будут спрашивать во время собеседования.

2. Вопросы

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

1. Обзор

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

В этой статье мы рассмотрим некоторые способы обработки исключений при написании лямбда-выражений.

2. Обработка непроверенных исключений

Во-первых, давайте разберемся с проблемой на примере.

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

1. Обзор

В этой статье мы рассмотрим две конструкции из пакета java.util.concurrent : LongAdder и LongAccumulator .

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

2. Длинный сумматор

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