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
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
Как вы решаете вопрос с покрытием?
Почти в каждом проекте висит задача: поднять покрытие до 70%.
И почти в каждой команде никто не хочет этим заниматься.

Explyt – AI-плагин для Java и Kotlin разработчиков, который снимает эту боль.
Он генерирует юнит-тесты прямо в IDE: по коду, по runtime-трассам, по спекам. И делает это так, как будто реально вник в проект.

📌 Что умеет:
- создаёт осмысленные тесты для Java и Kotlin-кода
- поддерживает JUnit 4/5, TestNG, кастомные фреймворки
- превращает execution trace в автотесты
- предлагает фиксы, если сгенерированный тест падает
- есть режим агента, где AI сам меняет код, запускает тесты и ищет ошибки

📦 Плагин доступен:
- через JetBrains Marketplace
- или напрямую с сайта разработчика

🎁 30 дней бесплатного доступа – просто пользуйтесь.
👉 Попробовать на своём проекте
👍4🔥3
Forwarded from Java Guru 🤓
Что добавить в код, чтобы в REST API роли и аутентификация работали корректно
👍5🔥31
Forwarded from Java Guru 🤓
👍4🔥21
👩‍💻 Java Streams: Основные методы для чистого и эффективного кода!

Java Streams предлагают множество методов для упрощения манипуляций с данными и повышения читаемости кода.
Вот краткое руководство с примерами:

Освойте эти методы, чтобы писать более чистый и эффективный код на Java! 💡

Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥742
⁉️ Хотите стать тимлидом или уже им работаете, но чувствуете синдром самозванца?

На курсе «Team Lead» от OTUS вы получите системные знания и практику, которые помогут уверенно управлять командой, правильно делегировать задачи, решать конфликты и мотивировать людей. Программа составлена практикующими экспертами, которые ежедневно решают задачи лидов в IT-компаниях.

Вы сможете отработать ошибки на модели команды — без риска для реального проекта, научитесь говорить на одном языке с бизнесом и прокачаете навыки, которые ценят работодатели.

➡️ Запишитесь на курс уже сегодня, чтобы активировать скидку на обучение по промокоду TL10 (актуален до 28.09): https://vk.cc/cQ1lvH

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👍32🔥2
Как настроить аутентификацию с OAuth2

В Spring Boot 3 интеграция с OAuth2 стала ещё проще благодаря улучшенной поддержке социальных логинов. Рассмотрим, как настроить аутентификацию через Google с использованием Spring Security 6.

1️⃣ Создание проекта

Используйте Spring Initializr для создания проекта с следующими зависимостями:

— Spring Web
— Spring Security
— OAuth2 Client

Или добавьте их вручную в pom.xml:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>


2️⃣Получение OAuth2-учётных данных Google

1. Перейдите в Google Cloud Console
2. Создайте новый проект
3. Перейдите в раздел APIs & Services → Credentials
4. Нажмите Create Credentials → OAuth 2.0 Client IDs
5. Укажите тип приложения Web application
6. Добавьте Authorized redirect URI
7. Сохраните и получите Client ID и Client Secret

3️⃣Конфигурация application.yml

Добавьте следующие настройки в src/main/resources/application.yml:
spring:
security:
oauth2:
client:
registration:
google:
client-id: YOUR_CLIENT_ID
client-secret: YOUR_CLIENT_SECRET
scope:
- email
- profile
redirect-uri: "{baseUrl}/login/oauth2/code/{registrationId}"
authorization-grant-type: authorization_code
client-name: Google
provider:
google:
authorization-uri: https://accounts.google.com/o/oauth2/v2/auth
token-uri: https://oauth2.googleapis.com/token
user-info-uri: https://www.googleapis.com/oauth2/v3/userinfo
user-name-attribute: sub


Замените YOUR_CLIENT_ID и YOUR_CLIENT_SECRET на полученные значения.

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

Создайте класс конфигурации:
@Configuration
public class SecurityConfig {

@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/", "/login", "/error").permitAll()
.anyRequest().authenticated()
.and()
.oauth2Login()
.loginPage("/login")
.defaultSuccessUrl("/dashboard", true);
return http.build();
}
}

Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍85🔥4
Бесплатный карьерный форум для студентов IT-направлений 😍

На "Найти IT" ты сможешь найти работу, пообщаться с работадателями, показать свое резюме и пет-проекты, узнать всё о стажировках и вакансиях!

Кто будет: Альфа-Банк, Сбер, Ozon Tech, МТС, X5 Tech — больше 30 компаний, которые хантят студентов ИТ-специальностей

Плюсы для карьеры:
— нетворкинг с 2000+ участниками
— HR, тимлиды, разрабы и другие представители компаний, которые ответят на все твои вопросы
— выступления спикеров, только в офлайне
— 15+ призов в розыгрыше от FutureToday

Где и когда:DAA EXPO — 11 октября, 12:00–17:00 👇

Зарегистрироваться: https://vk.cc/cQ0Fft?erid=2W5zFH1VhJg
2🔥1
🖥 JDK, JRE и JVM

🟢 JDK (Java Development Kit) — это набор инструментов для разработки приложений на Java. Включает компилятор, библиотеки и утилиты, необходимые для написания и сборки кода.

🟢 JRE (Java Runtime Environment) — среда выполнения, которая позволяет запускать Java-приложения. Включает в себя JVM и стандартные библиотеки, но без инструментов разработки.

🟢 JVM (Java Virtual Machine) — виртуальная машина, которая исполняет байт-код, сгенерированный при компиляции. Именно JVM делает Java переносимой, так как позволяет запускать программы на разных платформах.

Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍143🔥2
Абстракция в Java

Абстракция — это способность выделять существенные характеристики объекта и упускать несущественные.
Абстракция позволяет сосредоточиться на важных свойствах и поведении объекта, скрыв детали реализации.

В Java абстракция реализуется с помощью абстрактных классов и интерфейсов.

Абстрактный класс содержит абстрактные методы без реализации. Подклассы обязаны реализовать эти методы.
Интерфейс задает «контракт», описывая поведение классов без деталей реализации. Классы реализуют интерфейс.

Реализация абстракции требует тщательного анализа предметной области и выделения общих свойств объектов.


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

SortedSet — это интерфейс в Java Collection Framework, который предоставляет упорядочение элементов в множестве. Элементы упорядочиваются с помощью их естественного порядка или с помощью компаратора, который обычно предоставляется при создании отсортированного множества.

SortedSet имеет несколько дополнительных операций, которые позволяют использовать упорядочение элементов:
— first() и last() возвращают первый и последний элементы в множестве соответственно.
— headSet(), tailSet() и subSet() возвращают подмножества элементов, которые находятся до, после или между заданными элементами соответственно.

В этом примере мы создаем TreeSet (класс, который реализует SortedSet) и добавляем в него несколько строк. Поскольку строки реализуют интерфейс Comparable, они упорядочиваются в алфавитном порядке. Затем мы используем различные методы SortedSet для получения первого и последнего элементов, а также подмножеств элементов.


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

CompletableFuture в пакете java.util.concurrent является классом, который предоставляет мощный и гибкий подход к асинхронному программированию. Он позволяет выполнять асинхронные операции и обрабатывать их результаты, комбинировать несколько операций и управлять зависимостями между ними.

Помимо операций, представленных на изображении, CompletableFuture также предоставляет множество других методов для работы с асинхронными операциями, таких как thenApply(), thenCompose(), thenCombine(), exceptionally() и другие, которые позволяют обрабатывать результаты, комбинировать операции, обрабатывать исключения и многое другое. Это делает CompletableFuture мощным инструментом для асинхронного программирования.


Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍106🔥3
Агрегация: что это и когда использовать?

Агрегация — это тип отношения между классами, при котором один класс "владеет" экземпляром другого, но их жизненные циклы не зависят друг от друга. Это «слабое» отношение, так как объект одного класса может существовать независимо от объекта другого.

Пример:

class Engine {
void start() {
System.out.println("Двигатель запущен");
}
}

class Car {
private Engine engine;

Car(Engine engine) {
this.engine = engine;
}

void startCar() {
engine.start();
System.out.println("Машина поехала");
}
}

public class Main {
public static void main(String[] args) {
Engine engine = new Engine(); // Двигатель может существовать отдельно
Car car = new Car(engine);
car.startCar();
}
}


🟢В этом примере класс Car агрегирует объект Engine, но двигатель может существовать сам по себе, вне машины.

Агрегацию стоит использовать, когда один объект логически принадлежит другому, но их существование не связано напрямую. Например, библиотека и книги, где книги могут существовать без самой библиотеки

Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
13👍7🔥4
Готовы перейти от разработки к управлению людьми и проектами?

8 октября в 20:00 МСК приглашаем на открытый урок «Всё о курсе Team Lead: прямой разговор с руководителем программы». На вебинаре мы честно расскажем, что ждёт студентов на курсе, какие темы будут разобраны и какую ценность вы получите. Это возможность услышать инсайды о программе из первых уст и задать любые вопросы напрямую руководителю.

Урок будет полезен тем, кто уже задумывается о переходе в роль тимлида: старшим инженерам, начинающим руководителям и всем, кто хочет развиваться в IT-менеджменте.

➡️ Зарегистрируйтесь сейчас и узнайте, как повышение квалификации поможет вам вырасти в эффективного лидера: https://vk.cc/cQ7te6

🎁 Все участники вебинара получат промокод, дающий скидку на обучение на курсе «Team Lead» 15%

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👍3🔥32