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

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

Открыть в Telegram

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

Больше

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

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

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

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

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

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

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

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

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

12 132
Подписчики
-124 часа
-407 дней
-14230 день
Архив постов
Java tip: для точных расчетов времени используй Duration и Instant. ✅Instant представляет конкретный момент времени в UTC с т
Java tip: для точных расчетов времени используй Duration и Instant. ✅Instant представляет конкретный момент времени в UTC с точностью до наносекунд. Получить можно так: Instant.now(). ✅Duration показывает временной интервал между двумя Instant (в секундах, миллисекундах, наносекундах). Вот пример:
Instant start = Instant.now();
...
Instant end = Instant.now();

Duration elapsed = Duration.between(start, end);
👉 Java Portal

HTTP/2 через TCP против HTTP/3 через QUIC ▪️HTTP/2 Мультиплексирование на уровне HTTP, сериализация на уровне TCP Общий поряд
HTTP/2 через TCP против HTTP/3 через QUIC ▪️HTTP/2
Мультиплексирование на уровне HTTP, сериализация на уровне TCP Общий порядок доставки и контроль перегрузки (TCP) Одна TCP-сессия HTTP/2 фреймы (мультиплексированные) * HEADERS (поток 1) * HEADERS (поток 3) * HEADERS (поток 2) * DATA (поток 1) * DATA (поток 3) * DATA (поток 2) TCP-пакеты: P1, P2, P3, P4, P5 TCP-пакеты смешивают данные из разных потоков HoL-блокировка в TCP (Head-of-Line): потеря одного пакета блокирует все потоки Клиент -> Сервер
▪️HTTP/3
Мультиплексирование на транспортном уровне (QUIC) * Независимые потоки * Независимый порядок доставки и восстановление QUIC-соединение (поверх UDP) QUIC Stream 1: QUIC Packet, QUIC Packet, QUIC Packet QUIC Stream 2: QUIC Packet, QUIC Packet QUIC Stream 3: QUIC Packet, QUIC Packet Нет HoL-блокировки: потеря пакета влияет только на один поток Клиент -> Сервер
👉 Java Portal

Spring Boot: не используй FetchType.EAGER, если реально нет необходимости. ✗ Помечая связь как EAGER, ты говоришь ORM подгруж
Spring Boot: не используй FetchType.EAGER, если реально нет необходимости. ✗ Помечая связь как EAGER, ты говоришь ORM подгружать её каждый раз вместе с сущностью, даже если ты вообще не обращаешься к этой связи (не вызываешь геттер/метод отношения). ✗ В этом примере каждый раз, когда ты загружаешь Order, ORM автоматически подтянет и Customer:
@Entity
class Order {
    @ManyToOne(fetch = FetchType.EAGER)
    private Customer customer;
}
✗ И ещё: если не делать явный fetch, получаешь классический эффект N+1: 1. Один запрос на все Orders 2. По одному запросу на каждый Order для Customers 👉 Java Portal

Совет для IntelliJ: Alt+Enter можно использовать, чтобы быстро чинить ошибки и предупреждения, но список вариантов там довольно ограничен. Вместо этого используй автодополнение команд (..), чтобы выполнять нужные действия прямо в редакторе. 👉 Java Portal

Rate limiting в системном дизайне: один пользователь или сервис не должен слишком часто дергать API и завалить его. В Spring
Rate limiting в системном дизайне: один пользователь или сервис не должен слишком часто дергать API и завалить его. В Spring Boot для этого можно использовать библиотеку Bucket4j и сделать Rate Limit Filter. Она умеет: ▪️защищать от примитивных DDoS-атак ▪️отсеивать кривых клиентов, которые шлют запросы в цикле ▪️ограничивать число запросов за единицу времени ▪️делать доступ чуть более честным: понемногу всем, а не все одному Очень просто, быстро и потокобезопасно. ▪️На каждый запрос проверяет, есть ли в кэше ключ клиента (например IP). Если нет, создает для него bucket с токенами. ▪️Каждый раз пытается забрать из bucket один токен, то есть право выполнить запрос. ▪️Если токен в bucket есть, проходишь. Если токены закончились, получаешь HTTP 429 и ждешь пополнения. Заметки: -> request.getRemoteAddr() ищет корректный способ получить IP клиента, возможно через request.getHeader("X-Forwarded-For") -> new ConcurrentHashMap<>() сам по себе не чистится, продумай, как долго хранить данные и как их вычищать, если запросов много -> лимит задается одинаковый для всех эндпоинтов. Часто у разных API разная нагрузка, поэтому логично ставить разные лимиты (по URL, HTTP-методу или типу операции) -> refillGreedy() это всего лишь один из вариантов пополнения токенов. Есть и другие стратегии (плавное пополнение, фиксированные интервалы), которые дают более точный контроль нагрузки -> вынеси все настройки в application.yaml, чтобы менять лимиты без правок кода Простая реализация, чтобы понять, как работает библиотека, приложена 👉 Java Portal

Как снизить хвостовые задержки в Java с помощью ZGC: читать Он заметно снижает хвостовые задержки (p999/p9999) по сравнению с
Как снизить хвостовые задержки в Java с помощью ZGC: читать Он заметно снижает хвостовые задержки (p999/p9999) по сравнению с G1 за счет микропауз, но платит за это повышенным CPU и при нехватке процессора может упираться в allocation stalls, поэтому включать его стоит только после замеров на своей нагрузке. 👉 Java Portal

👩‍💻 Всем программистам посвящается! Вот 14 авторских обучающих IT каналов по самым востребованным областям программирования
👩‍💻 Всем программистам посвящается! Вот 14 авторских обучающих IT каналов по самым востребованным областям программирования: Выбирай своё направление: 👩‍💻 Java — t.me/java_ready 👩‍💻 IT Новости — t.me/it_ready 👩‍💻 Python — t.me/python_ready 🤔 InfoSec & Хакинг — t.me/hacking_ready 🖥 SQL & Базы Данных — t.me/sql_ready 🤖 AI & MLt.me/neuro_ready 👩‍💻 Frontend — t.me/frontend_ready 👩‍💻 C/C++ — https://t.me/cpp_ready 👩‍💻 C# & Unity — t.me/csharp_ready 👩‍💻 Linux — t.me/linux_ready 📖 IT Книги — t.me/books_ready 📱 JavaScript — t.me/javascript_ready 🖼️ DevOpst.me/devops_ready 🖥 Design — t.me/design_ready 📌 Гайды, шпаргалки, задачи, ресурсы и фишки для каждого языка программирования!

Spring Boot: держи контроллеры тонкими, логику выноси в сервисы. Главная задача контроллера, по сути, только разрулить HTTP-ч
Spring Boot: держи контроллеры тонкими, логику выноси в сервисы. Главная задача контроллера, по сути, только разрулить HTTP-часть. Плохой пример: бизнес-правила запихнуты в контроллер, типа проверки остатков и лимита заказа:
@RestController
@RequestMapping("/api/orders")
public class OrderController {

    @Autowired
    private OrderRepository orderRepository;

    @Autowired
    private ProductRepository productRepository;

    @PostMapping
    public ResponseEntity<?> createOrder(@RequestBody CreateOrderRequest request) {

        // Validation logic
        if (request.getProductId() == null || request.getQuantity() <= 0) {
            return ResponseEntity
                .badRequest()
                .body("Invalid request");
        }

        // Business logic
        Product product = productRepository.findById(request.getProductId())
            .orElse(null);

        if (product == null) {
            return ResponseEntity
                .status(HttpStatus.NOT_FOUND)
                .body("Product not found");
        }

        if (product.getStock() < request.getQuantity()) {
            return ResponseEntity
                .badRequest()
                .body("Not enough stock");
        }

        BigDecimal totalPrice = product.getPrice()
            .multiply(BigDecimal.valueOf(request.getQuantity()));

        if (totalPrice.compareTo(new BigDecimal("10000")) > 0) {
            return ResponseEntity
                .badRequest()
                .body("Order limit exceeded");
        }

        // Persistence + transaction logic
        product.setStock(product.getStock() - request.getQuantity());
        productRepository.save(product);

        Order order = new Order();
        order.setProduct(product);
        order.setQuantity(request.getQuantity());
        order.setTotalPrice(totalPrice);
        order.setCreatedAt(LocalDateTime.now());

        orderRepository.save(order);

        return ResponseEntity
            .status(HttpStatus.CREATED)
            .body(order.getId());
    }
}
👉 Java Portal

Защищаю своё Spring Boot Java-приложение, которое использует 64 ГБ оперативной памяти, чтобы вернуть { "status": "ok" } 👉 Java Portal

Java.hasChosen(you) 🥶😟 Почему Java всё ещё №1 в автотестах? Стас Васенков, основатель школы автотестировщиков @qa_guru, рас
Java.hasChosen(you) 
🥶😟 Почему Java всё ещё №1 в автотестах? Стас Васенков, основатель школы автотестировщиков @qa_guru, расскажет про свой мэтч с Java. Чем его зацепил этот язык и куда привёл. И куда Java может привести вас. Приходите на открытый эфир ➡ 27 января ➡ 13:00 (МСК) Что будет: — неочевидные карьерные сценарии — внутрянка: какой стек ждут, когда ищут автоматизатора — кому Java уже не поможет 🐹 Не откладываем в TODO ➡ webinar.join();

Project Panama: как Java научилась говорить на C! (Часть 1) Как безопасно и эффективно вызывать C-функции из Java? Благодаря Project Panama — новому API из OpenJDK — это стало возможно без использования JNI. 👉 Java Portal

Spring Boot: лучше не использовать wildcard-исключения для транзитивных зависимостей в POM-файлах, потому что они могут прята
Spring Boot: лучше не использовать wildcard-исключения для транзитивных зависимостей в POM-файлах, потому что они могут прятать проблемы. Wildcard-исключения просто убирают симптом и маскируют реальную причину: несовпадение версий.
<!-- Так лучше НЕ делать: wildcard-исключение (фактически “вырубаем всё”) -->
<exclusions>
  <exclusion>
    <!-- * = любой groupId -->
    <groupId>*</groupId>
    <!-- * = любой artifactId -->
    <artifactId>*</artifactId>
  </exclusion>
</exclusions>

<!-- Лучше: исключать конкретную транзитивную зависимость явно -->
<exclusion>
  <!-- точный groupId зависимости, которую исключаем -->
  <groupId>org.apache.tomcat.embed</groupId>
  <!-- точный artifactId зависимости, которую исключаем -->
  <artifactId>tomcat-embed-websocket</artifactId>
</exclusion>
👉 Java Portal

Batch Processing vs Stream Processing: в чем разница? Batch processing (пакетная обработка) ▪️Обрабатывает данные большими порциями (батчами) по расписанию. ▪️Отлично подходит для исторических данных, хранилищ (DWH) и аналитики. ▪️Примеры: расчёт зарплаты, периодические отчёты, ETL/ELT джобы. Плюсы: эффективно на больших объёмах, дешевле по ресурсам, хорошо оптимизируется под throughput Минусы: высокая задержка (latency), не подходит для задач, где нужно “прямо сейчас” ⚙️Инструменты: Apache Hadoop, Apache Spark, AWS Glue Stream processing (потоковая обработка) ▪️Обрабатывает данные непрерывно, по мере поступления. ▪️Используется для real-time аналитики, антифрода, мониторинга “вживую”. ▪️Примеры: мониторинг биржи, рекомендации в реальном времени, IoT-датчики. Плюсы: низкая задержка, инсайты в реальном времени, реактивные системы Минусы: сложнее в реализации и поддержке, требует высокой доступности и масштабируемости ⚙️Инструменты: Apache Kafka, Apache Flink, Apache Storm, Spark Streaming Во многих современных системах делают гибрид: batch для хранения и аналитики, stream для реакций и real-time сигналов. 👉 Java Portal

Java-совет: начиная с Java 14 можно использовать switch-выражения, чтобы писать многоветвистую логику короче и чище. // Old w
Java-совет: начиная с Java 14 можно использовать switch-выражения, чтобы писать многоветвистую логику короче и чище.
// Old way:
String season;
switch (month) {
    case 12:
    case 1:
    case 2:
        season = "Winter";
        break;

    case 3:
    case 4:
    case 5:
        season = "Spring";
        break;

    default:
        season = "Invalid";
}
// New switch expression:
String season = switch (month) {
    case 12, 1, 2 -> "Winter";
    case 3, 4, 5 -> "Spring";
    default -> "Invalid";
};
👉 Java Portal

Если ты изучаешь Java или хочешь прокачать навыки, обрати внимание на JBook — это интерактивная книга по Java, доступная прямо на GitHub. Что внутри: 🔸Подробное объяснение основ языка Java; 🔸Примеры кода с пояснениями; 🔸Упражнения для закрепления знаний; 🔸Поддержка Jupyter Notebook + Java (IJava kernel) — можно запускать код прямо в браузере GitHub: https://github.com/qcha/JBook 👉 Java Portal

На Stepik вышел курс по Linux Этот курс закрывает всю обязательную Linux-базу для работы в IT: от установки Linux и работы с
+4
На Stepik вышел курс по Linux Этот курс закрывает всю обязательную Linux-базу для работы в IT: от установки Linux и работы с файлами до сетей, прав, дисков, процессов, автоматизации на Bash и многого другого. Всё сразу закрепляется на практике (200+ заданий с автопроверкой) Материал подаётся понятным языком, шаг за шагом, на реальных примерах и с наглядными схемами После прохождения вы получите сертификат, который можно добавить в резюме. Есть бесплатные демо-уроки для ознакомления. В ближайшие 48ч курс доступен со скидкой 25% по промокоду «POST25»: открыть курс на Stepik

Совет по Java: если нужна максимально хорошая производительность в общем случае, бери HashMap как реализацию Map. ✅HashMap внутри реализован как хеш-таблица, и в среднем put(), get() и remove() работают за O(1). 🪲Он не потокобезопасный (если нужна thread-safety, используй ConcurrentHashMap). Пример:
Map<String, Integer> ages = new HashMap<>();

// Добавляем данные
ages.put("Michael", 31);
ages.put("Lisa", 25);
ages.put("Alice", 42);

// Поиск
System.out.println("Возраст Lisa: " + ages.get("Lisa"));

// Удаление
ages.remove("Alice");

// Итерация
for (Map.Entry<String, Integer> entry : ages.entrySet()) {
    System.out.println(entry.getKey() + ": " + entry.getValue());
}
👉 Java Portal

10 золотых правил чистого кода: 1. Избегай магических чисел и строк 2. Используй осмысленные, говорящие имена 3. Предпочитай
10 золотых правил чистого кода: 1. Избегай магических чисел и строк 2. Используй осмысленные, говорящие имена 3. Предпочитай ранние return вместо глубокой вложенности 4. Избегай длинных списков параметров 5. Делай функции маленькими и сфокусированными 6. Соблюдай DRY (Don’t Repeat Yourself) — не дублируй код 7. Применяй принцип KISS (Keep It Simple, Stupid) — делай проще 8. Отдавай предпочтение композиции, а не наследованию 9. Комментируй только там, где это действительно необходимо 10. Пиши хорошие сообщения к коммитам Какие еще правила чистого кода ты бы добавил в этот список? 👉 Java Portal

Java tip : старайся не шарить данные между потоками. ✅Используй immutable-объекты ✅Или пусть потоки общаются сообщениями, не
Java tip : старайся не шарить данные между потоками. ✅Используй immutable-объекты ✅Или пусть потоки общаются сообщениями, не лезя напрямую в общий state и не мутируя его
// With immutable objects:

record Book(String title, int price) {} //Immutable

public class BookJob implements Runnable {
    private final Book book;
    ....//constructor

    @Override
    public void run() {
        System.out.println(book.title() + " " + book.price());
    }
}

// Exchanging messages:
...
new Thread(() -> {
    try {
        queue.put("mess1");
    } catch (InterruptedException e) {}
}).start();
...
new Thread(() -> {
    try {
        String mess = queue.take();
    } catch (InterruptedException e) {}
}).start();
👉 Java Portal

Сommand completion (..) расширяет обычный code completion. Помимо автодополнения API и postfix completion, автодополнение кода теперь включает и команды. Чтобы отфильтровать список только до команд, используйте .. Список поддерживает поиск, чтобы быстрее находить нужное. 👉 Java Portal