Max

Java библиотека

Прямой пост
max.ru/javalib
Описание канала в MAX

Книги, статьи, мемы и многое другое для Java программиста! По сотрудничеству и рекламе: ссылка скрыта или в ЛС сообщества ВК ссылка скрыта Канал в перечне РКН: ссылка скрыта Мы на бирже: ссылка скрыта Сообщество VK ссылка скрыта

Аудитория
Смешанная аудитория
Подписчики
1 306
+1день
+5неделя
+42месяц
Охват поста
220
220за 24 часа
285в среднем
Вовлечённость
16,9%
16,9%за 24 часа
21,8%в среднем
Упоминания в других каналах

Канал упомянули 31 раз в 2 каналах

Чем больше упоминаний и каналов — тем заметнее канал в своей нише.

Информация о подписчиках
Вк, телеграм, макс

Похожие каналы

26 784
Смешанная аудитория
ERR 14%

🔓 Популярные игры, приложения для android устройств, новости технологий и многое другое. 🤝 Сотрудничество: smm@mannager.ru ⚠️ Наш чат: 🔓 Популярные игры, приложения для android устройств, новости технологий и многое другое. 🔓 Популярные игры, приложения для android устройств, новости технологий Игры, приложения, модификации, моды, новости, android, сма

2 200
4 596
Мужская аудитория
ERR 24%

Здесь рассказывают о технологиях просто и с огоньком 🔥 Канал про гаджеты, ИИ, электронику и интересные технологии — просто, честно и интересно. По вопросам сотрудничества: 6max.ru/vladimir1 Статистика канала: https://maxframe.ru/channel-profile/72081107124477/

1 990
1 877
Смешанная аудитория
ERR 19%

ChatGPT (ЧатГпт) | NanoBanana 2 (НаноБанана) | DeepSeek | Claude (Клод) | Veo 3.1 | GPT Image 2 | Kling (Клинг) | Grok | GPT 2 AI Бот | ИИ Бот | ИИ Max | нейросети | написать текст | ответы на вопросы | перевод | генерация фото | генерация видео | улучшить фото | фотосессия Бот с нейросетями — @id711601738400_bot 🧑‍💻 Связь: https://clck.ru/3T8PD8 Сервис аналитики MAX - https://maxframe.ru

600
1 841
Смешанная аудитория
ERR 15%

Вся самая новая и полезная литература для Java разработчиков! По вопросам авторских прав, сотрудничества и рекламы: https://t.me/NadikaKir или в ЛС сообщества ВК https://vk.com/javatutorial Мы на бирже: https://telega.in/channels/bookofgeek/card_max/?r=lcDuijdm Канал в перечне РКН: https://vk.cc/cJrTqo

900
13 293
Смешанная аудитория
ERR 12%

Канал с вопросами и задачами с собеседований! По сотрудничеству и рекламе: @NadikaKir Канал в перечне РКН: https://vk.cc/cJrSQZ Мы на бирже: telega.in/channels/javatasks/card?r=lcDuijdm

1 800
747
Смешанная аудитория
ERR 18%

Канал с вопросами и задачами с собеседований! По сотрудничеству и рекламе: https://t.me/NadikaKir или в ЛС сообщества ВК https://vk.com/javatutorial Канал в перечне РКН: https://vk.cc/cJrSQZ Мы на бирже: telega.in/channels/javatasks/card?r=lcDuijdm

500
Формат размещения
700

топ 1 час · сутки в ленте · цена напрямую от автора

💎Эффективность за эти деньги
3,2
CPV · за показ
3 182
CPM · за 1000
Пересчитывается от формата и охвата 220/24ч
Гарантия выхода поста и возврат средств
Надёжность сделки
Среднее время ответа админа
Среднее время ответа админа
Обычно отвечает быстро
Размещений через Помогач
Размещений через Помогач
Первое размещение — за вами
Посты в канале
Java библиотека
MAX · канал
IntelliJ IDEA: Evaluate Expression Открывается через Run → Evaluate Expression или Alt + F8 (Option + F8 на macOS). 🟢 Что это вообще такое Небольшое окно с полем ввода, в котором можно написать любое Java-выражение и мгновенно получить результат. Код выполняется в контексте текущего фрейма — видны все локальные переменные, this, поля класса. 🟢 Примеры из реальной жизни 🔘 Вызов метода на живом объекте userService.findById(42L) Не нужно писать тест — просто вызываете метод и смотрите, что он реально вернёт с текущими данными в БД. 🔘 Проверка сложного условия order.getItems().stream() .anyMatch(i -> i.getPrice().compareTo(BigDecimal.ZERO) < 0) Подозреваете, что в заказе есть товары с отрицательной ценой? Проверяете прямо сейчас, не добавляя логов. 🔘 Изменение переменной на лету user.setRole(Role.ADMIN) Хотите проверить, как поведёт себя код с другим значением — меняете стейт прямо в памяти и продолжаете выполнение. Приложение не перезапускается. 🔘 Десериализация или парсинг objectMapper.writeValueAsString(response) Получаете красивый JSON из объекта прямо в дебаггере — удобно проверить, что именно уйдёт клиенту. 🟢 Продвинутые трюки — В окне Evaluate есть переключатель с однострочного режима на Code Fragment — там можно писать многострочный код с переменными, условиями и циклами. — Результат вычисления отображается как обычная переменная в дереве дебаггера. Можно раскрыть, посмотреть вложенные поля, скопировать значение. ⚠️ Evaluate выполняет код реально — если вызовете метод с side-effect (запись в БД, отправка события), это произойдёт по-настоящему.
236 просм.10 июля, 12:56
Java совет: List.reversed() В Java появился удобный метод List.reversed(), который возвращает обратное представление списка (view). Важно понимать: он не изменяет оригинальный список и не создаёт новую копию - это просто reversed-view поверх исходного списка. Пример: var list = List.of("A", "B", "C"); var reversed = list.reversed(); System.out.println(reversed); // [C, B, A] System.out.println(list); // [A, B, C] Что происходит: - reversed() показывает элементы в обратном порядке - исходный список остаётся без изменений - создаётся view, а не копия → это быстрее и экономит память Такая техника часто используется в Java Collections для эффективных представлений данных без лишнего аллоцирования памяти. Маленькая, но очень полезная фича современной Java.
285 просм.8 июля, 21:12
👩‍💻 Spring AI: как превратить изображение документа в JSON в Java-приложении Приглашаем на открытый урок. 🗓 14 июля в 20:00 МСК 🆓 Бесплатно. Урок в рамках старта курса «Разработчик на Spring Framework». На занятии мы разберем: ✔️Что такое Spring AI и зачем он нужен Java-разработчику, который хочет добавлять AI-функции в свои приложения. ✔️Как AI-модель работает с изображениями и почему документ можно превратить в данные, пригодные для обработки в коде. ✔️Как настроить подключение к модели в Spring Boot и собрать базовый пайплайн обработки документа. ✔️Как с помощью промпта и OutputParser получить предсказуемый результат в формате JSON/POJO, а не «свободный» текст от нейросети. ✔️Какие ошибки и ограничения важно учитывать, если вы хотите использовать такой подход в реальном backend-сервисе. 🔗 Ссылка на регистрацию: https://vk.cc/cZoQ4N Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
288 просм.8 июля, 12:01
Совет по Java: можно избежать чрезмерного количества параметров метода, сгруппировав связанные значения в объекты.
356 просм.8 июля, 09:30
53 просм.7 июля, 16:57
Полезный Java-трюк: ThreadLocal.withInitial() Если нужно, чтобы каждый поток имел собственное значение переменной, используйте ThreadLocal. Метод withInitial() позволяет задать значение по умолчанию, которое будет создаваться лениво — только при первом обращении потока. Пример: ThreadLocal counter = ThreadLocal.withInitial(() -> 0); counter.get(); // 0 counter.set(70); counter.get(); // 70 Что происходит: • каждый поток получает свою независимую копию переменной • значение создаётся только когда поток впервые вызывает get() • нет гонок данных и не нужна синхронизация Это особенно полезно для: • хранения контекста запроса • connection/session объектов • временных данных в параллельных задачах • оптимизации без synchronized Главное помнить: ThreadLocal хранит данные на уровне потока, а не объекта.
443 просм.4 июля, 10:32
85 просм.3 июля, 12:01
Spring Boot: избегай FetchType.EAGER, если в этом нет реальной необходимости. ❌ Пометка связи как EAGER заставляет ORM загружать её при каждой загрузке сущности, независимо от того, вызываешь ли ты метод этой связи на самом деле.
403 просм.2 июля, 16:36
IntelliJ IDEA: продвинутый дебаг Представь, что есть цикл на 10 000 элементов, и баг воспроизводится только на одном конкретном объекте. Без Conditional Breakpoints придется жать F8 вручную сотни раз. А с ними дебаггер сам остановится в нужный момент. 🟢 Как включить Кликни правой кнопкой на кружок брейкпоинта → появится поле Condition. Введите любое булево Java-выражение. Всё, дебаггер будет останавливаться только когда оно true. 🟢 Примеры из реальной жизни ▪️ Фильтрация по ID user.getId() == 42 Останавливаемся только на конкретном пользователе — удобно при обработке списка сущностей из БД. ▪️ Фильтрация по содержимому строки request.getUrl().contains("/admin") Отлавливаем только определённые HTTP-запросы в фильтре или интерцепторе. ▪️ Ловим NPE до того, как он случился order.getItems() == null Останавливаемся именно тогда, когда данные уже сломаны, а не после падения. ▪️ Условие по индексу в цикле i == 999 Прыгаем сразу к последней итерации, не прокручивая весь цикл. 🟢 Продвинутые трюки — Log message вместо остановки. Если не хотите прерывать выполнение, а просто логировать — в том же окне брейкпоинта включите "Evaluate and log" и введите выражение. — Pass count. Чуть ниже в настройках брейкпоинта есть поле "Pass count" — брейкпоинт сработает только на N-м попадании. — Disable until hit. Можно настроить цепочку: один брейкпоинт активирует другой. В настройках есть "Disable until breakpoint is hit" — указываете другой брейкпоинт, и текущий начнёт работать только после срабатывания того. ⚠️ Condition вычисляется на каждом попадании в брейкпоинт — это вызов на стороне JVM. В горячих местах (tight loop, высоконагруженный метод) это может заметно тормозить приложение.
466 просм.1 июля, 19:49
Java Generics — всё, что нужно знать 1. Box → Обобщённый класс • Используй, когда класс работает с любым типом (например, обёртка вокруг любого объекта, как Box, Box). 2. void print(T val) → Обобщённый метод • Используй, когда метод должен принимать любой тип (например, для печати любого объекта, логирования, сравнения и т.п.). 3. → Ограниченный тип • Называется верхней границей. • Используй, когда тип должен быть подклассом чего-то (например, утилита для работы с int, double, float). 4. → Несколько ограничений • Заставляет T реализовывать и A, и B. • Используй, когда нужны обе особенности (например, сортировка объекта, который также требует валидации). 5. → Неограниченный подстановочный тип • Это означает неизвестный тип. • Используй, когда не важен тип, нужно только читать (например, печать элементов из любого списка). 6. → Верхняя граница подстановочного типа • Означает некоторый подкласс T. • Используй при чтении из коллекции (например, чтение чисел из List без модификации). 7. → Нижняя граница подстановочного типа • Означает некоторый суперкласс T. • Используй при записи в коллекцию (например, добавление Integer в List). 8. Правило PECS • Producer Extends, Consumer Super. • Используй extends для чтения, super для записи (например, API-вход против обработки ответа). 9. List list = new ArrayList(); → Сырой тип • Это сырой тип. • Избегай — тк теряется типовая безопасность (например, компилятор не поймает, если добавишь неверные типы). 10. Стирание типов • Java удаляет всю информацию об обобщениях во время выполнения. • Поэтому нельзя использовать T.class, new T(), или instanceof T (например, нельзя делать проверки или создавать объекты на основе T). 11. Обобщённый конструктор MyClass(T val) { } • Используй, когда конструктору нужен обобщённый параметр, даже если сам класс не обобщённый (например, инициализация с динамическими типами). 12. Обобщённый интерфейс interface Mapper { T map(F input); } • Используй при преобразовании одного типа в другой (например, DTO → сущность). 13. Нельзя использовать примитивы • Нельзя List — только List. • Используй обёртки (коллекции могут хранить только объекты, не примитивы). 14. Нельзя создавать массивы с обобщением • new T[] не работает. • Используй List вместо (например, динамические коллекции). 15. Нельзя использовать подстановочные типы для вставки • Нельзя вставлять в List. • Используй , если нужна вставка (например, для пакетной обработки или модификации коллекции).
455 просм.30 июня, 20:32
Магия IntelliJ IDEA IntelliJ IDEA может помочь с созданием тестов. С помощью Ctrl + Shift + T можно сгенерировать структуру тестов для классов и методов. 🟢 Зачем это нужно — Вместо того, чтобы вручную писать шаблон тестов, IDEA сгенерирует базовую структуру тестов для классов или методов. — Особенно полезно, когда проект растет, а тестов слишком много, чтобы каждый раз выдумывать тестовую структуру с нуля. 🟢 Как использовать — Поместите курсор на класс или метод, для которого нужен тест. — Нажмите Ctrl + Shift + T (на Windows/Linux) или Cmd + Shift + T (на macOS). — Выберите, какой тестовый фреймворк использовать (JUnit, TestNG и т.д.), и IDEA предложит создать тестовый класс с нужной структурой. IDE автоматически создаст тестовый класс с методами для проверки каждого (или выбранного) публичного метода.
470 просм.30 июня, 10:07
87 просм.29 июня, 15:01
👩‍💻 Как работает @Transactional в Spring: границы транзакций и типовые ошибки Приглашаем на открытый урок. 🗓 29 июня в 20:00 МСК 🆓 Бесплатно. Урок в рамках старта курса «Разработчик на Spring Framework». На занятии мы разберем: ✔️Что реально делает @Transactional в Spring ✔️Почему важны proxy и вызов метода через Spring Bean ✔️Как работают propagation-режимы на примере REQUIRED и REQUIRES_NEW ✔️Когда происходит rollback и почему checked exceptions не всегда откатывают транзакцию ✔️Типовые ошибки при работе с транзакциями в сервисном слое Урок будет полезен Java/Kotlin-разработчикам, которые уже пишут приложения на Spring или начинают использовать Spring в реальных backend-проектах и хотят лучше понимать поведение транзакций. 🔗 Ссылка на регистрацию: https://vk.cc/cZa52o Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
438 просм.29 июня, 10:02
273 просм.28 июня, 17:50
105 просм.28 июня, 13:02
823 просм.28 июня, 09:15
Security со Spring Boot 3.1 | Авторизация и Аутентификация В этом видео мы разберемся, как выполнить аутентификацию и авторизацию с помощью spring boot 3.1 и spring security 6 СМОТРЕТЬ VKVIDEO СМОТРЕТЬ RUTUBE СМОТРЕТЬ YOUTUBE
479 просм.27 июня, 19:18
30 июня в 18:00 начнется бесплатный вебинар «Почему Java-разработчику следует брать на вооружение Quarkus». В прямом эфире рассмотрим ключевые преимущества Quarkus перед Spring Boot: родную сборку (миллисекундный запуск), малое потребление памяти и удобство разработки. Содержание: ✅Проблема долгого запуска и высокого потребления памяти в Spring Boot. ✅Что такое Quarkus? Окружающая среда расширений, родная сборка (GraalVM). ✅Живой код: создание REST-сервиса на Spring Boot и на Quarkus (сравнение). ✅Измерение времени запуска и потребления памяти. ✅Как родная сборка ускоряет размещение в Kubernetes и снижает затраты. ✅Настоящий случай из практики автора (обработка 1 000 tps). ✅Как продолжить изучение: курс QRK-001 «Quarkus: разработка микросервисов на Java или Kotlin». 👨‍🎓Спикер: Чвилёв Константин, эксперт в области разработки ПО 🗓️Когда: 30 июня, 18:00–19:00 (Мск) 👉Регистрация👈 #реклама О рекламодателе
182 просм.27 июня, 15:01
Java. Анонимное наследование и блок инициализации. Разбираем создание и настройку объекта при помощи анонимного наследования и реализации блока инициализации. СМОТРЕТЬ VKVIDEO СМОТРЕТЬ RUTUBE СМОТРЕТЬ YOUTUBE
492 просм.27 июня, 11:20
Collections.singletonList вместо new ArrayList<>() Когда список точно из одного элемента — не создавай изменяемый: // ❌ Избыточно List roles = new ArrayList<>(); roles.add("ADMIN"); someMethod(roles); // ✅ Лаконично и без лишней аллокации someMethod(Collections.singletonList("ADMIN")); singletonList возвращает неизменяемую обёртку вокруг одного объекта без внутреннего массива. Это дешевле по памяти и явно выражает намерение. ⚠️ Список иммутабельный, add() бросит UnsupportedOperationException. ✔️ Альтернатива в Java 9+: List.of("ADMIN") — то же самое, но более современный API.
521 просм.26 июня, 11:05
🧠 Хотите разрабатывать ИИ-системы — и понимать, как они устроены изнутри? Программа «Математические основы искусственного интеллекта» в Университете Иннополис даёт именно тот фундамент, который отличает сильного AI-специалиста от среднего. 📌 Три трека на выбор: — Академический — наука и исследования в области AI 🔬 — Индустриальный — продукты и бизнес-применения ИИ — Робототехнический — умные машины и автономные системы 🤖 Как строится обучение: • 1–3 курс — математическая и инженерная подготовка, работа с реальными данными • 4 курс — годовая практика в компании-партнёре Преподаватели — специалисты из МФТИ, ВШЭ, ИТМО, Яндекса, Сбера и Т-Банка. 🔖 Грантовый конкурс даёт скидку вплоть до полного покрытия стоимости обучения. Раннее зачисление — до ЕГЭ. 👉 https://tglink.io/bdcef9146b6b12?erid=2W5zFJXS8Gy 👈 #реклама О рекламодателе
228 просм.26 июня, 10:07
Ускоряем Spring Boot без изменения кода Многие приложения тормозят не из-за бизнес-логики, а из-за логирования. Каждый лог - это I/O операция. При высокой нагрузке это становится узким местом. Решение - асинхронное логирование через Logback. Что происходит: - сообщения складываются в очередь - отдельный поток обрабатывает их в фоне - основной поток не блокируется - меньше задержек и выше throughput Настройка проста - добавьте logback-spring.xml в: src/main/resources/ Пример конфигурации: 5000 0 false %d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] %logger - %msg%n Когда это особенно полезно: • high-load сервисы • микросервисы с большим количеством логов • API с высокой RPS • продакшен-окружение ⚠️ Важно: при аварийном завершении часть логов из очереди может потеряться. Для критичных логов используйте файл + async. Маленькая настройка - большой прирост производительности.
524 просм.25 июня, 18:27
Как использовать ИИ в разработке не ради экспериментов, а для решения реальных задач? 29 июня в 20:00 на открытом вебинаре рассмотрим современные ИИ-инструменты для разработчиков и практические сценарии их применения. В программе: • разбор решений для ускорения написания и отладки кода; • демонстрация инструментов генерации кода, тестов и документации; • кейсы использования LLM в повседневной разработке; • примеры внедрения ИИ в рабочие процессы и CI/CD-пайплайны. Вебинар поможет разобраться в возможностях современных ИИ-инструментов, понять, как использовать нейросети для рефакторинга и анализа кода, а также подобрать подходящие решения под свой стек технологий. Регистрация бесплатный на урок: https://vk.cc/cZ3MhY Урок пройдёт в рамках старта курса «ИИ для разработчиков». Старт курса 29.06.2026. Плюс скидка 15% за прохождение вступительного тестирования (на страничке курса). Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
490 просм.25 июня, 13:01
Класс "обертка" (wrapper class) Класс-обертка (wrapper class) — это класс, который обеспечивает возможность использования примитивных типов данных как объектов. Каждый примитивный тип данных в Java имеет соответствующий класс-обертку: byte — Byte, short — Short, int — Integer, long — Long, float — Float, double — Double, boolean — Boolean и char — Character. Классы-обертки используются, например, при работе с объектами коллекций, такими как ArrayList, где примитивные типы не могут быть использованы (список может хранить только объекты). В этом примере мы создаем объекты классов-оберток для примитивных типов int, double, char и выводим значения этих объектов с помощью метода println().
534 просм.24 июня, 18:44
erid: 2W5zFGYosa1 Почему одни ИТ-специалисты быстро растут в карьере, а другие годами остаются на одном уровне?🤔 Важный фактор — насмотренность. Следите за новостями отрасли и знакомьтесь с новейшими российскими ИТ-решениями в канале VK Tech. Здесь ведущий вендор российского ПО делится инсайтами с конференций, трендами развития ИИ, кейсами внедрения своих решений и анонсами мероприятий — все здесь, в одном канале. О чем еще говорят в канале: 🔹 Как и почему сейчас рынок отказывается от джунов и ищет архитекторов. Что делать и куда идти по карьерному треку в ИТ? 🔹Что важнее для компаний: скорость развития или технологическая устойчивость? 🔹Исследование: рынок ПО для ИИ в России вырастет почти вчетверо к 2030 году. 🔹Где тонкая грань между простым внедрением продукта в деятельность компании и качественным онбордингом? Подписывайтесь на канал VK Tech, чтобы держать руку на пульсе российских технологий.
208 просм.24 июня, 15:02
Spring Boot: не отдавайте JPA Entity напрямую в API - используйте DTO на границах Если возвращать Entity из контроллера, вы жёстко связываете API с внутренней моделью базы. Любое изменение в persistence-слое может сломать внешний контракт. DTO решает сразу несколько проблем: • API становится независимым от слоя данных • Избегаете ошибок LazyInitializationException • Не утечёт лишняя информация (например, password, internalNote) • Улучшается безопасность и контроль над тем, что видит клиент Идея простая: Entity - для базы DTO - для API Конвертируйте Entity → DTO в сервисе или через mapper (MapStruct / manual mapping). Чистые границы = стабильный API и меньше багов.
582 просм.23 июня, 00:30
ИИ-агенты против младших разработчиков: кто кого заменит к концу 2026 года. Открытый урок курса «ИИ-агенты: продвинутое внедрение и использование» в OTUS Разговоры о том, что ИИ-агенты заменят младших разработчиков, уже перестали быть футуристикой. Но паника здесь бесполезна. Важно понять, что агенты реально умеют в 2026 году, где они уже сильнее начинающего специалиста, а где без человека всё ещё разваливаются на контексте, архитектуре, проверке решений и ответственности за результат. На открытом уроке 22 июня в 20:00 разберём, на что сегодня способны автономные ИИ-агенты в разработке. Дадим агенту реальную задачу с собеседования и посмотрим, справится ли он без помощи человека. Обсудим, какие профессии и роли в ИТ уже начали меняться под давлением ИИ, а какие окажутся следующими. Отдельно поговорим о том, как пересобрать карьерную траекторию: какие навыки останутся востребованными в ближайшие 3–5 лет, как использовать агентов не как угрозу, а как усилитель продуктивности, и с каких проектов стоит начать, чтобы быть «над агентами», а не конкурировать с ними за простые задачи. Урок не для тех, кто хочет услышать успокоительное «ничего не изменится», и не для тех, кто верит в простую замену людей машинами. Будет полезен тем, кто хочет трезво оценить рынок, понять ограничения ИИ-агентов и перестроить свой рост под новую реальность разработки. 👉 Записаться: https://vk.cc/cYXAPg Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
540 просм.22 июня, 12:01
Spring Boot: для чистых REST-контроллеров используйте @RestController вместо @Controller + @ResponseBody @RestController — это мета-аннотация, которая включает @ResponseBody, и затем автоматически применяется ко всем методам: @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Controller @ResponseBody public @interface RestController { } С использованием @Controller и @ResponseBody: @Controller public class MyController { @ResponseBody @GetMapping("/hello") public String hello() { return "Hello!"; } } С использованием @RestController: @RestController public class MyController { @GetMapping("/hello") public String hello() { return "Hello!"; } }
577 просм.22 июня, 09:44
⚡️ Spring Boot: полный контроль над HTTP-ответами через ResponseEntity Если нужно управлять не только телом ответа, но и статусом и заголовками — используйте ResponseEntity. Что это даёт: - Явно задаёте HTTP-статус (200, 404, 201 и т.д.) - Добавляете кастомные заголовки - Возвращаете любой объект в body - Контролируете поведение API на уровне протокола Пример: @GetMapping("/users/{id}") public ResponseEntity getUser(@PathVariable Long id) { User user = userService.findById(id); if (user == null) { return ResponseEntity.status(HttpStatus.NOT_FOUND).build(); } return ResponseEntity .status(HttpStatus.OK) .header("Custom-Header", "UserFound") .body(user); } • разные статусы для разных сценариев (404, 400, 204) • REST API с чёткой семантикой • добавление headers (pagination, tokens, meta) • возврат пустого ответа без body Совет: Если метод просто возвращает данные - достаточно вернуть объект. Если нужен контроль над HTTP - всегда ResponseEntity.
645 просм.21 июня, 11:32
Java API Tip Безопасное приведение long к int Используй Math.toIntExact() — этот метод возвращает значение long, но выбрасывает ArithmeticException, если оно не помещается в int Без него преобразование произойдёт молча — и ты можешь получить некорректный результат без всяких ошибок. Используй toIntExact, когда важно контролировать переполнение
667 просм.20 июня, 11:32
Получи грант до 1,35 млн руб. на обучение в магистратуре Хочешь развиваться в сфере ИТ и получить фундаментальные знания с практикой? Поступай в магистратуру Центрального университета! — 4 офлайн программы по востребованным направлениям ИТ — 2 онлайн-программы: машинное обучение и продуктовый менеджмент — 550 грантов до 75% — Вечерние занятия и учеба по выходным — удобно совмещать с работой — Обучение по модели STEM-образования: на стыке науки, технологий и бизнеса — Возможность стажировок и трудоустройства в ведущих компаниях — Государственный диплом за 2 года Магистратура в Центральном университете — это современный подход к образованию, сильный преподавательский состав и актуальные кейсы от индустрии. Оставляй заявку на грант уже сейчас!
368 просм.19 июня, 15:00
Java Совет: вы можете откатить транзакцию БД, созданную аннотацией @Transactional, получив текущий TransactionStatus через класс TransactionAspectSupport и установив для него rollback через setRollbackOnly();. Таким образом, не нужно выбрасывать исключение.
767 просм.18 июня, 16:37
Вайб‑кодинг: хайп для пет-проектов или мощь для прома? Узнаем на митапе! ✌️ Айтишники Новосибирска, собираемся 25 июня в лофте FoodFactory, чтобы обсудить ИИ в финтехе и создании продуктов. В программе митапа: ✔️ реальные кейсы продуктов разного масштаба; ✔️ риски и выгоды агентной разработки; ✔️ дискуссии с экспертами. Занесите в календарь: 25 июня, 19:00, лофт FoodFactory, быть обязательно!  Регистрация тут
683 просм.18 июня, 11:00
🚫 Spring Boot: не используй FetchType.EAGER без реальной необходимости Кажется удобным, но на практике это ловушка. Когда ты ставишь EAGER, ORM начинает загружать связи всегда, даже если они тебе вообще не нужны. Что происходит под капотом: ❌ Загружается лишнее ❌ Растёт нагрузка на БД ❌ Ухудшается производительность И самое неприятное 👇 Ты получаешь классический N+1 problem: - 1 запрос на все Orders - + N запросов на связанные Customers И это может убить приложение на проде. 👉 Правильный подход: - по умолчанию используй LAZY - загружай связи явно (fetch join / entity graph) - контролируй, что и когда тянется из БД EAGER - это не удобство. Это скрытый источник проблем.
768 просм.17 июня, 18:49
Локальный запуск LLM перестал быть экспериментом Все больше команд разворачивают AI-модели внутри своей инфраструктуры, чтобы защитить данные, снизить зависимость от внешних сервисов и сократить расходы на API. 📅 23 июня в 20:00 МСК приглашаем на бесплатный открытый урок «Обзор инфраструктуры Ollama». На занятии разберем: • как устроена платформа Ollama для локального запуска LLM; • установку и настройку на Linux, macOS и Windows; • работу с моделями: загрузку, запуск, управление версиями; • квантизацию и оптимизацию моделей для ограниченных ресурсов. После урока вы: ✅ поймете архитектуру Ollama и принципы ее работы; ✅ сможете развернуть локальную LLM без облачных зависимостей; ✅ узнаете, как эффективно использовать вычислительные ресурсы и выбирать подходящие модели. Урок будет полезен разработчикам, DevOps-инженерам и всем, кто изучает практическое применение ИИ. Регистрация: https://vk.cc/cYOiJr Открытый урок пройдет в преддверии старта курса «ИИ для разработчиков» Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
847 просм.16 июня, 12:02
Java совет: сравнение времени без ловушек точности Иногда при сравнении времени в Java проверки равенства могут неожиданно падать, потому что значения отличаются на миллисекунды или наносекунды. Например: Instant a = Instant.parse("2025-10-01T10:42:11Z"); Instant b = Instant.parse("2025-10-01T10:42:44Z"); Если сравнивать напрямую, они разные. Но если вам важна точность до минуты, это можно легко исправить. Используйте Instant.truncatedTo(): boolean sameMinute = a.truncatedTo(ChronoUnit.MINUTES) .equals(b.truncatedTo(ChronoUnit.MINUTES)); System.out.println(sameMinute); // true Метод truncatedTo() обрезает время до нужной точности: • ChronoUnit.MINUTES • ChronoUnit.HOURS • ChronoUnit.DAYS Это помогает избежать проблем, когда значения отличаются только в миллисекундах или наносекундах. Полезно для: • логов • временных окон • аналитики • дедупликации событий Маленький приём — но часто спасает от неочевидных багов в time-логике.
888 просм.12 июня, 21:36
В России можно посещать IT-мероприятия хоть каждый день: как оффлайн, так и онлайн Но где их находить? Как узнавать о них раньше, чем когда все начнут выкладывать фотографии оттуда? Переходите на канал IT-Мероприятия России. В нём каждый день анонсируются мероприятия со всех городов России 📆 в канале размещаются как онлайн, так и оффлайн мероприятия; 👩‍💻 можно найти ивенты по любому стеку: программирование, frontend-backend разработка, кибербезопасность, дата-аналитика, osint, devops и другие; 🎙 разнообразные форматы мероприятий: митапы с коллегами по цеху, конференции и вебинары с известными опытными специалистами, форумы и олимпиады от важных представителей индустрии и многое другое А чтобы не искать по разным форумам и чатам новости о предстоящих ивентах: 🚀 IT-мероприятия России — подписывайся и будь в курсе всех предстоящих мероприятий!
833 просм.12 июня, 11:02
163 просм.12 июня, 10:39
Java совет: LRU Cache за 10 строк Можно реализовать LRU (Least Recently Used) cache буквально в пару строк с помощью LinkedHashMap. Главная идея: — используем порядок доступа (accessOrder = true) — переопределяем removeEldestEntry Пример: int capacity = 3; Map cache = new LinkedHashMap<>(capacity, 0.75f, true) { protected boolean removeEldestEntry(Map.Entry eldest) { return size() > capacity; } }; cache.put(1, "one"); cache.put(2, "two"); cache.put(3, "three"); cache.get(1); // обновили "свежесть" cache.put(4, "four"); // удалится 2 (LRU) System.out.println(cache); Почему это полезно: — O(1) операции — минимум кода — встроенная реализация без велосипедов Используй, если нужен быстрый in-memory cache без лишней сложности.
936 просм.10 июня, 18:37
👩‍💻 Контейнеризация Java-приложений с Docker Приглашаем на открытый урок. 🗓 22 июня в 20:00 МСК 🆓 Бесплатно. Урок в рамках старта курса «Java разработчик. Экспертный уровень». В современной промышленной разработке бизнес-приложения всё чаще запускаются в облачных средах, и умение работать с Docker-контейнерами становится неотъемлемой частью работы Java-разработчика. На занятии мы разберем: ✔️ Что такое Docker-контейнер и зачем он нужен разработчику? ✔️ Как развернуть и запустить Java-приложение в Docker-контейнере? ✔️ Основы профилирования и отладки приложений внутри Docker-контейнера. Урок будет полезен тем, кто хочет: - Освоить навыки работы с Docker-контейнерами. - Узнать, как контейнеризация помогает в разработке и развертывании приложений. - Получить практические знания по запуску, тестированию и профилированию Java-приложений в Docker. 🔗 Ссылка на регистрацию: https://vk.cc/cYBXci Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
910 просм.10 июня, 11:01
Совет по Java : Если нужно посчитать количество вхождений элемента в списке, можно использовать Collections.frequency(...).
983 просм.9 июня, 09:06
Магия IntelliJ IDEA: код без проекта Нужно быстро протестировать Stream API, проверить регулярку или набросать алгоритм? Создавать временный класс в проекте — оверкилл. Для этого есть Scratch Files. 🟢 Что это Временные файлы с полной поддержкой языка: подсветка, автокомплит, запуск кода. Живут в IDE, но не в проекте. Не попадают в Git, не захламляют структуру. 🟢 Как создать — Ctrl+Shift+Alt+Insert → Scratch File. — File → New → Scratch File. — Или Ctrl+Shift+A → "New Scratch File". 🟢 Два типа Scratch Files — файлы с конкретным языком (Java, Kotlin, SQL, JSON). Поддерживают автокомплит и выполнение. Scratch Buffers — простой текст для заметок и TODO. 🟢 Зачем это нужно — Тестируешь алгоритм без создания Test класса. — Прототипируешь SQL перед добавлением в JPA. — Сохраняешь сниппеты со Stack Overflow. — Отлаживаешь регулярки, парсинг JSON, работу с датами. Особенно полезно при рефакторинге: копируешь сложную логику в scratch, тестируешь варианты упрощения, не трогая основной код. 🟢 Фишки — Автосохранение между перезапусками IDE. — Запуск кода: Ctrl+Shift+F10 для Java/Kotlin. — Все файлы в одном месте: Project view → Scratches and Consoles. — Хранятся локально в ~/.config/JetBrains/, не в проекте.
1 054 просм.8 июня, 17:21
148 просм.8 июня, 10:35
148 просм.7 июня, 19:25
1 679 просм.7 июня, 11:04
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'ами между сервисами. ▪️ Для явного указания таймзоны: java.timeZone(TimeZone.getTimeZone("Europe/Moscow"))
1 124 просм.6 июня, 09:23
Java tip: начиная с Java 14 можно использовать switch expressions - код становится короче и чище. Раньше switch выглядел так: много case, break и дополнительная переменная. Теперь можно писать компактнее и понятнее. String season = switch (month) { case 12, 1, 2 -> "Winter"; case 3, 4, 5 -> "Spring"; default -> "Invalid"; }; Что это даёт: - меньше шаблонного кода - нет break - результат можно сразу присвоить переменной - логика читается намного проще Такие мелкие фичи сильно упрощают большие кодовые базы и уменьшают количество ошибок. Java библиотека
1 169 просм.5 июня, 09:50
Совет по Java: начиная с Java 15 можно использовать String.formatted(...) для форматирования строк вместо String.format(...). Работает как String.format, но выглядит немного чище и понятнее: Вместо: String message = String.format("Hello %s, you have %d messages", user, count); System.out.println(String.format("Hello %s, you have %d messages", user, count)); Можно написать: String message = "Hello %s, you have %d messages".formatted(user, count); System.out.println("Hello %s, you have %d messages".formatted(user, count)); Также хорошо работает с многострочным форматированием: String json = """ { "user": "%s", "messages": %d } """.formatted(user, count); Java библиотека
1 254 просм.3 июня, 10:04
👩‍💻 ИИ-ассистенты уже умеют писать код, предлагать исправления и ускорять разработку. Но в реальных проектах вайб-кодинг часто заканчивается нестабильным результатом, неожиданными ошибками и хаосом в промптах. На открытом уроке: разберём, почему красивые демонстрации не всегда работают в production-задачах и как перейти от случайного использования ИИ к системному подходу поговорим о типичных ошибках при работе с ИИ-ассистентами, разберём практики, которые помогают получать предсказуемый результат покажем, как использовать шаблоны и подходы, применимые в реальной разработке разберём живую демонстрацию на open-source проекте После занятия вы поймёте, как выстраивать управляемую работу с ИИ-инструментами, где находятся риски и как переносить рабочие подходы в свои проекты. 🗓 Открытый урок пройдёт 16 июня в 20:00 МСК в преддверии старта курса «ИИ для разработчиков». Подробности и регистрация: https://vk.cc/cYpvEG Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
1 267 просм.2 июня, 12:01
Spring Boot трюк, который спасает продакшен Если ваш сервис обращается к внешним API — рано или поздно они начнут падать, тормозить или отдавать ошибки. Вместо ручной логики повторов используйте @Retryable. Что это даёт: - Автоматические повторные запросы при ошибках - Настраиваемое количество попыток - Exponential backoff (увеличение задержки между попытками) - Fallback-логика через @Recover, если всё окончательно сломалось Когда это нужно: - Платёжные шлюзы - Внешние API - Микросервисы - Любые нестабильные сети Главная идея: Не падай из-за временных ошибок - попробуй ещё раз. Такая мелочь может значительно повысить стабильность системы без сложного кода. Java библиотека
1 280 просм.2 июня, 09:29

Посты загружаются автоматически из канала. Администрация сайта не несёт ответственности за их содержание и размещённые в них ссылки.