Java Guru 🤓 – Telegram
Java Guru 🤓
13.1K subscribers
914 photos
17 videos
785 links
Канал с вопросами и задачами с собеседований!

По сотрудничеству и рекламе: @NadikaKir

Канал в перечне РКН: https://vk.cc/cJrSQZ

Мы на бирже: telega.in/channels/javatasks/card?r=lcDuijdm
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
🚀 В микросервисной архитектуре всё держится на надёжных очередях задач. Без них — потери данных, дублирование событий и неожиданные сбои. А значит, пора разобраться, как это устроено в реальных продакшн-системах.

💎 На открытом уроке вы увидите, как с помощью Apache Kafka построить устойчивую систему обмена задачами между микросервисами. Развернём Kafka в Docker, создадим продюсера и консюмера, добавим сбой и проверим, как система гарантированно восстанавливает доставку.

📚 Вы поймёте, чем Kafka превосходит классические очереди (RabbitMQ, ActiveMQ), научитесь подключать её к микросервисам и отлаживать обмен задачами без потерь. После вебинара вы сможете применять эти знания в проектах любого масштаба.

Урок пройдёт 20 ноября в 18:00 (МСК) в преддверие старта курса «Apache Kafka». Зарегистрируйтесь и прокачайте архитектурное мышление! 🔗 https://vk.cc/cRsays

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👍2🔥2
Когда используется StampedLock?

StampedLock – примитив синхронизации, добавленный в Java с версии 8. Общий принцип его работы точно такой же, как у ReadWriteLock: захват неэксклюзивной блокировки (на чтение), и эксклюзивной (на запись). Но есть у этих классов ряд различий в деталях.

Во-первых, если блокировка ReadWriteLock возвращает объекты типа Lock, то StampedLock возвращает числа типа long, которые и называется «штампами». Штамп служит идентификатором лока, он передается параметром в методы по работе с ранее захваченной блокировкой чтения или записи. Специальный штамп 0 означает неудавшийся захват.

StampedLock в отличие от ReentrantReadWriteLock – не реентрант. Это накладывает бóльшую ответственность на программиста: можно устроить дедлок на одном потоке.

В StampedLock расширена функциональность. Новые методы с префиксом try* не висят в ожидании. Методы tryOptimistic* реализуют оптимистичную блокировку. Методы tryConvert* дают возможность изменять «уровень» заблокированности: можно попытаться превратить readLock во writeLock, и наоборот.

Не смотря на похожесть, StampedLock не наследуется от ReadWriteLock. Но для совместимости в нём предусмотрены методы-адаптеры asReadWriteLock, asReadLock и asWriteLock.

Итого, блокировка на штампах решает те же задачи, что ReadWriteLock, но дает больше возможностей и лучшую производительность.


Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥4
Неожиданное введение в Spring MVC

Spring MVC кажется сложным — пока не поймёшь, как он вырос из обычных сервлетов. На вебинаре шаг за шагом соберём свой первый фреймворк и разберёмся, зачем нужен MVC.

Приглашаем на открытый урок.
📅 Встречаемся 24 ноября в 20:00 мск.

Расскажет Александр Оруджев — Senior Software Engineer. Встречаемся на бесплатном практическом уроке от OTUS, где вы вместе с опытным экспертом разберете:
• как сервлеты превратились в контроллеры;
• что делает Spring под капотом;
• как построить собственный мини-MVC и понять принципы работы фреймворка.

После вебинара вы:
— поймёте архитектуру MVC без заучивания;
— перестанете бояться Spring MVC и начнёте использовать его осознанно;
— сделаете первый шаг к системному пониманию backend-разработки.

24 ноября в 20:00 открытый урок проходит в преддверие старта курса «Разработчик на Spring Framework». Все участники получат скидку на обучение.

👉 Регистрация бесплатная, но количество мест ограничено — успей занять своё место: https://vk.cc/cRtZCB

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
🔥32👍2
Чем отличается CountDownLatch от CyclicBarrier?

CountDownLatch, дословно «Запор с обратным отсчетом», – примитив синхронизации из стандартной библиотеки Java. Он останавливает пришедшие потоки, пока внутренний счетчик не достигнет нуля. Чтобы поставить поток на ожидание, нужно вызвать из него метод await().

Начальное значение счетчика задается параметром конструктора, затем уменьшается на 1 методом countDown(). Узнать текущее значение можно с помощью getCount(). Изменение значения счетчика никак не связано с потоками, его можно вызывать откуда и когда угодно.

CyclicBarrier – барьер для потоков, который ломается при достижении критической массы ожидающих. Это тоже класс из Java Concurrency Framework. Поток также встает на ожидание методом await(). Ожидающие потоки называются parties, их лимит также устанавливается в конструкторе.

Технически, parties барьера и count латча – одно и то же, await барьера – это await+countDown латча. В барьере тоже доступна информация о текущем состоянии барьера (методы isBroken, getParties и getNumberWaiting).

Помимо этого, CyclicBarrier дает две дополнительных возможности. Во-первых, в конструктор кроме parties можно передать коллбэк с действием, которое выполнится в момент прорыва барьера. Во-вторых, этот примитив переиспользуется: метод reset() насильно прорывает текущий барьер и устанавливает новый.

Оба этих примитива помогают решить задачу о гарантированных дедлоках. Противоположность латча и барьера – семафор. В нём потоки блокируются при достижении счетчиком нуля.


Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥3
Откатится ли транзакция?
5👍4🔥2
Откатится ли транзакция?
Anonymous Quiz
67%
Да, т.к. transfer() аннотирован @Transactional, при исключении всё откатится
13%
Нет, т.к. @Transactional не работает из-за вызова debit() внутри того же класса
15%
Нет, т.к. RuntimeException не откатывает транзакции
4%
Код не скомпилируется
👍113🔥3
Что будет результатом кода?
👍2🔥2
⌨️ 🤖 Хочешь прокачаться в backend-разработке? Но справишься ли ты с тестом по Kotlin?

🏆 Пройди тест из 10 вопросов, проверь свой уровень знаний и приходи учиться на онлайн-курс «Kotlin Backend Developer. Professional» от OTUS!

На курсе:

✔️ Разработаете monolith, микросервисы и serverless с помощью Kotlin и фреймворков Spring, Ktor и бессерверных библиотек.
✔️ Освоите корутины для асинхронных и многопоточных задач, а также WebSocket, RabbitMQ, Kafka для транспорта.
✔️ Научитесь строить хранилища на Postgres, Cassandra, ArcadeDb и интегрировать OpenAPI с любым фронтендом.

🎫
Курс можно приобрести в рассрочку

➡️ Пройди тест и присоединяйся к группе: https://vk.cc/cREEW4

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥21
Что будет результатом кода?
👍6🔥4
Что будет результатом кода?
Anonymous Quiz
61%
true true
34%
true false
1%
false true
4%
false false
👍8🔥5
Forwarded from Amplicode
🤩 Amplicode – идеальное дополнение к IntelliJ IDEA Ultimate. Огромный гайд для Spring-разработчика

Все уже прекрасно понимают, что Amplicode — неотъемлемая часть тулинга для разработки в OpenIDE, IntelliJ IDEA Community Edition и GigaIDE на Spring Boot.

Но стоит установить Amplicode в IntelliJ IDEA Ultimate и ваша, казалось бы, идеальная IDE станет ещё мощнее и удобнее!

Реклама. ООО "ХОУЛМОНТ". ИНН 6316134393. erid: 2W5zFJqCMHz

📚 Подробнее читайте на Хабре: https://habr.com/ru/companies/haulmont/articles/952644/
🔥42👍1
Что будет результатом кода?
👍3🔥2
Что будет результатом кода?
Anonymous Quiz
5%
Shape
57%
Circle
32%
Ошибка компиляции
6%
null
👍5🔥2
🏗 Объектная модель без боли: как превратить хаос требований в стройную архитектуру

📅 11 декабря | 20:00 мск | бесплатно

🎓 На вебинаре разберём:
– Как анализировать бизнес-требования и выделять ключевые сущности
– Как находить связи между объектами и формировать целостную модель системы
– Как использовать UML-диаграммы для визуализации архитектуры
– Типичные ошибки при анализе предметной области и как их избежать
– Практический кейс: создаём объектную модель с нуля

💡 Кому будет полезно:
– Backend и FullStack разработчикам, желающим понимать архитектуру на уровне сущностей и связей
– Системным аналитикам, формализующим требования и сценарии взаимодействия
– Архитекторам, строящим масштабируемые и устойчивые модели систем
– Начинающим инженерам, осваивающим объектно-ориентированный анализ

После вебинара вы сможете:
– Анализировать предметную область и выделять главные сущности
– Строить понятные и расширяемые объектные модели
– Использовать UML-диаграммы для визуализации архитектуры
– Превращать сложные требования в структурированные проектные решения

💥 Регистрируйтесь и научитесь мыслить как архитектор: https://vk.cc/cRTBMy

Занятие приурочено к старту курса «Архитектура и шаблоны проектирования», где вы освоите DDD, CQRS, Event Storming и научитесь превращать требования в надёжную архитектуру, готовую к росту продукта и команды. 🚀

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👍2🔥21
Что будет результатом кода?
👍2
Что будет результатом кода?
Anonymous Quiz
3%
Ошибка компиляции
7%
3
6%
null
84%
IndexOutOfBoundsException
👍5
🔍Тестовое собеседование с ТехЛидом из МТС уже завтра

3 декабря(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика.

Как это будет:
📂 Илья Аров, старший разработчик в МТС, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Илья будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Илье

Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.

Переходи в нашего бота, чтобы получить ссылку на эфир →
@shortcut_sh_bot

Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥21
Что будет результатом запуска приложения?
👍1👏1
Что будет результатом запуска и обращения на /orders?
👍4