Java библиотека
31.5K subscribers
2.37K photos
90 videos
10 files
2.18K links
Книги, статьи, мемы и многое другое для Java программиста!

По сотрудничеству и рекламе: @NadikaKir

Канал в перечне РКН: https://vk.cc/cJrT4A

Мы на бирже: https://telega.in/c/javalib/

Сообщество VK https://vk.com/javatutorial
Download Telegram
Pro Spring 6 with Kotlin: An In-depth Guide to Using Kotlin APIs in Spring Framework 6 (2023) True PDF, ePUB

Master the fundamentals of Spring Framework 6 while learning from the real-world experiences of Spring experts. Over the course of this book, you'll learn how to leverage Spring 6 in tandem with the Kotlin programming language to build complex enterprise applications from top to bottom. From monoliths to cloud native apps for streaming microservices, you’ll gain insight into every aspect of the process, including transactions, data access, persistence, and web and presentation tiers.

As you progress through the book, the authors demonstrate how to run Kotlin with a single command, deploy new utility methods in String class, use Local-Variable Syntax for Lambda Parameters Nested Based Access Control, read/write strings to and from files, and using Flight Recorder.


Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍5🔥4
charBuffer

Метод charBuffer() используется для получения буфера символов из строки. Он принадлежит java.nio.

Этот метод возвращает объект CharBuffer, который представляет последовательность символов строки.
CharBuffer позволяет эффективно читать и манипулировать символами строки без создания копий.

В этом примере создается строка «Hello». Затем из этой строки получаем буфер символов методом charBuffer().
В цикле посимвольно читаем из буфера символы и выводим их на экран.


Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍6🔥6
🖥 Fixture Monkey — инструмент на Java для автоматической генерации объектов для тестов

<dependency>
<groupId>com.navercorp.fixturemonkey</groupId>
<artifactId>fixture-monkey-starter</artifactId>
<version>1.0.20</version>
<scope>test</scope>
</dependency>


Fixture Monkey позволяет упростить написание тестов, облегчая генерацию необходимых тестовых объектов.
При этом можно повторно использовать одни и те же конфигурации объектов в нескольких тестах.

🖥 GitHub
🟡 Доки

Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍6🔥4
Media is too big
VIEW IN TELEGRAM
Java. Можно ли использовать ключ null в HashMap и TreeMap?

Разбираю, можно ли использовать ключ null в HashMap и TreeMap, и как это работает.

🌐🗣СМОТРЕТЬ VKVIDEO

📺🗣СМОТРЕТЬ RUTUBE

Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥42🍾1
Предположим, есть метод, который может выбросить IOException и FileNotFoundException в какой последовательности должны идти блоки catch? Сколько блоков catch будет выполнено?

Общее правило: обрабатывать исключения нужно от «младшего» к старшему. Т.е. нельзя поставить в первый блок catch(Exception ex) {}, иначе все дальнейшие блоки catch() уже ничего не смогут обработать, т.к. любое исключение будет соответствовать обработчику catch(Exception ex).

Таким образом, исходя из факта, что FileNotFoundException extends IOException сначала нужно обработать FileNotFoundException, а затем уже IOException.

Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍125🔥4
🖥 jSDR — фреймворк для создания программно-определяемых радиосистем (Software Defined Radio, SDR) с использованием Java!

🌟 Библиотека позволяет обрабатывать и настраивать радиосигналы, обеспечивая простой и типобезопасный интерфейс для работы с SDR-устройствами, такими как RTL-SDR.

🔐 Лицензия: AGPL-3.0

🖥 Github

Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥17👍51
👩‍💻 Spring Events: Реактивность без сложностей

Аннотация @EventListener позволяет подписываться на события в приложении. Это мощный инструмент для создания слабосвязанных компонентов: один класс публикует событие, а другой реагирует на него, ничего о нем не зная.

Как это работает?

1️⃣ Публикация событий

Spring предоставляет встроенный механизм событий. События — это просто Java-объекты, наследующие ApplicationEvent (начиная с Spring 4.2. наследование стало необязательным).

Публикуете событие через ApplicationEventPublisher:
@Component
public class EventPublisher {
private final ApplicationEventPublisher publisher;

public EventPublisher(ApplicationEventPublisher publisher) {
this.publisher = publisher;
}

public void publishEvent(String message) {
System.out.println("Publishing event: " + message);
publisher.publishEvent(new MyEvent(this, message));
}
}

public class MyEvent {
private final String message;

public MyEvent(Object source, String message) {
super();
this.message = message;
}

public String getMessage() {
return message;
}
}


2️⃣ Подписка на события

С помощью @EventListener можно подписаться на любое событие:
@Component
public class EventListenerExample {

@EventListener
public void handleEvent(MyEvent event) {
System.out.println("Event received: " + event.getMessage());
}
}


🔍 Преимущества

— Слабая связность: Публикатор не знает ничего о слушателях, и наоборот.
— Асинхронность: Можно легко сделать обработку событий асинхронной с помощью @Async.

🧐 Где это использовать?

— Аудит и логирование
Отправляйте события о ключевых действиях пользователя в отдельный аудит-лог.

— Обработка бизнес-логики
Делегируйте сложную обработку событий (например, отправку писем) в отдельные компоненты.

— Модульная архитектура
Сделайте ваши модули независимыми, обмениваясь событиями вместо вызовов методов.

А вы используете Spring Events в своих проектах?

Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍216🔥6
FrontendConf 2025 - крупнейшая в России профессиональная конференция фронтенд‑разработчиков пройдет 20–21 октября 2025, Москва, Кластер «Ломоносов».

Что будет на конференции:
• 1000+ представителей российского фронтенд‑сообщества;
• 2 дня насыщенной программы: 55 докладов в 8 ключевых секциях (AI во фронтенде, Архитектура, Производительность, Инженерный UX, Культура команд, FrontOps и др.);
• Практические форматы: 2 воркшопа, 4 круглых стола, 6 кейсов‑факапов;
• Ламповые дискуссии и дебаты - живой обмен мнениями;
• After‑party для неформального нетворкинга и обмена опытом.

Почему это выгодно вашей компании:
• Конкретные решения, которые можно внедрить за недели, а не месяцы;
• Меньше проблем в продакшне и быстрее релизы - экономия времени и денег;
• Приоритетные предложения, план внедрения и оценка эффекта;
• Повышение экспертизы команды и удержание ключевых специалистов.

Присоединяйтесь 20–21 октября - два дня концентрированного опыта, полезных контактов и конкретных инструментов для развития фронтенд‑команд.
Подготовьте короткую просьбу руководителю и Забронируйте билет - сайт конференции.

#реклама
О рекламодателе
🔥43👍3
🖥 filelize-java — легковесная Java-база данных для упрощения записи и чтения данных в человекочитаемые файлы, такие как JSON!

🌟 Она позволяет сохранять объекты в одном или нескольких файлах с помощью простого API, требующего всего одной строки кода. Это особенно полезно для настройки тестовых данных и сценариев, когда полноценная база данных не требуется. Библиотека поддерживает интеграцию с Spring Boot и может использоваться для быстрого создания и управления данными в тестах или простых приложениях.

🖥 Github

Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥54👍4
👩‍💻 Магия IntelliJ IDEA: Extract Method

Хотите быстро превратить кусок кода в чистый и переиспользуемый метод? Используйте хоткей — IDEA сама всё сделает за пару кликов.

Хоткей: Ctrl + Alt + M (Cmd + Alt + M на macOS)

🟢Что делает

Мгновенно выносит выделенный код в отдельный метод. IDEA сама предложит имя, подставит параметры и аккуратно заменит фрагмент вызовом нового метода.

🟢Зачем это нужно

— Убирает «простыню» кода из метода.
— Улучшает читаемость и переиспользуемость.
— Ускоряет рефакторинг: не нужно руками писать сигнатуру, копировать аргументы и т.д.

🟢Как использовать

— Выделите блок кода.
— Нажмите Ctrl + Alt + M.
— Проверьте, как IDEA сама создала метод.
— При желании поменяйте имя и модификатор доступа.

🔥 Работает не только с Java-кодом, но и в Kotlin, Groovy и даже в тестах.

Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥207👍6
Оптимизация создания бинов

При большом количестве компонентов в приложении Spring часто сталкивается с замедлением старта и повышенным потреблением памяти из-за инжекта зависимостей. Чтобы решить эту проблему, можно отложить создание бинов до момента их первого использования.

Для этого можно применить аннотацию @Lazy:
@Component
public class Component {

@Lazy
@Autowired
private Service service;
}


🟢Когда использовать:

— В приложениях с большим количеством зависимостей
— Для сервисов, которые вызываются нечасто (например, отчёты или аналитика)
— В микросервисах для оптимизации потребления ресурсов
— При работе с тяжёлыми или сложными конфигурациями

Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍5🔥4
👩‍💻 Java API Tip — Integer.valueOf() и кеширование

Знаешь ли ты, что Integer.valueOf(int) не всегда создаёт новый объект?

📦 Значения в диапазоне от -128 до 127 кэшируются!
Это значит, что:


Integer a = Integer.valueOf(100);
Integer b = Integer.valueOf(100);
System.out.println(a == b); // 👉 true (один и тот же объект)


Но:


Integer x = Integer.valueOf(200);
Integer y = Integer.valueOf(200);
System.out.println(x == y); // 👉 false (два разных объекта)


🔍 Почему так?

Чтобы повысить производительность и сэкономить память, Java автоматически кеширует часто используемые значения.

🛠 Кстати, ты можешь изменить границу кеша через JVM-опцию:


-XX:AutoBoxCacheMax=512


📌 Полезно, если у тебя в системе часто используются числа вне стандартного диапазона.

Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
9🔥6
⚡️Готовиться к собеседованиям стало проще!

Женя Янченко, java-dev и руководитель разработки, cделала конспекты самой популярной книги по архитектуре систем — «Высоконагруженные приложения» Мартина Клеппмана (книга с кабанчиком).

Где главы обзорные — даёт суть.
Про репликацию, шардирование, транзакции — разбирает подробно, со схемами и примерами.

▶️ ЧИТАТЬ КОНСПЕКТ КАБАНЧИКА

В канале Женя разбирает и другие технические темы, которые могут пригодиться на собесе:

🟡 CAP-теорема простыми словами
🟡 Индексы: как один запрос сломал расчет
🟡 Подробно про Кафку c реальной историей проблемы

А как же алгоритмы? Они тоже есть!
Женя объявила челлендж — решить 300 задач за год 😱
Каждый месяц делает отчеты и разборы популярных задач:

🟡Разбор паттерна "Два указателя"

Истории из опыта, рекомендации и ответы на вопросы:

🟡Как произвести крутое впечатление на техсобесе
🟡«Ты не оправдываешь ожиданий» и что с этим делать
🟡Как я боролась с неуверенностью в себе
🟡«Просто нажми кнопку» или история одного релиза

📝 и ещё 100+ полезных технических и жизненных постов.

Подписывайтесь, чтобы не потерять полезный канал
➡️ @jane_yanchenko
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥3👍2
Forwarded from Java Guru 🤓
Что будет результатом кода?
👍4🍾4😁3🔥2
Forwarded from Java Guru 🤓
Что будет результатом кода?
Anonymous Quiz
45%
0
6%
12
33%
48
13%
Ошибка компиляции
3%
null
😁14👍6🔥4🍾31
🔥Не упустите шанс прокачать свой скилл и решать проблемы с производительностью на опережение!

Думаете, что знаете об оптимизации PostgreSQL всё? Проверим.

Приглашаем разработчиков и администраторов БД на интенсивный практикум, где мы не будем говорить об очевидных вещах.

1 октября в 20:00 технический директор 1С-Старт Дмитрий Кириллов разберет "по косточкам" оптимизацию PostgreSQL на открытом практическом уроке "Неочевидные оптимизации PostgreSQL на основе его исходного кода".

👨‍💻 Разработчики, научитесь писать запросы, учитывая скрытые механизмы планировщика, и использовать индексы максимально эффективно
👨‍💻Администраторы БД, поймете, какие параметры конфигурации реально влияют на производительность, а какие можно не трогать
👨‍💻Архитекторы систем, сможете лучше проектировать структуру БД и прогнозировать ее масштабирование на основе «внутренней логики» PostgreSQL

А в подарок - три мини-курса для практической работы с SQL от OTUS.

Бесплатно по предварительной записи - практикум для тех, кто хочет докопаться до сути: https://tglink.io/6816bef9c91f

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: 2W5zFKAQV8L
5👍2🔥2
🖥Xpipe — это кроссплатформенное решение для интеграции данных, ориентированное на простоту настройки и использования!

🌟 Оно позволяет подключать и синхронизировать данные между различными системами и форматами, такими как базы данных, файловые системы и API. Xpipe предоставляет графический интерфейс для настройки потоков данных, что делает его доступным для пользователей без глубоких технических знаний.

🔐 Лицензия: Apache-2.0

🖥 Github

Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32🔥2
🔍Тестовое собеседование с Java-разработчиком из МТС уже завтра

1 октября (уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика.

Как это будет:
📂 Илья Аров, старший разработчик в МТС, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Илья будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Илье

Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.

Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot

Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍2🔥2
👩‍💻 Магия IntelliJ IDEA: Postfix Completion

Хотите писать код быстрее и без лишнего копипаста? Используйте Postfix Completion — умные сокращения, которые превращают выражения в полноценный код.

🟢Что делает

— Превращает набранное выражение в готовую конструкцию (например, myVar.notnull → if (myVar != null) {...})
— Работает для условий, циклов, логирования, null-check и многого другого
— Доступна для Java, Kotlin и многих языков

🟢Зачем это нужно

— Экономит время
— Снижает вероятность синтаксических ошибок
— Ускоряет рутинные действия (особенно null-checks)

🟢Как использовать

— Пишите выражение, затем ставите точку и выбираете суффикс (например, .if, .for, .notnull)
— IDEA сама развернёт шаблон в готовый код
— Список доступных суффиксов: Settings → Editor → General → Postfix Completion

Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
25👍13🔥8
Иногда кажется, что читаешь книги в параллельной вселенной. Увлекся редким фэнтези-сериалом или зависаешь на мемуарах — и поговорить об этом не с кем.

В COMMOK ты точно наткнешься на человека, который тоже застрял на той самой главе или в восторге с того же автора. Здесь разговоры о книгах живые, искренние и без снобизма. А может, вы найдете друзей сразу по нескольким интересам?

COMMOK — это место, где хобби и увлечения превращаются в настоящие встречи и новые истории. Устанавливай приложение и захабься!

App Store: https://apps.apple.com/ru/app/id1671122965
Google Play: https://play.google.com/store/apps/details?id=com.saleskit.commok

erid:2VtzqxCBL7n
Реклама. Запорожец Сергей Александрович
ИНН 662313192669
👍32🔥2
Что такое BeanPostProcessor в Spring?

BeanPostProcessor — это интерфейс из Spring Framework, который позволяет вмешиваться в процесс создания и инициализации бинов в Spring контейнере. Он предоставляет два основных метода, которые вызываются на разных этапах жизненного цикла бина:

🟡 postProcessBeforeInitialization(Object bean, String beanName) - вызывается до того, как бин будет инициализирован (до вызова метода @PostConstruct или InitializingBean#afterPropertiesSet).
🟡 postProcessAfterInitialization(Object bean, String beanName) - вызывается после инициализации бина (после завершения всех инициализационных методов).

Зачем нужен BeanPostProcessor?

Он используется для дополнительной обработки и кастомизации бинов после их создания, но до передачи клиентскому коду. Примеры:

- Добавление проксирования бинов (например, для AOP или транзакций).
- Валидация или изменение свойств бинов.
- Логирование жизненного цикла.
- Добавление кастомных аннотаций.
- Обработка маркерных интерфейсов.

Как это работает?

1️⃣ Spring сканирует контекст на наличие бинов, реализующих интерфейс BeanPostProcessor.
2️⃣ Если такие бины найдены, они применяются ко всем бинам в приложении.
3️⃣ Методы postProcessBeforeInitialization и postProcessAfterInitialization вызываются для каждого бина, который создаёт Spring.

@Component
public class CustomBeanPostProcessor implements BeanPostProcessor {

@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) {
System.out.println("Before Initialization: " + beanName);
return bean;
}

@Override
public Object postProcessAfterInitialization(Object bean, String beanName) {
System.out.println("After Initialization: " + beanName);
return bean;
}
}

Результат: Вывод сообщений о каждом бине до и после инициализации.

Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
19👍4🔥4