13937
Обучающий канал по Java Ссылка для друга - https://t.me/+ZEYYht6-46w5MDM6 По всем вопросам @valentin_mascarov Реклама на бирже - https://telega.in/c/Java_per_month
⌛ Что будет выведено при выполнении кода?
Пояснение ⬇️
Два потока вызывают increment() по 1000 раз каждый. Метод increment() синхронизирован, что предотвращает одновременный доступ. В итоге counter увеличивается на 2000 без гонок.
⚙️ Stream.flatMap()
В Java метод Stream.flatMap() используется для преобразования каждого элемента потока в другой поток и «выпрямления» (объединения) этих потоков в один. Это полезно для работы со вложенными структурами данных, такими как списки списков.
Java Learning 👩💻
⚙️ ThreadLocal
В Java класс ThreadLocal позволяет хранить переменные, привязанные к конкретному потоку. Каждый поток имеет свою копию переменной, что удобно для работы с многопоточностью, когда нужно избежать совместного доступа к данным.
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
❓ Вопрос на собеседовании
Что такое 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}
}
}
Совсем скоро в Level UP стартует программа «Курс Java-разработчик (Старт)» 👩💻 — ваш шанс с нуля освоить востребованную профессию и уверенно войти в IT в 2025 году.
📚 Обучение построено вокруг практики: Начнём с самых основ и далее будем постепенно углубляться в сам язык программирования Java и соответствующий стек технологий - рассмотрим основные понятия и концепции программирования, присущие любому объектно-ориентированному языку, познакомимся с основными алгоритмами и структурами данных, познакомимся с системами контроля версий, научимся работать с БД из Java, и, конечно, будем писать много-много кода.
Программа подойдет как тем, кто уже связан с IT (сисадмины, тестировщики, аналитики), так и новичкам, которые только делают первые шаги в разработке. Участники курса получат необходимые знания и навыки для старта в профессию Программист Java / Java-разработчик.
🎁 Используйте промокод September2025 и получите скидку 10% на обучение.
👉 Оставляйте заявку и присоединяйтесь к новой группе: https://clck.ru/3NzNZK
Реклама. ООО «Образовательные решения», ОГРН 1227800102386
Она снова не ответила? Вот почему твои переписки умирают
— «Привет», «Как дела?», «Что делаешь?», «Почему молчишь?», «Сколько лет?» «Откуда ты?», «Где работаешь?» – серьёзно? 🤦
Добавь сюда кринжовые попытки рассмешить — и вместо свидания ты получишь очередную мертвую переписку или отмазки в духе «устала/заболела/извини, не могу — кошка наблевала».
Проблема в том, что такие фразы не вызывают интереса. Девушка просто не видит в тебе мужчину, с которым стоит продолжать.
Что делать? Использовать проверенную стратегию переписки.
Например: вместо банального «спокойной ночи» — отправь любое сообщение из шаблонов в канале, и ты офигеешь от реакции. Она сама захочет писать первой.
Шаблоны и стратегию ты найдешь в канале Вани Абсента. Он помогает стать магнитом для женщин и построить яркие отношения, которые наполняют и зажигают: @absent
В канале ты найдёшь:
— пошаговый алгоритм, как влюбить девушку мечты – от первой переписки до секса;
— что делать на первом свидании, чтобы домой уехать с ней;
— как стать сильным уверенным мужчиной со счастливыми отношениями, сильным окружением и высоким доходом.
👉 Подписывайся — /channel/+QujzheJCcYJlNTgy
И действуй, а не смотри, как девушки мечты проходят мимо.
⚙️ Collections.unmodifiableList()
В Java метод Collections.unmodifiableList() создаёт неизменяемый (immutable) список на основе существующего. Это удобно, когда нужно защитить коллекцию от изменений после её создания.
Java Learning 👩💻
#вопросы_с_собеседований
Что будет, если в Map положить два значения с одинаковым ключом?
Если в Map положить два значения с одинаковым ключом, то произойдет следующее:
— При добавлении второго значения с уже существующим ключом, первое значение, связанное с этим ключом, будет перезаписано.
— Map может содержать только уникальные ключи. При попытке добавить дублирующийся ключ, старое связанное значение будет заменено новым.
— Конкретная реализация Map (например, HashMap) может бросить исключение, если попытаться добавить дублирующийся ключ.
Таким образом, поведение в такой ситуации зависит от конкретной реализации интерфейса Map, но в целом дублирующиеся ключи в Map запрещены.
Java Learning 👩💻
⚙️ String.format()
В Java метод String.format() позволяет форматировать строки с использованием плейсхолдеров и спецификаторов. Это удобно для создания строк с динамическими данными.
Java Learning 👩💻
👩💻 Задача по Java: Подсчёт частоты слов в строке
Напишите метод, который принимает строку и возвращает Map, где ключи — это слова из строки, а значения — количество их вхождений. Игнорируйте регистр и удаляйте знаки препинания.
Пример:
public class Main {
public static void main(String[] args) {
String text = "Hello, world! Hello Java.";
Map<String, Integer> result = countWordFrequency(text);
System.out.println(result);
// Ожидаемый результат:
// {hello=2, world=1, java=1}
}
}
⚙️ String.replaceAll()
В Java метод String.replaceAll() заменяет все вхождения текста, соответствующего регулярному выражению, на заданную строку. Это мощный инструмент для обработки строк.
Java Learning 👩💻
⌛ Что будет выведено при выполнении кода?
Пояснение ⬇️
Переменная x объявлена как final, что делает её неизменяемой после инициализации. Она выводит значение 10. Класс FinalExample содержит переменную value, также объявленную как final, и метод show, который возвращает строку с этим значением. Финальный метод можно вызывать, но его нельзя переопределить в подклассах. Код компилируется и работает без ошибок.
Вам нравится читать контент на этом канале?
Возможно, вы задумывались о том, чтобы купить на нем интеграцию?
Следуйте 3 простым шагам, чтобы сделать это:
1) Нажмите на ссылку: Вход
2) Пополняйтесь удобным способом
3) Размещайте публикацию
Если тематика вашего поста подойдет нашему каналу, мы с удовольствием опубликуем его.
👩💻 Задача по Java: Удаление дубликатов из списка с сохранением порядка
Напишите метод, который принимает список строк и возвращает новый список, содержащий только уникальные строки, сохраняя их порядок появления.
Пример:
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> input = List.of("apple", "banana", "apple", "orange", "banana");
List<String> result = removeDuplicates(input);
System.out.println(result);
// Ожидаемый результат: [apple, banana, orange]
}
}
⚙️ Class.getDeclaredMethods()
Метод Class.getDeclaredMethods() позволяет получить массив всех методов класса, включая приватные, защищённые и публичные методы. Это полезно для рефлексии и анализа структуры классов во время выполнения программы.
Java Learning 👩💻
⌛ Что будет выведено при выполнении кода?
Пояснение ⬇️
Массивы в Java передаются по ссылке. Метод modifyArray изменяет первый элемент массива на 42. Изменение сохраняется, потому что arr и numbers указывают на один и тот же массив.
❌ Антипаттерн недели: Забытая блокировка в многопоточном коде
Если использовать блокировки (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();
}
}
Apache POI
Apache POI – это библиотека с открытым исходным кодом для работы с форматами файлов Microsoft Office в Java.
Она позволяет читать, создавать и редактировать файлы Excel, Word, PowerPoint и другие.
Java Learning 👩💻
⚙️ System.nanoTime()
Метод System.nanoTime() в Java используется для получения текущего времени с высокой точностью, измеряемого в наносекундах. Этот метод полезен для точного измерения времени выполнения операций, например, для профилирования производительности вашего кода.
Java Learning 👩💻
⚙️ StringBuilder.append()
Метод append() класса StringBuilder позволяет эффективно добавлять строки к уже существующему объекту. В отличие от конкатенации строк с использованием оператора +, StringBuilder позволяет избежать создания новых объектов строк в процессе добавления.
Java Learning 👩💻
⚙️ Math.floorMod
Метод Math.floorMod в Java выполняет деление по модулю с учётом знаков, возвращая всегда положительный остаток. Это полезно при работе с круговыми индексами или в математике с отрицательными числами.
Java Learning 👩💻
Как избежать God Object в Java: несколько способов
Смотреть статью
Java Learning 👩💻
⚙️ Map.merge()
В Java метод Map.merge() объединяет значение для указанного ключа с новым значением с помощью заданной функции. Это удобно для обновления данных в словаре на основе существующих значений.
Java Learning 👩💻
⌛ Что будет выведено при выполнении кода?
Пояснение ⬇️
Статический вложенный класс Nested может быть создан без экземпляра внешнего класса Outer. Код Outer.Nested nested = new Outer.Nested(); корректен, и метод display выводит "Nested class".
REST или GraphQL? Этот выбор может определить, насколько удобным, быстрым и масштабируемым будет ваш API.
26 августа в 20:00 на открытом уроке мы разберём, когда стоит выбрать REST, а когда — GraphQL, а также реализуем оба подхода в Spring Boot. Эксперт покажет критерии выбора, разберёт практические кейсы и типичные ошибки.
Backend-разработчики на Java/Kotlin и тимлиды узнают, как применять эти технологии на практике, чтобы их проекты работали быстрее, были проще в сопровождении и готовыми к росту.
Вебинар проходит в преддверие старта курса «Разработчик на Spring Framework».
Регистрируйтесь сейчас и получите скидку на обучение: https://otus.pw/jwDb/
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ", ИНН: 9705100963
⚙️ Collectors.toMap()
В Java метод Collectors.toMap() собирает элементы потока в карту (Map), где вы можете указать функции для ключей и значений. Это удобно для преобразования коллекций в структуру ключ-значение.
Java Learning 👩💻
⚙️ Optional.flatMap()
В Java метод Optional.flatMap() позволяет преобразовать значение внутри Optional, возвращая другой Optional. Это особенно полезно для работы с вложенными Optional.
Java Learning 👩💻
⌛ Что будет выведено при выполнении кода?
Пояснение ⬇️
Переменная x объявлена как final, что делает её неизменяемой после инициализации. Она выводит значение 10. Класс FinalExample содержит переменную value, также объявленную как final, и метод show, который возвращает строку с этим значением. Финальный метод можно вызывать, но его нельзя переопределить в подклассах. Код компилируется и работает без ошибок.
⚙️ Stream.collect() с Collector.of()
В Java метод Collector.of() позволяет создавать пользовательские коллекции с кастомной логикой для сборки данных. Это даёт полный контроль над процессом объединения элементов.
Java Learning 👩💻