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

Связь: @devmangx

РКН: https://clck.ru/3H4WUg
Download Telegram
💡 Java/Spring: отдавайте предпочтение constructor injection вместо @Autowired для полей.

✅ Field injection скрывает обязательные dependencies
✅ Constructor injection делает зависимости явными
✅ Проще писать тесты: можно передать mocks напрямую, без запуска Spring context

#Java #SpringBoot

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Шпаргалка по проектированию веб систем 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
Java-разработчики, CopyOnWriteArrayList создаёт копию всего внутреннего массива при каждом изменении.

Звучит затратно, правда? И всё же в некоторых продакшен-системах он может работать быстрее синхронизированных коллекций.

Почему?

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