Java Portal | Программирование
13.1K subscribers
971 photos
72 videos
32 files
784 links
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика

Связь: @devmangx

РКН: https://clck.ru/3H4WUg
Download Telegram
Виртуальные потоки с Project Loom

Традиционные потоки в Java мощный, но тяжёлый механизм, который ограничивает масштабируемость в высоконагруженных многопоточных приложениях.

С появлением Project Loom вводится концепция виртуальных потоков т.е. лёгких потоков, управляемых самой JVM, которые упрощают работу с конкурентностью и делают её более эффективной.

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

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
8
Гайд как откатить последний коммит в Git (пошагово)

① Если ещё не делал push:

Оставить изменения в staging (индексе):

git reset --soft HEAD~1


Полностью удалить изменения:

git reset --hard HEAD~1


Отредактировать последний коммит (сообщение или содержимое):

git commit --amend -m "Исправленное сообщение"


② Если уже сделал push:

Используй git revert <хеш>, чтобы создать новый коммит, отменяющий изменения предыдущего.
(Если возникнут конфликты — их придётся разрулить вручную.)

Получи хеш нужного коммита с помощью:

git log


★ Уровень «эксперт»:

Используй git rebase -i для редактирования локального коммит-истории:
Можно менять порядок, объединять, править или удалять коммиты.

После изменений —

git push --force-with-lease


Важно: Делай rebase и push --force-with-lease только если ты один работаешь в ветке
или вся команда согласована и не против переписывания истории.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍4
Пример проекта, демонстрирующий, как использовать GraphQL вместе с Spring Boot.

В репозитории показано:

🔸как настроить GraphQL в Spring-приложении,
🔸как описывать схемы, резолверы и DTO,
🔸как работать с базой данных (MongoDB),
🔸и как совмещать GraphQL с REST-контроллерами.

Подойдёт, если ты хочешь разобраться, как устроен GraphQL в экосистеме Spring или ищешь базу для своего pet-проекта.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍3
Как выдержать нагрузку в 10 000 одновременных пользователей

1. Поставь балансировщик нагрузки (Load Balancer) спереди

- Распределяй трафик между несколькими backend-серверами.
- Инструменты: NGINX, HAProxy, AWS ELB.

2. Масштабируй горизонтально

- Один мощный сервер — нет.
- Используй несколько небольших stateless-серверов за LB.

3. Пиши stateless-сервисы

- Не храни сессии или состояние в оперативке.
- Используй Redis / Memcached или JWT для сессий и авторизации.

4. Используй connection pooling

- Базы «захлебываются» от 10 000 одновременных подключений.
- Ограничь число подключений к БД с каждого сервера через пул (например, HikariCP).

5. Активно кэшируй

Кешировать можно:

- Static files → CDN
- DB-запросы → Redis
- HTML-фрагменты → Edge cache

6. Используй read-replicas

- Разделяй чтение и запись, чтобы масштабировать чтение из базы.

7. Async и очереди (Queued Workloads)

- Переноси тяжёлые задачи (почта, видео и т.д.) в background jobs.
- Используй очереди: SQS, RabbitMQ, Kafka.

8. Включи авто-масштабирование

- Используй инфраструктуру, способную масштабироваться под нагрузку:
AWS EC2 + ASG, GCP GKE и т.д.

9. WebSocket / Реалтайм? Используй gateway-сервисы

- Запускай WebSocket-шлюзы (например, Socket.io за LB).
- Масштабируй через sticky-сессии или pub/sub (Redis, Kafka).

10. Мониторь всё

- Отслеживай CPU, память, задержки, глубину очередей.
- Инструменты: Prometheus + Grafana, Datadog, New Relic.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
8🔥6👍2👀1
Выделение памяти в Java

В Java память по умолчанию выделяется в куче с помощью new.
Это просто, управляется сборщиком мусора и подходит для большинства приложений.

Но если нужны высокая производительность или низкие задержки, можно использовать off-heap память через ByteBuffer.allocateDirect().
Такой подход выделяет память вне кучи, снижает нагрузку на GC и повышает эффективность при работе с большими или долго живущими данными.

Off-heap даёт больше контроля и производительности,
но требует аккуратного управления ресурсами,
так как такая память не очищается автоматически, в отличие от памяти в куче.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥2
Вопросы на собеседование по Spring Boot

1. Как Spring Boot определяет, какие бины создавать при автоконфигурации?

2. Для чего используется аннотация @ConditionalOnProperty?

3. Как реализовать пользовательскую валидацию в Spring Boot с помощью аннотаций?

4. Как @Transactional обрабатывает вложенные транзакции?

5. В чём разница между application.properties и application.yml в Spring Boot?

6. Как вынести конфигурацию Spring Boot для разных окружений (environments)?

7. Что такое WebClient в Spring Boot и чем он отличается от RestTemplate?

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Сохраняем себе: Jimmer

это иммутабельный ORM, заточенный под работу с графами объектов, а не отдельными сущностями.

🔹Авто-генерация DTO
🔹Без N+1 (batch fetch из коробки)
🔹Умные SQL без лишних JOIN'ов
🔹DSL с type-safety
🔹GraphQL + TypeScript-генерация
🔹Кеширование (включая Redis)
🔹Работает через APT/KSP

https://github.com/babyfish-ct/jimmer

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👀53
Объяснение 8 популярных сетевых протоколов в одной диаграмме.

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