Java программирование
159 subscribers
171 photos
16 videos
73 links
Java программирование

Если во только начинаете изучение java, то этот канал для вас.
Download Telegram
Можно ли хранить null в стандартных коллекциях?

Все интерфейсы Collections Framework позволяют своим реализациям самостоятельно решать, поддерживать ли null-значения. Если реализация не может принять null, она выбрасывает NullPointerException или ClassCastException.

Большинство списков (LinkedList, ArrayList) принимают null без проблем. Большинство очередей (Queue и Deque) не хранят null – возвращая из читающего метода null они сообщают пользователю о пустоте коллекции.

Unmodifiable Maps не допускают null-ов совсем. Обычные изменяемые мапы обычно не испытывают трудности со значениями null. А вот с ключами дело обстоит интереснее.

HashMap не может посчитать hash-сумму от null. Но вместо этого для таких ключей просто используется бакет номер 0.

Иногда этот вопрос дается как задача с подвохом про TreeMap. Nullability её ключей зависит от готовности к этому компаратора. Натуральный порядок (который работает для Comparable ключей) не поддерживает null. Раньше в реализации был баг, который позволял положить значение по ключу null в корень дерева без выброса исключения.

Для значений Set-ов действуют те же правила, что для ключей лежащих в основе их Map-ов.

👉👆
С каждым годом востребованность Kafka растет, а работа с этим инструментом входит в топ-10 ключевых навыков IT-специалистов.

Только за последний месяц можно найти больше 3000 вакансий, где требуется знание Кафки.

Уверенно заявляем: каждому backend-специалисту рано или поздно придется столкнуться с Кафкой — поэтому команда Слёрм создала интенсив по Apache Kafka для разработчиков, специально под ваши задачи.

Курс Кафка для разработчиков идеально подойдёт вам, если:

▫️Вы уже владеете языками Java или Go;

▫️Понимаете goroutine, модульность;

▫️Имеете базовые знания ThreadPool.

28 онлайн-уроков с возможностью обучаться из любой точки мира, доступ на 2 года, AMA-сессии со спикерами и закрытый чат с куратором — уменьшите время на рабочие задачи с Кафкой, получив расширенные знания по работе с инструментом!

После курса вы:

▫️Начнете прекрасно разбираться и ориентироваться в терминологии;

▫️Напишете простейшие клиенты, поймёте внутреннюю архитектуру Кафки

▫️Сможете работать со сложными протоколами и наст...
Правильный способ зацикливания
Media is too big
VIEW IN TELEGRAM
Собеседование Java Spring - Разбор вопросов с собеседований на Java Developer

Собрали самые интересные вопросы с собеседований на Java-разработчика. В видео две части. В первой рассказываем про Java: Коллекции, Hash Code & Equals Contract, Functional interfaces, Stream API, Garbage collector, устройство памяти, heap, concurrency.
Во второй — про Spring: Spring Beans, Spring Data Repository, Аннотации, Programmatic TM, Spring MVC

источник

👉👆
Эй, ChatGPT, ты можешь создать Мону Лизу в CSS? *фактический результат*
This media is not supported in your browser
VIEW IN TELEGRAM
Джун после прочтения документации
Содержит множество проектов на Java, которые могут быть полезны при изучении языка

https://github.com/topics/java

👉👆
Типы кэшей

Если спросить разработчика, что такое кэш, он скорее всего ответит:

— Кэш — хранилище типа ключ-значение. Позволяет снизить количество запросов к БД, другому сервису или не выполнять повторно сложные вычисления

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

1️⃣ Кэш внутри сервиса

Хранится только в оперативной памяти. При выключении сервиса кэш пропадает. При включении — заполняется. Популярны два варианта:

🔸 ConcurrentHashMap: полностью ручное управление. Разработчик пишет код по наполнению кэша, обновлению и удалению значений
🔸 Google Guava Cache: более продвинутый вариант. Очищает кэш, уведомляет об удалении, предоставляет статистику

2️⃣ Удалённый кэш

Не связан с конкретным сервисом и запущен в отдельном процессе
Доступен для нескольких сервисов
Хранит данные на нескольких уровнях — в оперативной памяти и на диске

3️⃣ Распределённый кэш

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

Уровни 2-3 это скорее ступени эволюции кэшей. Большинство реализаций находятся на уровне 4:

4️⃣ In-memory data grid (IMDG)

Распределённый кэш с дополнительными фичами. Например:
▫️ Атомарный апдейт (вместо чтения и перезаписи)
▫️ Подписка на изменения в кэше
▫️ Поддержка транзакций
▫️ SQL-like запросы
▫️ Средства синхронизации (распределённый lock, очередь)
▫️ Продвинутый мониторинг
▫️ Выполнение скриптов

У многих кэшей есть платная и бесплатная версии. Многие фичи из списка выше доступны только платно.

В вакансиях чаще всего встречается Redis, чуть отстаёт Hazelcast. Также видела в проектах Memcached, Ehcache, Aerospike, Ignite/GridGain, Coherence. В их описании нет слова "кэш", как минимум distributed real-time in-memory streaming data platform🙂

Рекомендую погулять по документации того же Redis или Hazelcast, может для вашего проекта найдётся что-то полезное.