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

Связь: @devmangx

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

Они усложняют тестирование, поскольку общий изменяемый state затрудняет изоляцию классов и делает тесты более зависимыми друг от друга.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
Совет по Java: используйте StringBuilder вместо String для конкатенации строк в циклах.

String является неизменяемым (immutable), поэтому его использование в циклах, особенно больших, работает неэффективно.
StringBuilder является изменяемым (mutable) и оптимизирован для многократного добавления строк.

#SoftwareDevelopment

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
Большинство команд, которые делают data-агентов, городят целый зоопарк из роутеров, fine-tune моделей и RAG-пайплайнов поверх нескольких LLM.

OpenAI сделала иначе.

Их data-агент работает на одной модели и всего с 13 инструментами, при этом умеет ориентироваться в 1,5 эксабайта данных и 90 000 таблиц.

По словам команды, архитектура получилась на удивление простой.

Недавно OpenAI рассказала, как всё устроено под капотом:

• архитектура data-агента
• 6 уровней контекста, которые позволяют одной LLM уверенно работать с 90 000 таблиц
• 3 реальных сценария использования Codex внутри OpenAI
• 5 практических выводов для тех, кто строит собственных агентов под конкретную предметную область
• куда будет развиваться дата-платформа OpenAI дальше

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

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Паттерн Circuit Breaker не пытается бесконечно достучаться до упавшего сервиса. Он понимает, когда пора остановиться.

Closed → Open → Half-Open → Closed

Как работает:
Closed — запросы проходят нормально, ошибки отслеживаются.
Open — после достижения порога ошибок новые запросы сразу отклоняются без попытки обратиться к сервису.
Half-Open — через некоторое время пропускается несколько тестовых запросов.
Closed — если сервис восстановился, трафик возвращается в штатный режим.

Что это даёт:
• защищает систему от каскадных сбоев;
• снижает нагрузку на проблемный сервис;
• уменьшает задержки для клиентов;
• ускоряет восстановление после инцидентов.

Защищай. Быстро отказывай. Восстанавливайся. Повторяй.

#SystemDesign #SoftwareArchitecture #Microservices #DevOps #BackendDevelopment

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Многие пишут SQL-запросы сверху вниз и думают, что СУБД выполняет их в том же порядке.

Но SQL работает иначе.

Фактический порядок выполнения выглядит так:

1. FROM
2. JOIN
3. WHERE
4. GROUP BY
5. HAVING
6. SELECT
7. ORDER BY
8. LIMIT

Именно поэтому алиасы из SELECT нельзя использовать в WHERE, а ошибки в агрегатах часто оказываются не там, где их ищут.

Понимание порядка выполнения помогает:

• быстрее отлаживать запросы;
• правильно использовать агрегации;
• избегать логических ошибок;
• писать более предсказуемый SQL.

Если запрос ведёт себя странно, проверь не то, как он написан, а то, как его выполняет движок базы данных.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍4
В 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
1
Java: Используйте блоки try-catch только там, где это действительно необходимо. Не применяйте исключения для управления логикой выполнения программы. #Java #BestPractices

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