Библиотека джависта | Java, Spring, Maven, Hibernate
Все самое полезное для Java-разработчика в одном канале. Учиться у нас: clc.to/AATM8w Для обратной связи: @proglibrary_feeedback_bot По рекламе: @proglib_adv РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
Show more📈 Analytical overview of Telegram channel Библиотека джависта | Java, Spring, Maven, Hibernate
Channel Библиотека джависта | Java, Spring, Maven, Hibernate (@javaproglib) in the Russian language segment is an active participant. Currently, the community unites 22 111 subscribers, ranking 5 874 in the Technologies & Applications category and 29 824 in the Russia region.
📊 Audience metrics and dynamics
Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 22 111 subscribers.
According to the latest data from 01 September, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -110 over the last 30 days and by 0 over the last 24 hours, overall reach remains high.
- Verification status: Not verified
- Engagement rate (ER): The average audience engagement rate is 9.85%. Within the first 24 hours after publication, content typically collects 4.70% reactions from the total number of subscribers.
- Post reach: On average, each post receives 2 178 views. Within the first day, a publication typically gains 1 040 views.
- Reactions and interaction: The audience actively supports content: the average number of reactions per post is 13.
- Thematic interests: Content is focused on key topics such as джависта, навигация, jooq, corejava, hibernate.
📝 Description and content policy
The author describes the resource as a platform for expressing subjective opinions:
“Все самое полезное для Java-разработчика в одном канале.
Учиться у нас: clc.to/AATM8w
Для обратной связи: @proglibrary_feeedback_bot
По рекламе: @proglib_adv
РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4”
Thanks to the high frequency of updates (latest data received on 02 September, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.
Data loading in progress...
| Date | Subscriber Growth | Mentions | Channels | |
| 03 September | 0 | |||
| 02 September | +6 | |||
| 01 September | +1 |
| 2 | 🧠 Квиз: угадайте вывод
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта | 1 119 |
| 3 | 🤩 Утечка, которую не видит heap dump
Интересная ловушка: вызываешь string.intern() на динамических строках, приложение падает с OOM, делаешь heap dump — а там всё чисто. Где утечка?
🤩 Суть проблемы
String Pool до Java 7 жил в PermGen, с Java 7 переехал в heap. Казалось бы, проблема решена. Но нет.
Внутри String Pool использует нативную хеш-таблицу StringTable, которая живёт в native memory (вне heap). Когда ты делаешь intern(), в heap создаётся сама строка, но ссылка на неё хранится в нативной StringTable.
🤩 Что происходит
Строки попадают в heap (GC их уберёт), но StringTable в native memory растёт бесконечно. Размер StringTable фиксирован и задаётся -XX:StringTableSize. При переполнении — коллизии, деградация, OOM.
🤩 Как увидеть?
bashjcmd <pid> VM.stringtable
Или Native Memory Tracking:
bash-XX:NativeMemoryTracking=detail
jcmd <pid> VM.native_memory
Ищи раздел Symbol — там StringTable.
⚠️ String Pool — это не только heap. StringTable живёт в native memory, и это классическая офф-хип утечка.
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта | 1 364 |
| 4 | No text... | 1 449 |
| 5 | ══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта | 1 411 |
| 6 | 🧩 Record — это не просто контейнер для данных
Создали record:
record Vehicle(String year, String make, String model) {}
var car = new Vehicle("2020", "Toyota", "Camry»);
И Java сразу даёт несколько методов.
🤩 Доступ к компонентам — прямо по их именам:
car.year(); // "2020"
car.make(); // "Toyota"
car.model(); // "Camry"
Не getYear(), а именно year() — это одна из особенностей records.
🤩 toString() генерируется автоматически:
System.out.println(car);
// Vehicle[year=2020, make=Toyota, model=Camry]
🤩 equals() сравнивает records по значениям компонентов:
var car1 = new Vehicle("2020", "Toyota", "Camry");
var car2 = new Vehicle("2020", "Toyota", "Camry");
car1.equals(car2); // true
И автоматически генерируется соответствующий hashCode().
То есть record уже из коробки даёт удобную модель «данные + value-based equality», а не просто сокращённую запись класса.
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта | 1 529 |
| 7 | ══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта | 1 635 |
| 8 | 🚀 JDK 27 выйдет 15 сентября: что попробовать
До выхода Java 27 осталось меньше месяца. Из того, на что стоит обратить внимание:
🤩 Post-quantum TLS 1.3 — JEP 527 добавляет hybrid key exchange с ML-KEM прямо в JDK. В TLS появляются группы вроде X25519MLKEM768 — без стороннего криптографического провайдера.
🤩 Primitive types в pattern matching — пятый preview JEP 532. instanceof и switch смогут работать с примитивными типами без прежних обходных решений.
🤩 Structured Concurrency продолжает эволюционировать как preview API для управления группами связанных задач и их отменой.
А пока можно уже смотреть JDK 28 Early Access — там развивается Valhalla с Value Classes and Objects, а JSON API пока остаётся экспериментальной/incubating частью.
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта | 1 966 |
| 9 | 🧹 Java научилась отдавать память обратно ОС во время простоя
В августовском обновлении OpenJDK 25 появился time-based heap uncommit для G1 GC.
Если JVM простаивает и часть committed heap больше не нужна, G1 теперь может вернуть эту память операционной системе. Фича включена по умолчанию и управляется G1UseTimeBasedHeapSizing.
📍 Особенно интересно для сервисов с неравномерной нагрузкой: условно, после пикового трафика JVM не обязана продолжать держать весь ранее выделенный heap.
А заодно Microsoft выпустила свежие сборки:
25.0.4.1, 21.0.12.1, 17.0.20.1 и 11.0.32.1.
🔗 Источник
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта | 2 265 |
| 10 | 📌 6 принципов безопасности API
API — это не просто интерфейс, а ворота в вашу систему. Без должной защиты они становятся уязвимой точкой для атак.
Ключевые принципы безопасности API:
— Использование HTTPS
— Аутентификация и авторизация
— Ограничение запросов
— Валидация входных данных
— Управление доступом на основе ролей (RBAC)
— Мониторинг и логирование
🔗 Подробнее в статье
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта | 1 963 |
| 11 | 🌐 Зачем нужен CDN и как он работает
Когда пользователь из Сиднея открывает ваш сайт, его запрос летит на сервер в Германии и обратно. Это ~300 мс только на «дорогу» — и это для каждого изображения, шрифта, JS-файла.
CDN (Content Delivery Network / Сеть доставки контента) решает эту проблему в лоб: вместо одного сервера — тысячи точек по всему миру. Пользователь получает файлы с ближайшей к нему ноды, а не с вашего origin-сервера.
🔹 Origin и Edge
В архитектуре с CDN появляются два новых понятия:
— Origin Server (Главный сервер): это ваш настоящий сервер, где крутится Spring Boot, лежит база данных и хранятся оригиналы всех файлов (например, в Amazon S3).
— Edge Servers (Граничные серверы / Точки присутствия - PoP): это тысячи серверов CDN-провайдера (например, Cloudflare или Akamai), раскиданные по всему земному шару: в Сиднее, Токио, Нью-Йорке, Лондоне, Москве.
🔹 Как работает кэш
Первый запрос к конкретному файлу всё равно идёт до origin. CDN его скачивает, кэширует у себя и отдаёт пользователю. Все последующие запросы на тот же файл edge-сервер обрабатывает сам, не трогая ваш бэкенд. Это называется cache hit.
🔹 Что кладем в CDN
CDN идеально подходит для статического контента:
— Картинки, видео, аудио.
— Скомпилированные файлы JavaScript и CSS.
— Шрифты.
CDN не подходит для динамического контента:
— Корзина товаров.
— Приватные данные пользователя.
— (Запросы к API /api/v1/users/me должны идти напрямую на ваш сервер, минуя кэш CDN).
🔹 Защита от DDoS
Современные CDN (тот же Cloudflare) - это не просто кэш. Это гигантский щит.
Если хакеры решат «положить» ваш сайт и отправят миллион запросов в секунду, этот удар примут на себя серверы CDN. Их пропускная способность измеряется терабитами. Они отфильтруют «мусорный» трафик, и ваш маленький Origin-сервер даже не заметит атаки.
🔹 Побочные эффекты
— Ускорение: пользователи получают тяжелый контент мгновенно, потому что скачивают его из своего же города.
— Экономия: ваш главный сервер больше не тратит процессорное время и трафик на отдачу терабайтов картинок. Вы платите за сервера меньше.
— Безопасность: CDN скрывает реальный IP-адрес вашего сервера и защищает от DDoS-атак.
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта | 1 678 |
| 12 | Что будет результатом кода ❓
👍 — UnsupportedOperationException на set()
🔥 — UnsupportedOperationException на add()
❤️ — list = [X, B, C, D]
👾 — list = [A, B, C, D]
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта | 1 748 |
| 13 | ⌛ Сохраняйте шпаргалку по join'ам в SQL
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта
#Enterprise | 2 117 |
| 14 | 💡 Java tip: instanceof сразу может привести тип
Раньше после проверки приходилось делать отдельный cast:
if (animal instanceof Dog) {
Dog d = (Dog) animal;
d.bark();
}
🔵 Начиная с Java 16 переменную можно объявить прямо в условии:
if (animal instanceof Dog d) {
d.bark();
}
d уже имеет тип Dog и доступна внутри ветки, где проверка успешна.
🔵 Можно сразу проверять несколько типов:
if (animal instanceof Dog d) {
d.bark();
} else if (animal instanceof Cat c) {
c.meow();
}
📌 Меньше явных cast’ов — меньше лишнего кода и проще читать условие.
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта
#CoreJava | 2 361 |
| 15 | ══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта
#DevLife | 2 292 |
| 16 | 🎮 Инструментарий разработчика
Собрали самые популярные и эффективные инструменты на все случаи жизни.
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта
#Enterprise | 2 221 |
| 17 | ⚙️ Spring Boot 4: несколько TaskDecorator для async-задач
Раньше, если нужно было перенести в worker thread сразу несколько контекстов — например, MDC + SecurityContext, приходилось собирать это вручную.
В Spring Boot 4 можно зарегистрировать несколько TaskDecorator:
@Order(1)
class MdcTaskDecorator implements TaskDecorator {
// перенос MDC
}
@Order(2)
class SecurityTaskDecorator implements TaskDecorator {
// перенос SecurityContext
}
Spring Boot сам объединит их в CompositeTaskDecorator и выполнит в заданном порядке.
📌 Полезно для @Async, когда request-контекст должен пережить переход на другой поток.
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта
#Enterprise | 2 350 |
| 18 | ❓ Чем отличается invokeAll() от submit() в ExecutorService?
→ submit() отправляет одну задачу и сразу возвращает Future. Задача выполняется асинхронно.
→ invokeAll() принимает коллекцию задач и блокирует поток до завершения всех задач. Возвращает список Future только когда все задачи выполнены или вышел таймаут.
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта | 2 384 |
| 19 | 📈 Продвинутая Map, часть 2: два ключа вместо вложенности
Если вы хоть раз писали Map<String, Map<String, Integer>>, знаете, насколько быстро такая структура становится неудобной.
Например, продажи по городу и товару:
Map<String, Map<String, Integer>> sales = new HashMap<>();
sales.computeIfAbsent("Москва", k -> new HashMap<>())
.put("iPhone", 120);
А если нужно получить все города, где продавался iPhone? Придётся обходить вложенные Map.
🈶 В Guava для таких случаев есть Table<R, C, V> — структура с двумя ключами:
Table<String, String, Integer> sales = HashBasedTable.create();
sales.put("Москва", "iPhone", 120);
sales.put("Питер", "iPhone", 90);
sales.get("Москва", "iPhone"); // 120
❗️Главное преимущество — можно работать не только со строками, но и со столбцами:
sales.row("Москва");
// {iPhone=120}
sales.column("iPhone");
// {Москва=120, Питер=90}
Есть несколько реализаций под разные задачи:
→ HashBasedTable — hash-таблицы с предсказуемым порядком итерации
→ TreeBasedTable — отсортированные ключи
→ ArrayTable — строки и столбцы известны заранее
→ ImmutableTable — неизменяемая таблица
📌 Если данные естественно описываются парой «строка + столбец», Table может оказаться удобнее вложенных Map.
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта
#CoreJava | 2 441 |
| 20 | Вам доклады по Go или Java? VK приглашает на митап с двойной начинкой
26 августа VK собирает Go- и Java-инженеров, чтобы прокачать знания.
В программе два трека — Go и Java, по три доклада в каждом.
Трек Go:
• «Компиляция Go в динамическую либу, или как мы ускорили выкатку фичи в два раза, но нам не понравилось», Михаил Кичигин, бэкенд-разработчик, Avito Tech
• «Go-платформа VK: как мы построили единую основу для создания Go-сервисов», Александр Апанасенко, руководитель команды SDK Backend, VK
• «Почтальон от Kubernetes до Palo Alto. Как осуществляется доставка информации об адресах», Дарья Кулькина, бэкенд-разработчик, Точка Банк
Трек Java:
• «Перформанс-трюки в поисковой платформе Ozon», Пётр Портнов, ведущий разработчик среднего поиска, Ozon
• «Архитектура современного движка платёжной системы и переход к новой архитектуре», Игорь Крикунов, технический лидер разработки DBC, Альфа-Банк
• «Переход от федерации S3-кластеров в пользу коммунального и мультитенантного кластера», Кирилл Боблак, ведущий разработчик One-cloud, VK
А ещё будет мастер-класс по прокачке навыка, который сделает вас звездой любого вечера, и афтепати, чтобы обсудить доклады в неформальной обстановке.
Встречаемся в 17:00, начало в 18:00. Участие бесплатное, регистрация обязательна. | 1 389 |
