ar
Feedback
Java Learning

Java Learning

الذهاب إلى القناة على Telegram

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

إظهار المزيد

📈 نظرة تحليلية على قناة تيليجرام Java Learning

تُعد قناة Java Learning (@java_per_month) في القطاع اللغوي الروسية لاعباً نشطاً. يضم المجتمع حالياً 16 598 مشتركاً، محتلاً المرتبة 7 607 في فئة التكنولوجيات والتطبيقات والمرتبة 39 541 في منطقة روسيا.

📊 مؤشرات الجمهور والحراك

منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 16 598 مشتركاً.

بحسب آخر البيانات بتاريخ 30 أغسطس, 2026، تحافظ القناة على نشاط مستقر. خلال آخر 30 يوماً تغيّر عدد الأعضاء بمقدار -32، وفي آخر 24 ساعة بمقدار 5، مع بقاء الوصول العام مرتفعاً.

  • حالة التحقق: غير موثّقة
  • معدل التفاعل (ER): يبلغ متوسط تفاعل الجمهور 12.90‎%. وخلال أول 24 ساعة من النشر يحصد المحتوى عادةً 4.60‎% من ردود الفعل نسبةً إلى إجمالي المشتركين.
  • وصول المنشورات: يحصل كل منشور على متوسط 2 140 مشاهدة. وخلال اليوم الأول يجمع عادةً 763 مشاهدة.
  • التفاعلات والاستجابة: يتفاعل الجمهور بانتظام؛ متوسط التفاعلات لكل منشور يبلغ 6.
  • الاهتمامات الموضوعية: يركز المحتوى على مواضيع رئيسية مثل learning, строка, map, static, интерфейс.

📝 الوصف وسياسة المحتوى

يصف المؤلف القناة بأنها مساحة للتعبير عن الآراء الذاتية:
№ 5079899194 Обучающий канал по Java Ссылка для друга - https://t.me/+ZEYYht6-46w5MDM6 По всем вопросам @mascarov_valentin Реклама на бирже - https://telega.in/c/Java_per_month

بفضل وتيرة التحديث المرتفعة (أحدث البيانات بتاريخ 31 أغسطس, 2026) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.

16 598
المشتركون
+524 ساعات
-37 أيام
-3230 أيام
أرشيف المشاركات
⚙️ Использование 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