Что выведет код?
#Tasks
import java.util.Optional;
public class Task011125 {
public static void main(String[] args) {
Optional<String> opt1 = Optional.ofNullable(null);
Optional<String> opt2 = Optional.of("java");
String result1 = opt1.or(()-> opt2).orElse("default");
String result2 = opt2.filter(s -> s.length() > 10)
.or(()-> Optional.of("fallback"))
.get();
System.out.println(result1);
System.out.println(result2);
}
}
#Tasks
👍1
Варианты ответа:
Anonymous Quiz
50%
java fallback
17%
default java
17%
default fallback
17%
java java
👍1
Вопрос с собеседований
Что такое ForkJoinPool?🤓
Ответ:
ForkJoinPool — это пул потоков, оптимизированный для рекурсивных задач, разделяющихся на подзадачи (fork) и объединяющихся (join).
Используется в parallelStream().
Каждый поток имеет собственную очередь задач, что уменьшает блокировки.
#собеседование
Что такое ForkJoinPool?
Ответ:
Используется в parallelStream().
Каждый поток имеет собственную очередь задач, что уменьшает блокировки.
#собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
История IT-технологий сегодня — 02 ноября
ℹ️ Кто родился в этот день
Леони́д Анато́льевич Ле́вин (род. 2 ноября 1948, Днепропетровск) — советско-американский математик и теоретик информатики, независимо от Стивена Кука сформулировал одну из основ теории NP-полноты и внёс ключевой вклад в теорию вычислительной сложности.
Серге́й Алексе́евич Ле́бедев (20 октября [2 ноября] 1902, Нижний Новгород, Российская империя — 3 июля 1974, Москва, СССР) — советский конструктор вычислительной техники, руководитель разработки первых отечественных ЭВМ (МЭСМ и др.), один из основателей советской компьютерной школы.
🌐 Знаковые события
1988 — «Червь», запущенный студентом Робертом Моррисом, впервые обнаружен в Массачусетском технологическом институте. Вирус поразил компьютерную сеть ARPANET, выводя узлы сети из строя. Студент попал под суд, был оштрафован и 26 июля 1989 условно осуждён.
#Biography #Birth_Date #Events #2Ноября
Леони́д Анато́льевич Ле́вин (род. 2 ноября 1948, Днепропетровск) — советско-американский математик и теоретик информатики, независимо от Стивена Кука сформулировал одну из основ теории NP-полноты и внёс ключевой вклад в теорию вычислительной сложности.
Серге́й Алексе́евич Ле́бедев (20 октября [2 ноября] 1902, Нижний Новгород, Российская империя — 3 июля 1974, Москва, СССР) — советский конструктор вычислительной техники, руководитель разработки первых отечественных ЭВМ (МЭСМ и др.), один из основателей советской компьютерной школы.
1988 — «Червь», запущенный студентом Робертом Моррисом, впервые обнаружен в Массачусетском технологическом институте. Вирус поразил компьютерную сеть ARPANET, выводя узлы сети из строя. Студент попал под суд, был оштрафован и 26 июля 1989 условно осуждён.
#Biography #Birth_Date #Events #2Ноября
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
С 25.10 по 31.10
Предыдущий пост(с 18.10 по 24.10)
Воскресный мотивационный пост:
Измерим твою цену в рублях?
Запись встреч/видео:
Не проводилась
Обучающие статьи:
Java:
Коллекции в Java
Глава 4. Queue и Deque
Практика: проект «Библиотека»
Глава 5. Map — отображения (словари)
Реализации: HashMap, LinkedHashMap, TreeMap и остальные
gRPC
Что такое gRPC и зачем он нужен
Архитектура gRPC: как всё работает под капотом
Полезные статьи и видео:
Поддержка HTTP/3 в Java: что нового в JDK 26 и как это использовать
Транзакции в Spring: сила управления данными
Как и всегда, задачи можно найти под тегом - #Tasks, вопросы с собеседований - #собеседование
Предыдущий пост(с 18.10 по 24.10)
Воскресный мотивационный пост:
Измерим твою цену в рублях?
Запись встреч/видео:
Не проводилась
Обучающие статьи:
Java:
Коллекции в Java
Глава 4. Queue и Deque
Практика: проект «Библиотека»
Глава 5. Map — отображения (словари)
Реализации: HashMap, LinkedHashMap, TreeMap и остальные
gRPC
Что такое gRPC и зачем он нужен
Архитектура gRPC: как всё работает под капотом
Полезные статьи и видео:
Поддержка HTTP/3 в Java: что нового в JDK 26 и как это использовать
Транзакции в Spring: сила управления данными
Как и всегда, задачи можно найти под тегом - #Tasks, вопросы с собеседований - #собеседование
👍2
История IT-технологий сегодня — 03 ноября
ℹ️ Кто родился в этот день
Гейб Ло́ган Нью́элл (англ. Gabe Logan Newell; род. 3 ноября 1962, Колорадо, США), также известен под ником Ге́йбен (в русском произношении Габе́н, англ. Gaben) — американский программист и предприниматель, сооснователь Valve; ключевая фигура в развитии игровой индустрии и платформы цифровой дистрибуции Steam.
Вольфганг Хайдрих (родился 3 ноября 1968 года) — немецко-канадский исследователь в области визуальных вычислений и компьютерной графики, профессор и руководитель центров визуальных вычислений (важные работы по рендерингу и HDR).
Филлип Уолтер Кац (англ. Phillip Walter Katz, 3 ноября 1962 года — 14 апреля 2000 года) — автор формата ZIP/утилиты PKZIP, оказавший значительное влияние на распространение сжатия данных и обмен файлами в 1990-е.
🌐 Знаковые события
1957 — в СССР запущен КА «Спутник-2» с собакой Лайкой на борту. Собака погибла через 7 часов после старта от перегрева.
#Biography #Birth_Date #Events #3Ноября
Гейб Ло́ган Нью́элл (англ. Gabe Logan Newell; род. 3 ноября 1962, Колорадо, США), также известен под ником Ге́йбен (в русском произношении Габе́н, англ. Gaben) — американский программист и предприниматель, сооснователь Valve; ключевая фигура в развитии игровой индустрии и платформы цифровой дистрибуции Steam.
Вольфганг Хайдрих (родился 3 ноября 1968 года) — немецко-канадский исследователь в области визуальных вычислений и компьютерной графики, профессор и руководитель центров визуальных вычислений (важные работы по рендерингу и HDR).
Филлип Уолтер Кац (англ. Phillip Walter Katz, 3 ноября 1962 года — 14 апреля 2000 года) — автор формата ZIP/утилиты PKZIP, оказавший значительное влияние на распространение сжатия данных и обмен файлами в 1990-е.
1957 — в СССР запущен КА «Спутник-2» с собакой Лайкой на борту. Собака погибла через 7 часов после старта от перегрева.
#Biography #Birth_Date #Events #3Ноября
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
История IT-технологий сегодня — 04 ноября
ℹ️ Кто родился в этот день
Илмар Пойканс, более известен как «хакер Нео» (Илмарс П., латыш. Ilmārs Poikāns, род. 4 ноября 1978 года, Латвийская ССР, СССР) — латвийский программист/«хакер» (известен как «Нео»), автор громких взломов и публикаций по информационной безопасности. Совершил самую большую кражу информационных данных[латыш.] в истории Прибалтики, похитив 120 гигабайт данных (7,4 млн документов) из базы данных Службы государственных доходов Латвии
🌐 Знаковые события
1967 — Введена в эксплуатацию Останкинская телебашня.
#Biography #Birth_Date #Events #4Ноября
Илмар Пойканс, более известен как «хакер Нео» (Илмарс П., латыш. Ilmārs Poikāns, род. 4 ноября 1978 года, Латвийская ССР, СССР) — латвийский программист/«хакер» (известен как «Нео»), автор громких взломов и публикаций по информационной безопасности. Совершил самую большую кражу информационных данных[латыш.] в истории Прибалтики, похитив 120 гигабайт данных (7,4 млн документов) из базы данных Службы государственных доходов Латвии
1967 — Введена в эксплуатацию Останкинская телебашня.
#Biography #Birth_Date #Events #4Ноября
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Раздел 6. Коллекции в Java
Глава 5. Map — отображения (словари)
Основные методы: put - глубокое погружение в механизм добавления элементов
Метод put является фундаментальной операцией в интерфейсе Map, выполняющей добавление или обновление пар "ключ-значение". Несмотря на простоту вызова, внутри этой операции скрывается сложный механизм, варьирующийся в зависимости от конкретной реализации Map. Понимание внутренних процессов метода put позволяет разработчикам писать более эффективный код и избегать распространенных ошибок.
Общий алгоритм работы put
При вызове метода put(key, value) в любой реализации Map происходит последовательность взаимосвязанных процессов, которые можно разделить на несколько логических этапов.
Фаза предварительной обработки:
Валидация входных параметров (ключа и значения)
Вычисление хэш-кода ключа (для хэш-базированных реализаций)
Определение целевого местоположения элемента в структуре данных
Фаза поиска и разрешения коллизий:
Поиск существующего элемента с таким же ключом
Обработка коллизий (случаев, когда разные ключи претендуют на одно местоположение)
Принятие решения о добавлении нового элемента или обновлении существующего
Фаза модификации структуры:
Непосредственное добавление или обновление элемента
Балансировка и реструктуризация внутренней структуры данных
Проверка необходимости расширения емкости и выполнение resize операций
Детальный разбор для HashMap
Вычисление хэш-кода и определение индекса
В HashMap процесс начинается с вычисления хэш-кода ключа. Однако простое использование key.hashCode() недостаточно из-за потенциально плохого распределения хэш-кодов. Внутренний механизм применяет дополнительную хэш-функцию, которая "размешивает" биты хэш-кода, чтобы уменьшить количество коллизий. Этот процесс включает XOR старших и младших битов хэш-кода, что улучшает распределение даже для ключей с плохими хэш-функциями.
После вычисления улучшенного хэша определяется индекс бакета в массиве. Индекс вычисляется побитовой операцией AND между хэшем и размером массива минус один. Такой подход работает эффективно только когда размер массива является степенью двойки, что гарантирует равномерное распределение индексов.
Поиск в цепочке коллизий
Когда индекс определен, система проверяет целевой бакет.
Возможны три сценария:
Бакет пуст: Самый простой случай — создается новый узел и помещается в бакет. Операция практически мгновенна.
Бакет содержит один элемент: Происходит сравнение ключей. Если ключи идентичны (по equals), значение обновляется. Если ключи разные — возникает коллизия, и новый элемент добавляется в начало связного списка.
Бакет содержит несколько элементов: Начинается последовательный обход цепочки коллизий. Каждый элемент проверяется на соответствие ключа. Если совпадение найдено — значение обновляется. Если конец цепочки достигнут без нахождения совпадения — новый элемент добавляется в конец списка.
Преобразование в дерево (Java 8+)
В современных версиях Java при достижении цепочкой определенного порога (обычно 8 элементов) происходит преобразование связного списка в красно-черное дерево. Это значительно улучшает производительность поиска в длинных цепочках — с O(n) до O(log n).
Процесс преобразования включает:
Создание дерева из элементов цепочки
Балансировку дерева согласно правилам красно-черных деревьев
Поддержание свойств дерева для обеспечения эффективности операций
#Java #для_новичков #beginner #Map #put
Глава 5. Map — отображения (словари)
Основные методы: put - глубокое погружение в механизм добавления элементов
Метод put является фундаментальной операцией в интерфейсе Map, выполняющей добавление или обновление пар "ключ-значение". Несмотря на простоту вызова, внутри этой операции скрывается сложный механизм, варьирующийся в зависимости от конкретной реализации Map. Понимание внутренних процессов метода put позволяет разработчикам писать более эффективный код и избегать распространенных ошибок.
Общий алгоритм работы put
При вызове метода put(key, value) в любой реализации Map происходит последовательность взаимосвязанных процессов, которые можно разделить на несколько логических этапов.
Фаза предварительной обработки:
Валидация входных параметров (ключа и значения)
Вычисление хэш-кода ключа (для хэш-базированных реализаций)
Определение целевого местоположения элемента в структуре данных
Фаза поиска и разрешения коллизий:
Поиск существующего элемента с таким же ключом
Обработка коллизий (случаев, когда разные ключи претендуют на одно местоположение)
Принятие решения о добавлении нового элемента или обновлении существующего
Фаза модификации структуры:
Непосредственное добавление или обновление элемента
Балансировка и реструктуризация внутренней структуры данных
Проверка необходимости расширения емкости и выполнение resize операций
Детальный разбор для HashMap
Вычисление хэш-кода и определение индекса
В HashMap процесс начинается с вычисления хэш-кода ключа. Однако простое использование key.hashCode() недостаточно из-за потенциально плохого распределения хэш-кодов. Внутренний механизм применяет дополнительную хэш-функцию, которая "размешивает" биты хэш-кода, чтобы уменьшить количество коллизий. Этот процесс включает XOR старших и младших битов хэш-кода, что улучшает распределение даже для ключей с плохими хэш-функциями.
После вычисления улучшенного хэша определяется индекс бакета в массиве. Индекс вычисляется побитовой операцией AND между хэшем и размером массива минус один. Такой подход работает эффективно только когда размер массива является степенью двойки, что гарантирует равномерное распределение индексов.
Поиск в цепочке коллизий
Когда индекс определен, система проверяет целевой бакет.
Возможны три сценария:
Бакет пуст: Самый простой случай — создается новый узел и помещается в бакет. Операция практически мгновенна.
Бакет содержит один элемент: Происходит сравнение ключей. Если ключи идентичны (по equals), значение обновляется. Если ключи разные — возникает коллизия, и новый элемент добавляется в начало связного списка.
Бакет содержит несколько элементов: Начинается последовательный обход цепочки коллизий. Каждый элемент проверяется на соответствие ключа. Если совпадение найдено — значение обновляется. Если конец цепочки достигнут без нахождения совпадения — новый элемент добавляется в конец списка.
Преобразование в дерево (Java 8+)
В современных версиях Java при достижении цепочкой определенного порога (обычно 8 элементов) происходит преобразование связного списка в красно-черное дерево. Это значительно улучшает производительность поиска в длинных цепочках — с O(n) до O(log n).
Процесс преобразования включает:
Создание дерева из элементов цепочки
Балансировку дерева согласно правилам красно-черных деревьев
Поддержание свойств дерева для обеспечения эффективности операций
#Java #для_новичков #beginner #Map #put
👍2
Механизм увеличения размера (resize)
Когда количество элементов превышает пороговое значение (емкость × коэффициент загрузки), запускается процесс resize.
Это одна из самых затратных операций в HashMap:
Создается новый массив бакетов большего размера (обычно в 2 раза)
Все существующие элементы перераспределяются по новому массиву
Для каждого элемента пересчитывается индекс на основе нового размера массива
При перераспределении цепочки коллизий могут разделяться между разными бакетами
Процесс resize особенно важен для производительности, так как неправильный выбор начальной емкости или коэффициента загрузки может привести к частым операциям resize.
Особенности LinkedHashMap
В LinkedHashMap процесс наследует всю сложность HashMap, но добавляет дополнительный слой — поддержание порядка элементов.
При добавлении каждого нового элемента:
Выполняются все стандартные операции HashMap
Новый элемент добавляется в конец двусвязного списка, поддерживающего порядок
Устанавливаются связи между новым элементом и предыдущим хвостом списка
При обновлении существующего элемента в режиме access-order элемент перемещается в конец списка, что требует:
Разрыва связей с соседними элементами в текущей позиции
Установки новых связей для включения элемента в конец списка
Обновления ссылок головы и хвоста списка при необходимости
Специфика TreeMap
В TreeMap процесс put кардинально отличается от хэш-базированных реализаций, так как основан на бинарном дереве поиска:
Поиск позиции для вставки: Начинается с корня дерева, и алгоритм рекурсивно спускается вниз, сравнивая новый ключ с ключами существующих узлов. Сравнение происходит либо через естественный порядок ключей (если они реализуют Comparable), либо через предоставленный Comparator.
Балансировка дерева: После добавления нового узла выполняется балансировка красно-черного дерева.
Этот процесс включает:
Перекрашивание узлов для соблюдения свойств красно-черного дерева
Выполнение вращений (left-rotate, right-rotate) для восстановления баланса
Обеспечение того, что путь от корня к любому листу содержит одинаковое количество черных узлов
Поддержание свойств дерева: Балансировка гарантирует, что дерево остается сбалансированным, обеспечивая логарифмическое время выполнения операций даже в худшем случае.
Обработка особых случаев
Работа с null ключами
Разные реализации Map по-разному обрабатывают null ключи:
HashMap: Разрешает один null ключ, который хранится в бакете с индексом 0
TreeMap: Не разрешает null ключи (выбрасывает NullPointerException), если только не предоставлен специальный компаратор, обрабатывающий null
ConcurrentHashMap: Не разрешает null ключи из-за ограничений многопоточности
Коллизии и равенство ключей
Процесс определения равенства ключей критически важен для работы put.
Он использует комбинацию:
Сравнения хэш-кодов (для быстрой предварительной проверки)
Проверки ссылочного равенства (==) для оптимизации
Вызова метода equals() для точного определения равенства
Разработчикам необходимо обеспечивать согласованность между hashCode() и equals() — если два объекта равны по equals(), их хэш-коды должны быть одинаковыми.
#Java #для_новичков #beginner #Map #put
Когда количество элементов превышает пороговое значение (емкость × коэффициент загрузки), запускается процесс resize.
Это одна из самых затратных операций в HashMap:
Создается новый массив бакетов большего размера (обычно в 2 раза)
Все существующие элементы перераспределяются по новому массиву
Для каждого элемента пересчитывается индекс на основе нового размера массива
При перераспределении цепочки коллизий могут разделяться между разными бакетами
Процесс resize особенно важен для производительности, так как неправильный выбор начальной емкости или коэффициента загрузки может привести к частым операциям resize.
Особенности LinkedHashMap
В LinkedHashMap процесс наследует всю сложность HashMap, но добавляет дополнительный слой — поддержание порядка элементов.
При добавлении каждого нового элемента:
Выполняются все стандартные операции HashMap
Новый элемент добавляется в конец двусвязного списка, поддерживающего порядок
Устанавливаются связи между новым элементом и предыдущим хвостом списка
При обновлении существующего элемента в режиме access-order элемент перемещается в конец списка, что требует:
Разрыва связей с соседними элементами в текущей позиции
Установки новых связей для включения элемента в конец списка
Обновления ссылок головы и хвоста списка при необходимости
Специфика TreeMap
В TreeMap процесс put кардинально отличается от хэш-базированных реализаций, так как основан на бинарном дереве поиска:
Поиск позиции для вставки: Начинается с корня дерева, и алгоритм рекурсивно спускается вниз, сравнивая новый ключ с ключами существующих узлов. Сравнение происходит либо через естественный порядок ключей (если они реализуют Comparable), либо через предоставленный Comparator.
Балансировка дерева: После добавления нового узла выполняется балансировка красно-черного дерева.
Этот процесс включает:
Перекрашивание узлов для соблюдения свойств красно-черного дерева
Выполнение вращений (left-rotate, right-rotate) для восстановления баланса
Обеспечение того, что путь от корня к любому листу содержит одинаковое количество черных узлов
Поддержание свойств дерева: Балансировка гарантирует, что дерево остается сбалансированным, обеспечивая логарифмическое время выполнения операций даже в худшем случае.
Обработка особых случаев
Работа с null ключами
Разные реализации Map по-разному обрабатывают null ключи:
HashMap: Разрешает один null ключ, который хранится в бакете с индексом 0
TreeMap: Не разрешает null ключи (выбрасывает NullPointerException), если только не предоставлен специальный компаратор, обрабатывающий null
ConcurrentHashMap: Не разрешает null ключи из-за ограничений многопоточности
Коллизии и равенство ключей
Процесс определения равенства ключей критически важен для работы put.
Он использует комбинацию:
Сравнения хэш-кодов (для быстрой предварительной проверки)
Проверки ссылочного равенства (==) для оптимизации
Вызова метода equals() для точного определения равенства
Разработчикам необходимо обеспечивать согласованность между hashCode() и equals() — если два объекта равны по equals(), их хэш-коды должны быть одинаковыми.
#Java #для_новичков #beginner #Map #put
👍2
Влияние на производительность
Факторы, влияющие на скорость операции 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