Java Portal | Программирование
12.1K subscribers
1.39K photos
109 videos
42 files
1.41K links
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика

Связь: @devmangx

РКН: https://clck.ru/3H4WUg
Download Telegram
В Docker можно поднять полноценный Android-эмулятор одной командой.

Без установки Android Studio, ручной настройки AVD и прочей возни.

Что есть из коробки:

• аппаратное ускорение через GPU
• поддержка KVM для более высокой производительности
• headless-режим для CI/CD и автоматизации
• запуск полностью внутри Docker-контейнера

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

Бесплатно и с открытым исходным кодом

https://github.com/HQarroum/docker-android

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
Два backend-разработчика решали одну и ту же задачу.

Вариант A:
SELECT *
FROM users
WHERE email = ?


Вариант B:
SELECT *
FROM users
WHERE LOWER(email) = LOWER(?)


Какой запрос отправится в прод?

Многие выбирают B, потому что он выглядит надёжнее. Пользователь может ввести John@Example.com, а в базе лежит john@example.com.

Но есть нюанс.

В большинстве СУБД вызов LOWER() над колонкой ломает использование обычного индекса. Вместо быстрого Index Seek база часто уходит в полный скан таблицы.
На 100 строках разницы не видно.
На 10 миллионах пользователей разница становится очень заметной.

Поэтому в проде обычно используют один из вариантов:
• хранить email в нормализованном виде (например, всегда lowercase);
• использовать case-insensitive collation;
• создать функциональный индекс на LOWER(email).

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

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍122
Spring Boot 4.1 получит поддержку ленивого получения JDBC-соединений

DataSource будет оборачиваться в LazyConnectionDataSourceProxy, а физическое соединение из пула станет запрашиваться только в тот момент, когда приложению действительно потребуется выполнить JDBC-запрос. 🔥

https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-4.1.0-RC1-Release-Notes

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯4
💡 Java: Используйте default-методы в интерфейсах для сохранения обратной совместимости (начиная с Java 8).

Если добавить новый default-метод в интерфейс, существующие реализации не придётся менять. Они автоматически получат реализацию по умолчанию.

#Java #Interfaces

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41
Список сетевых протоколов и портов, которые встречаются чаще всего:

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
🔴 Завтра тестовое собеседование с Java-разработчиком

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

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

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

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

Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
Java: По возможности не возвращайте из методов изменяемые внутренние коллекции, чтобы:
Не раскрывать внутреннее состояние объекта, повышая безопасность.
Иметь возможность менять реализацию без риска сломать другие части приложения.

#Java #JavaDev

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

Поскольку такие ситуации встречаются во фреймворках, библиотеках и обычных приложениях, материал будет полезен разработчикам всех этих типов проектов. 🤝

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

https://inside.java/2026/04/27/avoiding-final-field-mutation/

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