Java библиотека
Развлечения
Книги, статьи, мемы и многое другое для Java программиста!
Загружаем канал…
Мы используем cookie для улучшения работы сайта и анализа статистики. Оставаясь на сайте, вы соглашаетесь с Политикой конфиденциальности.
Развлечения
Книги, статьи, мемы и многое другое для Java программиста!
Современный Java Concurrency. Глубокое погружение в Virtual Threads, Structured Concurrency и Scoped Values (2026) PDF, ePUB Добро пожаловать в будущее Java! Изучите главное новшество Java 21 — виртуальные потоки. Помните, как приходилось бороться с высокой стоимостью создания потоков, сталкиваться с ограничениями масштабируемости и трудностями при попытке достичь высокой пропускной способности? Те дни прошли! Это практическое руководство проведет вас от Java 1.0 до прорывных достижений Project Loom.Автор не ограничивается теорией, а предлагает набор инструментов, которые применимы для реальных проектов. Погрузитесь в тонкости виртуальных потоков и такие сложные темы, как ForkJoinPool, продолжение, ограничение скорости, отладка и мониторинг. Вы не только узнаете принципы их работы, но и п…
Читать целикомМагия IntelliJ IDEA: Structural Search & Replace Рефакторишь проект, нужно найти все места, где используется deprecated метод с определённым паттерном вызова. Ctrl+F не поможет — он ищет текст, а не структуру кода. Для этого есть SSR. 🟢 Что это Structural Search — поиск по AST-дереву кода, а не по тексту. Ищешь паттерны: методы с конкретными параметрами, переменные определённого типа, цепочки вызовов. И сразу заменяешь на новый код. 🟢 Как открыть — Ctrl+Shift+A → "Structural Search" или "Structural Replace". — Edit → Find → Search/Replace Structurally. — Или Ctrl+Shift+F → переключись на вкладку "Structural". 🟢 Готовые шаблоны IDEA поставляется с десятками шаблонов: — Existing templates → Java → видишь примеры для логирования, коллекций, исключений. — Можешь скопировать и доработ…
Читать целикомSpring Boot: используйте TaskScheduler для реализации лёгких динамических задач. Для более сложных сценариев стоит рассмотреть Quartz. ✅ Инжектим и используем: ... @Autowired TaskScheduler scheduler; scheduler.schedule( () -> System.out.println("Hello!"), new CronTrigger("0 */5 * * * *") // каждые 5 минут ); ... Внедрённый бин — это ThreadPoolTaskScheduler, встроенная реализация как TaskScheduler, так и ScheduledExecutorService. ✅ При необходимости можно настроить его конфигурацию: @Configuration @EnableScheduling public class SchedulerConfig { @Bean public TaskScheduler taskScheduler() { ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler(); scheduler.setPoolSize(5); scheduler.setThreadNamePrefix("my-scheduler-"); schedule…
Читать целикомObjectMapper и timezone: настройка обработки дат без указания зоны При десериализации дат в формате "2024-01-15T10:00:00" без явной таймзоны Jackson по умолчанию использует UTC. Это может привести к неожиданным результатам при работе с ZonedDateTime или Instant, когда приложение работает в другой временной зоне. 🔵 Решение ▪️ Настройка ObjectMapper через Jackson2ObjectMapperBuilderCustomizer: @Bean public Jackson2ObjectMapperBuilderCustomizer jsonCustomizer() { return builder -> builder .timeZone(TimeZone.getDefault()) .featuresToDisable( SerializationFeature.WRITE_DATES_AS_TIMESTAMPS ); } Jackson будет использовать системную таймзону приложения вместо UTC. Актуально для микросервисной архитектуры при обмене timestamp'ами между сервисами. ▪️ Дл…
Читать целикомSpring Boot: когда использовать static-классы, а когда Bean Частая ошибка в Spring - использовать static-утилиты там, где нужен управляемый компонент. Правило простое Используйте static-классы только если: - они не хранят состояние - у них нет зависимостей - не требуется mock в тестах - не нужен AOP (логирование, транзакции и т.д.) Во всех остальных случаях — лучше Spring Bean. Почему это важно Пример с static-кэшем: public class CacheUtils { private static Map<String, String> cache = new HashMap<>(); } Такой кэш: • общий для всех потоков • может случайно изменяться • сложно контролировать и тестировать нет управления жизненным циклом Правильный подход — Bean со scope: @Component @Scope("request") public class CacheService { private Map<String, String> cache = new HashMa…
Читать целикомОткуда в Spring Boot берётся веб-сервер? Запускаете приложение: java -jar app.jar И оно начинает принимать HTTP-запросы. Без отдельной установки Tomcat и развёртывания WAR-файла. Секрет — во встроенном сервере. Для обычного Spring MVC-приложения зависимость веб-стартера по умолчанию подтягивает Tomcat. Его библиотеки входят в исполняемый JAR, а Spring Boot автоматически настраивает и запускает сервер вместе с приложением. Это упрощает запуск и развёртывание: приложение и сервер поставляются как единое целое, с согласованными версиями и настройками. Такой JAR удобно запускать локально, на сервере или в контейнере. Embedded не означает, что сервера нет. Он работает внутри процесса вашего Java-приложения. Tomcat — не единственный вариант: например, приложения на Spring WebFlux по умолчан…
Читать целикомForkJoinPool, ExecutorService и Virtual Threads: что выбирать в Java? Всё зависит от нагрузки: задачи в основном вычисляют или ждут ответа базы и внешних сервисов? При этом сравниваются разные уровни: ExecutorService — интерфейс управления задачами, ForkJoinPool — одна из его реализаций, а виртуальные потоки — тип потоков. Их можно использовать вместе. ForkJoinPool — для параллельных вычислений. Хорошо подходит для задач, которые можно разбить на независимые части: рекурсивных алгоритмов, обработки массивов и других CPU-intensive вычислений. Использует work-stealing: свободный рабочий поток забирает задачи из очередей других потоков. Но не любая тяжёлая операция требует ForkJoinPool. Для независимых вычислительных задач может быть достаточно обычного фиксированного пула. ExecutorServic…
Читать целиком👩💻 Что реально спрашивают на Java-собеседованиях Разбор 247 интервью: HashMap, equals/hashCode, MVCC, Hibernate N+1, Spring Transactions, Kafka, блокировки и другие регулярно повторяющиеся темы. Особенно полезен блок про @Transactional и self-invocation — классическую ловушку на Spring-собесах. ⛓ Подробнее в статье Java Библиотека | Мы в Телеграм
Зубчатый массив в Java Зубчатый массив (BitSet) — это специальная структура данных для эффективного хранения и манипулирования наборами битов. Представляет собой массив битов, который увеличивается динамически по мере добавления элементов. Занимает меньше памяти, чем обычные структуры данных для хранения булевых значений. Позволяет выполнять операции над битами: установка, сброс, инверсия, логические операции. Зубчатый массив полезен при решении задач: поиск в множествах, хранение состояний и флагов, оптимизация расхода памяти и в целом при необходимости эффективно хранить и манипулировать большим количеством булевых значений. Java Библиотека | Мы в Телеграм
Какова иерархия коллекций? В Java есть два основных интерфейса для коллекций - Collection и Map. Interface Collection находится на верху иерархии и определяет общие методы для работы с коллекциями, такие как add(), remove(), size() и другие. От него наследуются конкретные реализации коллекций. Наиболее часто используемые реализации Collection - это List, Set и Queue. Map интерфейс реализует отдельную структуру данных. Он представляет отображение ключ-значение. Основные реализации - HashMap и TreeMap. Java Библиотека | Мы в Телеграм
Разработчик больше не обязан выполнять каждую задачу вручную. Но сможет ли ИИ-агент действительно помочь в работе? ИИ-агенты уже умеют анализировать код, работать с инструментами, искать ошибки и выполнять последовательность действий. Но важно понимать, какие задачи им можно доверить, где они действительно экономят время и как сохранить контроль над результатом. На открытом уроке 19 октября в 20:00 МСК в преддверие старта курса «Разработка ИИ-агентов» разберем, как создавать и применять агентов в реальной разработке. Вы узнаете, какие задачи можно делегировать ИИ-агентам, как они работают с кодовой базой и внешними системами, где помогают ускорить процессы, а где требуется участие разработчика. Урок будет полезен разработчикам, техническим специалистам и тимлидам, которые хотят использо…
Читать целиком