Java Portal | Программирование
12.6K subscribers
1.07K photos
85 videos
35 files
920 links
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика

Связь: @devmangx

РКН: https://clck.ru/3H4WUg
Download Telegram
В Java-приложениях одна небольшая настройка может улучшить производительность в 50 раз.

@Transactional  
public List<Order> getRecentOrders() {
return orderRepository.findRecent();
}


Видите здесь что-нибудь странное?

Аннотация @Transactional на методе, который просто делает read/GET вызов.

Хуже всего то, что по умолчанию @Transactional работает в режиме read-write, то есть:

- лишние блокировки ресурсов;
- база вынуждена обрабатывать транзакцию даже для простого SELECT.

Что можно сделать:

@Transactional(readOnly = true)


Это позволит:

Пропустить ненужные flush-операции в Hibernate.
Оптимизировать работу транзакций для SELECT-запросов.
Уменьшить оверхед от прокси и избежать лишних блокировок.


Правила, которые стоит помнить:

Не вешайте @Transactional везде подряд только ради «красоты».
Используйте @Transactional(readOnly = true) для запросов.
Убирайте @Transactional, если методу вообще не нужна транзакция.
Регулярно профилируйте приложение — мелкие ошибки выливаются в огромные потери производительности.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🔥3
⌨️ Как вырасти до Мидла или Синьора в два раза быстрее?

👨‍💻Просто хорошо работать работу не достаточно. Ты делаешь то, что нужно компании, а не то, что повысит твой грейд

Лучший способ вырасти — это персональный план развития от Senior-инженера из БигТеха.

Вот как все работает:
1️⃣ Мок-интервью 1-на-1: Час реалистичного собеса с Senior-инженером из Иннотеха, Сбера или другого бигтеха
2️⃣ Честный фидбек: созвонимся и расскажем твои точки роста, оценим грейд и потенциальный уровень зарплаты
3️⃣Персональный план развития: не просто «учите алгосы», а роадмап с конкретными темами, который приведет тебя к желаемому грейду или офферу. Пример плана развития прикрепили к сообщению

Мы в ШОРТКАТ провели уже почти 1000 таких мок-интервью и получили оценку 4.9/5, поэтому знаем о чем говорим.

📈 Да, и все это за 900 рублей. Почему так дешево?
Мы хотим, чтобы у каждого была возможность проверить в деле наш сервис, а потом уже доверить нам свое развитие.

Переходи в нашего бота и забирай свой мок за 900 рублей → @shortcut_sh_bot

Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
3
This media is not supported in your browser
VIEW IN TELEGRAM
14 алгоритмов сортировки в одной минуте

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7🤯7
Недавно на собеседовании кандидата спросили о четырёх основных функциональных интерфейсах Java 8. Когда его попросили объяснить каждый из них, он растерялся.

Вот эти 4 основных функциональных интерфейса:

I. Predicate<T>
Проверяет, удовлетворяет ли входное значение условию, возвращая true или false.
Как я запоминаю: как фейс-контроллер в клубе, который проверяет, есть ли ты в списке гостей, прежде чем пустить внутрь.

II. Function<T, R>
Принимает один аргумент и возвращает один результат, трансформируя данные.
Как я запоминаю: торговый автомат, который принимает монету (вход) и выдает газировку (выход).

III. Supplier<T>
Предоставляет результат без необходимости передавать аргументы, как фабричный метод.
Как я запоминаю: волшебная шляпа, из которой по запросу достается кролик, без предварительных условий.

IV. Consumer<T>
Принимает входное значение и выполняет над ним действие, но ничего не возвращает.
Как я запоминаю: мусорное ведро, которое принимает твой мусор (вход) и просто утилизирует его, без всякой «квитанции» на выходе.

На скрине пример, который использует все эти 4 интерфейса.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
17👍8
Маршрут построен: в пятницу – на VK JT Meetup!

Это неформальная встреча для ML-инженеров и Java-разработчиков от VK.

О чём расскажут:
• Какие вызовы возникают перед бэкендером в процессе создания B2B-продукта
• Как строят единую инфраструктуру поисковой платформы

А также поделятся пошаговым гайдом по выпуску RAG в прод

Дальше гостей ждут два потока: нетворкинг-зона и групповое решение кейсов по ML и Java.

Мероприятие пройдёт только офлайн — редкий шанс пообщаться с коллегами, задать вопросы экспертам и выиграть призы от VK. Регистрируйтесь!

📍 Нижний Новгород, только офлайн
📅 3 октября, сбор с 18:00
🎟 Вход по регистрации
1
Парсинг на Java. От основ до парсинга Яндекс Карт

Сегодня разбираем основы парсинга на Java с практическим примером на Яндекс Карт.

В статье рассматривается, что такое HTTP, как работают методы запросов, как использовать HttpClient в Java 11+ для отправки GET и POST-запросов, как обрабатывать HTTP-ответы и извлекать данные. Всё это показано на примере парсинга данных с внешнего сервера через Яндекс Карты, чтобы дать полное представление о работе с сетевыми запросами в Java.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
В продакшн-коде использование длинных цепочек if-else обходится слишком дорого -> лишний else может привести к падению приложения. Понимание того, чем их заменить, отличает джуна от сеньора.

if (paymentType.equals("creditcard")) {
processCreditCard(payment);
} else if (paymentType.equals("upi")) {
processUpi(payment);
} else if (paymentType.equals("crypto")) {
processCrypto(payment);
}


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

Когда логика усложняется, код становится трудным для тестирования, расширения и чтения.

Что делают опытные Java-разработчики? Они часто заменяют такие конструкции паттерном Strategy.

Strategy можно сравнить с выбором способа добраться до аэропорта. Вместо одной гигантской функции с if-else на тему «поехать на автобусе», «взять такси» или «сесть на поезд» ты создаёшь отдельную «стратегию» под каждый вариант. Основной код просто выбирает нужную стратегию и говорит: «Поехали».

Вместо бесконечных блоков else if ты:
→ Определяешь интерфейс стратегии (PaymentStrategy).
→ Создаёшь отдельные реализации под каждый случай (CreditCardPayment, UpiPayment).
→ Используешь Map для выбора нужной стратегии во время выполнения:

strategyMap.get(type).processPayment(payment);


Готово. Теперь можно добавлять новую логику, не трогая старый код. Чисто, масштабируемо и поддерживаемо.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥52
Представлен бесплатный онлайн-плейграунд для SQL — RunSQL. 🪿

Сервис позволяет создавать таблицы, писать запросы и делиться результатами с командой. Поддерживаются MySQL, PostgreSQL и SQL Server.

Работает прямо из браузера, ничего устанавливать не нужно: http://runsql.com/r

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍5
Сериализация кажется простой, но интервьюеры часто используют её, чтобы понять, кто выходит за рамки обычного кодинга.

Главное, что должен знать каждый Java-разработчик:

serialVersionUID – если не объявлен, JVM сгенерирует свой. При изменении класса старые объекты перестают десериализоваться. Всегда объявляйте явно.

transient-поля – помечайте чувствительные данные (например, пароли) как transient, чтобы они не записывались на диск или в логи.

Возможны атаки через десериализацию. Никогда не десериализуйте ненадёжный ввод.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍124
Современный Java, объяснённый просто (с примерами)

Многие думают, что Java сложный или многословный язык.
Но в последних версиях (Java 17 → 21 → 25) язык сильно изменился.

4 современных фичи, которые делают жизнь разработчика проще:

1. Records (меньше повторяющегося кода)
Раньше приходилось писать конструкторы, геттеры, toString…

Достаточно одной строки — всё это генерируется автоматически.

2. Sealed classes (контролируемое наследование)
Позволяет ограничить, какие классы могут наследоваться от другого.

Никто больше не сможет реализовать Shape, кроме разрешённых. Безопасность и ясность.

3. Pattern Matching (более мощный switch)
Теперь switch понимает типы, а не только значения.

Чище, чем использовать instanceof и касты повсюду.

4. Virtual Threads (лёгкая конкуренция)
С Java 21 появились виртуальные потоки → можно создавать тысячи потоков без падения системы.

Идеально для приложений с огромным количеством соединений (APIs, микросервисы).

Java больше не тот тяжёлый язык, каким был раньше.

А с выходом Java 25 как LTS он приносит ещё больше улучшений для разработчиков.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍204
В Java на собеседованиях могут спросить про альтернативы HashMap, так как он не всегда самый быстрый или экономичный по памяти и иногда приводит к скрытым проблемам с производительностью, утечкам памяти и сложным багам.

Ниже три мощные альтернативы HashMap и ситуации, когда стоит их использовать.

WeakHashMap: Самоочищающийся кэш

HashMap часто применяют для кэширования, но он держит сильные ссылки на ключи, мешая GC освободить память даже тогда, когда объект уже больше нигде не используется. Это может привести к утечкам памяти.

WeakHashMap хранит ключи через слабые ссылки. Если на объект-ключ больше нет сильных ссылок, GC может удалить его, и запись в мапе исчезнет автоматически.

Используется для временных кэшей, хранения слушателей, метаданных, привязанных к жизненному циклу объекта.

IdentityHashMap: Когда объекты "равны", но не одинаковы

HashMap проверяет ключи через метод .equals(). Если у вас два объекта с одинаковыми данными, но это разные экземпляры (например, два Person с одинаковым именем, но разными записями), то HashMap перезапишет значение.

IdentityHashMap сравнивает ключи только по ссылке (==), игнорируя .equals(). Разные объекты всегда будут разными ключами, даже если у них одинаковые данные.

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

EnumMap: Оптимизированный вариант для enum-ключей

Использовать enum как ключ в HashMap неэффективно. Нужно считать хэши, обрабатывать коллизии, хотя набор ключей фиксирован на этапе компиляции.

EnumMap специально создан для enum-ключей. Внутри он работает через массив, используя ordinal() значения enum в качестве индекса. Это даёт настоящие O(1)-операции и экономит память.
Используется всегда, если ключи берутся из одного enum.

Быстрый гайд по выбору:


- Нужно автоочищение кэша → WeakHashMap
- Нужна идентичность объектов (==) → IdentityHashMap
- Ключи из enumEnumMap
- Всё остальное → HashMap по умолчанию

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
👩‍💻 Всем программистам посвящается!

Вот 17 авторских обучающих IT каналов по самым востребованным областям программирования:

Выбирай своё направление:

👩‍💻 Java — t.me/java_ready
🤔 InfoSec & Хакинг — t.me/hacking_ready
🖥 SQL & Базы Данных — t.me/sql_ready
👩‍💻 Python — t.me/python_ready
🤖 Нейросетиt.me/neuro_ready
👩‍💻 Linux — t.me/linux_ready
🖼️ DevOpst.me/devops_ready
📖 IT Книги — t.me/books_ready
👩‍💻 C/C++ — https://t.me/cpp_ready
👩‍💻 C# & Unity — t.me/csharp_ready
👩‍💻 Frontend — t.me/frontend_ready
📱 JavaScript — t.me/javascript_ready
👩‍💻 Backend — t.me/backend_ready
📱 GitHub & Git — t.me/github_ready
👩‍💻 Весь IT — t.me/it_ready
👩‍💻 Bash & Shell — t.me/bash_ready
🖥 Design — t.me/design_ready

📌 Гайды, шпаргалки, задачи, ресурсы и фишки для каждого языка программирования!
Please open Telegram to view this post
VIEW IN TELEGRAM
Google увеличил функционал Agent Development Kit для Java, внедрив поддержку LangChain4j. Теперь Java-инженеры способны подключать модели OpenAI, Anthropic, Mistral и прочие, разрабатывая многоагентные решения с более гибким контролем и усовершенствованной логикой.

Подробности: тык

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍2
Вопрос для собеседования Java/Backend:

Как современные приложения оставляют вас залогиненным без хранения сессии на сервере? 🫖


Современные приложения могут держать пользователя залогиненным без серверного хранения сессий благодаря JWT

Это компактный и безопасный токен, который сервер подписывает и отдает клиенту. Клиент хранит его и отправляет вместе с запросами, а сервер проверяет подпись и доверяет данным внутри токена без обращения к базе.

JWT состоит из трёх частей — заголовка с алгоритмом и типом, полезной нагрузки с пользовательскими данными (claims) и подписи, которая гарантирует подлинность.

Такой подход делает авторизацию stateless: вся необходимая информация хранится в самом токене.

Чтобы обеспечить безопасность, важно всегда использовать HTTPS, задавать короткий срок жизни токена и предусматривать механизм отзыва украденных токенов.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍4
🔍Тестовое собеседование с Java-разработчиком из МТС уже завтра

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

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

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

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

Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM