Java Portal | Программирование
11.6K subscribers
1.57K photos
118 videos
45 files
1.63K links
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика

Связь: @devmangx

РКН: https://clck.ru/3H4WUg
Download Telegram
Шпаргалка по проектированию веб систем System Design 101

Подробное руководство по архитектуре веб‑сервисов, которое обязательно стоит сохранить. Это перевод статьи от ByteByteGo опубликованный на Хабре

Сохраняем за лайк ❤️

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Please open Telegram to view this post
VIEW IN TELEGRAM
😁8❤6
Java-разработчики:

Почему ArrayList увеличивает свою ёмкость примерно на 50%, когда заканчивается свободное место? Почему бы просто не удваивать capacity?

И какой здесь компромисс между расходом памяти и производительностью при resize?

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Java-разработчики, знаете разницу между Shallow Copy и Deep Copy?

Вы копируете объект, но что именно создаётся — независимая копия объекта или копия ссылок на вложенные объекты?

Shallow copy копирует ссылки на объекты, поэтому вложенные объекты продолжают указывать на те же области памяти. Deep copy создаёт новый объект и рекурсивно копирует всё его содержимое.

То есть shallow copy копирует структуру со ссылками на вложенные объекты, а deep copy создаёт независимую копию всего дерева объектов.

Вот пример на Java

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Готовимся к System Design интервью уровня Middle и Senior

Полезный конспект по проектированию масштабируемых систем по книге Алекса Сюй System Design Interview.

Схемы, объяснения архитектурных решений и разборы популярных задач: от сокращения ссылок и ограничения частоты запросов до проектирования чатов и распределённых сервисов.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Java-разработчики, в чём разница между volatile и synchronized?

Многие используют их. Но все ли понимают, как они связаны с кешем CPU, видимостью изменений в памяти, атомарностью и взаимным исключением?

volatile гарантирует видимость изменений между потоками. synchronized обеспечивает видимость и взаимное исключение: критическую секцию под одним и тем же монитором может выполнять только один поток за раз.

Вопрос: два потока выполняют count++, а переменная count объявлена как volatile. Потокобезопасен ли такой код? Почему?

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Многие разработчики используют Java каждый день. Но мало кто знает, почему он стал одним из самых успешных языков в мире.

Вот его основные особенности:

Независимость от платформы
Скомпилируйте код в байт-код один раз и запускайте его на любой машине с JVM.

Объектно-ориентированный подход
Всё строится вокруг классов и объектов, что упрощает организацию и сопровождение крупных приложений.

Надёжность
Автоматическая сборка мусора, строгая проверка типов и обработка исключений помогают избежать многих распространённых проблем во время выполнения.

Высокая производительность
JIT-компилятор (Just-In-Time) оптимизирует часто выполняемый код, обеспечивая скорость, близкую к нативной.

Многопоточность
Встроенные API для работы с конкурентностью упрощают параллельное выполнение нескольких задач.

Проверен на практике
Банковские системы, платформы электронной коммерции, Android-приложения и корпоративные бэкенды: Java лежит в основе критически важного ПО в самых разных отраслях.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍2
Бесплатные ресурсы для изучения Java

Конспект Effective Java — HugoMatilla/Effective-JAVA-Summary 

Паттерны проектирования на Java — iluwatar/java-design-patterns 

Подготовка к техническим собеседованиям — kdn251/interviews 

Сохраняйте в закладки!

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
Каждый Java-разработчик использует HashMap. Но задумывались ли вы…

Почему его ёмкость всегда равна степени двойки?
Почему не 10? Почему не 100? Почему Java увеличивает её именно так?

16 → 32 → 64 → 128 → 256

Что сломается или станет работать медленнее, если ёмкость будет равна 15, 30 или 100?

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Java: используйте Deque вместо Stack для работы по принципу LIFO («последним пришёл — первым вышел»).

Stack — устаревший класс, который наследуется от Vector и синхронизирует каждый вызов.

Deque предоставляет те же методы push, pop и peek.
Используйте ArrayDeque: он быстрее и рекомендуется начиная с Java 6.

#Java #Collections

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Во многих приложениях есть такой эндпоинт.

Фронтенд удаляет JWT после того, как пользователь нажимает «Выйти». Но вот вопрос… Действительно ли пользователь вышел из системы?

Что, если:
• JWT скопировали до выхода?
• Срок действия токена ещё не истёк?
• Другое устройство всё ещё использует тот же токен?

Будет ли ваш бэкенд по-прежнему принимать этот JWT? Как вы реализуете выход из системы в архитектуре со stateless JWT?

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Java-разработчики, ConcurrentHashMap потокобезопасен.

Но он не блокирует всю коллекцию при каждом обновлении. Что же происходит, когда несколько потоков изменяют её одновременно?

До Java 8 → блокировки на уровне сегментов.
Java 8+ → CAS + синхронизация на уровне корзин.

Как это улучшает работу с конкурентным доступом? И когда ConcurrentHashMap всё ещё нужны блокировки?

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM