🧠 Как быстро написать компаратор в Java и не забыть про null Часто нужно сортировать коллекции по какому-то полю. Вместо старых анонимных классов используем лямбды и статические методы из Comparator: List<User> users = ...; users.sort(Comparator .comparing(User::getName, Comparator.nullsLast(String::compareToIgnoreCase)) .thenComparingInt(User::getAge) ); 📌 comparing — сравнивает по …
Библиотека Java разработчика
@bookjava · Telegram
Редакция «Библиотека Java разработчика», 2 канала·Также в
В каталоге с 19 сентября 2026 · показатели пересчитываются каждый час
История канала за 30 дней (14 сообщений) сразу появится в вашей ленте.
О канале
Библиотека Java разработчика — канал Telegram в рубрике «IT и технологии». На 7 ноября 2026 у него 9 979 подписчиков, за 30 дней убыло 57. Публикует в среднем 0,5 поста в день, охват типичного поста — 538 (5,3 % подписчиков). Вовлечённость (ER) — 0,7 %. Последняя публикация — 3 дня назад. Это основная редакция «Библиотека Java разработчика»: у неё 2 канала. Данные ТелеМакс, обновляются каждый час.
Как считаются цифры
ER = реакции ÷ охват, ERR = просмотры ÷ подписчики. Охват — средние просмотры поста за 30 дней; медиана рядом показывает типичный пост — она не поднимается от одной оплаченной публикации, в отличие от среднего. Последняя публикация: 3 дн. назад. Число подписчиков снято 14 часов назад, остальные метрики пересчитаны 1 час назад. Реакции Telegram замеряются с 12.09.2026, и ER считается по тем постам, где они уже замерены.
Подписчики за 30 дней
| День | Подписчики | Прирост | Посты | Реклама | За сутки | Всего | Реакции |
|---|---|---|---|---|---|---|---|
| 08.11.2026 | 9 979 | −2 | 0 | — | — | — | — |
| 07.11.2026 | 9 981 | −2 | 0 | — | — | — | — |
| 06.11.2026 | 9 983 | −3 | 0 | — | — | — | — |
| 05.11.2026 | 9 986 | −2 | 1 | 0 | 397 | 485 | 8 |
| 04.11.2026 | 9 988 | +1 | 0 | — | — | — | — |
| 03.11.2026 | 9 987 | −5 | 2 | 0 | ≈ 747 | 1 К | 6 |
| 02.11.2026 | 9 992 | 0 | 1 | 0 | 332 | 487 | 3 |
| 01.11.2026 | 9 992 | −4 | 0 | — | — | — | — |
| 31.10.2026 | 9 996 | +1 | 0 | — | — | — | — |
| 30.10.2026 | 9 995 | −7 | 1 | 0 | 327 | 396 | 1 |
| 29.10.2026 | 10 002 | −4 | 0 | — | — | — | — |
| 28.10.2026 | 10 006 | 0 | 1 | 0 | 415 | 544 | 2 |
| 27.10.2026 | 10 006 | +1 | 0 | — | — | — | — |
| 26.10.2026 | 10 005 | −3 | 2 | 0 | 963 | 1 К | 0 |
| 25.10.2026 | 10 008 | 0 | 0 | — | — | — | — |
| 24.10.2026 | 10 008 | −3 | 0 | — | — | — | — |
| 23.10.2026 | 10 011 | +4 | 0 | — | — | — | — |
| 22.10.2026 | 10 007 | −4 | 0 | — | — | — | — |
| 21.10.2026 | 10 011 | −1 | 1 | 0 | 418 | 518 | 0 |
| 20.10.2026 | 10 012 | −5 | 1 | 0 | 376 | 533 | 0 |
| 19.10.2026 | 10 017 | 0 | 1 | 0 | 261 | 597 | 0 |
| 18.10.2026 | 10 017 | −1 | 0 | — | — | — | — |
| 17.10.2026 | 10 018 | −3 | 0 | — | — | — | — |
| 16.10.2026 | 10 021 | −1 | 0 | — | — | — | — |
| 15.10.2026 | 10 022 | −3 | 1 | 0 | 352 | 454 | 3 |
| 14.10.2026 | 10 025 | −5 | 0 | — | — | — | — |
| 13.10.2026 | 10 030 | −1 | 0 | — | — | — | — |
| 12.10.2026 | 10 031 | −3 | 1 | 0 | 349 | 548 | 2 |
| 11.10.2026 | 10 034 | 0 | 0 | — | — | — | — |
| 10.10.2026 | 10 034 | −2 | 1 | 0 | 212 | 413 | 5 |
| 09.10.2026 | 10 036 | — | 0 | — | — | — | — |
Столбец «за сутки» показывает, сколько просмотров посты дня набрали за первые двадцать четыре часа: эту величину можно сравнивать между днями и каналами. Где замера ещё нет, стоит оценка со знаком «≈» — она считается по кривой набора охвата самого канала. «Всего» — накопленный счётчик тех же постов на сегодня, он продолжает расти. Реклама и реакции тоже относятся к постам этого дня, а не к каналу за сутки; в дни без публикаций там прочерк. Прочерк в подписчиках — в этот день число не измеряли; мы не дорисовываем пропуски.
Когда читают
Лучшее время — Чт, 6:00: средний охват 758 при выборке 3 постов.
Что публикуют
Как набираются просмотры
За первые три часа пост набирает 35.8 % охвата, за сутки — 67.9 %. Охват копится несколько дней: оценивать размещение раньше чем через трое суток рано. Доля к каждому часу считается по одним и тем же постам, поэтому кривая не проседает; шкала времени логарифмическая, чтобы первые часы не слиплись.
Качество канала
Замечаний нет.
Достоверность охвата
- Аномалий не видно: счётчики просмотров полные, выбросов и скачков нет
Оценка о наших данных, а не о канале: она падает и там, где цифры просто неполные. Низкая достоверность при высоком качестве значит «канал живой, но охвату верить рано».
Публикации
Чем абстрактный класс отличается от интерфейса? В каких случаях следует использовать абстрактный класс, а в каких интерфейс? • В Java класс может одновременно реализовать несколько интерфейсов, но наследоваться только от одного класса. Абстрактные классы используются только тогда, когда присутствует тип отношений «is a» (является). Интерфейсы могут реализоваться классами, которые не связаны друг …
Что такое тернарный оператор выбора? Тернарный условный оператор ?: - оператор, которым можно заменить некоторые конструкции операторов if-then-else. Выражение записывается в следующей форме: условие ? выражение1 : выражение2 Если условие выполняется, то вычисляется выражение1 и его результат становится результатом выполнения всего оператора. Если же условие равно false, то вычисляется выражен…
👨💻 Код на внимательность! Что выведет эта программа? Посмотрите на фрагмент кода ниже. Как думаете, какой результат мы увидим в консоли? Отработает ли он вообще или упадет с ошибкой? public class Main { public static void main(String[] args) { Integer a = 100; Integer b = 100; Integer c = 500; Integer d = 500; System.out.println(a == b); Sys…
👨🏻🎓Хотите сменить профессию, но не знаете, с чего начать? Кибербезопасность можно освоить с нуля! Академия CyberYozh помогает войти в профессию людям разного возраста и с разным опытом, а потом помогает с трудоустройством: 🔹 есть карьерный модуль 🔹 резюме под нужную позицию 🔹 тестовые собеседования и консультации с HR. Начать можно с бесплатной карьерной консультации. На ней расскажут, как устр…
🧠 Проверяешь аргументы вручную? Используй мощь системы типов Java! 📌 Ситуация: часто в методах видишь явные проверки вроде: public void process(User user) { if (user == null || user.getName() == null) { throw new IllegalArgumentException("User или его имя не могут быть null"); } // код обработки... } ⚠️ Это шумно и ненадежно: легко пропустить проверку или некорректно сформ…
🤯 Java-хардкор: найди неочевидную ошибку! Сегодня задачка со звездочкой. На первый взгляд, код абсолютно рабочий и логичный. Мы создаем класс-наследник, переопределяем метод и вызываем его. Что выведет этот код при запуске? public class Main { static class Parent { public Parent() { init(); } void init() { System.out.println("Инициал…
👨💻 Код на внимательность! Что выведет эта программа? Посмотрите на фрагмент кода ниже. Как думаете, какой результат мы увидим в консоли? Отработает ли он вообще или упадет с ошибкой? public class Main { public static void main(String[] args) { Integer a = 100; Integer b = 100; Integer c = 500; Integer d = 500; System.out.println(a == b); Sys…
👨🏻🎓Хотите сменить профессию, но не знаете, с чего начать? Кибербезопасность можно освоить с нуля! Академия CyberYozh помогает войти в профессию людям разного возраста и с разным опытом, а потом помогает с трудоустройством: 🔹 есть карьерный модуль 🔹 резюме под нужную позицию 🔹 тестовые собеседования и консультации с HR. Начать можно с бесплатной карьерной консультации. На ней расскажут, как устр…
Как не завалить приложение из-за N+1 запросов в Hibernate 🧨 N+1 проблема — больной зуб почти любого Java-разработчика. Hibernate делает жизнь проще, пока не сталкиваешься с этим 👻 📌 Суть проблемы Допустим, у тебя есть сущности User и связанные с ними сущности Order. При запросе пользователей: List<User> users = userRepository.findAll(); // Один запрос for(User user : users) { List<Order> o…
🧠 Сейчас расскажу о распределённых транзакциях в Java и почему их стоит использовать с осторожностью. Когда твое приложение работает с несколькими источниками данных (например, двумя базами или базой + очередью), часто появляется соблазн обернуть всё в одну большую транзакцию с помощью JTA (Java Transaction API) и XA-ресурсов. Но на практике это почти всегда антипаттерн. 📌 Почему? * XA-транзакц…
🧠 Сегодня разберём Saga — паттерн, который часто всплывает на собеседованиях уровня сеньор, особенно если речь о микросервисах. 📌 Зачем нужна Saga? Когда нужно выполнить бизнес-операцию, затрагивающую несколько микросервисов, важно обеспечить целостность данных. Классические транзакции (@Transactional) тут не подходят — нет распределённого ACID. Saga решает эту проблему через последовательность …
Чем абстрактный класс отличается от интерфейса? В каких случаях следует использовать абстрактный класс, а в каких интерфейс? • В Java класс может одновременно реализовать несколько интерфейсов, но наследоваться только от одного класса. Абстрактные классы используются только тогда, когда присутствует тип отношений «is a» (является). Интерфейсы могут реализоваться классами, которые не связаны друг …
🧠 Как быстро написать компаратор в Java и не забыть про null Часто нужно сортировать коллекции по какому-то полю. Вместо старых анонимных классов используем лямбды и статические методы из Comparator: List<User> users = ...; users.sort(Comparator .comparing(User::getName, Comparator.nullsLast(String::compareToIgnoreCase)) .thenComparingInt(User::getAge) ); 📌 comparing — сравнивает по …
Сегодня покажу вам интересный костыль, который до сих пор живёт в JDK и влияет на сортировку списков. 🧠 Если ты когда-нибудь пробовал сортировать LinkedList через Collections.sort(), знай — под капотом происходит скрытая магия. 📌 Collections.sort(list) сначала проверяет, какой это список. Если это RandomAccess-list (например, ArrayList) — используется быстрый сортировщик (TimSort) прямо по масси…
🗄 Вебинар: JDBC: как Java-приложения взаимодействуют с базами данных JDBC позволяет Java-приложениям работать с базами данных. Разберём подключение, SQL-запросы, транзакции и обработку ошибок. 💬 О чём поговорим - Как подключиться к СУБД с помощью DriverManager и работать с Connection. - Как выполнять SQL-запросы через Statement и PreparedStatement и получать результаты через ResultSet. - Как упра…





