uz
Feedback

Firibgarlarga uchmang! Telemetrio bunday kanallarni topadi va belgilaydi 👉 Belgini ko‘rmoqchi bo‘lsangiz, obuna bo‘ling

Java Books

Java Books

Kanalga Telegram’da o‘tish

Java Библиотека По всем вопросам- @notxxx1 @ai_machinelearning_big_data - machine learning @pythonl - Python @itchannels_telegram - 🔥 best it channels @ArtificialIntelligencedl - AI @pythonlbooks-📚 @programming_books_it -it 📚 № 5032728887

Ko'proq ko'rsatish

📈 Telegram kanali Java Books analitikasi

Java Books (@java_library) kanali faol ishtirokchi. Hozirda hamjamiyat 14 134 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 9 012-o'rinni va Rossiya mintaqasida 46 014-o'rinni egallagan.

📊 Auditoriya ko‘rsatkichlari va dinamika

невідомо sanasidan buyon loyiha tez o‘sib, 14 134 obunachiga ega bo‘ldi.

25 Oktabr, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -83 ga, so‘nggi 24 soatda esa -3 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.

  • Tasdiqlash holati: Tasdiqlanmagan
  • Jalb etish (ER): Auditoriya o‘rtacha 8.64% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 3.46% ini tashkil etuvchi reaksiyalarni to‘playdi.
  • Post qamrovi: Har bir post o‘rtacha 1 221 marta ko‘riladi; birinchi sutkada odatda 489 ta ko‘rish yig‘iladi.
  • Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 1 ta reaksiya keladi.
  • Tematik yo‘nalishlar: Kontent docker, собеседование, sql, boot, string kabi asosiy mavzularga jamlangan.

📝 Tavsif va kontent siyosati

Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
“Java Библиотека По всем вопросам- @notxxx1 @ai_machinelearning_big_data - machine learning @pythonl - Python @itchannels_telegram - 🔥 best it channels @ArtificialIntelligencedl - AI @pythonlbooks-📚 @programming_books_it -it 📚 № 503272888...”

Yuqori yangilanish chastotasi (oxirgi ma’lumot 26 Oktabr, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.

14 134
Obunachilar
-324 soatlar
-217 kun
-8330 kun
Postlar arxiv
Java: помогите IDE заметить возможный `NullPointerException` до запуска программы. Аннотации `@NonNull` и `@Nullable` описыва
Java: помогите IDE заметить возможный `NullPointerException` до запуска программы. Аннотации `@NonNull` и `@Nullable` описывают контракт: где null недопустим, а где его нужно обработать.

String displayName(@NonNull User user) {
    @Nullable String name = user.getName();

    if (name == null) {
        return "unknown";
    }

    return name.toUpperCase();
}
`user` не должен быть `null`, а имя может отсутствовать – поэтому перед toUpperCase() стоит проверка. При поддержке выбранных аннотаций IDE или статический анализатор предупредит о нарушении контракта прямо во время написания кода. Сами аннотации не гарантируют проверку во время выполнения. Их поведение зависит от библиотеки и инструментов. Чтобы контракт работал между методами, помечайте и параметры, и возвращаемые значения – например, getName().

Spring Boot запустился быстрее. А обязательная проверка так и не выполнилась. Причиной может быть одна настройка: spring.main
Spring Boot запустился быстрее. А обязательная проверка так и не выполнилась. Причиной может быть одна настройка:

spring.main.lazy-initialization=true
Она откладывает создание многих бинов до момента, когда они понадобятся. Вместе с ними откладывается и `@PostConstruct`. Если внутри такого бина спрятаны прогрев кеша или ваша проверка схемы БД, они выполнятся только при его создании. Никто не запросил бин — код может вообще не запуститься. Другие последствия: первый запрос может стать медленнее, а ошибка конфигурации обнаружится уже после старта приложения. Критическую инициализацию можно оставить на старте:

@Component
@Lazy(false)
public class SchemaVerifier {

    @PostConstruct
    void init() {
        verifySchema();
    }

    private void verifySchema() {
        // Проверка совместимости схемы БД
    }
}
`@PostConstruct` означает «после создания бина», а не «обязательно при запуске приложения». Нюанс: lazy-бин всё же может создаться на старте, если нужен другому бину, который инициализируется сразу. https://docs.spring.io/spring-boot/reference/features/spring-application.html

💡 Миллион потоков в Java? С virtual threads это реально Виртуальные потоки, ставшие стабильной возможностью в Java 21, позво
💡 Миллион потоков в Java? С virtual threads это реально Виртуальные потоки, ставшие стабильной возможностью в Java 21, позволяют обслуживать множество задач, которые большую часть времени ждут ответа от сети или базы данных. Каждому такому потоку не нужен отдельный поток ОС. При многих блокирующих I/O-операциях JVM освобождает системный поток для другой работы, пока виртуальный ждёт. Код остаётся привычным и последовательным, без обязательного перехода на цепочки колбэков. Особенно полезно для множества одновременных HTTP-запросов и обращений к БД. Но тяжёлые вычисления быстрее не станут: виртуальные потоки помогают увеличить число обслуживаемых задач, а не скорость процессора. И да: миллион потоков не означает миллион соединений с БД. Пулы соединений и ограничения нагрузки по-прежнему нужны.

🔥 Хочешь быстрее расти в IT? Хватит учиться в одиночку Окружение решает больше, чем кажется. Собрал папки и каналы, где можн
🔥 Хочешь быстрее расти в IT? Хватит учиться в одиночку Окружение решает больше, чем кажется. Собрал папки и каналы, где можно быстрее влиться в нужное направление, следить за трендами и не вариться в своём пузыре. AI: t.me/ai_machinelearning_big_data Python: t.me/pythonl Linux: t.me/linuxacademiya Хакинг: t.me/linuxkalii DevOps: t.me/DevOPSitsec Docker: https://t.me/+90Z5TAyfuNU5YmRi Golang: t.me/Golang_google Rust: t.me/rust_code C++: t.me/cpluspluc C#: t.me/csharp_ci Java: t.me/javatg JavaScript: t.me/javascriptv React: t.me/react_tg Frontend: t.me/front PHP: t.me/phpshka Android: t.me/android_its Мобильная разработка: t.me/mobdevelop Базы данных: t.me/sqlhub Data Science: t.me/data_analysis_ml Big Data: t.me/bigdatai Математика: t.me/data_math Физика: t.me/fizmat Kubernetes: t.me/kubernetc GameDev: https://t.me/gamedev Haskell: t.me/haskell_tg Собеседования и карьера: DS собеседования: t.me/machinelearning_interview Python собеседования: t.me/python_job_interview Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy Папка Frontend: https://t.me/addlist/mzMMG3RPZhY2M2Iy Полезное сверху: ИТ-мемы: t.me/memes_prog Английский для программистов: t.me/english_forprogrammers ИИ и технологии: t.me/vistehno 954 ГБ open-source курсов: https://t.me/+rKBQEMccAA01MTcy ИТ-книги бесплатно: https://t.me/addlist/BkskQciUW_FhNjEy Max Ai: https://max.ru/ai_machinelearning_big_data Max python: https://max.ru/pythonl ТЕХНО: https://max.ru/vistehno Max Go: https://max.ru/Golang_google Max Linux: https://max.ru/linuxkalii Devops: https://max.ru/DevOPSitsec C#: https://max.ru/csharp_ci C++: https://max.ru/cpluspluc SQL: https://max.ru/sqlhub Java: https://max.ru/javatg Подписывайся на нужные направления и собирай себе ленту, которая реально двигает вперёд.

💡 Одинаковый ввод? Не вычисляйте результат заново. Сохраняйте результаты затратных вычислений в кэше: ✅ Используйте входные
💡 Одинаковый ввод? Не вычисляйте результат заново. Сохраняйте результаты затратных вычислений в кэше: ✅ Используйте входные данные как ключ в Map. ✅ Если кэш общий для нескольких потоков, выбирайте ConcurrentHashMap. ✅ computeIfAbsent() вычислит и сохранит значение, если ключа ещё нет. Следующие вызовы вернут готовый результат. Нюанс: если функция вернула null или выбросила исключение, результат не сохранится и вычисление может повториться. Сам по себе ConcurrentHashMap не ограничивает размер кэша и не удаляет устаревшие записи.

Repost from Java
🧠 Spring AI показал, как сделать RAG заметно умнее обычного vector search. Проблема классического RAG: похожий документ ещё не значит полезный. Новый пайплайн делает так: Question → Rewrite → MultiQuery → Vector Search → Jev Filter → Rerank → LLM Jev проверяет каждый найденный chunk: есть ли там реальный ответ, противоречие или prompt injection. В демо vector search нашёл 6 фрагментов, но до модели дошли только 2 действительно полезных. Меньше мусора в контексте → точнее ответы и меньше шансов на prompt injection. Код и разбор: https://spring.io/blog/2026/10/02/spring-ai-modular-rag-typesafe-jev/

🤺 Почему ты получаешь отказ после «норм собеса»? Дело не в знаниях — ты просто не знаешь, что реально проверяют на собеседов
🤺 Почему ты получаешь отказ после «норм собеса»? Дело не в знаниях — ты просто не знаешь, что реально проверяют на собеседованиях. Решение — знать, чего от тебя ждёт интервьюер, и уметь правильно донести свою мысль. Для этого ребята из ШОРТКАТ (менторской программы для разработчиков) собрали в один файл ОТВЕТЫ НА 50 СЛОЖНЫХ ВОПРОСОВ с Java-собеседований 🔥 Они проанализировали более 100 мок-интервью и собрали внутри реальные вопросы + ответы сильного кандидата. ⚠️ Забрать можно бесплатно в боте — @shortcut_sh_bot В том же боте ты сможешь зарегаться на эфир с бесплатным тестовым интервью на Java-разработчика! Эфир пройдёт 7 октября в 19:00 МСК. Его проведёт Виктор Анохин — Senior-разработчик из Wildberries, ex-Билайн. Ты сможешь вживую услышать, какие вопросы задают на собесах в топовых компаниях, и лично задать вопрос ментору из бигтеха 🔝 Всё это бесплатно, тебе нужно только нажать на ссылку и забрать все плюшки ↓ @shortcut_sh_bot Реклама. О рекламодателе.

💡 Предпочитайте делегирование наследованию Связь is-a выглядит удобно: создаём подкласс, наследуем поведение и пишем меньше
💡 Предпочитайте делегирование наследованию Связь is-a выглядит удобно: создаём подкласс, наследуем поведение и пишем меньше кода. Но есть цена. ✅ Подкласс получает весь API родителя. ✅ Он зависит от деталей реализации суперкласса. ✅ Изменение родительского класса может неожиданно сломать потомка. И чем глубже иерархия, тем сложнее понять, откуда вообще взялось конкретное поведение. Часто безопаснее композиция:

class OrderService {
    private final PaymentService paymentService;
}
Вместо наследования:

class OrderService extends PaymentService {
}
Композиция связывает объекты. Наследование связывает их судьбы. Если объекту просто нужна чужая функциональность, чаще лучше её делегировать, а не наследовать.

Apache Kafka курс 2026: бесплатный курс по Kafka с нуля до профи на русском Kafka обучение без воды: каждый модуль состоит из
Apache Kafka курс 2026: бесплатный курс по Kafka с нуля до профи на русском Kafka обучение без воды: каждый модуль состоит из понятной теории, схем, команд, которые можно запустить у себя, типичных ошибок и вопросов для самопроверки. Курс подходит, чтобы выучить Kafka с нуля, подготовиться к собеседованию на backend, data engineer или DevOps-позицию и спроектировать надёжную систему на Kafka в продакшене. https://github.com/justxor/KAFKAFREECOURSR

🖥 Java в 2026 году: 25 лучших практических примеров кода от основ до многопоточности https://uproger.com/java-v-2026-godu-25
🖥 Java в 2026 году: 25 лучших практических примеров кода от основ до многопоточности https://uproger.com/java-v-2026-godu-25-luchshih-prakticheskih-primerov-koda-ot-osnov-do-mnogopotochnosti/

☕ Java: в HashSet всего 10 элементов, а обход всё равно тормозит Редкий нюанс: время обхода HashSet зависит от количества эле
☕ Java: в HashSet всего 10 элементов, а обход всё равно тормозит Редкий нюанс: время обхода HashSet зависит от количества элементов и размера внутренней таблицы.

var ids = new HashSet<Integer>(1_000_000);

for (int i = 0; i < 10; i++) {
    ids.add(i);
}

for (int id : ids) {
    process(id);
}
После добавления элементов внутри выделена огромная таблица. Итератор проходит по её ячейкам, включая пустые, хотя size() возвращает всего 10. Сложность обхода - O(size + capacity). Поэтому большая ёмкость «про запас» может замедлить регулярный перебор. Если коллекция уже сильно разрослась, а затем почти опустела, можно пересобрать её:

ids = new HashSet<>(ids);
Новый набор подберёт ёмкость под оставшиеся элементы. Пересборка требует времени и дополнительной памяти, поэтому имеет смысл перед многократными обходами, а не внутри каждого цикла. Документация - https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/HashSet.html

🔥 Python + AI без игрушечных демок. Курс для тех, кто хочет собирать рабочие системы. Stepik: «Python современный AI для раз
🔥 Python + AI без игрушечных демок. Курс для тех, кто хочет собирать рабочие системы. Stepik: «Python современный AI для разработчика и автоматизации задач» 63 урока, 382 шага, практика с кодом и автопроверкой. Внутри: RAG, tool calling, агенты, evals, MCP, Ollama, vLLM, pgvector + HNSW, безопасный text-to-SQL, prompt injection, кэш, очереди и sandbox для агентного кода. Плюс реальные автоматизации: почта, отчёты, боты, вебхуки и браузерные сценарии. Для тех, кто уже знает Python и хочет перейти к production AI. ⏳ 72 часа скидка 55% https://stepik.org/a/295921

☕️ Java получил практический MCP-сервер для медицинского AI-триажа На JavaOne показали систему, где жалоба пациента превращается в тикет, а AI определяет его срочность. Теперь Oracle подробно разобрала MCP-сервер, который принимает текст и возвращает оценку от 0 до 10. Сервер построен на Helidon и публикует один инструмент через @Mcp.Tool. Клиенту не нужно знать, какая модель работает внутри. Доступны два режима: * локальный MiniLM через DJL - 384-мерные эмбеддинги, без API и сети; * OpenAI text-embedding-3-small - 1536-мерные эмбеддинги. Финальную оценку в обоих случаях вычисляет локальная нейросеть DeepNetts. Важный нюанс: для каждого типа эмбеддингов нужна отдельно обученная модель оценки. Нельзя взять модель, обученную на векторах MiniLM, и передать ей векторы OpenAI, даже если привести их к одинаковому размеру. MCP-интерфейс при этом остаётся неизменным:

жалоба → эмбеддинг → DeepNetts → срочность 0–10
Локальный режим подходит для разработки и интеграционных тестов, внешний - для проверки качества на более мощной модели. https://inside.java/2026/07/25/design-java-mcp-tool/

Apache Kafka 4.x - продвинутый бесплатный практический курс 2026 года https://github.com/justxor/KAFKAFREECOURSR/tree/main
Apache Kafka 4.x - продвинутый бесплатный практический курс 2026 года https://github.com/justxor/KAFKAFREECOURSR/tree/main

Autobase Это инструмент, разработанный для автоматизации развёртывания и управления PostgreSQL-кластерами с использованием An
Autobase Это инструмент, разработанный для автоматизации развёртывания и управления PostgreSQL-кластерами с использованием Ansible. Он поддерживает широкий набор функций, включая настройку репликации, автоматизацию резервного копирования с помощью инструментов, таких как pgBackRest и WAL-G, мониторинг состояния кластеров, а также настройку высокодоступной инфраструктуры (HA). Проект упрощает настройку PostgreSQL и снижает вероятность ошибок, обеспечивая удобные плейбуки для типичных задач. Его можно использовать как для новых установок, так и для работы с существующими конфигурациями. https://github.com/autobase-tech/autobase

Школа программирования Java Online Projects поздравляет с Днем Знаний!🧑‍🎓📚 Вышло наше финальное занятие курса по Микросерв
Школа программирования Java Online Projects поздравляет с Днем Знаний!🧑‍🎓📚 Вышло наше финальное занятие курса по Микросервисной архитектуре — «Нагрузочное тестирование. Gatling». На нем мы на практике разбираем, как наше приложение ведет себя под реальной высокой нагрузкой. Вместе с ним мы запускаем последнюю акцию перед подорожанием: 🔥 Скидка 50% на курсы «Микросервисы, Kafka, Docker Spring Cloud, WebFlux» и «Деплой микросервисов в Kubernetis/Helm» ✨ Бонусы: выпускные проекты Rescue Service и TopJava2 ✨ Курс TopKotlin или DocJava в подарок Суперпредложение: скидка 55% скидка на всю линейку Микросервисов + все бонусы включены🔥 Программа на 100% покрывает продвинутый стек компетенций: ✨ Архитектура и веб-стек — начинаем с реактивных приложений: Project Reactor, Spring WebFlux, R2DBC. Дальше переходим на Spring Boot 4 — полный MVC-стек и виртуальные потоки (Virtual Threads). ✨ Инфраструктура Spring Cloud — отказоустойчивые системы на Spring Cloud Gateway и Config Server, паттерны Circuit Breaker, RateLimiter, Retry. ✨ Event-Driven & Data — асинхронное взаимодействие через Kafka, сериализация в Avro и хранение схем в Schema Registry, паттерн Outbox с Kafka Connect и Debezium поверх PostgreSQL, Hibernate/JPA и миграции Flyway. ✨ Безопасность — сквозная аутентификация и авторизация на Keycloak, OAuth 2.0, OpenID Connect и JWT, защита от CSRF, хранение сессий в Redis. ✨ Тестирование и качество — интеграционные тесты с Testcontainers, WireMock и Awaitility, проверка под высокой нагрузкой с Gatling. ✨ Observability — метрики, логи и распределенные трассировки через Micrometer, Prometheus, Loki, Tempo (или Zipkin) и визуализация всего этого в Grafana. ✨ DevOps и развертывание — пайплайны в GitHub Actions, Docker и Docker Compose, оркестрация в Kubernetes, управление релизами через Helm. 🚀 Больше 30 технологий в одной линейке! Успейте забрать курсы по суперцене до окончания акции! 💥

⚡️ «Контейнеры - это просто Linux-процессы» - полезное упрощение, но не совсем правда Обычно контейнер объясняют так: > конте
⚡️ «Контейнеры - это просто Linux-процессы» - полезное упрощение, но не совсем правда Обычно контейнер объясняют так: > контейнер = обычный Linux-процесс + namespaces + cgroups Для первого знакомства этого хватает. Но OCI Runtime Spec определяет контейнер шире: это изолированная среда для запуска процессов, а не сам процесс. И Linux-механизмы, только один из вариантов реализации. OCI охватывает не только Linux, но и: - Windows - FreeBSD - Solaris - z/OS - VM-based containers То есть контейнер не обязан быть «процессом в Linux». Важнее то, что среда соответствует контейнерной модели: изоляция, файловая система, ресурсы, lifecycle и правила запуска. Хороший разбор того, что контейнер представляет собой на самом деле: https://labs.iximiuz.com/tutorials/oci-containers-explained

🔥 Java: subList() может неожиданно удерживать огромный список в памяти Кажется, что:

List<Item> small = hugeList.subList(0, 10);
hugeList = null;
оставит только 10 элементов. Но subList() обычно создаёт представление исходного списка, а не независимую копию. Пока жив small, исходный ArrayList и его внутренний массив тоже могут оставаться в памяти. Если нужна отдельная маленькая коллекция: ` List<Item> small = new ArrayList<>(hugeList.subList(0, 10)); Особенно неприятный баг в кэшах и долгоживущих объектах: сохраняешь 10 элементов — а в памяти остаются сотни тысяч.

Приглашаем на курс для прокачки навыков архитектора и проектировщика, которые важны для профессионального роста программиста.
Приглашаем на курс для прокачки навыков архитектора и проектировщика, которые важны для профессионального роста программиста. 🌐 С курсом «Системный дизайн высоконагруженных проектов» вы: ▪️изучите ключевые фундаментальные паттерны и получите навыки проектирования проектов с миллионной аудиторией (балансировка, масштабирование апп/кешей/субд, высокая доступность и кластерные решения, шардинг, CAP/PACELS, консистентность, саги, транзакционные очереди и многое другое) ▪️поупражняетесь в проектировании и получите обратную связь на реальных задачах: магазин/маркетплейс, такси/доставка, обьявления, соцсети, дейтинг, игры, википедия, мессенжер, CDN, хранилище файлов, онлайн-кинотеатр, счетчики, удаленный мониторинг, интеграционные вебхуки, рассылки и тд. ▪️ научитесь планировать нагрузку и связывать бизнес-показатели с нефункциональными требованиями к системе ▪️ попрактикуемся в проведении и прохождения секций системного дизайна на интервью. Всё в формате живых онлайн-сессий (лекции, брейнштормы, презентации домашних проектов). 🤩 Кто мы: R&D-центр Devhands.ru, наш канал (https://t.me/rybakalexey). Основатель школы и автор курса Алексей Рыбак, ex-СТО Badoo, с 20-летним опытом высоконагруженных проектов и управления глобальными технологическими организациями. 🗓 Старт 7 сентября, изучаем программу, записываемся здесь Реклама. ИП Рыбак А.А. ИНН 771407709607 Erid: 2VtzqvimBRf

Java-ловушка: почему `parallelStream()` может замедлить приложение Многие думают: «Есть stream(), добавлю parallelStream() — станет быстрее». Но не всегда. parallelStream() использует общий ForkJoinPool Java:

users.parallelStream()
     .map(this::callExternalApi)
     .toList();
Если внутри идут HTTP-запросы, SQL или ожидание внешнего сервиса, можно получить обратный эффект: забить общий пул потоков увеличить задержки замедлить другие части приложения parallelStream() хорошо подходит для: ✅ сложных CPU-вычислений ✅ обработки больших коллекций ✅ математических операций Но плохо подходит для: ❌ HTTP ❌ базы данных ❌ файлового I/O ❌ ожидания внешних сервисов Для таких задач лучше использовать отдельный пул:

ExecutorService executor =
    Executors.newFixedThreadPool(20);
и контролировать количество параллельных операций. Главное правило: parallelStream() — для вычислений. ExecutorService — для бизнес-логики и внешних вызовов. Код может идеально работать на тестах, но в production внезапно получить проблемы из-за одного parallelStream().