Java. Сортировки
Java. Сортировка пузырьком.
Java. О сортировке выбором.
Java. Быстрая сортировка. Объяснение на пальцах)
Java. Оценка сложности алгоритмов сортировки.
Java. Сортировка слиянием.
Java. Сортировка подсчетом.
Java. Сортировка вставками.
Java. Сортировка расческой. От пузырька до расчески.
📲 Мы в MAX
👉@BookJava
Java. Сортировка пузырьком.
Java. О сортировке выбором.
Java. Быстрая сортировка. Объяснение на пальцах)
Java. Оценка сложности алгоритмов сортировки.
Java. Сортировка слиянием.
Java. Сортировка подсчетом.
Java. Сортировка вставками.
Java. Сортировка расческой. От пузырька до расчески.
📲 Мы в MAX
👉@BookJava
🔥6👍3
Почему ты получаешь отказ после "норм собеса"?
Дело не в знаниях - ты просто не знаешь, что реально проверяют на собеседованиях
Отсюда:
— непонимание, какие навыки надо качать, чтобы выйти на следующий грейд
— ощущение стагнации и отсутствие роста в скиллах
— долгое время на одной и той же зп
Решение — знать, что от тебя ждёт интервьюер, и умение правильно донести свою мысль
Для этого ребята из ШОРТКАТ (менторской программы для разработчиков) собрали в один файл ОТВЕТЫ НА 50 СЛОЖНЫХ ВОПРОСОВ с Java-собеседований 🔥
Они проанализировали более 100 мок-интервью и собрали внутри реальные вопросы + ответы сильного кандидата
Забрать можно бесплатно (!) в боте — @shortcut_sh_bot
Переходите по ссылке выше и забирайте файл, чтобы быстрее выйти на новый уровень ☝️
Реклама.
О рекламодателе.
Дело не в знаниях - ты просто не знаешь, что реально проверяют на собеседованиях
Отсюда:
— непонимание, какие навыки надо качать, чтобы выйти на следующий грейд
— ощущение стагнации и отсутствие роста в скиллах
— долгое время на одной и той же зп
Решение — знать, что от тебя ждёт интервьюер, и умение правильно донести свою мысль
Для этого ребята из ШОРТКАТ (менторской программы для разработчиков) собрали в один файл ОТВЕТЫ НА 50 СЛОЖНЫХ ВОПРОСОВ с Java-собеседований 🔥
Они проанализировали более 100 мок-интервью и собрали внутри реальные вопросы + ответы сильного кандидата
Забрать можно бесплатно (!) в боте — @shortcut_sh_bot
Переходите по ссылке выше и забирайте файл, чтобы быстрее выйти на новый уровень ☝️
Реклама.
О рекламодателе.
❤2
🧠 Нюанс с
Многие Java-разработчики на автомате пишут что-то вроде:
⚠️ Проблема:
📌 Правильный способ — использовать
💡
🔁 Аналогичная ситуация с
🧪 Мини-памятка:
*
*
📲 Мы в MAX
👉@BookJava
Optional.map() и методами, возвращающими OptionalМногие Java-разработчики на автомате пишут что-то вроде:
Optional<User> user = findUserById(id); // возвращает Optional<User>
Optional<String> email = user.map(User::getEmail); // getEmail тоже возвращает Optional<String>
⚠️ Проблема:
map() в Optional не "разворачивает" вложенные Optional. В этом примере email будет типа Optional<Optional<String>>, что почти всегда нежелательно.📌 Правильный способ — использовать
flatMap():
Optional<String> email = user.flatMap(User::getEmail);
💡
flatMap() позволяет избежать "двойной обёртки", если метод внутри map() уже возвращает Optional.🔁 Аналогичная ситуация с
Stream.map() — если внутри map() вызывается метод, возвращающий Stream, то получится Stream<Stream<T>>, и опять же нужно использовать flatMap().🧪 Мини-памятка:
*
map() — когда метод возвращает обычный тип (T → R);*
flatMap() — когда метод возвращает Optional или Stream (T → Optional<R> или T → Stream<R>).📲 Мы в MAX
👉@BookJava
👍2🔥1
👩💻 Работа с Kafka через библиотеку Kafka Clients
Приглашаем на открытый урок.
🗓 26 августа в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Java разработчик. Продвинутый уровень».
Kafka Clients это нижний уровень для работы с Kafka из Java. Все более высокоуровневые библиотеки основаны на нем.
Данный открытый урок проходит в рамках курса Java разработчик. Продвинутый уровень.
О чем поговорим:
✔️ Чтение и отправка сообщений в Kafka
✔️ Управление топиками
✔️ Разные форматы: текст, JSON, Avro
✔️ Использование транзакций
🔗 Ссылка на регистрацию: https://vk.cc/d0zMZ5
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Приглашаем на открытый урок.
🗓 26 августа в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Java разработчик. Продвинутый уровень».
Kafka Clients это нижний уровень для работы с Kafka из Java. Все более высокоуровневые библиотеки основаны на нем.
Данный открытый урок проходит в рамках курса Java разработчик. Продвинутый уровень.
О чем поговорим:
🔗 Ссылка на регистрацию: https://vk.cc/d0zMZ5
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🧠
Многие знают, что можно заинжектить список строк из
Но знаете, что вы получите?
⚠️ ОШИБКУ.
📌 Решение — использовать
💡 Профит:
- работает с
- валидация через
- легко покрыть тестами;
- меньше магии.
⚠️
📲 Мы в MAX
👉@BookJava
@Value в Spring — это ловушка, если вы используете списки или map'ыМногие знают, что можно заинжектить список строк из
application.yml вот так:
app:
langs:
- en
- fr
- de
@Value("${app.langs}")
private List<String> langs;
Но знаете, что вы получите?
⚠️ ОШИБКУ.
@Value не умеет парсить YAML-массивы. Он ожидает строку, и даже с CSV-строкой (en,fr,de) — всё не так очевидно: Spring не применяет ConversionService для списков.📌 Решение — использовать
@ConfigurationProperties:
app:
langs:
- en
- fr
- de
@ConfigurationProperties(prefix = "app")
@Component
public class AppProps {
private List<String> langs;
// геттеры/сеттеры
}
💡 Профит:
- работает с
List, Map, вложенными объектами;- валидация через
@Validated и @NotEmpty;- легко покрыть тестами;
- меньше магии.
⚠️
@Value хорош для простых скаляров. Всё остальное — через @ConfigurationProperties.📲 Мы в MAX
👉@BookJava
❤2
🧠 JVM-разработчики, стягиваемся в Москву 29 августа
В последнюю субботу лета бэкенд- и JVM-комьюнити соберется на JVM Day, который устраивает Т-Банк. Ждут всех разработчиков, архитекторов и тимлидов, которые работают с Java, Kotlin и Scala.
В программе:
– Андрей Кулешов расскажет о том, что изменилось в мире JVM за год.
– Сергей Петрелевич разберет Mechanical Sympathy.
– Александр Ланцов покажет, какие модели конкурентности актуальны после появления Loom.
– Антон Курако объяснит, почему красивые показатели бенчмарков могут вводить в заблуждение.
А после докладов во дворе штаб-квартиры Т-Банка пройдут:
– Игры на Sega и ИТ-Квиз.
– PowerPoint Party и открытый микрофон с историями ошибок.
– Диджей-сет на виниле под открытым небом.
Места ограничены, регистрироваться тут. Пишите в комментариях, если идете на конфу.
📲 Мы в MAX
👉@BookJava
В последнюю субботу лета бэкенд- и JVM-комьюнити соберется на JVM Day, который устраивает Т-Банк. Ждут всех разработчиков, архитекторов и тимлидов, которые работают с Java, Kotlin и Scala.
В программе:
– Андрей Кулешов расскажет о том, что изменилось в мире JVM за год.
– Сергей Петрелевич разберет Mechanical Sympathy.
– Александр Ланцов покажет, какие модели конкурентности актуальны после появления Loom.
– Антон Курако объяснит, почему красивые показатели бенчмарков могут вводить в заблуждение.
А после докладов во дворе штаб-квартиры Т-Банка пройдут:
– Игры на Sega и ИТ-Квиз.
– PowerPoint Party и открытый микрофон с историями ошибок.
– Диджей-сет на виниле под открытым небом.
Места ограничены, регистрироваться тут. Пишите в комментариях, если идете на конфу.
📲 Мы в MAX
👉@BookJava
🤩13👍10😁10
💡 Не делай этого в
Сейчас расскажу, почему инициализировать важную бизнес-логику в
Типичный пример:
🧨 Проблема:
Если внутри будет ошибка (например, БД недоступна) — приложение может упасть, или что хуже — запуститься в полурабочем состоянии.
📌 Кроме того:
* ❌ Нет контроля над порядком выполнения таких методов;
* ❌ Нельзя легко переиспользовать эту логику (например, вручную перезагрузить кеш);
* ❌ В тестах или dev-среде — такие вызовы часто мешают.
✅ Современный подход — использовать
📌 Альтернатива — аннотация
📦 В Spring Boot это нативный и рекомендованный способ выполнения кода после старта.
🧠 Резюме:
🔹
🔹 Бизнес-логику и I/O — в
📲 Мы в MAX
👉@BookJava
@PostConstruct — особенно в продеСейчас расскажу, почему инициализировать важную бизнес-логику в
@PostConstruct — плохая идея.Типичный пример:
@Component
public class CacheLoader {
private final SomeService service;
public CacheLoader(SomeService service) {
this.service = service;
}
@PostConstruct
public void init() {
service.loadDataIntoCache(); // ⚠️ обращение к БД
}
}
🧨 Проблема:
@PostConstruct вызывается до того, как приложение полностью поднялось.Если внутри будет ошибка (например, БД недоступна) — приложение может упасть, или что хуже — запуститься в полурабочем состоянии.
📌 Кроме того:
* ❌ Нет контроля над порядком выполнения таких методов;
* ❌ Нельзя легко переиспользовать эту логику (например, вручную перезагрузить кеш);
* ❌ В тестах или dev-среде — такие вызовы часто мешают.
✅ Современный подход — использовать
ApplicationListener:
@Component
public class CacheLoader implements ApplicationListener<ApplicationReadyEvent> {
private final SomeService service;
@Override
public void onApplicationEvent(ApplicationReadyEvent event) {
service.loadDataIntoCache(); // 👍 вызывается только после старта
}
}
📌 Альтернатива — аннотация
@EventListener:
@EventListener(ApplicationReadyEvent.class)
public void onReady() {
// безопасно загружаем данные
}
📦 В Spring Boot это нативный и рекомендованный способ выполнения кода после старта.
🧠 Резюме:
🔹
@PostConstruct — только для простой инициализации бинов.🔹 Бизнес-логику и I/O — в
@EventListener(ApplicationReadyEvent.class).📲 Мы в MAX
👉@BookJava
👍5🔥2