В видео разбирается, как упростить работу с коллекциями с помощью Stream API: фильтрация, сортировка, группировка и проверка условий.
Автор показывает, как заменить громоздкие императивные конструкции на лаконичный и читаемый код в функциональном стиле.
tags: #полезное
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍3🔥1
Архитектура взаимодействия между клиентом и сервером может быть двух типов: без сохранения состояния (stateless) и с сохранением (stateful).
От этого зависит, как сервер ведёт себя между запросами и что он обязан помнить о клиенте.
Stateless:
▶️ Сервер не хранит никакую информацию о предыдущих действиях клиента.▶️ Каждый запрос полностью самодостаточен и содержит всё необходимое: токен, параметры, контекст.▶️ Легко масштабируется — можно добавлять сервера без учёта состояний.▶️ Пример — REST API с авторизацией по токену в каждом запросе.
Stateful:
▶️ Сервер сохраняет данные о клиенте между запросами — например, сессию после логина.▶️ Клиенту не нужно повторно отправлять данные аутентификации.▶️ Сложнее масштабировать: требуется синхронизация состояния между серверами.▶️ Пример — веб-приложение с авторизацией через серверные сессии.
Понимание этой разницы — основа проектирования стабильных и масштабируемых систем.
tags: #обучение
Please open Telegram to view this post
VIEW IN TELEGRAM
👨💻9👍5❤3
Что выведет код сверху?
Anonymous Quiz
3%
null
30%
Null
31%
NullPointerException
31%
Ошибка
5%
Ничего
❤6🤯4👻4👍1
В статье показано, как с нуля создать простую 3D-игру на Java с графикой и физикой без использования готовых движков и шейдеров.
Автор реализует собственный движок с рендером через OpenGL ES 1.0, палитровыми текстурами, кастомным загрузчиком ресурсов и поддержкой старых устройств.
tags: #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤3
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣49🔥5❤4😁2
Почему метод
clone()
объявлен в классе Object
, а не в интерфейсе Cloneable
?Ответ:
Интерфейс Cloneable при этом — маркерный, без методов. Он служит лишь индикатором того, что объект допускает клонирование. Если объект не реализует Cloneable, а метод clone() всё же вызывается, будет выброшено исключение CloneNotSupportedException. Это позволяет обеспечить контроль над тем, какие классы разрешают копирование, и избежать некорректного поведения при клонировании по умолчанию.
tags: #собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👍5🔥3👨💻2
В видео разбирается, как работает gRPC и в чем он выигрывает у REST при построении микросервисов с высокой нагрузкой и стримингом данных.
Автор показывает полноценную реализацию серверной и клиентской части на Java и Python, от описания proto-файлов до двунаправленной передачи сообщений.
tags: #полезное
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤4🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁32💯9❤3
В чём различие между стеком и кучей в контексте многопоточности?
Ответ:
Куча — это общая область памяти для всех потоков, где размещаются объекты, созданные с помощью new. Из-за совместного доступа к куче возможны гонки данных и проблемы видимости между потоками. Чтобы гарантировать корректность при многопоточном доступе, применяются механизмы синхронизации (synchronized, ReentrantLock, volatile, атомарные классы и др.).
tags: #собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13👍6🔥3
В статье разбирается, как эффективно обойти файловую систему в Java и почему стандартные методы работают медленно.
Автор показывает, как добиться ускорения в несколько раз с помощью рекурсивных, итеративных и многопоточных реализаций на базе ForkJoinPool.
tags: #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤4👍3
🤣11❤4🔥2
Вы знали, что в Java можно задать поведение, которое сработает перед завершением работы приложения?
Для этого существует механизм shutdown hooks — потоки, которые JVM запускает при штатном завершении, например при вызове
System.exit()
или закрытии окна.Thread hook = new Thread(() -> System.out.println("Shutting down, bye!"));
Runtime.getRuntime().addShutdownHook(hook);
Все зарегистрированные потоки запускаются параллельно, и JVM дожидается, пока они завершат выполнение.
Важно: при аварийном завершении — через
kill -9
, Runtime.halt()
или при отключении питания — shutdown hooks не сработают.tags: #обучение
Please open Telegram to view this post
VIEW IN TELEGRAM
❤30👍4🔥3
Почему
@Transactional
не работает при вызове метода внутри того же класса?Ответ:
Чтобы транзакция была активна, метод должен вызываться через прокси, например, путём внедрения собственного бина или получения его из ApplicationContext. Если требуется перехват внутренних вызовов, стоит использовать AspectJ — он работает на уровне байткода и не зависит от прокси-механизма.
tags: #собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤3🔥1
В статье показано, как сократить число SQL-запросов при работе с Spring Data JPA и Hibernate: от устранения лишних
SELECT
до борьбы с N+1.Автор на примерах разбирает, когда использовать
getReferenceById
, @Version
, fetch
join
и @DynamicUpdate
, чтобы ускорить взаимодействие с базой и избежать скрытых тормозов.🔖 Предыдущая часть — КЛИК
tags: #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍2🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣31😁7❤2
Для чего используются статические блоки инициализации?
Ответ:
tags: #собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥6❤4