en
Feedback
Java Learning

Java Learning

Open in Telegram

№ 5079899194 Обучающий канал по Java Ссылка для друга - https://t.me/+ZEYYht6-46w5MDM6 По всем вопросам @mascarov_valentin Реклама на бирже - https://telega.in/c/Java_per_month

Show more

📈 Analytical overview of Telegram channel Java Learning

Channel Java Learning (@java_per_month) in the Russian language segment is an active participant. Currently, the community unites 16 598 subscribers, ranking 7 607 in the Technologies & Applications category and 39 541 in the Russia region.

📊 Audience metrics and dynamics

Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 16 598 subscribers.

According to the latest data from 30 August, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -32 over the last 30 days and by 5 over the last 24 hours, overall reach remains high.

  • Verification status: Not verified
  • Engagement rate (ER): The average audience engagement rate is 12.90%. Within the first 24 hours after publication, content typically collects 4.60% reactions from the total number of subscribers.
  • Post reach: On average, each post receives 2 140 views. Within the first day, a publication typically gains 763 views.
  • Reactions and interaction: The audience actively supports content: the average number of reactions per post is 6.
  • Thematic interests: Content is focused on key topics such as learning, строка, map, static, интерфейс.

📝 Description and content policy

The author describes the resource as a platform for expressing subjective opinions:
№ 5079899194 Обучающий канал по Java Ссылка для друга - https://t.me/+ZEYYht6-46w5MDM6 По всем вопросам @mascarov_valentin Реклама на бирже - https://telega.in/c/Java_per_month

Thanks to the high frequency of updates (latest data received on 31 August, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.

16 598
Subscribers
+524 hours
-37 days
-3230 days
Posts Archive
⚙️ Использование Enum как Singleton Жаль, что я не знал раньше, что можно написать Singleton в Java всего одной строкой: publ
⚙️ Использование Enum как Singleton Жаль, что я не знал раньше, что можно написать Singleton в Java всего одной строкой:
public enum Singleton {
    INSTANCE;
}
✔️ Это потокобезопасно, надежно, и Java гарантирует наличие только одного экземпляра, даже в случае сериализации и десериализации. ➡️ Использование перечислений (enum) для реализации паттерна Singleton является отличным подходом в Java. Enum обеспечивает множество преимуществ: Потокобезопасность: Перечисления в Java создаются с использованием потокобезопасного механизма. Это означает, что вы не столкнетесь с проблемами, связанными с многопоточностью. Гарантия единственности экземпляра: Java гарантирует, что в системе будет только один экземпляр перечисления, даже при использовании различных потоков или классов загрузчиков. Сериализация и десериализация: При использовании enum Java автоматически обрабатывает сериализацию и десериализацию таким образом, чтобы сохранить единственность экземпляра. Это означает, что при десериализации вы не получите новый экземпляр, а вернется тот же самый экземпляр. Java Learning 👩‍💻

ℹ️ Использование entrySet для итерации по HashMap Раньше я использовал keySet для итерации по HashMap, как показано ниже: Set
ℹ️ Использование entrySet для итерации по HashMap Раньше я использовал keySet для итерации по HashMap, как показано ниже:
Set<Key> keySet = map.keySet();

for (Key k : keySet) {
    Value v = map.get(k);
    print(k, v);
}
➡️ Это выполняет дополнительный поиск для получения значения из Map, что в худшем случае может быть O(n). Если вам нужны и ключ, и значение, то лучше итерировать по entrySet, а не по keySet.
Set<Map.Entry<Key, Value>> entrySet = map.entrySet();

for (Map.Entry<Key, Value> e : entrySet) {
    Key k = e.getKey();
    Value v = e.getValue();
}
✔️ Это более эффективно, потому что вы получаете значение напрямую из объекта, что всегда занимает O(1). Java Learning 👩‍💻

🤝 Не дай себя завязнуть в рутинных задачах! 🦾 Осваивай Spring и выходи на новый профессиональный уровень Пройди тест по Jav
🤝 Не дай себя завязнуть в рутинных задачах! 🦾 Осваивай Spring и выходи на новый профессиональный уровень Пройди тест по Java от OTUS Проверь насколько хорошо ты знаешь Java и готов освоить Spring! Ответишь — пройдешь на продвинутый курс "Разработчик на Spring Framework" от OTUS по специальной цене. 👉 ПРОЙТИ ТЕСТ: https://otus.ru/lessons/javaspring/assessment/?utm_source=telegram&utm_medium=cpm&utm_campaign=java_spring&utm_term=Java_per_month&utm_content=headline_17-07-2024_usp-universal_java_text_no-headline_aida_short_aibanner_banner-hl1_green_standart&erid=LjN8K55LP 🎫 Начни обучение со скидкой в 10%, действует до конца июля. Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

⚙️ LongAccumulator/LongAdder Два класса, которые представляют собой более производительные замены для AtomicLong. Класс LongA
⚙️ LongAccumulator/LongAdder Два класса, которые представляют собой более производительные замены для AtomicLong. Класс LongAdder позволяет выполнять атомарные арифметические операции над типом long. LongAccumulator принимает произвольную функцию аккумуляции результатов. 🗣️ Эта функция принимает текущее значение, аргумент переданный в метод accumulate() и возвращает результат логического объединения (accumulate) двух значений.
При получении результата все элементы редуцируются в один общий результат. Вся эта кухня намекает нам, что функция аккумуляции должна быть коммутативна и ассоциативна. В противном случае результат будет зависеть от физического порядка выполнения операций, который данный класс не гарантирует.
Java Learning 👩‍💻

Ответ:
Anonymous voting

⌛ Что будет выведено при выполнении кода? Java Learning 👩‍💻
Что будет выведено при выполнении кода? Java Learning 👩‍💻

👀 Datafaker Datafaker создает фиктивные данные для ваших программ JVM за считанные минуты, используя широкий спектр из более
👀 Datafaker Datafaker создает фиктивные данные для ваших программ JVM за считанные минуты, используя широкий спектр из более чем 100 поставщиков данных. 🗣️ Это может быть очень полезно при генерации тестовых данных для заполнения базы данных, генерации данных для стресс‑теста или анонимизации данных из производственных сервисов. Давайте включим его в наши зависимости. 🔗 Ссылочка на доку Java Learning 👩‍💻

⚙️ Instancio Как вы генерируете тестовые данные в ваших модульных тестах? Instancio поможет нам в этом. Ее цель — сократить в
⚙️ Instancio Как вы генерируете тестовые данные в ваших модульных тестах? Instancio поможет нам в этом. Ее цель — сократить время и количество строк кода, затрачиваемых на ручную настройку данных в модульных тестах. Она создает объекты и заполняет их случайными данными, делая наши тесты более динамичными. ✔️ С помощью Instancio мы можем генерировать случайные данные, но в то же время мы можем установить пользовательские данные в определенном поле. 🔗 Ссылочка на доку Java Learning 👩‍💻

❓ Парадокс Comparator’а Если вам нужно написать Comparator для сортировки объектов по возрастанию, обычно он выглядит так: pu
Парадокс Comparator’а Если вам нужно написать Comparator для сортировки объектов по возрастанию, обычно он выглядит так:
public class ByScoreComparator implements Comparator<User> {

  @Override
  public int compare(User u1, User u2) {
    return (int) signum(u2.getAge() - u1.getAge());
  }
}
➡️ Главная проблема — понять, от чего отнимать, чтобы порядок был правильным. Правильный ответ с первого раза получается редко, и часто мы замечаем ошибку уже после запуска кода. Теперь это не нужно. Можно использовать ссылки на методы:
Comparator<User> comparator = Comparator
  .comparingDouble(User::getAge)
  .thenComparing(User::getName);
List<User> hList = ...;
hList.sort(comparator);
🗣️ Такой подход упрощает создание компараторов. Java Learning 👩‍💻

❓ Парадокс Comparator’а Если вам нужно написать Comparator для сортировки объектов по возрастанию, обычно он выглядит так: pu
Парадокс Comparator’а Если вам нужно написать Comparator для сортировки объектов по возрастанию, обычно он выглядит так:
public class ByScoreComparator implements Comparator<User> {

  @Override
  public int compare(User u1, User u2) {
    return (int) signum(u2.getAge() - u1.getAge());
  }
}
➡️ Главная проблема — понять, от чего отнимать, чтобы порядок был правильным. Правильный ответ с первого раза получается редко, и часто мы замечаем ошибку уже после запуска кода. Теперь это не нужно. Можно использовать ссылки на методы:
Comparator<User> comparator = Comparator
  .comparingDouble(User::getAge)
  .thenComparing(User::getName);
List<User> hList = ...;
hList.sort(comparator);
🗣️ Такой подход упрощает создание компараторов. Java Learning 👩‍💻

♨️ Хотите добиться максимальной производительности от своих Java-проектов? Научитесь искусству измерения производительности и
♨️ Хотите добиться максимальной производительности от своих Java-проектов? Научитесь искусству измерения производительности и оптимизации кода на нашем увлекательном онлайн-уроке. Забудьте о гадании и предположениях! На этом вебинаре мы расскажем вам о мощном инструменте Java Microbenchmark Harness (JMH) и его области применения. Вместе мы разберем работу с производительными тестами и сравнением различных алгоритмов. Вебинар будет полезен как Java-разработчикам, которые ищут лучшие практики для оптимизации кода, так и тестировщикам, специализирующимся на нагрузочном тестировании. Спикер — Tech Lead в одном из крупнейших российских банков и кандидат технических наук. Готовы стать мастером производительности в Java? ➡️ Регистрируйтесь прямо сейчас и откройте новый уровень эффективности в своих проектах: https://clck.ru/3BquQj Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

♨️ Хотите добиться максимальной производительности от своих Java-проектов? Научитесь искусству измерения производительности и
♨️ Хотите добиться максимальной производительности от своих Java-проектов? Научитесь искусству измерения производительности и оптимизации кода на нашем увлекательном онлайн-уроке. Забудьте о гадании и предположениях! На этом вебинаре мы расскажем вам о мощном инструменте Java Microbenchmark Harness (JMH) и его области применения. Вместе мы разберем работу с производительными тестами и сравнением различных алгоритмов. Вебинар будет полезен как Java-разработчикам, которые ищут лучшие практики для оптимизации кода, так и тестировщикам, специализирующимся на нагрузочном тестировании. Спикер — Tech Lead в одном из крупнейших российских банков и кандидат технических наук. Готовы стать мастером производительности в Java? ➡️ Регистрируйтесь прямо сейчас и откройте новый уровень эффективности в своих проектах: https://clck.ru/3BquQj Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

⚙️ Files.lines()/readAllLines()/BufferedReader.lines() В Java 8 стало возможным гораздо проще выполнить такую простую задачу
⚙️ Files.lines()/readAllLines()/BufferedReader.lines() В Java 8 стало возможным гораздо проще выполнить такую простую задачу как прочитать построчно файл. Это ещё одна задача, которая раньше требовала довольно много кода. 🗣️ Аналогичный метод был добавлен в класс BufferedReader, поэтому теперь Stream’ы доступны поверх любого InputStream‘а. Java Learning 👩‍💻

➡️ ThreadLocal.withInitial() Тех, кто плотно работает с многопоточностью, ничем не пронять. Они как ветераны Вьетнама, и даже
➡️ ThreadLocal.withInitial() Тех, кто плотно работает с многопоточностью, ничем не пронять. Они как ветераны Вьетнама, и даже флешбеки по ночам так же мучают. И этой конструкцией их не напугаешь:
// Java 7 и ранее
ThreadLocal<ObjectMapper> mapper = new ThreadLocal<>() {
  @Override
  protected ObjectMapper initialValue() {
    return new ObjectMapper();
  }
};
✔️ Но теперь, за счёт замыканий, стало проще:
// Java 8
ThreadLocal<ObjectMapper> mapper = withInitial(() -> new ObjectMapper());
Java Learning 👩‍💻

👩‍💻 Интеграционные тесты контроллеров, интеграций с внешними API и безопасности. Ждём вас на третьем занятии серии открытых
👩‍💻 Интеграционные тесты контроллеров, интеграций с внешними API и безопасности. Ждём вас на третьем занятии серии открытых практических уроков по тестированию Spring-приложений от OTUS, где мы: - рассмотрим специфику тестирования классических и REST-контроллеров и интеграций с внешними API; - уделим внимание тому, как проверить, что все конечные точки нашего приложения действительно защищены; - ответим на все возникающие вопросы. Спикер — Senior Software Engineer, опытный преподаватель и руководитель курса. Встречаемся 16 июля в 20:00 мск в преддверии старта курса «Разработчик на Spring Framework». Все участники вебинара получат специальную цену на обучение! ➡️ Регистрируйтесь прямо сейчас, чтобы не пропустить бесплатный урок и получить записи предыдущих вебинаров серии: https://clck.ru/3BpWPN Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

👀 Map.computeIfAbsent()/getOrDefault()/merge()/putIfAbsent() Возможно, если вы пишете на Java, то у вас в проекте есть код п
👀 Map.computeIfAbsent()/getOrDefault()/merge()/putIfAbsent() Возможно, если вы пишете на Java, то у вас в проекте есть код похожий на этот:
Map<String, Integer> data = ...;
for (String s : strings) {
  if (!data.containsKey(key))
    data.put(key, 0);
  data.put(key, data.get(key) + 1);
}
Суть проста. Есть отображение из строки в счетчик, сколько раз мы встретили эту строку. Надо только не забывать инициализировать позиции Map‘а нулем, а то виртуальная машина в вас NullPointerException кинет. ➡️ В Java 8 эта же задача решается проще:
for (String s : strings)
  data.merge(s, 1, (a, b) -> a + b);
Meтод merge принимает ключ, значение и функцию которая объединяет заданное значение и уже существующее в отображении, если таковое имеется. Если в отображении под заданным ключем значения нет, то кладет туда указанное значение. ✔️ Аналогичную функциональность, но в другом контексте, дают методы:computeIfAbsent() – возвращает или значение из отображения по ключу, или создает его, если его не было; • cputIfAbsent() – добавляет значение в отображение, только если его там не было. Этот метод ранее имелся только у ConcurrentMap, теперь появился и у Map‘а; • cgetOrDefault() – название довольно красноречиво. Возвращает значение из отображения или переданное значение по-умолчанию. На мой взгляд, метод довольно не идиоматичен. Для работы с отсутствующими значениями был добавлен тип Optional, его и следовало использовать. Поэтому, я бы добавил метод: Optional<V> getOptional(K key). Java Learning 👩‍💻

One Day Offer для Центра робототехники 🤖 13 июля вы сможете пройти все этапы отбора, познакомиться с инновационной командой
One Day Offer для Центра робототехники 🤖 13 июля вы сможете пройти все этапы отбора, познакомиться с инновационной командой Сбера и получить оффер Middle/Senior Robotics или Backend Developer. Наш Центр проводит исследования, создаёт роботов, применяя искусственный интеллект, и работает по направлениям: манипуляция, роботизация логистики и мобильные роботы. Сейчас перед нами стоит по-настоящему амбициозная задача – разработать антропоморфного робота общего назначения. В работе мы используем: ROS/ROS2, DDS, Python, PyTorch, JAX, Model-transformers, SOTA, C++, Isaac Sim / MuJoCo / PyBullet. Какие задачи будут в вашем планере 👇 ▪️ разработка алгоритмов и систем управления роботами (core, body, brain) и драйверов для различных устройств в виде ROS2 узлов ▪️ создание алгоритмов внутренней и внешней калибровки сенсоров (лидары, камеры, IMU), робототехнических сервисов на Behavior Trees / State Machines ▪️ работа с симуляторами на базе Isaac Sim / MuJoCo / PyBullet ▪️ проектирование архитектуры системы Масштабные проекты и работа мечты ждут вас. Регистрируйтесь на One Day Offer 13 июля 😉

Ответ:
Anonymous voting

⌛ Что будет выведено при выполнении кода? Java Learning 👩‍💻
Что будет выведено при выполнении кода? Java Learning 👩‍💻

Оплачиваемая стажировка и трудоустройство без опыта — ну ничего себе 😳 Все возможно с Добровольным квалификационным экзамено
Оплачиваемая стажировка и трудоустройство без опыта — ну ничего себе 😳 Все возможно с Добровольным квалификационным экзаменом! Это бесплатный проект Правительства Москвы, где ты можешь показать свои знания по специальности, запомниться потенциальным работодателям и получить оффер в престижные компании Москвы. Тебя ждет всего три шага: 1️⃣ Пройди тест После регистрации на сайте ДКЭ тебе будет доступно 70 профессий по 7 направлениям. Выбирай тест по своей специальности и проверь уровень своих знаний! 2️⃣ Реши кейс Если ты успешно сдал тест, тебя пригласят на следующий этап, где ты с другими участниками в команде будешь решать реальный кейс одного из работодателей. 3️⃣ Стань победителем Окажись в числе лучших по общему количеству баллов за оба этапа и получи шанс попасть на оплачиваемую стажировку с дальнейшим трудоустройством. Готов проявить себя? Регистрируйся и начинай проходить тест — https://dke.moscow Реклама. АНО "РАЗВИТИЕ ЧЕЛОВЕЧЕСКОГО КАПИТАЛА", АНО "РЧК". ИНН 7710364647. erid: LjN8JvdKw