Latest posts

Библиотека джависта | Java, Spring, Maven, Hibernate
23 Sept, 09:28
⚙️ В чем разница между балансировщиками нагрузки, обратными прокси и API-шлюзами?1️⃣ Балансировщик нагрузкиРаспределяет клиентские запросы между серверами, выбирая их по алгоритму, чтобы равномерно распределять нагрузку, избегать перегрузок и обеспечивать стабильную работу системы.Он получает запрос, перенаправляет его на сервер, принимает ответ и отправляет его обратно клиенту.Это увеличивает пропускную способность, снижает задержки и оптимизирует использование ресурсов.2️⃣ Обратные проксиРаботают как посредники между клиентами и серверами, обрабатывая запросы и передавая данные, скрывая серверы и повышая их безопасность.Они обеспечивают контроль за сетевым трафиком, снижая риски атак и угроз.Дополнительно, они могут кэшировать контент для уменьшения нагрузки на сервер, сжимать данные для ускорения передачи и управлять SSL/TLS-шифрованием, разгружая веб-серверы.3️⃣ API-шлюзыРаботают как единая точка входа для всех API-запросов, направляя их к нужным микросервисам и собирая результаты.Они упрощают взаимодействие клиентов с разными сервисами, добавляют защиту, применяют правила, переводят между веб-протоколами и агрегируют данные.Идеально подходят для работы с микросервисной архитектурой.══════ Навигация ══════ Вакансии • Задачи • Собесы🐸 Библиотека джависта


Библиотека джависта | Java, Spring, Maven, Hibernate
22 Sept, 07:05
🔥 Java 27 вышла — и там есть что обсудить15 сентября вышел JDK 27. Среди заметных изменений:— G1 GC теперь используется по умолчанию во всех окружениях — Compact Object Headers включены по умолчанию — потенциально меньше heap footprint — TLS 1.3 получил hybrid key exchange для постквантовой криптографии — Structured Concurrency — уже седьмой preview — Lazy Constants — третий preview — Vector API и Primitive Types in Patterns продолжают развиватьсяБольшая часть новых возможностей всё ещё в preview/incubator, поэтому в production их пока стоит воспринимать соответствующе.🔗 Источник══════ Навигация ══════ Вакансии • Задачи • Собесы🐸 Библиотека джависта


Библиотека джависта | Java, Spring, Maven, Hibernate
21 Sept, 12:04
⌛ Сохраняйте шпаргалку по OAuth══════ Навигация ══════ Вакансии • Задачи • Собесы🐸 Библиотека джависта
Библиотека джависта | Java, Spring, Maven, Hibernate
20 Sept, 12:04
🧠 Почему a.age() - b.age() может сломать сортировкуЧасто встречается такой Comparator:list.sort((a, b) -> a.age() - b.age());Проблема — переполнение int.🔴 Например:Integer.MIN_VALUE - 1 // Integer.MAX_VALUEИз-за этого компаратор может вернуть неправильный знак, и сортировка нарушит порядок.🔴 Надёжнее:list.sort(Comparator.comparingInt(User::age));🔴 А если нужна дополнительная сортировка:
Библиотека джависта | Java, Spring, Maven, Hibernate
19 Sept, 11:03
🤯 Collectors.teeing — две агрегации в одном collectНужно получить средний возраст и количество пользователей?🟡 Вместо ручной логики можно объединить два коллектора:record Stats(double avg, long count) {}Stats stats = users.stream().collect( Collectors.teeing( Collectors.averagingInt(User::age), Collectors.counting(), Stats::new ) );🟡 teeing передаёт элементы двум коллекторам, а затем объединяет их результаты вашей функцией.Полезно, когда нужно собрать сразу несколько независимых метрик.
Библиотека джависта | Java, Spring, Maven, Hibernate
18 Sept, 08:05
══════ Навигация ══════ Вакансии • Задачи • Собесы🐸 Библиотека джависта


Библиотека джависта | Java, Spring, Maven, Hibernate
17 Sept, 12:49
⚡️⚡️Joker 2026: что происходит с профессией разработчикаИндустрия разработки проходит через серьезный переломный момент. Меняются не только инструменты и фреймворки, но и привычный подход к работе.Поэтому в этом сезоне меняется и Joker: первый день традиционно посвящен Java — Core Java, рантайму и работе на уровне железа. А во второй день будем обсуждать, как прямо сейчас меняется сама инженерная практика.В программе — Context Engineering, команды из людей и ИИ-агентов, Self-Evolving Agents, новые подходы к архитектуре и работе с моделями, а также вопросы ответственности и роли эксперта.Собрали главные темы второго дня в карточках.🌟С промокодом: javaproglib персональные билеты дешевлеПолное расписание и билеты — на сайте.




Библиотека джависта | Java, Spring, Maven, Hibernate
17 Sept, 08:32
🧠 Что выведет код?❤️ [1, 2, 3, 4] 🔥 [2, 4] 👍 [1, 3] 👾 ConcurrentModificationException👇 Правильный ответ (нажми, чтобы прочитать):[1, 3] — removeIf удаляет элементы, которые подходят под условие:чётные 2 и 4 исчезают, остаются 1 и 3.Метод предназначен для удаления элементов по условию без ручного изменения списка внутри for-each.⚠️ Ловушка:Если написать так:var list = List.of(1, 2, 3, 4);


Библиотека джависта | Java, Spring, Maven, Hibernate
16 Sept, 09:04
🛠 computeIfAbsent — кэш и группировка без ifНужно положить значение в список по ключу. Обычно пишут так:if (!map.containsKey(key)) { map.put(key, new ArrayList<>()); } map.get(key).add(value);С computeIfAbsent короче:map.computeIfAbsent(key, k -> new ArrayList<>()).add(value);Если ключ отсутствует или связан с null, будет создан список. Затем в него добавится значение.Удобно для:— группировки данных; — создания коллекций по ключу; — простых кэшей.
Библиотека джависта | Java, Spring, Maven, Hibernate
15 Sept, 09:36
❓ Как правильно определять границы сервисов в микросервисной архитектуре?Один из недооценённых скиллов в разработке — это умение провести правильную границу между сервисами. Большинство «распределённых монолитов», которые мы встречаем в продакшене, рождаются именно здесь.🟡 Что такое Service BoundaryЭто контракт на три вещи:— за что сервис отвечает; — какими данными он владеет; — как он общается с соседями.Представь компанию: HR не лезет в финансы, а склад не занимается зарплатами. Так же должны работать твои сервисы.🟡 4 принципа, которые работают1. Business Capability FirstРежь по бизнес-функциям, а не по техническим слоям. OrderService, PaymentService, UserService, потому что именно так бизнес думает о системе.
Библиотека джависта | Java, Spring, Maven, Hibernate
14 Sept, 19:40edited
😭 Как не потратить недельный лимит AI-кодинга за три дня?Разберём на вебинаре, как тратить меньше на AI-агентов — без потери качества кода.🔘 Поговорим о том:— когда дорогая модель действительно нужна, а когда хватит дешёвой; — сколько стоит один прогон и куда уходят токены; — какие задачи можно отдавать субагентам; — как настроить маршрутизацию моделей; — что проверять в AI-коде перед merge.✏️ Покажем всё на конкретных цифрах и вживую: сравним расходы до и после.⬇️ 17 сентября, 19:00 МСК ⬇️ 1,5 часа · бесплатно ⬇️ Арсений Харланов и Олег Лайок💬 Пишите в комментариях, где упираетесь в лимиты и на что уходят деньги. Самые залайканные вопросы


Библиотека джависта | Java, Spring, Maven, Hibernate
14 Sept, 11:31
🤔 Вопрос с собеседованияЧто выведет код?❤️ — 1 🔥 — 2 👍 — ошибка компиляции👇 Правильный ответ (нажми, чтобы прочитать):2return в try вычисляет значение, но перед фактическим выходом из метода выполняется finally. return 2 из finally заменяет результат из try.⚠️ На практике так делать не стоит: return в finally может скрыть исключение или изменить ожидаемый результат метода.══════ Навигация ══════ Вакансии • Задачи • Собесы


Библиотека джависта | Java, Spring, Maven, Hibernate
14 Sept, 09:04
А вы уже забрали свой подарок ко Дню программиста?Мы в Tproger вместе с нашими друзьями собрали целую коробку подарков к вашему профессиональному празднику. Переходите по ссылке, трясите коробку и забирайте свой презент: https://tprg.ru/3j14
1,770Open in Telegram
Библиотека джависта | Java, Spring, Maven, Hibernate
13 Sept, 12:04
══════ Навигация ══════ Вакансии • Задачи • Собесы🐸 Библиотека джависта


Библиотека джависта | Java, Spring, Maven, Hibernate
13 Sept, 10:33
🌸 Вселенная намекает: пора уже начать этот курсС 14 сентября цены в Proglib Academy вырастут на 20% 👀Так что если курс давно ждёт своего часа — лучше не откладывать ещё на месяц 😏📍 Выбрать курс
Библиотека джависта | Java, Spring, Maven, Hibernate
12 Sept, 09:00
🤯 Objects.requireNonNullElse вместо тернарникаКогда нужно подставить значение, если переменная null:// было String result = (name != null) ? name : "Гость";// стало String result = Objects.requireNonNullElse(name, "Гость");🔴 А если значение по умолчанию дорого вычислять — используйте ленивый вариант:Objects.requireNonNullElseGet( name, () -> loadDefault() );🔴 Главное различие:requireNonNullElse — дефолтное значение уже вычислено.
Библиотека джависта | Java, Spring, Maven, Hibernate
12 Sept, 08:02
🌞 Готовим вебинар про AI в разработке и хотим сделать его максимально полезнымЧто реально хочется разобрать? Где чаще всего застреваете? Что пробовали, но так и не получилось нормально внедрить?🤩 Пишите вопросы в комментариях — самые залайканные разберём на вебинаре в первую очередь.Задавайте всё, что давно хотелось спросить 📍══════ Навигация ══════ Вакансии • Задачи • Собесы🐸 Библиотека джависта
Библиотека джависта | Java, Spring, Maven, Hibernate
11 Sept, 11:38
🥊 Spring Boot 4 vs Quarkus — что выбрать в 2026?Оба подходят для микросервисов на Java, но оптимизируют разные вещи.🔴 Quarkus → больше работы переносит на build time; → быстрый старт и низкое потребление памяти; → особенно интересен для serverless и native image.🔴 Spring Boot 4 → огромная экосистема Spring; → привычный стек и высокая скорость разработки; → больше возможностей подключить готовые решения без смены подхода.По производительности нельзя просто объявить победителя: важны workload, JVM/native mode, настройки и конкретные бенчмарки.А что выберете для нового микросервиса?❤️ Spring Boot 4 👍 Quarkus


Библиотека джависта | Java, Spring, Maven, Hibernate
10 Sept, 11:03
🛠 groupingBy: собрать Map из списка🟡 Нужно разложить пользователей по городам?Map<String, List<User>> byCity = users.stream() .collect(Collectors.groupingBy(User::city));🟡 Нужны не пользователи, а количество?Map<String, Long> counts = users.stream() .collect(Collectors.groupingBy( User::city, Collectors.counting() ));🟡 А дальше можно комбинировать коллекторы:Collectors.mapping(...) Collectors.averagingInt(...) Collectors.summingInt(…)
Библиотека джависта | Java, Spring, Maven, Hibernate
9 Sept, 12:12edited
🔗 Что такое pinning виртуального потокаВиртуальный поток обычно отцепляется от carrier thread, когда блокируется на операции ожидания. Но в некоторых ситуациях он может остаться привязанным к платформенному потоку — это называется pinning.Классические причины: 🔘 блокирующая операция внутри synchronized; 🔘 выполнение native-кода через JNI.Почему это важно? Пока виртуальный поток pinned, carrier thread не может нормально использоваться для выполнения других виртуальных потоков.🤔 А что с synchronized?Начиная с Java 24, JVM изменила реализацию мониторов так, чтобы блокировка внутри synchronized больше не приводила к pinning виртуального потока в прежних сценариях.Поэтому старый совет «везде заменить synchronized на ReentrantLock» уже неактуален.
Related Channels
Other channels in the same section of the catalogue.
