Работаете в большом Java-проекте и боитесь, что при переименовании метода или переменной что-то сломаете? IntelliJ IDEA умеет безопасно и быстро переименовывать элементы кода с помощью Shift + F6.
🔹 Зачем это нужно
— Вместо ручного поиска и замены по всему проекту IDEA обновит все ссылки на метод, переменную или класс автоматически. — Переименование учитывает контекст — не затронет одноимённые элементы в других частях кода. — Работает со всеми элементами: методами, классами, переменными, параметрами и даже с ресурсами.
🔹 Как использовать
— Наведите курсор на имя метода, класса или переменной, которую хотите переименовать. — Нажмите Shift + F6. — Введите новое имя. IDEA покажет, где будет произведено переименование. — Подтвердите и все ссылки обновятся мгновенно.
Очень удобно, когда нужно быстро рефакторить код, не опасаясь сломать логику, особенно в крупных проектах с множеством взаимосвязей.
🌐 Ключевые возможности HTTP/2 ⠀ HTTP/2 — современный протокол передачи данных, который значительно улучшает работу веб-приложений по сравнению с HTTP/1.1.
В карточках собраны важнейшие функции HTTP/2, которые помогают:
⚡️ Повысить скорость загрузки страниц и отклика серверов ⚡️ Оптимизировать параллельную передачу данных ⚡️ Снизить сетевые задержки и нагрузку ⠀ 🔗 Подробнее — в полной статье
С тех пор как в Java 8 появился Stream API, начались споры: стоит ли массово переходить на стримы или классический for-loop по-прежнему лучше?
Сторонники Stream API говорят о выразительности, лаконичности и возможностях параллелизма. Противники указывают на потерю производительности в критичных местах и сложность отладки.
⚡️ На практике:
— Stream API отлично подходит для чистых операций с коллекциями и сложных цепочек преобразований. — For-loop даёт полный контроль над процессом и зачастую работает быстрее, что важно в системах с высокими требованиями к производительности.
Автор пишет об интеграции асинхронного ввода-вывода в Java с использованием io_uring и Project Panama. Он подробно описывает, как виртуальные потоки Java могут блокироваться при операциях с файловой системой, и как использование io_uring позволяет эффективно выполнять асинхронные операции ввода-вывода, минимизируя блокировки и повышая производительность.
Автор описывает внедрение поддержки Markdown в комментарии JavaDoc начиная с Java 23, позволяя использовать синтаксис CommonMark для улучшения читаемости документации. Интеграция с IntelliJ IDEA включает режим рендеринга комментариев, автоматическое преобразование HTML-комментариев в Markdown и поддержку различных элементов форматирования, таких как списки, заголовки и блоки кода. 🔹Go's HTTP Server Patterns in Java 25
Автор демонстрирует, как можно реализовать паттерны HTTP-сервера Go в Java 25, используя модуль jdk.httpserver и дополнительные библиотеки. Он создает простую вики-систему с возможностью просмотра и редактирования страниц, применяя современные возможности Java.
🎮 Оптимизация запросов с использованием индексов в PostgreSQL и MySQL
Проблема: при проектировании баз данных часто возникает необходимость ускорить выполнение запросов, особенно при работе с большими объемами данных. Неправильное использование или отсутствие индексов может привести к значительным задержкам в обработке запросов, что негативно сказывается на производительности приложений.
Решение: в книге "Database Design and Modeling with PostgreSQL and MySQL" авторы подробно рассматривают методы оптимизации запросов с помощью индексов. Они объясняют, как правильно создавать и использовать индексы для ускорения выполнения запросов, а также как анализировать планы выполнения запросов для выявления узких мест.
Пример создания индекса и анализа плана выполнения запроса в PostgreSQL:
-- Создание индекса на столбец email в таблице users CREATE INDEX idx_users_email ON users(email);
-- Анализ плана выполнения запроса EXPLAIN ANALYZE SELECT * FROM users WHERE email = 'example@example.com';
В этом примере создается индекс на столбец email таблицы users, что позволяет значительно ускорить выполнение запроса поиска пользователя по email. Команда EXPLAIN ANALYZE используется для анализа плана выполнения запроса и оценки его эффективности. Преимущества:
— Использование индексов позволяет существенно сократить время выполнения запросов, особенно при работе с большими таблицами. — Анализ планов выполнения запросов помогает выявить и устранить узкие места в производительности базы данных. — Правильное использование индексов способствует более эффективному использованию ресурсов сервера и улучшению отклика приложений.
Еще больше полезных книг — в нашем канале @progbook
JaCoCo — это инструмент для анализа покрытия кода, который предоставляет более глубокие и настраиваемые отчёты, чем встроенное покрытие в IntelliJ IDEA.
Он особенно полезен при работе в командной среде, в CI/CD пайплайнах и для объективной оценки качества тестов в проектах любого масштаба.
Встроенное покрытие полезно для локальной работы, но в отличие от него, в JaCoCo есть:
— Гибкие отчёты в формате HTML, XML и CSV. — Интеграция с Maven и Gradle. — Встроенная поддержка CI/CD (Jenkins, GitLab CI и др.). — Настройка исключений. — Интеграция с SonarQube и другими инструментами статического анализа кода.
A/B-тесты — мощный инструмент для принятия продуктовых решений.
Однако, если пользователи влияют друг на друга, классическая схема может дать искажённые результаты. Это особенно актуально для сервисов с ограниченными ресурсами, таких как такси, каршеринг или доставка еды.
Проблема: пользователи из разных групп конкурируют за один и тот же ресурс, что влияет на метрики. ✅ Решения:
— Временное разбиение. — Географическое разбиение. — Модели с учётом взаимодействий.