Влияние на производительность
Факторы, влияющие на скорость операции put
Качество хэш-функции: Плохая хэш-функция, создающая много коллизий, значительно замедляет операцию, увеличивая длину цепочек.
Коэффициент загрузки: Высокий коэффициент загрузки уменьшает частоту операций resize, но увеличивает среднюю длину цепочек коллизий.
Начальная емкость: Слишком маленькая начальная емкость приводит к частым операциям resize, слишком большая — к избыточному потреблению памяти.
Размер данных: В TreeMap производительность зависит от сбалансированности дерева, в HashMap — от равномерности распределения хэшей.
Сравнительная производительность
HashMap: O(1) в среднем случае, O(log n) в худшем (с деревьями)
LinkedHashMap: O(1) с небольшими накладными расходами на поддержание порядка
TreeMap: O(log n) в любом случае благодаря сбалансированному дереву
Потокобезопасность и параллелизм
В несинхронизированных реализациях Map операция put не является атомарной, что может привести к:
Потере данных при конкурентной модификации
Повреждению внутренней структуры данных
Бесконечным циклам в цепочках коллизий
ConcurrentHashMap решает эти проблемы через:
Сегментированную блокировку (в старых версиях)
CAS (Compare-And-Swap) операции и fine-grained блокировку (в новых версиях)
Позволяет выполнять конкурентные put операции на разных сегментах
Практические рекомендации
Оптимизация производительности
Для HashMap:
Выбирайте адекватную начальную емкость, чтобы избежать частых resize операций
Используйте ключи с хорошими хэш-функциями
Рассмотрите возможность использования immutable ключей
Для TreeMap:
Обеспечьте согласованность Comparator или естественного порядка
Используйте для данных, которые требуют сортировки или диапазонных запросов
Общие рекомендации:
Избегайте частых put операций в критичных по производительности участках кода
Используйте bulk операции при добавлении больших объемов данных
Рассмотрите альтернативные реализации для специфических use cases
#Java #для_новичков #beginner #Map #put
Факторы, влияющие на скорость операции put
Качество хэш-функции: Плохая хэш-функция, создающая много коллизий, значительно замедляет операцию, увеличивая длину цепочек.
Коэффициент загрузки: Высокий коэффициент загрузки уменьшает частоту операций resize, но увеличивает среднюю длину цепочек коллизий.
Начальная емкость: Слишком маленькая начальная емкость приводит к частым операциям resize, слишком большая — к избыточному потреблению памяти.
Размер данных: В TreeMap производительность зависит от сбалансированности дерева, в HashMap — от равномерности распределения хэшей.
Сравнительная производительность
HashMap: O(1) в среднем случае, O(log n) в худшем (с деревьями)
LinkedHashMap: O(1) с небольшими накладными расходами на поддержание порядка
TreeMap: O(log n) в любом случае благодаря сбалансированному дереву
Потокобезопасность и параллелизм
В несинхронизированных реализациях Map операция put не является атомарной, что может привести к:
Потере данных при конкурентной модификации
Повреждению внутренней структуры данных
Бесконечным циклам в цепочках коллизий
ConcurrentHashMap решает эти проблемы через:
Сегментированную блокировку (в старых версиях)
CAS (Compare-And-Swap) операции и fine-grained блокировку (в новых версиях)
Позволяет выполнять конкурентные put операции на разных сегментах
Практические рекомендации
Оптимизация производительности
Для HashMap:
Выбирайте адекватную начальную емкость, чтобы избежать частых resize операций
Используйте ключи с хорошими хэш-функциями
Рассмотрите возможность использования immutable ключей
Для TreeMap:
Обеспечьте согласованность Comparator или естественного порядка
Используйте для данных, которые требуют сортировки или диапазонных запросов
Общие рекомендации:
Избегайте частых put операций в критичных по производительности участках кода
Используйте bulk операции при добавлении больших объемов данных
Рассмотрите альтернативные реализации для специфических use cases
#Java #для_новичков #beginner #Map #put
👍2
Что выведет код?
#Tasks
import java.util.HashMap;
import java.util.Map;
public class Task041125 {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
String key = "key";
System.out.print(map.put(key, 1) + " ");
System.out.print(map.put(key, 2) + " ");
System.out.print(map.putIfAbsent(key, 3) + " ");
System.out.print(map.compute(key, (k, v) -> null) + " ");
System.out.print(map.put(key, 4));
}
}
#Tasks
👍1
Варианты ответа:
Anonymous Quiz
0%
null 1 2 null 4
13%
null 1 2 null null
50%
null 2 2 null 4
38%
null 1 2 2 null
👍2
Бот заряжен и готов выдавать ссылки!
Переходите и просите у него ссылку)
Чтобы избежать ошибок при работе с ботом нажмите /start
@JFB_admin_bot
Переходите и просите у него ссылку)
Чтобы избежать ошибок при работе с ботом нажмите /start
@JFB_admin_bot
👍1
GraphQL. Как усложнение упрощает жизнь.
В сегодняшнем видео мы рассмотрели что такое GraphQL.
Сегодня я написал и запустил простой демонстрационный код в котором рассмотрел что такое GraphQL.
🔵 Разобрали в чем отличие от REST и gRPC, как это работает.
🔵 Написали файл shema.graphqls, разобрали какие типы данных в нем применяются.
🔵 Как всегда немного подебажили))
Репозиторий на GitHub ждет Ваших звезд☺️
Ссылка на Youtube
Ссылка на Рутьюб
Смотрите, ставьте лайки, подписывайтесь на каналы!✌️
В сегодняшнем видео мы рассмотрели что такое GraphQL.
Сегодня я написал и запустил простой демонстрационный код в котором рассмотрел что такое GraphQL.
Репозиторий на GitHub ждет Ваших звезд
Ссылка на Youtube
Ссылка на Рутьюб
Смотрите, ставьте лайки, подписывайтесь на каналы!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Вопрос с собеседований
Что делает класс AtomicInteger?🤓
Ответ:
AtomicInteger обеспечивает атомарные операции инкремента/декремента без блокировок.
Он использует низкоуровневые CAS (compare-and-swap) операции, что быстрее, чем синхронизация.
Это ключевой инструмент при реализации неблокирующих алгоритмов.
#собеседование
Что делает класс AtomicInteger?
Ответ:
Он использует низкоуровневые CAS (compare-and-swap) операции, что быстрее, чем синхронизация.
Это ключевой инструмент при реализации неблокирующих алгоритмов.
#собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3