Библиотека Java разработчика
前往频道在 Telegram
📚 Лайфхаки, приёмы и лучшие практики для Java-разработчиков. Всё, что ускорит код и прокачает навыки. Java, Spring, Maven, Hibernate. По всем вопросам @evgenycarter РКН clck.ru/3KoGeP
显示更多📈 Telegram 频道 Библиотека Java разработчика 的分析概览
频道 Библиотека Java разработчика (@bookjava) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 10 275 名订阅者,在 技术与应用 类别中位列第 12 049,并在 俄罗斯 地区排名第 63 967 位。
📊 受众指标与增长动态
自 невідомо 创建以来,项目保持高速增长,吸引了 10 275 名订阅者。
根据 07 六月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 25,过去 24 小时变化为 0,整体触达仍然可观。
- 认证状态: 未认证
- 互动率 (ER): 平均受众互动率为 8.50%。内容发布后 24 小时内通常能获得 4.05% 的反应,占订阅者总量。
- 帖子覆盖: 每篇帖子平均可获得 874 次浏览,首日通常累积 416 次浏览。
- 互动与反馈: 受众积极参与,单帖平均反应数为 6。
- 主题关注点: 内容集中在 string, интерфейс, строка, boot, api 等核心主题上。
📝 描述与内容策略
作者将该频道定位为表达主观观点的平台:
“📚 Лайфхаки, приёмы и лучшие практики для Java-разработчиков. Всё, что ускорит код и прокачает навыки. Java, Spring, Maven, Hibernate.
По всем вопросам @evgenycarter
РКН clck.ru/3KoGeP”
凭借高频更新(最新数据采集于 08 六月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。
10 275
订阅者
无数据24 小时
+57 天
+2530 天
帖子存档
Паттерны применения многопоточности на коммерческом проекте (на примере Java)
Многопоточность неразрывно связана с отзывчивостью вашего приложения под нагрузкой. Если нагрузки нет, скажем 5 запросов в час, то и о многопоточности можно особо не задумываться
На коммерческих проектах чаще встречается ситуация, когда вашим приложением пользуются сотни и даже тысячи клиентов одновременно, в такие моменты без многопоточности никуда, при этом приложение должно работать эффективно, не расходуя лишние ресурсы
Я собрал самые часто встречаемые паттерны работы с многопоточностью из своей практики, которые помогают писать отказоустойчивые и надежные приложения
В данной статье будем рассматривать многопоточность без применения webflux, однако если будет спрос, то распишу те же паттерны на webflux'е, там они выглядят более органично Также не буду затрагивать Project Loom, поскольку мне не приходилось отлаживать и поддерживать код с использованием Loom на коммерческом проекте (Java 21 еще не используем), но когда-нибудь я напишу подробную и понятную статью по Loomhttps://habr.com/ru/articles/838402/ 👉@BookJava
Создание REST API с использованием Spring WebFlux и Security
00:00:00 Введение
00:00:20 Создание проекта
00:11:36 Создание миграций БД
00:15:40 Создание базовых классов
00:23:20 Реализация логики генерации JWT токена
00:46:30 Реализация логики валидации JWT токена
00:53:05 Построения цепочки аутентификации
01:04:22 Финальная конфигурация с использованием SecurityWebFilterChain
01:12:11 Реализация REST контроллеров
01:23:15 Проверка REST API средствами Postman
01:24:21 Добавление и конфигурация обработчика ошибок
01:25:40 Заключение
Ссылка на Github репозиторий https://github.com/proselytear/webfluxsecurity
источник
👉@BookJava
👩💻 Открытый урок «Знакомство со Spring Cloud».
Как эффективно использовать самый популярный фреймворк в Java-мире для профессиональной разработки приложений?
📆 Узнайте на открытом вебинаре 10 октября в 20:00 мск.
Где мы разберем:
- что такое Spring Cloud и для чего он нужен;
- из каких основных компонентов состоит Spring Cloud;
- как использовать ключевые функции Spring Cloud для разработки.
Спикер Сергей Петрелевич — опытный Java/Kotlin-разработчик и преподаватель.
Встречаемся в преддверии старта курса «Java Developer. Professional». Все участники вебинара получат специальную цену на обучение!
👉 Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cBMqaL
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576Как заставить code coverage работать на вас
Недавно я снова услышал тезис, что code coverage не нужен и совсем не обязательно за ним следить, а нужно просто делать black-box тесты и считать количество тест-кейсов. Я не согласен с подобного рода категоричными утверждениями. В этой статье постараюсь изложить свою точку зрения и развеять некоторые мифы, опираясь на свой опыт в разработке и идеи, которые почерпнул из книг и статей других инженеров.
https://habr.com/ru/articles/836366/
👉@BookJava
Осень — время новых знаний! 👨🎓
И мы знаем, где будут прокачивать свои hard и soft skills IT-специалисты — на IT Community Day, который Сбер проведёт сразу в трёх городах:
✔️ В Санкт-Петербурге 5 октября обсудим искусственный интеллект, возможности фронтенда, новую среду разработки и мотивацию для айтишников.
✔️ В Казани 12 октября научимся управлять большими данными, укрощать искусственный интеллект, создавать успешное резюме и находить подход к карьере.
✔️ В Екатеринбурге 19 октября поговорим об интеграции LLM в приложение, методологии API-first и комбинации личного и профессионального развития.
Во всех городах вас будут ждать топовые спикеры, а после докладов — afterparty. Регистрируйтесь на IT Community Day в Санкт-Петербурге, Казани и Екатеринбурге👌
Spring Boot 3 🍃 включает несколько улучшений в области SSL 🔐
🔹3.1 - SSL Bundles
🔹3.2 - SSL Hot Reload
🔹3.4 - SSL certs info in the 'info' and 'health' Actuator endpoints
Чтобы включить SSL в '
info' endpoint, установите свойство "http://management.info.ssl.enabled=true"
👉@BookJavaХотите узнать, чем Clojure выделяется среди других бэкендовых языков и что он может вам предложить?
Ждем вас на открытом вебинаре 3 октября в 20:00 мск, где мы разберем:
- с какими задачами сталкиваются разработчики Clojure;
- основные особенности и преимущества Clojure по сравнению с другими языками;
- какие возможности и перспективы предлагает Clojure для разработчиков.
Встречаемся в преддверии старта курса «Clojure Developer». Все участники вебинара получат специальную цену на обучение!
Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cBI8Ue
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
🚀 Совет по Java - Comparator 🚀
Comparator.nullsLast
Принимает Comparator в качестве аргумента, который отвечает за сравнение ненулевых элементов. В случае, если переданный компаратор равен null, ненулевые значения считаются равными. 🔥
https://docs.oracle.com/en/java/javase/22/docs/api/java.base/java/util/Comparator.html#nullsLast(java.util.Comparator)
👉@BookJavaКакие бывают строковые классы?
В Java строковые классы — это классы, которые используются для работы со строками, то есть последовательностями символов. Основные строковые классы в Java:
1. String
- Неизменяемый класс (immutable): После создания объекта
String его нельзя изменить.
- Использование: Широко используется для представления строковых значений.
- Особенности:
- Строки могут быть созданы с использованием строковых литералов или через конструктор.
- Для сравнения строк рекомендуется использовать метод equals(), а не оператор ==.
- Пример:
String str = "Hello, World!";
2. StringBuilder
- Изменяемый класс (mutable): Этот класс позволяет изменять строки без создания нового объекта.
- Основное применение: Используется, когда требуется частое изменение строк, например при конкатенации.
- Не синхронизирован: Этот класс не потокобезопасен, что делает его быстрее при работе в однопоточных приложениях.
- Пример:
StringBuilder sb = new StringBuilder("Hello");
sb.append(", World!");
3. StringBuffer
- Изменяемый класс (mutable): Как и StringBuilder, позволяет изменять строки.
- Синхронизирован: Потокобезопасный, что делает его более медленным по сравнению с StringBuilder.
- Основное применение: Рекомендуется использовать в многопоточных приложениях.
- Пример:
StringBuffer sb = new StringBuffer("Hello");
sb.append(", World!");
Различия между String, StringBuilder и StringBuffer:
- Неизменяемость: String неизменяемый, тогда как StringBuilder и StringBuffer изменяемы.
- Потокобезопасность: StringBuffer синхронизирован, в отличие от StringBuilder.
- Производительность: StringBuilder быстрее, чем StringBuffer при работе в однопоточных средах.
👉@BookJava🏓 Знакомимся с Java на примере пинг-понга
Хотите узнать, как создавать программы на Java, даже если никогда не программировали?
Ждем вас на открытом вебинаре 26 сентября в 20:00 мск,
где мы разберем:
➡️ что такое программирование и язык Java;
➡️ как создать игру пинг-понг с нуля на Java;
➡️ как работать с двумерной графикой в Java.
Урок полезен для тех, кто хочет начать изучать Java с нуля и увидеть на практике, как создаются приложения.
🎙 Спикер Александр Фисунов — Senior Kotlin Developer в SSP Software на проекте ВТБ, опытный Java-разработчик и кандидат технических наук.
Встречаемся в преддверии старта курса «Специализация Java-разработчик».
Все участники вебинара получат специальную цену на обучение!
➡️ Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cBp05H
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ruОптимизация строк в Java
В Java строки (`String`) являются объектами, представляющими последовательность символов. Они имеют особое значение в языке, и оптимизация работы со строками важна для эффективного использования памяти и производительности приложения. Вот ключевые аспекты и методы оптимизации работы со строками в Java:
1. Пул строк (String Pool)
- Java использует специальную область памяти, называемую String Pool (или **интернированный пул строк**), для хранения строковых литералов.
- Когда строка создается как литерал, например,
String str = "hello";, JVM сначала проверяет, есть ли уже такая строка в пуле. Если есть, то возвращается ссылка на существующую строку, а не создается новый объект.
- Если строка создается с помощью new, например, String str = new String("hello");, новый объект строки создается в куче, даже если такая строка уже есть в пуле.
Оптимизация:
- Используйте строковые литералы вместо явного создания новых объектов String через new, чтобы JVM могла переиспользовать строки из пула.
Пример:
String s1 = "hello"; // переиспользует строку из пула
String s2 = new String("hello"); // создает новую строку в куче
2. Метод `intern()`
- Метод intern() добавляет строку в пул строк, если ее там еще нет, и возвращает ссылку на строку из пула.
- Это полезно, когда вы хотите уменьшить количество дубликатов строк.
Пример:
String s1 = new String("hello").intern(); // добавляет строку в пул и возвращает ссылку из пула
String s2 = "hello"; // использует строку из пула
System.out.println(s1 == s2); // true
3. Избегайте конкатенации строк в циклах
- Операция конкатенации строк через оператор + в Java создает новые объекты String, поскольку строки неизменяемы. Это может привести к большому количеству временных объектов и снижению производительности.
- Внутри циклов это особенно дорого, поскольку каждый раз создается новая строка.
Оптимизация:
- Используйте StringBuilder или StringBuffer для конкатенации строк, если вы собираете строки в цикле.
Пример:
// Плохой подход:
String result = "";
for (int i = 0; i < 1000; i++) {
result += i; // каждый раз создается новая строка
}
// Оптимизированный подход:
StringBuilder builder = new StringBuilder();
for (int i = 0; i < 1000; i++) {
builder.append(i); // строка накапливается без создания временных объектов
}
String result = builder.toString();
4. Используйте `StringBuilder` вместо `StringBuffer` для однопоточных операций
- StringBuffer синхронизирован, и это делает его потокобезопасным, но добавляет накладные расходы. Для однопоточных операций лучше использовать несинхронизированный StringBuilder, который работает быстрее.
5. Использование методов `char[]` и `toCharArray()`
- Если необходимо часто модифицировать строку или выполнять операции с отдельными символами, то преобразование строки в массив символов (`char[]`) может быть более эффективно.
Пример:
String str = "hello";
char[] charArray = str.toCharArray();
charArray[0] = 'H'; // изменяем символ
String modifiedStr = new String(charArray); // создаем новую строку
6. Уменьшение использования временных строк
- Старайтесь избегать создания временных строк, которые сразу выбрасываются сборщиком мусора. Например, при разбиении строки (split) или других операциях, которые могут создать ненужные объекты.
Оптимизация:
- Используйте потоки или регулярные выражения для более эффективной обработки строк.
7. Использование `String.join()` или `Collectors.joining()` для объединения строк
- Если необходимо объединить множество строк (например, из массива или коллекции), лучше использовать String.join() или Collectors.joining() для оптимизации вместо ручной конкатенации.
Пример:
List<String> list = Arrays.asList("one", "two", "three");
String result = String.join(", ", list); // более эффективное объединение строк
👉@BookJavaПрисоединяйся к всероссийскому чемпионату по программированию МТС True Tech Champ 2024 с призовым фондом в 10 250 000 ₽. Решай алгоритмические задачи или программируй роботов.
Какие задания и этапы ждут участников, расскажут на вводном вебинаре создатели треков 26 сентября в 17:00. Регистрируйся по ссылке.
В чемпионате найдутся задачи для начинающих ИТ-специалистов и опытных разработчиков.
✔️ В алгоритмическом треке участники будут работать со структурами данных, покажут математические навыки и умение решать алгоритмические задачи.
✔️ В треке по программированию роботов нужно будет соревноваться на скорость прохождения лабиринта робомышью.
Подробнее о чемпионате — по ссылке.
Регистрация участников: до 12 октября
Старт онлайн-этапов: с 1 октября
Финал в офлайне: 8 ноября
Преобразование коллекций
Новичкам зачастую трудно представить выгоду от использования Stream API вместо обычных циклов. Приведем несколько примеров, которые позволят вам сделать код лаконичнее.
👉@BookJava
👩💻 Пройди тест по Java
Проверь насколько хорошо ты знаешь Java и готов освоить 👩💻 Spring!
Ответишь — пройдешь на продвинутый курс "Разработчик на Spring Framework" от OTUS по специальной цене.
👉 ПРОЙТИ ТЕСТ: https://vk.cc/cBlvaE
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ruИспользуйте плагин checkstyle
Подключить его очень легко и в Gradle, и в Maven.
plugins {
id 'checkstyle'
Плагин проверяет форматирование, неиспользуемые импорты и когнитивную сложность ваших методов при каждой сборке приложения, что помогает поддерживать ваш код удобочитаемым, а следовательно, лучше сопровождаемым.
👉@BookJavaИспользуйте параметризованные тесты
Использование тестов с параметрами позволяет значительно увеличить качество и процент покрытия тестов без разрастания объема кода. Для того чтобы протестировать метод с различными параметрами, теперь не нужно писать несколько разных тестов — достаточно написать один, и передать ему все необходимые параметры на вход.
👉@BookJava
👩💻 Курс для Java-разработчиков, которые хотят профессионального роста.
Пройди тест по Java и проверь свои знания, готов ли ты к обучению на курсе.
Ответишь — пройдешь на продвинутый курс "Java Developer. Professional" от OTUS по специальной цене + получишь доступ к записям открытых уроков курса курса
➡️ ПРОЙТИ ТЕСТ: https://vk.cc/cBhSQQ
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ruРазница создания списка при помощи List.of() Arrays.asList()
Понимание различий между List.of() и Arrays.asList() важно для любого Java-разработчика. List.of() — это фабричный метод, впервые представленный в Java 9, который создает неизменяемый список, содержащий указанные элементы.
— Неизменяемость: список, созданный List.of(), имеет фиксированный размер и не поддерживает добавление или удаление элементов. При попытке добавить или удалить элемент будет выброшено UnsupportedOperationException.
— Null значения: List.of() не допускает null элементов. Если вы попытаетесь добавить null, появится исключение NullPointerException.
Пример использования:
1 List<String› immutableList = List.of("apple", "banana", "orange");
Для создания изменяемого списка следует использовать Arrays.asList()
1 List<String> mutableList = Arrays.asList("red", "green", "blue");
В отличие от List.of(), Arrays.asList() допускает нулевые элементы.
👉@BookJavaТестовое собеседование на Middle Java-разработчика завтра
Уже завтра, 25 сентября в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика.
Как это будет:
1. Мария Ядерцова ведущий Java-разработчик в МТС Диджитал и ex. Сбербанк-Технологии будет задавать реальные вопросы и задачи разработчику-добровольцу
2. Мария будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
3. В конце можно будет задать любой вопрос Марии
Что узнаешь на прямом эфире от ШОРТКАТ:
· Чего ждут от кандидатов на Middle позиции в Java-разработке
· Какие вопросы задают на интервью и зачем
· Как подготовиться к собесу, чтобы получить оффер
Это бесплатно? Бесплатно
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot
Реклама. ООО "ШОРТКАТ", ИНН: 9731139396, erid: 2VtzqvfZr2U
Делайте все переменные final
По умолчанию делайте все локальные переменные
final. Исключение — если по логике эта переменная должна изменяться в последующем коде. Однако, переменных, которые мы инициализируем один раз и далее не изменяем, как правило, большинство.
То же правило можно отнести и к атрибутам класса — по умолчанию их также лучше делать final, если мы хотим сделать состояние класса неизменяемым и потокобезопасным.
Разумеется, если по логике предполагается изменение состояния класса, изменяемые атрибуты не должны быть финальными.
👉@BookJava
现已上线!2025 年 Telegram 研究 — 年度关键洞察 
