Java библиотека – Telegram
Java библиотека
31.5K subscribers
2.37K photos
89 videos
9 files
2.17K links
Книги, статьи, мемы и многое другое для Java программиста!

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

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

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

Сообщество VK https://vk.com/javatutorial
Download Telegram
🔍Тестовое собеседование с ТехЛидом из МТС уже завтра

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

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

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

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

Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍4🔥3
👩‍💻 Java Roadmap 2025

В 2025 году Java продолжает развиваться, и вот на что стоит обратить внимание в учёбе. Роадмапа на картинке, ниже ключевые моменты.

1️⃣ Основы и ООП

Фокус на record классы (Java 16+), абстракция и полиформизм.

2️⃣ Коллекции и потоки

Основной тренд — использование Streams API (Java 8+) и неизменяемых коллекций (Java 9+).

3️⃣ Многозадачность

Project Loom и виртуальные потоки (Java 21) упростят многозадачность и повысит производительность.

4️⃣ Функциональное программирование

Расширение использования лямбда-выражений и функциональных интерфейсов.

5️⃣ Web и микросервисы

Активное использование Spring Boot, Spring Cloud, Swagger/OpenAPI для документации.

6️⃣ Тестирование и сборка

JUnit 5, Mockito, Testcontainers и инструменты сборки Maven и Gradle для автоматизации.

7️⃣ Базы данных и ORM

Знания JDBC, Hibernate, JPA для создания надежных и масштабируемых систем.

Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍10🔥5
UI и API тестирование с java и playwright - тема бесплатного вебинара от OTUS.
Регистрация: https://vk.cc/cRW5WM

Фреймворк playwright изо дня в день набирает популярность на рынке и многие команды начинают задумываться о его внедрении для написания UI и API автотестов. На занятии поговорим о самом фреймворке и почему он набирает популярность и напишем пару UI и API автотестов.

После занятия ты:
- поймёшь, как работает Playwright и чем он удобен для тестировщика;
- сможешь написать и запустить простые UI и API автотесты;
- получишь представление, как внедрять Playwright в реальный проект.

Регистрация и подробности о курсе: https://vk.cc/cRW5WM

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
3🔥3👍2
👩‍💻 Spring Boot Pro Tip: свой FailureAnalyzer

В Spring Boot можно перехватывать ошибки на этапе запуска и превращать их в понятные человеку сообщения. Для этого создан механизм FailureAnalyzer.

Зачем он нужен
- улучшает диагностику на старте приложения
- помогает быстро находить причины конфигурационных ошибок
- делает логирование чище и понятнее

Как работает
Вы создаёте свой класс, который анализирует исключение и возвращает читаемое описание проблемы и советы по исправлению.

Под капотом Spring Boot автоматически подцепит ваш анализатор и покажет дружелюбное сообщение вместо сырого stacktrace.

Документация

Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍5🔥5
Как это — работать в Т-Банке?

Загляните в канал T-Crew, где увидите:

— жизнь и будни команды;
— ИТ-хабы компании по всей России;
— анонсы мероприятий;
— кейсы, статьи и советы для карьерного роста.

Еще здесь можно раньше других найти вакансии в ИТ и диджитале. За полезным — сюда.
👍3🔥32
👩‍💻 Магия IntelliJ IDEA: Быстрый запуск и остановка проекта

Всё ещё запускаете проект мышкой? Тогда этот пост для вас.

На самом деле IDEA умеет стартовать, дебажить и останавливать приложение полностью без кликов мышью. После пары дней привычки вы забудете, где находится зелёная кнопка ▶️.

🟢Что делает

— Позволяет запускать и останавливать проект, не касаясь мыши
— Работает с любыми конфигурациями: Application, Maven, Gradle, Spring Boot и др.
— Поддерживает горячий перезапуск (rerun) и мгновенный переход к дебагу

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

— Ускоряет цикл “правка → запуск → проверка”
— Позволяет фокусироваться на коде, не отвлекаясь на интерфейс
— Особенно удобно при работе на ноутбуке или в tmux-подобном флоу

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

🔘Shift + F10 — запустить последнюю конфигурацию
🔘Shift + F9 — запустить в режиме отладки
🔘Ctrl + F2 — остановить выполнение

Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1454🔥3🎅2
This media is not supported in your browser
VIEW IN TELEGRAM
VK RecSys Challenge: проверьте свой алгоритм в деле!

В самом разгаре ежегодное соревнование по разработке рекомендательных систем от VK — RecSys Challenge 2025. Участникам предстоит решить одну из самых сложных проблем в мире рекомендаций: задачу холодного старта.

Суть соревнования — построить модель, которая предскажет, кому из пользователей понравится новый клип, даже если его ещё никто не видел.

Что ждёт участников:
• Реальные данные — датасет VK-LSVD с 40 млрд взаимодействий и 20 млн коротких видео
• Можно участвовать соло или в команде до 4 человек
• Техническая свобода — до 5 сабмитов в день, возможность экспериментировать
• Общий призовой фонд — 2 500 000 рублей

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

Регистрация открыта до 15 декабря. Успейте подать заявку, скачать датасет и начать эксперименты!

👉 Подробности и регистрация на сайте

Реклама. ООО "ВК" ИНН 7743001840
3👍3🔥3
👩‍💻 Spring Batch совет

Хочешь контролировать, сколько раз может стартовать конкретный шаг в Spring Batch? Используй параметр startLimit — он задаёт максимальное число запусков для step'а.

Полезно для случаев с повторными попытками, защитой от бесконечного рестарта и строгим контролем бизнес-логики.

Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍52🔥2
🚀Почему 9 из 10 интеграций оборачиваются проблемами?

В видеопроекте Road to Highload Дмитрий Кривопальцев, тимлид бэкенда Яндекс Диска, рассказывает, как избежать проблем при взаимодействии со смежными системами.

Поговорим о типичных сложностях, с которыми сталкиваются команды при интеграции с внешними сервисами, и о том, как их предотвратить или минимизировать.

Road to Highload — это цикл видео от Яндекс 360 о том, как строятся системы, которыми ежедневно пользуются миллионы людей и тысячи компаний. Здесь говорят о highload и отказоустойчивости не по учебникам, а на основе многолетнего опыта разработки.


Смотрите проект, чтобы узнать, как создаются одни из крупнейших облачных сервисов в России:

Сайт проекта
VK Видео
Ютуб
Please open Telegram to view this post
VIEW IN TELEGRAM
3🔥3👍2
Forwarded from Java Guru 🤓
Что будет результатом запуска и обращения на /orders?
😁6👍5
Forwarded from Java Guru 🤓
Что будет результатом запуска и обращения на /orders?
Anonymous Quiz
8%
4xx Ошибка
12%
5хх Ошибка
67%
Ошибка компиляции
13%
RuntimeException
👍722
This media is not supported in your browser
VIEW IN TELEGRAM
Когда между идеей и продом — преград нет!


В VK любят решать сложные и масштабные задачи, а ещё — быстро реализовывать идеи. Компания рассказала, каких принципов придерживается команда в работе и какими результатами гордится. Переходите по ссылке, там много интересного!
54😁4👍2🔥2
👩‍💻 Оптимизация ArrayList

Многие недооценивают, насколько ArrayList может быть узким местом в производительности, особенно при работе с большими объёмами данных. Разберём, как оптимизировать его использование 👇

⚙️ Указывайте ёмкость при создании

По умолчанию:
List<String> list = new ArrayList<>();


ArrayList начинает с небольшой ёмкости (10 элементов) и каждый раз увеличивается в 1.5 раза, когда не хватает места. Это вызывает множество копирований массива, что замедляет работу при миллионах элементов.

✔️ Оптимальный вариант:
List<String> list = new ArrayList<>(1_000_000);


Если вы знаете (или можете оценить) количество элементов заранее — выделите память сразу. Это уменьшает количество realocations и экономит до 30–40% времени при массовых вставках.

🧠 Очищайте, а не пересоздавайте

Многие делают так:
list = new ArrayList<>();


Это создаёт новый объект и выбрасывает старый в GC. При частых операциях — GC начинает тормозить систему.

✔️ Лучше:
list.clear();


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

🔥 Не используйте remove() в цикле

Удаление элементов в цикле вручную — частая и дорогая ошибка.

Плохо:
for (String s : list) {
if (s.startsWith("A")) list.remove(s);
}


✖️ Такой код приведёт к ConcurrentModificationException.

Даже если использовать Iterator, это безопасно, но медленно — каждый вызов remove() сдвигает все последующие элементы (O(n) на удаление).

✔️ Хорошо:
list.removeIf(s -> s.startsWith("A"));


Метод removeIf оптимизирован под внутренние операции и работает быстрее при массовом удалении.

Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2510🔥6
👩‍💻 Совет по Java: используйте

Objects.requireNonNullElse(value, defaultValue), чтобы избавиться от ручных проверок на null.

Это делает код чище, короче и безопаснее.

Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥52🎅1
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👩‍💻 Как подключить Keycloak к Spring Boot проекту

Keycloak — это современный open-source Identity Provider от Red Hat, который часто используется в enterprise-проектах для SSO (Single Sign-On), OAuth2 и OpenID Connect. Ниже — пошаговая настройка интеграции Keycloak с Spring Boot 3 и Spring Security 6.

1️⃣ Зависимости

Проверьте, что в проекте есть или добавьте следующие зависимости:

— Spring Web
— Spring Security
— OAuth2 Resource Server
— OAuth2 Client

2️⃣ Разворачиваем Keycloak

Запустите Keycloak через Docker:
docker run -d \
-p 8080:8080 \
-e KEYCLOAK_ADMIN=admin \
-e KEYCLOAK_ADMIN_PASSWORD=admin \
quay.io/keycloak/keycloak:25.0.2 start-dev


После запуска откройте http://localhost:8080, войдите под admin/admin и создайте realm, например demo-realm.

3️⃣ Настройка клиента в Keycloak

В разделе Clients → Create client укажите:

— Client ID: spring-client
— Client Protocol: openid-connect
— Root URL: http://localhost:8081

В разделе Settings:

— Установите Access Type → confidential
— Включите Standard Flow Enabled
— Укажите Redirect URI: http://localhost:8081/login/oauth2/code/keycloak

Сохраните и перейдите на вкладку Credentials — скопируйте Client Secret.

4️⃣ Настройка application.yml

server:
port: 8081

spring:
security:
oauth2:
client:
registration:
keycloak:
client-id: spring-client
client-secret: YOUR_CLIENT_SECRET
scope: openid, profile, email
redirect-uri: "{baseUrl}/login/oauth2/code/{registrationId}"
provider:
keycloak:
issuer-uri: http://localhost:8080/realms/demo-realm


5️⃣ Конфигурация безопасности

Настройте SecurityConfig.java:

@Configuration
public class SecurityConfig {

@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests(auth -> auth
.requestMatchers("/", "/public").permitAll()
.anyRequest().authenticated()
)
.oauth2Login(Customizer.withDefaults())
.logout(logout -> logout
.logoutSuccessUrl("/")
.invalidateHttpSession(true)
);
return http.build();
}
}


🧠 Зачем это нужно:

Keycloak снимает с вас головную боль по хранению паролей, управлению ролями и сессиями. Он интегрируется с LDAP, AD, SAML и десятками внешних OAuth-провайдеров.

Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥54
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Продвинутый SQL-совет: используйте partial indexes как «селективный ускоритель», но не только для WHERE — ещё и для JOIN-ов.

Большинство разработчиков делают частичные индексы так:
CREATE INDEX idx_active_users ON users(id) WHERE active = true;

Но фишка в том, что partial index может радикально ускорить запросы, где фильтр стоит не в WHERE, а «прячется» в JOIN-условии. Оптимизатор всё равно понимает условие и использует индекс.

Например, у вас есть таблица logs, где 95% строк — архив, и только 5% актуальные. Запрос делает join:


SELECT u.id, l.event
FROM users u
JOIN logs l ON l.user_id = u.id AND l.is_archived = false;



Если делать обычный индекс, он будет огромный. Но partial index:


CREATE INDEX idx_logs_active ON logs(user_id)
WHERE is_archived = false;



Теперь:
- индекс в 20–30 раз меньше
- cache hit rate выше
- планы меняются с seq scan на index scan
- JOIN начинает работать почти как в in-memory базе

Прикольно, что работает даже если в SELECT самого условия нет — главное, чтобы оно было в ON.

Это отличный способ ускорять «холодные» большие таблицы, где часто обращаются только к маленькому активному сегменту.

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