Java Portal | Программирование
11.3K subscribers
797 photos
59 videos
19 files
590 links
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика

Связь: @devmangx

РКН: https://clck.ru/3H4WUg
加入频道
Генератор надёжных паролей на Java

Пароль с заглавными, строчными, цифрами и спецсимволами? Легко.

С помощью библиотеки Passay можно сгенерировать крепкий 10-символьный пароль буквально в пару строк.

Просто, удобно и безопасно. 😊

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
Понимание OAuth 2.0

OAuth 2.0 расшифровывается как Open Authorization 2.0

Это фреймворк авторизации, а не протокол аутентификации.

Назначение —> позволяет сторонним приложениям получать доступ к пользовательским ресурсам без раскрытия пользовательских учетных данных.

Ключевые роли в OAuth 2.0

— Владелец ресурса - пользователь, владеющий защищёнными ресурсами

— Клиент - приложение, запрашивающее доступ к защищённым ресурсам

— Сервер ресурсов - сервер, на котором хранятся защищённые ресурсы

— Сервер авторизации - сервер, выдающий токены доступа после согласия пользователя

Стандартный поток OAuth (Authorization Code Flow)

1. Клиент перенаправляет пользователя на сервер авторизации
2. Пользователь проходит аутентификацию и предоставляет разрешения
3. Сервер авторизации возвращает клиенту код авторизации
4. Клиент обменивает код на токен доступа
5. Клиент использует токен доступа для обращения к защищённым ресурсам

Лучшие практики реализации

Корректная реализация OAuth 2.0 требует внимания к деталям безопасности

Команды разработки часто используют инструменты ревью кода, чтобы на раннем этапе выявить проблемы

Инструменты вроде @coderabbitai могут помочь обнаружить типовые ошибки при реализации OAuth во время ревью

При работе с протоколами авторизации стоит рассмотреть использование анализа кода с фокусом на безопасность

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
Типы выходных файлов, создаваемых при компиляции Java-кода

.class — > Выполняется в JVM
.jar — > Упаковка кода для повторного использования
.jmod — >Поддерживает модульные Java-приложения
Native Image — > Нативный образ — > Работает без JVM
.war — >Развёртывание веб-приложений на Java
.ear — > Развёртывание корпоративных Java-приложений
.apk — > Установка Java-приложений на Android
.so — > Компиляция в нативный код (shared object)

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
Чему должны научиться Java-разработчики в 2025 году

🔜 Читать: клик

👉 Java Portal | #cтатья
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
👩‍💻 Повышайте качество кода, сохраняя его чистым и единообразным

С этим легко справиться благодаря функциям автоформатирования кода в IntelliJIDEA.

Выделите фрагмент кода и нажмите ⌘⌥L (на macOS) или Ctrl+Alt+L (на Windows/Linux), чтобы отформатировать его согласно настройкам стиля вашего проекта

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
Реальные проекты и отличная возможность для старта карьеры: Летняя школа бэкенд‑разработки Яндекса открыла набор

Начинающие бэкендеры, есть планы на лето? Летняя школа бэкенда — ваш шанс прокачаться в разработке, даже если вы обладаете базовыми знаниями в Python, Java или C++.

Как проходит обучение:
— со 2 июня по 27 июля — онлайн-лекции, семинары и практические задания
— с 28 июля по 24 августа — разработка реальных проектов офлайн или онлайн

Вас ждут:
— работа в фулстек-командах в коворкингах Яндекса
— лекции от специалистов компании в летнем лектории
возможность стать частью команды и получить офер: больше половины выпускников становятся стажерами или сотрудниками компании

Школа бесплатная, но нужно пройти отбор. Если у вас есть минимальный опыт в бэкенде и желание стать частью одной из команд сервисов, то отправляйте заявку на обучение до 27 апреля!
Продвинутые дженерики в Java

Если ты уже знаком с базовыми дженериками, пора копнуть глубже:

—> Ограниченные типы (<T extends Number>) — позволяют задать верхнюю (или нижнюю) границу для параметра типа.
—> Подстановочные знаки (? extends, ? super) — дают гибкость при работе с обобщёнными методами и коллекциями.
—> Стирание типов (type erasure) — механизм, из-за которого вся информация о типах удаляется во время компиляции, и на этапе выполнения остаются только Object и приведения

🎩

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
Основы Java Enum

Синтаксис:👇
enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;
}


Все значения — это константы
Java преобразует их в public static final переменные

Особенности

—> Перечисления (enums) не могут наследовать другие классы, так как уже наследуют java.lang.Enum
—> Enum может реализовывать интерфейсы
—> Конструкторы могут быть только приватными, иначе будет выброшено исключение

Пример Enum с конструктором на фото ☕️

👉 Java Portal | #cтатья
Please open Telegram to view this post
VIEW IN TELEGRAM
ModelMapper — автоматическое отображение объектов в Java

Устали писать вручную мапперы между Entity и DTO?

ModelMapper сделает это за вас 😱

—> Это лёгкая библиотека для Java, которая упрощает маппинг объектов.
—> Идеально подходит для REST API: быстро конвертируйте сущности в DTO и обратно.
—> Поддерживает вложенные объекты, конфигурацию и даже сложные правила сопоставления

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
image_2025-04-18_09-03-49.png
1.5 MB
Что такое MapStruct?

MapStruct — это мощный процессор аннотаций для Java, который автоматически генерирует мапперы между объектами прямо на этапе компиляции

Очень быстрый, безопасный по типам и отлично работает в IDE

Идеально подходит для преобразования между Entity и DTO в REST API 😊

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
Оптимизация вложенных циклов в Java: пример из реальной практики

🔜 Читать: клик

👉 Java Portal | #cтатья
Please open Telegram to view this post
VIEW IN TELEGRAM
SpringBoot_Annotations_RU_Linked.pdf
31.5 KB
Полезный PDF с аннотациями Spring и краткими пояснениями на русском

Удобно для повторения и изучения

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
Оказывается, чтобы расти в доходе в ML и IT, недостаточно закончить топовый матфак, работать 24/7 и знать все фреймворки мира

Да, это круто, но это – далеко не главное. На самом деле чаще всего выигрывают люди с прокаченным софт скиллами – те, кто уверенно ведет диалог и грамотно доносит ценность своих решений.

Вот вам пример: Senior ML-инженер Олег Андриянов рассказывает в своем канале, как его доход вырос за 4 года в 12,5 раз. В блоге куча крутых статей, вот наш топ-3:

Как гарантированно повысить свою зарплату?

– 
Какие 2 ключевых софт-скилла делают тебя на голову выше конкурентов на рынке труда?

– 
Как Олегу удалось вырасти в доходах в 12,5 раз за 4 года?

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

Подписывайся, если хочешь стать незаменимым в любой IT-команде: @andriyanov_leads

Реклама. СЗ Волков Д.Д. ИНН: 370701873479, erid: 2Vtzqwy7BPx
Шпаргалка по сочетаниям клавиш IntelliJ IDEA для Java-разработчиков

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
На фото показана проблема N+1 в JPA и её решение.

🟣findAll() — вызывает 1 запрос к авторам + по 1 запросу на книги каждого автора → N+1 запросов

JOIN FETCH в @Query — решает проблему, загружая авторов и их книги одним SQL-запросом

Показана разница в коде и как избежать лишних запросов при загрузке связанных сущностей (Author → Book)

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
Осталось всего 2 дня — углубитесь в функциональное программирование на Scala в Otus 📢

24 апреля в 20:00 пройдёт открытый вебинар с Алексеем Воронцом — руководителем разработки в Naumen, 14 лет опыта, из них 9 лет на Scala. Он расскажет:

— почему Scala — функциональный язык
— как работать с ключевыми библиотеками
— как повысить выразительность кода

Если вы уже знакомы со Scala или желаете перейти на него и хотите развивать функциональный подход в своих проектах — этот вебинар для вас.

Каждый участник:
— сможет задать вопросы эксперту
— получит скидку на полный курс по Scala-разработке

👉 Не упустите возможность перейти на новый уровень — регистрируйтесь, осталось 2 дня до начала

https://otus.pw/J8FF/

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
This media is not supported in your browser
VIEW IN TELEGRAM
8 алгоритмов балансировки нагрузки, которые стоит знать:

🍩Round Robin – запросы распределяются равномерно между серверами по очереди.

🍩Least Connections – запрос направляется на сервер с наименьшим числом активных соединений.

🍩Weighted Round Robin – серверам присваиваются веса, и запросы распределяются с учетом этих весов.

🍩Weighted Least Connections – учитывается как число соединений, так и вес сервера.

🍩IP Hash - запрос направляется на сервер в зависимости от хэша IP-адреса клиента.

🍩Least Response Time – запрос идет на сервер с наименьшим временем ответа.

🍩Random – сервер выбирается случайным образом.

🍩Least Bandwidth – запрос идет на сервер с наименьшей текущей загрузкой сети.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
image_2025-04-22_06-02-27.png
578.5 KB
Простое объяснение паттерна Фабрика

Вы создаёте уведомления. Сначала у вас только EmailNotification:

new EmailNotification(to, subject, body);


Потом появляются другие типы:

SMSNotification
PushNotification
SlackNotification
WhatsAppNotification

Появляется дублирующийся код:

if (type.equals("email")) new EmailNotification(...)
else if (type.equals("sms")) new SMSNotification(...)
...


Проблемы:

—> Повтор кода.

—> Нарушение принципа Open/Closed.

—> Жёсткая связка с классами.

—> Сложно тестировать и расширять.

Как фабрика вас спасает

Вместо создания объектов напрямую или написания switch/if, вы создаёте NotificationFactory

Фабрика:

—> Скрывает логику создания

—> Решает, какой подкласс вернуть

—> Делает основной код чистым и слабо связанным

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

Пример кода на фото 😊

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Программирование — В С Ё

В 2025 году на кодинге уже не вывезешь, перспектива года - Информационная Безопасность.

Ловите полезные каналы, которые помогут ворваться в новое направление.

👍 ZeroDay — Уроки, эксплуатация уязвимостей с нуля
👍 Белый Хакер — Свежие новости из мира ИБ
😎 Арсенал Безопасника — Все необходимые инструменты
😎 Бункер Хакера — Статьи, книги, шпаргалки и хакинг
👨‍💻 Серверная Админа — Настройка и уроки по компьютерным сетям

📂Вступай и изучай новое направление!
Please open Telegram to view this post
VIEW IN TELEGRAM
Коротко о фабричном методе HashMap::newHashMap

Начиная с JDK 19, класс HashMap предоставляет новый фабричный метод:

var map = HashMap.<Key, String>newHashMap(10);


В этом примере возвращаемая карта будет достаточно большой, чтобы вместить 10 отображений. У неё значение коэффициента загрузки по умолчанию — 0.75. Поэтому фактическая вместимость (capacity) будет больше, чем переданный аргумент 10. Вместимость вычисляется как:

    10        <-- количество отображений
capacity = -----
0.75 <-- коэффициент загрузки


Это отличается от конструктора:

var map = new HashMap<Key, String>(10);


В этом случае аргумент 10 — это начальная вместимость (фактическая вместимость будет степенью двойки).

Также важно: фабричный метод внутри вызывает конструктор 🔧

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