13937
Обучающий канал по Java Ссылка для друга - https://t.me/+ZEYYht6-46w5MDM6 По всем вопросам @valentin_mascarov Реклама на бирже - https://telega.in/c/Java_per_month
❌ Антипаттерн недели: Забытая блокировка в многопоточном коде
Если использовать блокировки (synchronized) и забыть их освободить в случае исключения, можно легко привести к deadlock (взаимоблокировке).
Если во время выполнения блока synchronized возникает исключение, блокировка остаётся захваченной, что может заблокировать другие потоки навсегда.
✔️ Как исправить:
Используйте try-finally для гарантированного освобождения блокировки:
public class FixedExample {
private final Object lock = new Object();
public void performTask() {
synchronized (lock) {
try {
System.out.println("Задача выполняется...");
if (true) {
throw new RuntimeException("Ошибка!");
}
System.out.println("Задача завершена.");
} finally {
System.out.println("Блокировка освобождена.");
}
}
}
public static void main(String[] args) {
FixedExample example = new FixedExample();
example.performTask();
}
}
⚙️ CompletableFuture.supplyAsync()
В Java метод CompletableFuture.supplyAsync() позволяет выполнять асинхронные задачи в фоновом потоке, возвращая результат. Это удобно для выполнения длительных операций без блокировки основного потока.
Java Learning 👩💻
⚙️ Map.replace()
Метод Map.replace() позволяет заменить значение, связанное с определённым ключом, если этот ключ уже существует в словаре. Это полезно для безопасного обновления данных.
Java Learning 👩💻
⚙️ Collectors.toSet()
В Java метод Collectors.toSet() из Stream API позволяет собрать элементы потока в Set, автоматически убирая дубликаты.
Java Learning 👩💻
Блиц-тестирование на грейд в Java
Менторы ШОРТКАТ собрали полезный небольшой тест, который поможет тебе проверить знания.
Конечно, это не определит грейд точно, но даст понять, какие темы западают. За прохождение ещё и дадут скидку на менторство.
Переходи в бот, чтобы пройти тест: @shortcut_sh_bot
Реклама. ООО "ШОРТКАТ", ИНН: 9731139396, erid: 2VtzqxDw1dB
✅️ GitHub теперь в Telegram!
Подписывайтесь: @GitHub
⚙️ StringBuilder.append()
Метод append() класса StringBuilder позволяет эффективно добавлять строки к уже существующему объекту. В отличие от конкатенации строк с использованием оператора +, StringBuilder позволяет избежать создания новых объектов строк в процессе добавления.
Java Learning 👩💻
🎄👩💻 Хотите создать свой первый графический проект на Java?
Приглашаем на бесплатный вебинар!
🗓 18 декабря в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Java-разработчик» от Otus.
На занятии мы с нуля создадим интерактивную новогоднюю открытку с помощью Java и фреймворка LibGDX.
Вы сможете предложить свои идеи, и мы реализуем их в реальном времени — вы увидите, как рождается код.
🦾 Откройте для себя мир графической разработки! Получите практические навыки, которые станут основой для создания игр, приложений и других интерактивных проектов.
Спикер Александр Фисунов — Senior Kotlin Developer в SSP Software на проекте ВТБ, опытный Java-разработчик и кандидат технических наук.
🔗 Ссылка на регистрацию: https://clck.ru/3F9ejgРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
IT-компания ASTON запускает бесплатное онлайн-обучение "Java-разработчик"! 🎄
🌟 Лучшие участники получат приглашение на стажировку с трудоустройством в ASTON.
🤩 На этапе Лаборатории стипендия до 23 000 RUB, первая зарплата — от 70 000 RUB.
📚 Обучение в 3 ступени:
📌 I: онлайн-курс (1 месяц);
📌 II: онлайн-интенсив (2 месяца);
📌 III: Лаборатория (3–4 месяца) с трудоустройством.
🗓 Старт I ступени: 23 декабря 2024
⏳ Длительность: 1 месяц, 2 раза в неделю, вечерние занятия (1–1,5 часа).🌍 Где набираем: Россия (до GMT+7).📋 Требования: базовые знания Java, законченное высшее или профильное среднее образование.
🚀 Расти в IT вместе с ASTON.
📥 Регистрация
#реклама
О рекламодателе
Как избежать God Object в Java: несколько способов
Смотреть статью
Java Learning 👩💻
#вопросы_с_собеседований
Что будет, если в Map положить два значения с одинаковым ключом?
Если в Map положить два значения с одинаковым ключом, то произойдет следующее:
— При добавлении второго значения с уже существующим ключом, первое значение, связанное с этим ключом, будет перезаписано.
— Map может содержать только уникальные ключи. При попытке добавить дублирующийся ключ, старое связанное значение будет заменено новым.
— Конкретная реализация Map (например, HashMap) может бросить исключение, если попытаться добавить дублирующийся ключ.
Таким образом, поведение в такой ситуации зависит от конкретной реализации интерфейса Map, но в целом дублирующиеся ключи в Map запрещены.
Java Learning 👩💻
⚙️ Map.merge()
В Java метод Map.merge() объединяет значение для указанного ключа с новым значением с помощью заданной функции. Это удобно для обновления данных в словаре на основе существующих значений.
Java Learning 👩💻
❓ Вопрос на собеседовании
Что такое ReentrantLock в Java, какие преимущества он имеет перед ключевым словом synchronized, и как его правильно использовать?
Ответ ⬇️
ReentrantLock — это класс из пакета java.util.concurrent.locks, предоставляющий более гибкий механизм блокировки, чем synchronized. Он поддерживает методы для явного управления блокировками, такие как tryLock() (попытка захвата без ожидания) и lockInterruptibly() (захват с возможностью прерывания). В отличие от synchronized, он позволяет справляться с блокировками вручную и поддерживает более точное управление потоками. Однако неправильное использование может привести к deadlock.
Пример использования ⚙️
import java.util.concurrent.locks.ReentrantLock;
public class Main {
private static final ReentrantLock lock = new ReentrantLock();
public static void main(String[] args) {
Thread thread1 = new Thread(Main::criticalSection, "Thread-1");
Thread thread2 = new Thread(Main::criticalSection, "Thread-2");
thread1.start();
thread2.start();
}
private static void criticalSection() {
if (lock.tryLock()) { // Пытаемся захватить блокировку
try {
System.out.println(Thread.currentThread().getName() + " выполняет критическую секцию");
Thread.sleep(1000); // Эмуляция работы
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
} finally {
lock.unlock(); // Обязательно освобождаем блокировку
System.out.println(Thread.currentThread().getName() + " завершил работу");
}
} else {
System.out.println(Thread.currentThread().getName() + " не смог захватить блокировку");
}
}
}
⚙️ Arrays.fill()
В Java метод Arrays.fill() позволяет заполнить массив одним значением или диапазон массива заданным значением. Это удобный способ инициализировать или обновлять данные массива.
Java Learning 👩💻
🤔 Как это работает? — Java: Цикл for-each
В Java цикл for-each (или enhanced for loop) упрощает итерацию по коллекциям и массивам. Давайте посмотрим, как он работает.
➡️ Как это работает:• numbers — это массив целых чисел.• В строке for (int number : numbers) переменная number последовательно принимает значения из массива numbers.• На каждой итерации выводится текущее значение number.
Развернутый аналог:
for (int i = 0; i < numbers.length; i++) {
System.out.println(numbers[i]);
}
1
2
3
4
5
Стань JAVA-разработчиком с EdMe: 6-8 месяцев, гарантия трудоустройства, оплата обучения после выхода на работу
Образовательный проект EdMe открывает набор на курс по Java-разработке. Программа подойдет для начинающих с нуля и для тех, кто стремится улучшить свои навыки. Обучение построено на менторстве и направлено на комплексную подготовку к трудоустройству. За 6-8 месяцев вы сможете достичь уровня middle-разработчика, для этого нужно уделять обучению от 20 часов в неделю.
Вы будете взаимодействовать с опытным разработчиком, который объяснит, что нужно учить и как это делать, а также чего избегать, чтобы быстрее освоить необходимые навыки и получить оффер. Ментор будет направлять вас, советовать, как решать технические вопросы, мотивировать и помогать готовиться к собеседованиям.
🚩Плюсы курса:
➕Гарантированное трудоустройство с зарплатой от 140 000 рублей.
➕Оплата после выхода на работу: вы платите только 20% от зарплаты в течение 18 месяцев.
➕Карьерная поддержка даже после окончания курса.
➕Если по каким-то причинам вы не сможете завершить обучение, это можно сделать без оплаты.
Во время обучения вы будете использовать Jira, Confluence, Bitbucket, GitLab – те самые системы, с которыми вы столкнетесь на реальных проектах.
🚩Программа курса включает:
▪️ Основы Java: Java Core, List, JDBC, Hibernate, Spring (Core, MVC, Security), Spring Boot, Git.
▪️ Проект.
▪️ Подготовка к собеседованиям (составление резюме, прохождение тестовых собеседований).
▪️ Прохождение реальных собеседований.
Узнать подробности и записаться на курс «JAVA-разработчик» можно на EdMe.pro
Отбор включает несложное тестовое задание, которое под силу выполнить человеку без опыта, и собеседование.
Реклама. ООО "БАКСЭТ", ИНН 4345115602. Erid 2Vtzqv8YoSy
⁉️ Хотите, чтобы ваши Java-приложения выдерживали любые нагрузки и были стабильны в любой ситуации?
Научитесь этому на бесплатном открытом уроке с использованием Resilience4j!
В мире высоких нагрузок и распределенных систем стабильность — это ключ к успеху.
🗓 На уроке 19 декабря в 20:00 мск мы разберем фреймворк Resilience4j и покажем, как повысить отказоустойчивость ваших приложений.
🦾 Уверенные навыки работы с Resilience4j сделают вас востребованным специалистом, который способен справляться с реальными вызовами. Добавьте этот мощный инструмент в свой профессиональный стек.
Спикер Сергей Петрелевич — опытный разработчик на Java и Kotlin.
🔗 Регистрируйтесь на вебинар: https://clck.ru/3FCrT8
Все участники вебинара получат скидку на курс «Java Developer. Professional».Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Apache POI
Apache POI – это библиотека с открытым исходным кодом для работы с форматами файлов Microsoft Office в Java.
Она позволяет читать, создавать и редактировать файлы Excel, Word, PowerPoint и другие.
Java Learning 👩💻
❓ Вопрос на собеседовании
Что такое ConcurrentHashMap в Java, как он работает и чем отличается от HashMap в многопоточной среде?
Ответ ⬇️
ConcurrentHashMap — это потокобезопасная версия HashMap, предназначенная для использования в многопоточной среде. В отличие от HashMap, который не является потокобезопасным и может приводить к состояниям гонки, ConcurrentHashMap позволяет нескольким потокам одновременно читать и изменять карту без блокировок всей коллекции. Он достигает этого за счёт сегментации и блокировок на уровне сегментов, а не всей структуры.
Пример использования ⚙️
import java.util.concurrent.ConcurrentHashMap;
public class Main {
public static void main(String[] args) {
ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();
map.put("Alice", 1);
map.put("Bob", 2);
map.computeIfPresent("Alice", (key, val) -> val + 1);
System.out.println(map); // {Alice=2, Bob=2}
}
}
⚙️ System.nanoTime()
Метод System.nanoTime() в Java используется для получения текущего времени с высокой точностью, измеряемого в наносекундах. Этот метод полезен для точного измерения времени выполнения операций, например, для профилирования производительности вашего кода.
Java Learning 👩💻
🔒 Частное облако SpaceWeb — полный контроль и безопасность для вашего бизнеса
Создавайте изолированные среды для корпоративных приложений и данных. Наше частное облако сочетает максимальную безопасность, гибкость и легкость управления. Идеально подходит для тех, кто ценит конфиденциальность и защиту.
💼 Ваши данные — под надежной защитой, доступ к ним — в любое время, в любой точке мира.
Хотите узнать больше? Подпишитесь на канал SpaceWeb и будьте в курсе всех новинок в мире облачных технологий!
Реклама.ООО "СпейсВэб". ИНН: 7813376370 erid: 2Vtzqv6qL65
⚙️ Math.floorMod
Метод Math.floorMod в Java выполняет деление по модулю с учётом знаков, возвращая всегда положительный остаток. Это полезно при работе с круговыми индексами или в математике с отрицательными числами.
Java Learning 👩💻
⌛ Что будет выведено при выполнении кода?
Пояснение ⬇️
Статический блок выполняется один раз при первом обращении к классу, до выполнения main(). В статическом блоке значение x увеличивается на 10, поэтому x становится 15.
⚙️ Collections.unmodifiableList()
В Java метод Collections.unmodifiableList() создаёт неизменяемый (immutable) список на основе существующего. Это удобно, когда нужно защитить коллекцию от изменений после её создания.
Java Learning 👩💻
Java используется ведущими компаниями мира: AliExpress применяет его для веб-приложений, Netflix — для платформы видеостриминга, а Intel — для встроенных систем и инструментов разработки. Если вы хотите освоить Java, присоединяйтесь к бесплатному курсу Нетологии «Основы разработки на Java»
За 4 занятия вы:
✅ Изучите базовые принципы языка.
✅ Создадите Telegram-бота и приложение с фото из NASA.
✅ Запустите приложение в облаке и создадите хранилище данных для портфолио.
Курс стартует 12 декабря — регистрируйтесь.
🎁 После бесплатного курса вы пройдете карьерную консультацию и сможете дальше развивать навыки на курсе Java-разработчик в Нетологии с выгодой до 65%.
Реклама. ООО "Нетология". ИНН 7726464125 Erid 2VSb5yn3u7v
👍Научитесь писать проверки для своего проекта, правильно подсвечивать в IDE и репортить найденные инциденты!
На бесплатном уроке онлайн-курса «Android Developer. Professional» — «Android Lint»: регистрация
Что будет на вебинаре?
- Подробно рассмотрим API Android Lint и PSI/UAST деревья
- Научимся реализовывать свои Detector'ы
- Научимся тестировать реализованные Detector'ы
Каким слушателям вебинар будет полезен?
- Инженерам, которые интересуются статическим анализом, хотят автоматизировать поиск codesmell'ов, проверку кодстайла, проверку принятых в проекте регламентов.
🔥После вебинара вы сможете продолжить обучение на курсе по спеццене, в том числе, в рассрочку.
erid: LjN8JwExK
⚙️ String.format()
В Java метод String.format() позволяет форматировать строки с использованием плейсхолдеров и спецификаторов. Это удобно для создания строк с динамическими данными.
Java Learning 👩💻
⚙️ String.matches()
В Java метод String.matches() проверяет, соответствует ли строка заданному регулярному выражению. Это удобно для проверки формата строк, таких как email, номера телефонов и т.д.
Java Learning 👩💻
⁉️ Устали гадать, что творится внутри вашего Java-приложения? Хотите мониторить всё в реальном времени?
🗓 На открытом вебинаре 10 декабря в 20:00 мск мы расскажем, как внедрить Observability в Java-приложения, отслеживать состояние системы и решать проблемы до их появления!
Получите навыки, которые помогут вам создавать надежные приложения, повысить стабильность и оперативно выявлять ошибки. Применяйте эти знания и станьте разработчиком нового уровня.
Спикер Сергей Петрелевич — опытный разработчик на Java и Kotlin.
🔗 Регистрируйтесь на вебинар: https://clck.ru/3F44Zj
Успейте получить скидку на участие в курсе «Java Developer. Professional».Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576