Найти в Дзене
💡 Java-совет: WeakHashMap для кэша без утечек памяти
Если ты используешь HashMap как кэш - будь осторожен. Пока карта жива, ключи и значения не будут удалены GC, даже если они больше нигде не используются. WeakHashMap решает эту проблему: • Ключи хранятся через weak reference • Если на ключ нет сильных ссылок в коде - GC может его удалить • Запись автоматически исчезает из мапы • Отлично подходит для кэшей, метаданных, listener-ов Пример идеи: • Положил объект в WeakHashMap • Убрал на него все обычные...
1 день назад
🚀 Java-совет, который спасает от невидимых багов
🚀 Java-совет, который спасает от невидимых багов Начиная с Java 11, вместо привычного trim() лучше использовать strip(). Выглядит как мелочь, но на практике это разница между "почему у меня не совпадают строки?!" и нормальной жизнью. В чем проблема `trim()` trim() работает по старым правилам и убирает только базовые ASCII-пробелы. Юникодные пробельные символы (а их куча - из копипасты, веба, PDF и т.д.) могут остаться в строке...
1 день назад
Архитектурный Клуб от Яндекс 360
Инженеры Яндекс 360 накопили большой опыт в проектировании систем, которыми пользуются более 100 миллионов человек каждый месяц, и теперь готовы делиться этим опытом и объединять вокруг него единомышленников. 26 марта в 17:00 Вместе с Дарьей Андреевой, руководителем бэкенд-разработки...
1 день назад
🖥 Resilience4j - библиотека для Java, которая помогает сделать микросервисы устойчивыми к сбоям и перегрузкам
В распределённых системах ошибки — это норма: * внешние сервисы падают * запросы зависают * API начинают тормозить * нагрузка резко растёт Если не контролировать такие ситуации, один нестабильный сервис может «уронить» всю систему. Resilience4j решает эту проблему с помощью набора паттернов отказоустойчивости. Основные компоненты: Circuit Breaker Отслеживает частоту ошибок и временно блокирует обращения к нестабильному сервису, чтобы дать ему восстановиться. Rate Limiter Ограничивает количество запросов и защищает систему от перегрузки...
2 дня назад
⚡️ Spring Boot умеет валидировать входные DTO буквально парой аннотаций - без ручных if и простыней кода
Вместо самописных проверок используем Bean Validation прямо в модели запроса. Пример DTO: - @Email — проверяет формат почты - @NotBlank — поле обязательно - @Size(min, max) — ограничения длины - @Pattern — проверка по regex Spring автоматически: - валидирует входящий JSON - при ошибке возвращает 400 Bad Request - формирует понятный список ошибок в ответе То есть API сразу становится “самозащищающимся” от кривых данных...
2 дня назад
💡 Совет по Java: Начиная с Java 12 можно использовать String.indent(n) для форматирования многострочных строк с отступами
Метод работает очень просто: n > 0 - добавляет n пробелов в начало КАЖДОЙ строки n < 0 - удаляет до n пробелов в начале каждой строки n = 0 - нормализует переводы строк Пример: String text = "Text\ncontent"; System.out.println(text.indent(4)); System.out.println(text...
4 дня назад
🚀 Spring Boot: отправка email за несколько минут
В Spring Boot есть готовое решение для отправки писем - spring-boot-starter-mail. Этот стартер уже включает всю необходимую конфигурацию и зависимости, поэтому вам не нужно вручную настраивать JavaMail или подключать десятки библиотек. Достаточно добавить зависимость, указать SMTP-настройки в application.properties или application.yml, и можно сразу отправлять письма из приложения. Spring Boot автоматически настроит JavaMailSender, а в коде останется лишь создать сообщение и отправить его. Это...
5 дней назад
🖥 Новый курс на Stepik - PostgreSQL для разработчиков: от основ к созданию API
Здесь на пальцах объясняют не только как писать SQL-запросы, а строить настоящие backend-сервисы с базой данных как у профи. В этом курсе ты шаг за шагом создашь REST API на FastAPI + PostgreSQL: от установки среды и первых таблиц - до масштабируемого приложения с безопасностью и CRUD-операциями. 🔹 На практике разберете: • SQL-запросы, фильтры, агрегаты и подзапросы • Связи между...
5 дней назад
💡 Java совет: считаем разницу во времени без ручной математики
Начиная с Java 8 можно использовать ChronoUnit.between(start, end), чтобы посчитать интервал между датами или временем в нужных единицах — дни, часы, минуты и т.д. Вместо того чтобы самому высчитывать миллисекунды и делить их на 1000×60×60, просто используйте API из java.time. Пример: import java.time.*; import java.time.temporal.ChronoUnit; public class Demo { public static void main(String[] args) { LocalDate d1 = LocalDate...
6 дней назад
Опубликовано фото
6 дней назад
💡 Java совет: используй `Instant` и `Duration` для точных вычислений времени
Работа со временем через System.currentTimeMillis() — это прошлый век. В современном Java для точных измерений есть java.time API. 🔹 Instant - это конкретная точка времени в UTC Поддерживает точность до наносекунд. Instant now = Instant.now(); 🔹 Duration - это разница между двумя моментами времени Идеально подходит для измерения времени выполнения кода. Instant start = Instant...
1 неделю назад
Опубликовано фото
1 неделю назад