Java библиотека

Логотип телеграм канала @javalib — Java библиотека
Актуальные темы из канала:
Java
Assertj
Jpa
Вакансія
Реклама
Afterpropertiesset
Конкурс
Мерч
All tags
Адрес канала: @javalib
Категории: Технологии
Язык: Русский
Количество подписчиков: 31.42K
Описание канала:

Книги, статьи, мемы и многое другое для Java программиста!
По сотрудничеству и рекламе: @NadikaKir
Канал в перечне РКН: https://vk.cc/cJrT4A
Мы на бирже: https://telega.in/c/javalib/
Сообщество VK https://vk.com/javatutorial

Рейтинги и Отзывы

3.67

3 отзыва

Оценить канал javalib и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

1

4 звезд

0

3 звезд

2

2 звезд

0

1 звезд

0


Последние сообщения 2

19 дек 2025
Polyglot Persistence: как современные системы живут с десятками баз данных

23 декабря в 20:00 мск — открытый вебинар в OTUS.

Одна база данных больше не справляется с требованиями современного мира. Сегодня компании вроде Avito, Yandex, Ozon и Spotify объединяют PostgreSQL, ClickHouse, Redis, Kafka, Elasticsearch и десятки других инструментов в единую экосистему, где каждая БД отвечает за свой кусочек производительности.

На вебинаре разберём:
— Принципы Polyglot Persistence и как распределять роли между СУБД
— Как связать PostgreSQL, ClickHouse, Redis и Kafka без потери согласованности
— Как работают event-driven архитектуры, CDC и outbox-паттерн в боевых системах
— Как проектировать отказоустойчивые data-платформы

Регистрация: https://vk.cc/cSxfET

Бесплатное занятие приурочено к старту курса Highload Architect, где вы научитесь проектировать системы, выдерживающие миллионы запросов.

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
4.35K views10:05
Подробнее
Поделиться:
Открыть/Комментировать
18 дек 2025
Магия IntelliJ IDEA: Refactor This

Когда рефакторите legacy-код или чистите архитектуру — приходится делать десятки преобразований. А вы знали, что в IDEA есть универсальное меню для всех рефакторингов?

Что делает

— Открывает контекстное меню со всеми доступными рефакторингами для текущего элемента
— Автоматически фильтрует опции в зависимости от контекста (переменная, метод, класс)
— Позволяет выбрать нужную операцию по цифре или первой букве

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

— Не нужно помнить десятки отдельных хоткеев — один хоткей открывает все варианты
— Молниеносный доступ к редким, но мощным рефакторингам (Extract Parameter Object, Introduce Parameter, Pull Members Up)
— Безопасно переименовывает, перемещает и трансформирует код с учётом всех зависимостей
— Особенно полезно для сложных преобразований, которые вручную делать долго и опасно

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

— Поставьте курсор на переменную, метод, класс или любой элемент кода
— Нажмите Ctrl+Alt+Shift+T (Windows/Linux) или ⌃+T (macOS)
— Выберите нужный рефакторинг из списка: Extract Method, Rename, Change Signature, Inline и другие
— Настройте параметры → Enter → готово. IDEA сама обновит все использования

Подписывайся на наш канал в Max
4.74K views13:16
Подробнее
Поделиться:
Открыть/Комментировать
18 дек 2025
«Криптонит» объявляет Новогодний розыгрыш!

Мы подарим два эксклюзивных новогодних набора нашим подписчикам — распаковку подарков оставили в видео

Что для этого нужно сделать?
Подписаться на наш канал «Криптонит. Разработка, наука, шифрование» (и не отписываться)
Нажать внизу на кнопку «Участвовать»

Что в новогоднем подарке?
Уникальный сборник рассказов «Доказательство чуда». В него входят редкие произведения научной фантастики известных советских и российских авторов: Кира Булычёва, Ивана Ефремова, Сергея Другаля и других. Этот сборник специально создан «Криптонитом» для друзей нашего бренда
Мощная портативная зарядка
Снимающиеся наклейки на ноутбук с самыми нужными фразами (например, «Не деплой в пятницу»)
Стильная ремувка

Результаты подведём 22 декабря в 15:00. Бот выберет победителей случайным образом.

Полные правила конкурса можно почитать тут.
#конкурс #мерч
4.43K views08:03
Подробнее
Поделиться:
Открыть/Комментировать
11 дек 2025
Тестовое собеседование Java разработчика #33 - Максим Солодков

Кандидат - опытный Java Tech Lead - Максим Солодков.

СМОТРЕТЬ VKVIDEO

СМОТРЕТЬ YOUTUBE

Подписывайся на наш канал в Max
1.19K views15:18
Подробнее
Поделиться:
Открыть/Комментировать
10 дек 2025
Что будет результатом кода?
2.01K views16:50
Подробнее
Поделиться:
Открыть/Комментировать
10 дек 2025
Мечтают ли ИИ-агенты об удобных IDE?

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

Наша команда следит за индустрией ИИ в разработке достаточно давно. Помимо внедрения ИИ в сам процесс разработки наших продуктов, мы активно занимаемся интеграцией Amplicode с современными AI-агентами и не только.

И у нас есть свои мысли на этот счет)

Реклама. ООО "ХОУЛМОНТ". ИНН 6316134393. erid: 2W5zFJj4KpU

Читать на Хабр: https://habr.com/ru/companies/haulmont/articles/925088/
2.53K views14:32
Подробнее
Поделиться:
Открыть/Комментировать
10 дек 2025
Совет по Java

Начиная с Java 11 можно легко повторить строку нужное количество раз.

Для этого у класса String есть метод repeat который принимает число повторений.

Пример

"Hi ".repeat(3)
Вернет строку Hi Hi Hi

Хороший способ сделать код короче и понятнее

Подписывайся на наш канал в Max
2.55K views13:01
Подробнее
Поделиться:
Открыть/Комментировать
10 дек 2025
Docker и docker-compose и их использование в автотестировании

Многие инженеры по автоматизации тестирования со временем задумываются о том, чтобы версионировать тесты и поставлять их как часть продукта. Так же сталкиваются с проблемой ручного определения контекста, необходимого для запуска автотестов, которые очень часто написаны на разных стеках. На занятии поговорим как можно решить данные проблемы при помощи Docker и docker-compose и почему Docker сегодня так востребован и популярен среди инженеров по автоматизации тестирования.

Что будет рассмотрено:
Рассмотрим Docker как инструмент для управления жизненным циклом контейнеров
поговорим о тонкостях его использования
немного затронем docker-compose для описания стека и управления им.

Какие результаты на выходе:
После занятия слушатели смогут:
- заворачивать автотесты в контейнеры
- управлять ими
- использовать docker-compose для разворачивания стека тестирования.

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

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
2.63K views09:01
Подробнее
Поделиться:
Открыть/Комментировать
10 дек 2025
Чек-лист Code Review

Собрали в один PDF всё, что нужно проверять при код-ревью — от архитектуры до безопасности. 75+ пунктов с цветовой маркировкой по приоритетам.

Зачем?

Чтобы ничего не упустить и держать единый стандарт качества в команде.

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

Открываете при каждом PR, идёте по чек-листу. Красные пункты — критично, жёлтые — важно, белые — рекомендации.

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

Подписывайся на наш канал в Max
2.71K views06:47
Подробнее
Поделиться:
Открыть/Комментировать
10 дек 2025
Java API Совет

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

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

Подписывайся на наш канал в Max
2.78K views22:35
Подробнее
Поделиться:
Открыть/Комментировать
9 дек 2025
Просто о сложном: CompletableFuture

В Java 8 появился CompletableFuture — это реализация паттерна Promise, которая позволяет строить декларативные цепочки асинхронных операций.

По сути, это обёртка над Future, которая может быть завершена вручную (отсюда "Completable") и предоставляет богатый API для композиции.

Зачем он нужен

Классический Future не позволяет:

— Комбинировать несколько асинхронных операций.
— Обрабатывать результат без блокировки.
— Реагировать на ошибки внутри цепочки.

CompletableFuture решает эти проблемы, предоставляя fluent API для композиции асинхронных вычислений.

Базовый пример
javaCompletableFuture future = CompletableFuture
.supplyAsync(() -> fetchUserFromDB(userId))
.thenApply(user -> user.getEmail())
.thenApply(String::toUpperCase)
.exceptionally(ex -> "default@example.com");

future.thenAccept(System.out::println); // не блокирует

Здесь каждый этап выполняется асинхронно. Если где-то произошла ошибка, сработает exceptionally().

Ключевые методы

supplyAsync() / runAsync() — запустить задачу асинхронно.
thenApply() — трансформировать результат.
thenAccept() — обработать результат (void).
thenCompose() — развернуть вложенный CompletableFuture.
thenCombine() — объединить результаты двух независимых future.
exceptionally() / handle() — обработка ошибок.
allOf() / anyOf() — дождаться завершения нескольких задач.

Пулы потоков

По умолчанию CompletableFuture использует ForkJoinPool.commonPool(). Для задач с блокирующими операциями (IO, БД) лучше передать свой Executor. Иначе можно заблокировать общий пул и замедлить всё приложение.

Подводные камни

— Отсутствие отмены

CompletableFuture.cancel() не останавливает выполнение задачи, а только меняет статус. Реальная отмена требует проверки Thread.interrupted() внутри задачи.

— Проглатывание исключений


Если не добавить exceptionally() или handle(), исключение останется внутри future до вызова get() или join().

— Цепочки могут выполняться синхронно

Методы без суффикса Async (например, thenApply) могут выполниться в том же потоке, где завершился предыдущий этап. Если нужна гарантия асинхронности, используйте thenApplyAsync().

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

— Для композиции нескольких асинхронных операций (API-вызовы, запросы в БД).
— Когда нужны неблокирующие обработчики результатов.
— В реактивных архитектурах (хотя там лучше Project Reactor или RxJava).

Не подходит:

— Для CPU-bound задач с высокой конкуренцией (лучше использовать параллельные стримы или явное управление потоками).
— Когда важна отмена выполняющейся задачи.

Подписывайся на наш канал в Max
2.56K views16:26
Подробнее
Поделиться:
Открыть/Комментировать
9 дек 2025
Асинхронная обработка данных в высоконагруженных системах

16 декабря в 20:00 мск — открытый урок в OTUS.

На вебинаре вы узнаете:
— Как использовать асинхронную обработку данных для масштабирования сервисов
— Как работают очереди сообщений, веб-сокеты и другие инструменты асинхронного взаимодействия
— Как выглядит архитектура реального проекта: от веб-сервера до брокера сообщений и базы данных
— Какие узкие места чаще всего встречаются в асинхронных системах и как их устранять

После занятия вы:
— Разберётесь в принципах асинхронной архитектуры и её влиянии на производительность
— Научитесь применять асинхронные подходы
— Получите реальные примеры архитектурных решений

Регистрация: https://vk.cc/cS8P7w

Бесплатный урок приурочен к старту курса Highload Architect, на котором вы освоите архитектуры, выдерживающие миллионы запросов в секунду, и научитесь проектировать системы без узких мест.

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
2.68K views11:01
Подробнее
Поделиться:
Открыть/Комментировать
9 дек 2025
Продвинутый 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
2.83K views08:21
Подробнее
Поделиться:
Открыть/Комментировать
8 дек 2025
Как подключить 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.

Зависимости

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

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

Разворачиваем 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.

Настройка клиента в 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.

Настройка 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

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

Настройте 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
3.26K views06:51
Подробнее
Поделиться:
Открыть/Комментировать
7 дек 2025
Совет по Java: используйте

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

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

Подписывайся на наш канал в Max
3.44K views10:39
Подробнее
Поделиться:
Открыть/Комментировать
6 дек 2025
Оптимизация ArrayList

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

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

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

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

Оптимальный вариант:
List 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
4.14K views08:49
Подробнее
Поделиться:
Открыть/Комментировать
5 дек 2025
Когда между идеей и продом — преград нет!


В VK любят решать сложные и масштабные задачи, а ещё — быстро реализовывать идеи. Компания рассказала, каких принципов придерживается команда в работе и какими результатами гордится. Переходите по ссылке, там много интересного!
4.01K views14:02
Подробнее
Поделиться:
Открыть/Комментировать
5 дек 2025
Что будет результатом запуска и обращения на /orders?
3.83K views22:37
Подробнее
Поделиться:
Открыть/Комментировать
4 дек 2025
Почему 9 из 10 интеграций оборачиваются проблемами?

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

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

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

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

Сайт проекта
VK Видео
Ютуб
4.57K views13:52
Подробнее
Поделиться:
Открыть/Комментировать
4 дек 2025
Spring Batch совет

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

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

Подписывайся на наш канал в Max
3.79K views12:31
Подробнее
Поделиться:
Открыть/Комментировать
19 ноя 2025
Зима близко...
Как и Java-митап от Мир Plat.Form!

Мир Plat.Form — технологическая команда Национальной системы платежных карт (НСПК). Наши самые известные разработки — платёжная система «Мир» и Система быстрых платежей (СБП).

Собираемся в тёплой компании, где обсудим:

Как реализовать справочники в реальном времени на PostgreSQL и Kafka
Чем Virtual Threads отличается от реактивного подхода
И узнаем, почему Unicode-текста могут ввести в ступор даже самого опытного разработчика

Познакомьтесь со спикерами и их докладами в карусели и регистрируйтесь на митап по ссылке

Увидимся!

27 ноября, 18:00-22:00
Москва, 3-й Красносельский переулок, 19, стр. 13
(Зал «Grey Green»)

Реклама. АО "НСПК", ИНН 7706812159, erid 2Vtzqx5DouT
1.24K views14:01
Подробнее
Поделиться:
Открыть/Комментировать
19 ноя 2025
Еще одна коварная задача на Java - с побочным эффектом

Рассмотрите этот, на первый взгляд, безобидный код:


public class SideEffectSurprise {
static int x = 10;

public static void main(String[] args) {
int result = x + increment() + x;
System.out.println("result = " + result);
System.out.println("x = " + x);
}

static int increment() {
return ++x;
}
}

Вопрос:
Что выведет программа?
Почему?
Как именно вычисляется выражение x + increment() + x — слева направо или как-то иначе?

Подписывайся на наш канал в Max
1.79K views12:01
Подробнее
Поделиться:
Открыть/Комментировать
19 ноя 2025
Курс “Software Architect” от OTUS — набор заканчивается!

Успейте занять место в группе курса «Software Architect»! Станьте экспертом в проектировании отказоустойчивых и масштабируемых систем. Пройдите вступительный тест и получите скидку, чтобы не пропустить старт обучения!

Почему стоит пойти:


- 100% практики на реальных проектах
- Проектирование гибких архитектур
- Микросервисы, интеграции, Big Data
- Современные паттерны: CQRS, Event Sourcing
- Карьерный рост: рекомендации партнёрам для лучших

Кому подойдёт:

- Разработчики, готовые к новому уровню
- Архитекторы, углубляющие экспертизу
- Тимлиды

Что освоите:

- Проектирование масштабируемых архитектур
- Оптимизация взаимодействия сервисов
- Повышение качества и устойчивости систем

Пройдите тест и забронируйте место со скидкой. Не упустите шанс стать экспертом в архитектуре систем! Подробности уточняйте у менеджера

Пройти тестирование https://vk.cc/cRrOwD

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
1.87K views08:02
Подробнее
Поделиться:
Открыть/Комментировать
19 ноя 2025
Просто о сложном: JIT-компилятор

Чтобы ускорить работу приложения, JVM включает в дело Just-In-Time (JIT) компилятор.

Он превращает часто выполняемый байткод в нативные машинные инструкции прямо во время исполнения.

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

— При старте приложения JVM интерпретирует байткод.

— Когда видит, например, что метод вызывается часто (т.н. hot method), — JIT компилирует его в машинный код.

— В следующий раз этот метод исполняется уже как нативный, без интерпретации.

— Всё это происходит «на лету» — поэтому Java-программы разгоняются после первых секунд работы.

Зачем нужен JIT

Он сочетает плюсы интерпретации и компиляции:

— Быстрый старт приложения (интерпретация).
— Высокая производительность после разогрева (JIT).

Что он умеет оптимизировать

— Inlining: подставляет код мелких методов прямо в место вызова.

— Escape Analysis: определяет, можно ли объект хранить на стеке вместо heap.

— Loop unrolling: разворачивает циклы для ускорения.

— Dead code elimination: выбрасывает ненужные операции.

— И другие алгоритмы.

Как посмотреть, что делает JIT

Включите флаг:
-XX:+PrintCompilation

И увидите, какие методы компилируются во время исполнения.

Подписывайся на наш канал в Max
2.01K views06:48
Подробнее
Поделиться:
Открыть/Комментировать
18 ноя 2025
Можно ли считать Final переменную константой?

Поскольку у нас не получится присвоить новое значение для final переменной, кажется, что это переменные константы. Но это только на первый взгляд. Если тип данных, на который ссылается переменная — immutable, то да, это константа.

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


Подписывайся на наш канал в Max
2.59K viewsedited  18:27
Подробнее
Поделиться:
Открыть/Комментировать
18 ноя 2025
Завтра тестовое собеседование с Java-разработчиком

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

Как это будет:
Сергей Чамкин, старший разработчик из Uzum, ex-WildBerries, будет задавать реальные вопросы и задачи разработчику-добровольцу
Cергей будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
В конце можно будет задать любой вопрос Сергею

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

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

Реклама.
О рекламодателе.
2.6K views14:02
Подробнее
Поделиться:
Открыть/Комментировать
18 ноя 2025
Конструктор по умолчанию

Конструктор по умолчанию предоставляется компилятором Java, если в классе не определен ни один другой конструктор. Конструктор по умолчанию инициализирует все поля класса значениями по умолчанию (например, 0 для числовых типов, false для типа boolean, null для ссылочных типов).

Если же в классе определен хотя бы один конструктор (с параметрами или без), компилятор не будет предоставлять конструктор по умолчанию, и его необходимо определить явно, если он нужен.

В этом примере мы определяем класс MyClass с двумя полями: x и y, а также определяем конструктор по умолчанию, который выводит сообщение при вызове. В методе main создаем экземпляр класса MyClass, используя конструктор по умолчанию, и выводим значения полей x и y, которые инициализированы значениями по умолчанию.


Подписывайся на наш канал в Max
2.48K views12:35
Подробнее
Поделиться:
Открыть/Комментировать
18 ноя 2025
Хотите знать про backend разработку больше, чем ваши коллеги? Глубоко анализировать архитектуру и предвидеть узкие места? Больше не стрессовать на system design собеседованиях?

Меня зовут Андрей Суховицкий. Я разработчик c десятилетним опытом, tech lead, разрабатываю высоконагруженные системы. В 2021 и 2024 годах получил премию, как лучший преподаватель университета ИТМО.

На своем канале я пишу только о том, что кажется мне интересным, описываю случаи из практики. Темы, которые мне близки: java, kotlin, coroutines, многопоточное программирование, system design, реализация высоконагруженных и надежных систем. Я сам пишу все посты в моем телеграм канале, даже этот не исключение.

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

Присоединяйтесь к каналу, если готовы выйти на новый уровень.
2.59K views09:01
Подробнее
Поделиться:
Открыть/Комментировать
18 ноя 2025
Инкапсуляция

Инкапсуляция — это принцип ООП, который заключается в сокрытии внутреннего представления класса от внешнего мира. Для этого используются модификаторы доступа: private, protected, public.

Обычно поля класса делаются private или protected, а методы — public. Это позволяет скрыть реализацию класса и предоставить к ней контролируемый доступ через public методы.

При запуске этой программы на выходе мы получим:
John 0


Подписывайся на наш канал в Max
2.73K views23:01
Подробнее
Поделиться:
Открыть/Комментировать
17 ноя 2025
Магия IntelliJ IDEA: Recent Locations

Когда в проекте сотни файлов и десятки классов — навигация превращается в хаос. А вы знали, что IDEA помнит все места, где вы недавно были?

Что делает

— Показывает список недавних мест в коде (не просто открытых файлов)
— Можно искать по содержимому, не только по имени
— Можно найти только изменённые фрагменты

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

— Молниеносно возвращает к недавнему месту редактирования
— Полезно при ревью, багфиксе или исследовании сложных фрагментов
— Работает лучше, чем "Recent Files", ведь учитывает даже переходы внутри одного файла

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

— Нажмите Ctrl+Shift+E (Windows/Linux) или ⌘+Shift+E (macOS)
— Появится список последних мест где вы были. Можно также искать лишь изменённые фрагменты (повторно нажмите то же сочетание)
— Начните вводить фрагмент кода или имени и IDEA сама сузит поиск

Подписывайся на наш канал в Max
2.94K views15:46
Подробнее
Поделиться:
Открыть/Комментировать