ru
Feedback
Java Portal | Программирование

Java Portal | Программирование

Открыть в Telegram

Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика Связь: @devmangx РКН: https://clck.ru/3H4WUg

Больше

📈 Аналитический обзор Telegram-канала Java Portal | Программирование

Канал Java Portal | Программирование (@java_iibrary) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 12 109 подписчиков, занимая 10 407 место в категории Технологии и приложения и 54 513 место в регионе Россия.

📊 Показатели аудитории и динамика

С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 12 109 подписчиков.

Согласно последним данным от 09 июня, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило -147, а за последние 24 часа — -12, при этом общий охват остаётся высоким.

  • Статус верификации: Не верифицирован
  • Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 11.15%. В первые 24 часа после публикации контент обычно набирает 6.42% реакций от общего числа подписчиков.
  • Охват публикаций: В среднем каждый пост получает 1 351 просмотров. В течение первых суток публикация набирает 778 просмотров.
  • Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 4.
  • Тематические интересы: Контент сосредоточен на ключевых темах, таких как boot, string, void, архитектура, resttemplate.

📝 Описание и контентная политика

Автор описывает ресурс как площадку для выражения субъективного мнения:
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика Связь: @devmangx РКН: https://clck.ru/3H4WUg

Благодаря высокой частоте обновлений (последние данные получены 10 июня, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.

12 109
Подписчики
-1224 часа
-387 дней
-14730 день
Архив постов
Вопросы для собеседования по микросервисам с ответами 1. Каковы ключевые характеристики микросервисов? Ответ: > Децентрализов
+1
Вопросы для собеседования по микросервисам с ответами
1. Каковы ключевые характеристики микросервисов? Ответ: > Децентрализованное управление данными > Сервисы развёртываются независимо друг от друга > Проектирование на основе предметной области (DDD) > Лёгкое взаимодействие (например, REST, gRPC) > Изоляция сбоев > Удобны для непрерывной доставки 2. Чем микросервисы отличаются от монолитной архитектуры? Ответ: > Монолит: единая кодовая база, жёстко связанные компоненты, сложно масштабировать. > Микросервисы: множество сервисов, слабо связанные, развёртываются и масштабируются независимо. 3. Каковы основные преимущества использования микросервисов? Ответ: > Лучшая масштабируемость > Более быстрое выведение продукта на рынок > Независимые развёртывания > Лучшая устойчивость к сбоям > Возможность использовать разные языки и технологии 4. Какие есть сложности при работе с микросервисами? Ответ: > Сложность управления распределёнными системами > Задержки в сети и накладные расходы на коммуникацию > Согласованность данных > Отладка и мониторинг > Развёртывание и оркестрация 5. Как микросервисы обмениваются данными? Ответ: > Синхронно: через REST, gRPC > Асинхронно: через очереди сообщений (RabbitMQ, Kafka) 6. Что такое service discovery в микросервисах? Ответ: > Это механизм, с помощью которого сервисы находят друг друга в сети. > Применяются инструменты вроде Consul, Eureka, DNS Kubernetes. 7. Что такое API Gateway и зачем он нужен? Ответ: > API Gateway — это единая точка входа в систему. Он отвечает за маршрутизацию, безопасность, ограничение частоты запросов и агрегацию ответов от разных сервисов. > Примеры: Kong, Zuul, NGINX, Spring Cloud Gateway. 8. Как в микросервисах управляют данными? Ответ: > Каждый сервис использует свою отдельную базу данных (подход “одна база на сервис”). > Для согласованности применяются событийная архитектура или паттерн саги. 9. Что такое паттерн Saga? Ответ: > Saga — это последовательность локальных транзакций. > Если одна из них завершается с ошибкой, запускаются компенсирующие действия для отката изменений. 10. Какие инструменты используют для разработки микросервисов? Ответ: > Языки: Java (Spring Boot), Node.js, Go, Python > Сборка: Maven, Gradle > Контейнеризация: Docker > Оркестрация: Kubernetes
👉 Java Portal

Вот хороший пример очень плохого использования метки в Java:
void main() {
    do onlyOnce: {
        IO.println("Один раз?");
        break onlyOnce;
    } while (true);
}
Компилируется без ошибок. При выполнении выводит:
Один раз?
Один раз?
Один раз?
Один раз?
Один раз?
...
Это приводит к бесконечному циклу 🙂 👉 Java Portal

Разработчики, вот вам шпаргалка по техникам синхронизации потоков в Java 🧑‍💻 synchronized блок/метод -> использует встроенн
Разработчики, вот вам шпаргалка по техникам синхронизации потоков в Java 🧑‍💻 synchronized блок/метод -> использует встроенную блокировку объекта для обеспечения взаимного исключения. ReentrantLock -> явная блокировка с более гибкими возможностями по сравнению с synchronized. volatile- > гарантирует видимость изменений переменной между потоками. Атомарные переменные (AtomicInteger и др.) -> обеспечивают атомарные операции без блокировок. Semaphore -> управляет доступом к ресурсу с ограниченным числом разрешений. CountDownLatch -> позволяет одному или нескольким потокам ожидать завершения операций в других потоках. CyclicBarrier -> позволяет группе потоков дождаться друг друга до продолжения выполнения. ReadWriteLock -> разрешает множественные параллельные чтения, но только одну запись. 👉 Java Portal

Канал с курсами и книгами для айтишников Программирование 24/7 — настоящий портал для тех кто хочет стать айтишником. Там ест
Канал с курсами и книгами для айтишников Программирование 24/7 — настоящий портал для тех кто хочет стать айтишником. Там есть всё необходимое — топовые курсы и книги по всем языкам программирования(Frontend, Python, Java, C#, PHP и др.) Все бесплатно, доступно и удобно — @edprogramming

Начиная с JDK 12, появилась новая фича — java.text.CompactNumberFormat. Она позволяет компактно отображать большие числа Пример:
Locale.setDefault(Locale.US);
NumberFormat compact = NumberFormat.getCompactNumberInstance();

System.out.println(compact.format(1));
System.out.println(compact.format(999));
System.out.println(compact.format(2_000));
System.out.println(compact.format(55_555));
System.out.println(compact.format(3_777_999));
System.out.println(compact.format(Integer.MAX_VALUE));
Вывод:
1
999
2K
56K
4M
2B
Также доступен стиль LONG:
NumberFormat compact;
compact = NumberFormat.getCompactNumberInstance(Locale.US, Style.LONG);
Результат:
1
999
2 thousand
56 thousand
4 million
2 billion
Идеально для UI, отчетов и всего, где важна краткость 💖 👉 Java Portal

Курс по конкурентному программированию от Ильи Сергеева Если хочешь разобраться в параллельности, потоках, акторной модели и
Курс по конкурентному программированию от Ильи Сергеева Если хочешь разобраться в параллельности, потоках, акторной модели и распределёнке — лови топовый курс от препода Yale-NUS — Scala для конкурентного кода — Мьютексы, блокировки, атомики — Futures и async — Акторы и обмен сообщениями — Распределённый консенсус (в т.ч. BFT) Можешь поблагодарить лукасом 😍 👉 Java Portal

В Java лямбда-выражение создаёт экземпляр функционального интерфейса. Во время выполнения этот экземпляр создаётся с помощью класса LambdaMetaFactory Следующий код на Java создаёт объект Function<String, String>
Function<String, String> f = s -> s.toUpperCase();
Во время выполнения объект создаётся с помощью кода, аналогичного следующему:
@SuppressWarnings("unchecked")
void main() throws Throwable {
    MethodHandles.Lookup lookup;
    lookup = MethodHandles.lookup();

    CallSite callSite;
    callSite = LambdaMetafactory.metafactory(
        lookup,
        "apply",
        MethodType.methodType(Function.class),
        MethodType.methodType(Object.class, Object.class),
        lookup.findStatic(
            getClass(),
            "lambda",
            MethodType.methodType(String.class, String.class)
        ),
        MethodType.methodType(String.class, String.class)
    );

    MethodHandle target;
    target = callSite.getTarget();

    Function<String, String> f;
    f = (Function<String, String>) target.invokeExact();

    String msg;
    msg = f.apply("Hello, World!");

    IO.println(msg);
}

private static String lambda(String s) {
    return s.toUpperCase();
}
При выполнении этот код выведет в консоль HELLO, WORLD! ❤️ 👉 Java Portal

Имбовая библиотека цветов для Kotlin Multiplatform Если ты пилишь на Kotlin и хочешь красивые цвета под любую платформу — зацени compose-pipette Поддерживает: > JVM > Android (от API 21) > Kotlin/JS > Kotlin/WASM > macOS (пока не тестили) > iOS (тоже не тестили) Поддержи пост лайком ❤️ 👉 Java Portal

Все надоело и пропал интерес, чувствуешь себя амебой и хочется только залипать в телефоне. Бывает? Психолог взрослого человек
Все надоело и пропал интерес, чувствуешь себя амебой и хочется только залипать в телефоне. Бывает? Психолог взрослого человека — канал для айтишников, у которых периодически опускаются руки и отключается мозг, ибо переработки и постоянная тревожность не приводят к другим исходам. ✔️ Как научиться отвлекаться от работы и отдыхать? ✔️ Как совместить кучу рабочих задач и время с семьей? ✔️ Как справиться с прокрастинацией? ✔️ Как не растерять запал, даже если начальник и коллеги 💩 и кажется, что ничего не выходит? Подписывайтесь на канал @vadimpetrovpsi и научитесь работать без упахивания, выгорания и ущерба для личной жизни! 👨🏻‍💻 Псс. Заходите в закреп — там много полезного, и даже бесплатный мини-курс по выходу из апатии: https://t.me/+qYR5T3w5Yg41ZTQy

Strategy Pattern без занудства Ситуация: вы пишете платёжную систему У вас есть PaymentService, поддерживающий оплату кредитной картой. Вы пишете:
public void pay(String method) {
    if (method.equals("creditcard")) {
        // логика оплаты кредиткой
    }
}
Потом добавляют PayPal, UPI, крипту, Apple Pay, кошельки, NetBanking и тд.. 😢 Теперь ваш метод выглядит вот так:
if (method.equals("creditcard")) {
    // логика кредитки
} else if (method.equals("paypal")) {
    // логика PayPal
} else if ...
Вы тонете в аду if-else. Каждый раз при добавлении нового способа оплаты: > Вы трогаете старый код > Рискуете сломать существующую логику > Нельзя нормально протестировать стратегии > Нарушается принцип OCP (Open/Closed) В чём настоящая проблема? 1. Ваш код слишком жёстко связан с конкретными реализациями оплат 2. Добавление новых стратегий требует изменения существующего кода 3. Тестировать/переиспользовать отдельные стратегии — сложно 4. PaymentService теперь отвечает за слишком многое Как Strategy Pattern вас спасает 1. Создаёшь интерфейс PaymentStrategy 2. Для каждой оплаты — свой класс: CreditCardPayment, PayPalPayment, UPIPayment 3. PaymentService просто вызывает .pay() на нужной стратегии ☑ Добавить новый способ? Просто пишешь новый класс ☑ Никаких if-else ☑ Стратегии изолированы и легко тестируются
interface PaymentStrategy {
    void pay(int amount);
}

class CreditCardPayment implements PaymentStrategy {
    public void pay(int amount) {
        System.out.println("Плачу " + amount + " с помощью кредитки");
    }
}

class PayPalPayment implements PaymentStrategy {
    public void pay(int amount) {
        System.out.println("Плачу " + amount + " через PayPal");
    }
}
👉 Java Portal

Шпаргалка по Map-реализациям Если путаешься в HashMap, TreeMap, ConcurrentHashMap — лови таблицу сравнения > HashMap — быстра
Шпаргалка по Map-реализациям Если путаешься в HashMap, TreeMap, ConcurrentHashMap — лови таблицу сравнения > HashMap — быстрая, но не потокобезопасная. Подходит для общего использования > LinkedHashMap — сохраняет порядок вставки > TreeMap — сортирует по ключам. > Hashtable — потокобезопасна, но старая и медленная > ConcurrentHashMap — оптимальна для многопоточности > EnumMap — супербыстрая для enum-ключей > IdentityHashMap — использует == вместо .equals() > WeakHashMap — ключи могут быть удалены GC. Полезно для кэшей Не забывай про null-ключи, производительность, порядок —> всё это влияет на выбор структуры данных 💖 👉 Java Portal

Хочешь, чтобы Swagger UI был доступен без авторизации в Spring Boot? Просто добавь его в белый список: .antMatchers("/swagger
Хочешь, чтобы Swagger UI был доступен без авторизации в Spring Boot? Просто добавь его в белый список:
.antMatchers("/swagger-ui/", "/v3/api-docs/").permitAll()
Так разработчики смогут спокойно тестировать и изучать API без входа в систему 👉 Java Portal

Балансировка производительности и потокобезопасности 🔜 Читать: клик 👉 Java Portal | #cтатья
Балансировка производительности и потокобезопасности 🔜 Читать: клик 👉 Java Portal | #cтатья

Хотите получить строковое представление объекта так, как если бы методы toString и hashCode не были переопределены? Тогда мет
Хотите получить строковое представление объекта так, как если бы методы toString и hashCode не были переопределены? Тогда метод Objects::toIdentityString — это то, что вам нужно:
void main() {
    IO.println(this);
    IO.println(Objects.toIdentityString(this));
}

@Override
public String toString() {
    return "Hello, World!";
}
При выполнении на моей машине выводится:
Hello, World!
HelloWorld@275710fc
Метод был введён в JDK 19. Документация Javadoc не говорит много о возможных вариантах использования. В баге JDK-8280184 Стюарт Маркс пишет:
Это может быть полезно в логировании, например, когда нужно отслеживать операции, выполненные над каким-то конкретным объектом, например, перед сбоем. Идентичный хэшкод — полезный способ сделать это
👉 Java Portal

Дорожная карта Spring Boot для Java-разработчиков 💪💪💪 👉 Java Portal
Дорожная карта Spring Boot для Java-разработчиков 💪💪💪 👉 Java Portal

#вакансия Нужны программисты для долгосрочного оплачиваемого сотрудничества. Это достаточно простая подработка: написание кода, объяснение различных функций и написание авторских текстов. Требования:
Знания Java, не на базовом уровне. Опыт работы Figma Умение писать грамотные тексты с доступным объяснением на разные темы.
Если вам интересно и есть достаточно свободного времени, отпишите — @energy_it.

В Java можно столкнуться с ситуацией, когда поле final кажется имеющим два разных значения. Рассмотрим такой пример: void mai
В Java можно столкнуться с ситуацией, когда поле final кажется имеющим два разных значения. Рассмотрим такой пример:
void main() {
    var after = new Final(this::before);

    IO.println("After value=" + after.value);
}

private void before(Final before){
    IO.println("Before value=" + before.value);
}

class Final {
    final int value;

    Final(Consumer<? super Final> listener) {
        listener.accept(this);
        value = 123;
    }
}
Результат выполнения будет таким:
Before value=0  
After value=123
Это пример утечки this. JEP 401 называет это larval object leakage — ситуация, когда объект, ещё не до конца инициализированный, "просачивается" из конструктора и используется раньше времени. В JDK 24 в рамках JEP о гибких телах конструкторов (Flexible Constructor Bodies) эта проблема решается следующим образом:
Код в начале конструктора не должен использовать this, кроме как для инициализации полей, у которых нет своих инициализаторов.
Иначе говоря, в начальной части конструктора теперь нельзя "утечь" наружу с this, пока объект не готов 👉 Java Portal

Pattern Matching в switch — Java 🔜 Читать: клик 👉 Java Portal | #cтатья
Pattern Matching в switch — Java 🔜 Читать: клик 👉 Java Portal | #cтатья

⚡️ Дождались! Ребята сделали крутейшие каналы про Айти Здесь сложные темы объясняют на простых картинках, понятном языке. А т
+4
⚡️ Дождались! Ребята сделали крутейшие каналы про Айти Здесь сложные темы объясняют на простых картинках, понятном языке. А также решаем задачки, делимся ресурсами и советами. 📱 Python | Программирование ⚙️ Webdev | Backend & Frontend 😷 Hacking | Кибербезопасность 🖥 Memes | Мемы айтишников 🖥 CodHub | Курсы IT

В Java тело лямбды прозрачно для this. Например, следующий код выведет Hello, World!: private Runnable runnable = () -> { Sys
В Java тело лямбды прозрачно для this. Например, следующий код выведет Hello, World!:
private Runnable runnable = () -> {
    System.out.println(this);
};

@Override
public String toString() {
    return "Hello, World!";
}

void main() {
    runnable.run();
}
А если заменить лямбду на анонимный класс, результат будет вроде InnerClassThis$1@568bf312:
private Runnable runnable = new Runnable() {
    @Override public void run() {
        System.out.println(this);
    }
};

@Override
public String toString() {
    return "Hello, World!";
}

void main(String[] args) {
    runnable.run();
}
То есть у лямбды нет собственного this — она использует this из внешнего контекста. Это чётко описано в спецификации Java:
Значение this в теле лямбды — то же самое, что и this во внешнем контексте.
Если хочешь разобраться глубже, смотри официальный гайд 👉 Java Portal