Новое Распределяем каналы MAX по категориям и территориям. Читать новость
Открытый канал ID 68536775128494

Java библиотека

Книги, статьи, мемы и многое другое для Java программиста!

По сотрудничеству и рекламе: https://t.me/NadikaKir или в ЛС сообщества ВК https://vk.com/javatutorial

Канал в перечне РКН: https://vk.cc/cJrT4A

Мы на бирже: https://telega.in/c/javalib/

Сообщество VK https://vk.com/javatutorial

Каналов в рубрике
2 093
Место этого канала
№ 67
Открыть рубрику →
Открыть в MAX

Публикации за период

По реакциям

Поиск и вся лента — после бесплатной регистрации. Свои даты — по подписке; владелец канала видит их бесплатно. Сортировка по реакциям — по подписке. Зарегистрироваться

Загрузка…

Почему GC не устраняет все утечки памяти

GC освобождает память объектов, которые больше недостижимы. Если приложение продолжает хранить ненужную ссылку, сборщик не может угадать, что объект больше не нужен бизнес-логике.

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

Для поиска причины полезны heap dump и пути удержания объектов от GC roots. Сам рост занятой памяти ещё не доказывает утечку: смотрите, что удерживается после сборок и почему.

#Java

Java Библиотека | Мы в Телеграм
Просмотры: 100
Перейти в пост Открыть в MAX Сообщить о неточности
Критическая уязвимость в Java: атака по сети без пароля и участия пользователя

Oracle опубликовала предупреждение CVE-2026-91403 с оценкой CVSS 9.1. Проблема находится в JSSE — компоненте Java, который обеспечивает защищённые соединения TLS.

По описанию Oracle, успешная атака может позволить читать, изменять и удалять данные, доступные уязвимому приложению. Для эксплуатации не нужны учётные данные, а сложность атаки оценена как низкая.

В списке затронутых версий:

- Java SE 8u511 / 8u511-perf, 11.0.33, 17.0.21, 21.0.13, 25.0.5 и 27.0.1.
- Oracle GraalVM for JDK 17.0.21 и 21.0.13.
- Oracle GraalVM Enterprise Edition 21.3.20.

Условия зависят от приложения: Oracle указывает на сценарии, где данные атакующего попадают в API уязвимого компонента, например через веб-сервис. Само наличие Java ещё не означает, что любой сервис можно атаковать.

Администраторам стоит проверить используемые сборки Java, включая runtime внутри контейнеров, и установить исправления по инструкции поставщика.

Предупреждение опубликовано 21 октября. Более ранние версии тоже могут быть затронуты — отсутствие в списке не подтверждает их безопасность.

https://www.oracle.com/security-alerts/alert-cve-2026-91403.html

Java Библиотека | Мы в Телеграм
Просмотры: 148
Перейти в пост Открыть в MAX Сообщить о неточности
InterruptedException: не теряйте запрос отмены

sleep(), wait(), join() и некоторые операции блокирующих очередей могут выбросить InterruptedException. При этом флаг прерывания обычно сбрасывается.

Если ваш метод не умеет обработать отмену, передайте исключение выше. Если сигнатура этого не позволяет, например в Runnable.run(), восстановите флаг и завершите задачу:
catch (InterruptedException e) {
    Thread.currentThread().interrupt();
    return;
}

Важное отличие: LockSupport.park() не выбрасывает InterruptedException. После возврата нужно проверять состояние и условие ожидания.

Thread.interrupted() читает и сбрасывает флаг текущего потока, а isInterrupted() только читает. Выбор метода влияет на дальнейшую обработку отмены.

#Java

Java Библиотека | Мы в Телеграм
Просмотры: 137
Перейти в пост Открыть в MAX Сообщить о неточности
Приглашаем Backend‑, Frontend‑, FullStack‑разработчиков, системных аналитиков, архитекторов ПО и Team Lead оценить формат обучения курса OTUS «Архитектор программного обеспечения» на бесплатных открытых уроках:
• 9 ноября, 20:00 — «Монолит или микросервисы? Руководство для архитекторов, которые ценят свои нервы». Разберём критерии выбора архитектуры, скрытые издержки моделей, паттерны перехода (Strangler Fig, BFF и др.), роль DevOps и мониторинга.

• 23 ноября, 20:00 — «NoSQL в бою: как Cassandra помогает строить отказоустойчивый бэкенд». Фокус на архитектуре Cassandra, балансе консистентности и доступности, паттернах проектирования для e‑commerce, финтеха и стриминга.

👉 Записаться на открытые уроки и получить программу курса: https://vk.cc/d3jkKi

Если открытые уроки окажутся полезными, присоединяйтесь к курсу «Архитектор программного обеспечения». Он поможет выйти за рамки отдельных технических задач и сформировать целостное понимание современной архитектуры ПО.
Старт курса — 27 ноября, длительность — 4 месяца. В программе: Event‑Driven, CQRS, DDD, Event Sourcing, API First, микрофронтенды, Kappa и Lambda‑архитектуры, ETL vs ELT, механизмы наблюдаемости, применение ИИ для документирования и кодогенерации. Выпускной проект (например, «Room with a view») закрепит навыки в прикладном контексте.

👉 Пройдите тест и получите персональные рекомендации: https://vk.cc/d3jkRc

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Рекламный пост

Просмотры: 161
Перейти в пост Открыть в MAX Сообщить о неточности
Форматирование строк: читаемость и Locale

Когда сообщение содержит несколько значений, шаблон помогает отделить структуру от данных:
String message = String.format(
    "Пользователь %s оформил %d заказов",
    name, orderCount
);

Для чисел с дробной частью результат может зависеть от Locale. Если это машинный формат, задавайте Locale явно. Для пользовательского текста подбирайте локаль пользователя.

MessageFormat полезен для шаблонов локализуемых сообщений, но у него собственные правила экранирования.

Простая конкатенация остаётся нормальным решением. Выбирать format ради обещанного ускорения не стоит.

#Java

Java Библиотека | Мы в Телеграм
Просмотры: 193
Перейти в пост Открыть в MAX Сообщить о неточности
CSV: запятая внутри значения меняет правила

Простое String.join(",", values) не подходит, если поля содержат кавычки, запятые или переносы строк. Один возможный способ экранирования:
static String csv(String value) {
    if (value.contains(",") || value.contains("\"")
            || value.contains("\n") || value.contains("\r")) {
        return "\"" + value.replace("\"", "\"\"") + "\"";
    }
    return value;
}

Здесь null не допускается: способ записи отсутствующего значения нужно определить отдельно. Для обмена с другими программами согласуйте кодировку, разделитель и окончания строк.

Если CSV откроют в таблице, отдельно учитывайте формулы: обычное CSV-экранирование не защищает от интерпретации значений вроде =... как формул.

#Java

Java Библиотека | Мы в Телеграм
Просмотры: 215
Перейти в пост Открыть в MAX Сообщить о неточности
Остановка задачи: interrupt требует сотрудничества

interrupt() не убивает поток. Он сообщает задаче о запросе отмены. Код должен проверять этот сигнал или корректно выходить из прерываемой операции.

Для рабочего цикла с ожиданием:
try {
    while (!Thread.currentThread().isInterrupted()) {
        doWork();
        Thread.sleep(500);
    }
} catch (InterruptedException e) {
    Thread.currentThread().interrupt();
    // выходим из задачи
}

Если восстановить флаг и сразу продолжить прежний бесконечный цикл, следующий sleep может немедленно бросить исключение. Нужен выход или явная политика продолжения.

Thread.stop() не используйте: в Java 25 этот метод ещё объявлен, но всегда выбрасывает UnsupportedOperationException.

#Java

Java Библиотека | Мы в Телеграм
Просмотры: 236
Перейти в пост Открыть в MAX Сообщить о неточности
requireNonNull — явная проверка, а не магия типов

Objects.requireNonNull проверяет ссылку во время выполнения и бросает NullPointerException с заданным сообщением:
this.repository = Objects.requireNonNull(
    repository, "repository"
);

Метод существует с Java 7. Он не делает типы Java автоматически null-безопасными и не проверяет поля объекта рекурсивно.

@NotNull и @Nullable описывают контракт для анализатора или фреймворка. Чтобы получить проверку на входе HTTP-метода через Bean Validation, нужна соответствующая интеграция.

Lombok @NonNull может сгенерировать проверку при обработке аннотаций — это другой механизм. Выбирайте его осознанно, а не как свойство JVM.

#Java

Java Библиотека | Мы в Телеграм
Просмотры: 230
Перейти в пост Открыть в MAX Сообщить о неточности
👩‍💻 Что ломается при переходе на Spring Boot 4

После обновления проект может успешно компилироваться и проходить тесты, а затем упасть уже при запуске.

Авторы разбирают реальные проблемы миграции: Jackson 2/3, старые коннекторы, Feign, Security 7, JUnit 6 и изменившиеся автоконфигурации.

⛓ Читать статью



Java Библиотека | Мы в Телеграм
Просмотры: 232
Перейти в пост Открыть в MAX Сообщить о неточности
🗄 Вебинар: JDBC: как Java-приложения взаимодействуют с базами данных
JDBC позволяет Java-приложениям работать с базами данных. Разберём подключение, SQL-запросы, транзакции и обработку ошибок.

💬 О чём поговорим
- Как подключиться к СУБД с помощью DriverManager и работать с Connection.
- Как выполнять SQL-запросы через Statement и PreparedStatement и получать результаты через ResultSet.
- Как управлять транзакциями: autocommit, commit и rollback.
- Как использовать SQLException, чтобы разобраться в причинах ошибки при выполнении запроса.

🎯 Результат урока:
- Вы разберётесь, как подключать Java-приложение к СУБД, выполнять SQL-запросы и работать с результатами.
- Узнаете, как управлять транзакциями и обрабатывать ошибки при обращении к базе данных.

👉 Для участия зарегистрируйтесь: https://vk.cc/d3hffx

Вебинар проходит в рамках старта курса «Java-разработчик», который помогает освоить современную Java-разработку: от основ и первых программ до серверных приложений, баз данных, Spring, контейнеров и очередей сообщений. Программа регулярно обновляется под требования рынка. 🚀

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Рекламный пост

Просмотры: 207
Перейти в пост Открыть в MAX Сообщить о неточности
Вся лента — после бесплатной регистрации
ВКонтакте Телеграм Одноклассники
Избранное в datool.ru

Следите за каналом в личном кабинете

Зарегистрируйтесь в datool.ru, чтобы добавить канал «Java библиотека» в избранное и отслеживать его показатели.

Зарегистрироваться
Для владельцев каналов

Подтвердите свой канал

Войдите или зарегистрируйтесь в datool.ru, затем добавьте нашего бота в канал по инструкции в личном кабинете. После проверки владения замок исчезнет и вам станет доступно управление каналом.

Войти или зарегистрироваться

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти