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

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

Kanalga Telegram’da o‘tish

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

Ko'proq ko'rsatish

📈 Telegram kanali Java Portal | Программирование analitikasi

Java Portal | Программирование (@java_iibrary) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 12 130 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 10 402-o'rinni va Rossiya mintaqasida 54 525-o'rinni egallagan.

📊 Auditoriya ko‘rsatkichlari va dinamika

невідомо sanasidan buyon loyiha tez o‘sib, 12 130 obunachiga ega bo‘ldi.

07 Iyun, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -138 ga, so‘nggi 24 soatda esa 2 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.

  • Tasdiqlash holati: Tasdiqlanmagan
  • Jalb etish (ER): Auditoriya o‘rtacha 11.37% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 6.26% ini tashkil etuvchi reaksiyalarni to‘playdi.
  • Post qamrovi: Har bir post o‘rtacha 1 379 marta ko‘riladi; birinchi sutkada odatda 760 ta ko‘rish yig‘iladi.
  • Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 4 ta reaksiya keladi.
  • Tematik yo‘nalishlar: Kontent boot, string, void, архитектура, resttemplate kabi asosiy mavzularga jamlangan.

📝 Tavsif va kontent siyosati

Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика Связь: @devmangx РКН: https://clck.ru/3H4WUg

Yuqori yangilanish chastotasi (oxirgi ma’lumot 08 Iyun, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.

12 130
Obunachilar
+224 soatlar
-287 kunlar
-13830 kunlar
Postlar arxiv
Java-совет : избегай преждевременной оптимизации. Сначала сосредоточься на чистом, рабочем коде. Пиши код, который корректно работает, и в первую очередь закрывает функциональные требования.
// Простейший пример
String helloThere = "Hello " + "there" + "!";
System.out.println(helloThere);

// Эта строка кода читаемая и работает как задумано

// Позже можно подумать об оптимизации через StringBuilder
StringBuilder sb = new StringBuilder();
sb.append("Hello ");
sb.append("there");
sb.append("!");
System.out.println(sb.toString());
👉 Java Portal

У платформенных потоков в Java есть 6 состояний. У виртуальных потоков их около 20, но они скрыты от нас. Держите свежий выпуск, где автор показывает, как с помощью глубокой рефлексии можно разобраться, как это вообще устроено: Узнаем здесь! 🤭 👉 Java Portal

Принцип открытости/закрытости (OCP): это принцип из SOLID, который говорит, что классы должны быть открыты для расширения, но закрыты для модификации. Вместо правки существующей реализации стоит добавлять новое поведение через интерфейсы и наследование в Java, не трогая уже написанный код.
// Плохой способ реализовать генератор отчётов
class ReportGenerator {
    public void generateReport(String type) {
        if (type.equals("PDF")) {
            System.out.println("Generating PDF Report...");
        } else if (type.equals("CSV")) {
            System.out.println("Generating CSV Report...");
        } else if (type.equals("EXCEL")) {
            System.out.println("Generating Excel Report...");
        }
    }
}

// Более правильный вариант

// Определяем интерфейс
interface Report {
    void generate();
}

// Реализации
class PdfReport implements Report {
    public void generate() {
        System.out.println("Generating PDF Report...");
    }
}

class CsvReport implements Report {
    public void generate() {
        System.out.println("Generating CSV Report...");
    }
}

// Используем конкретную реализацию
public class ReportApp {
    public static void main(String[] args) {
        Report report = new PdfReport();
        report.generate();
    }
}
👉 Java Portal

Spring Boot Istio 1.2.0 вышел Что подтянули в обновлении: 🍃авто-генерация fault-ов 🍃 авто-создание и инжект gateway 🍃 авто
Spring Boot Istio 1.2.0 вышел Что подтянули в обновлении: 🍃авто-генерация fault-ов 🍃 авто-создание и инжект gateway 🍃 авто-генерация HTTP matches Детали тут : https://github.com/piomin/spring-boot-istio 👉 Java Portal

Spring Boot: дорогие по времени API-вызовы можно кешировать через @Cacheable и Redis. Первый запрос с конкретным ключом идет
Spring Boot: дорогие по времени API-вызовы можно кешировать через @Cacheable и Redis. Первый запрос с конкретным ключом идет в реальный API. Все повторные — из Redis за миллисекунды.
<!-- Добавляем зависимости -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-cache</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-b
# Базовая настройка в application.yml
spring:
  redis:
    host: localhost
    port: 6379

  cache:
    type: redis

server:
  port: 8080
// Конфигурация Redis (TTL 10 минут)
@Bean
public RedisCacheConfiguration cacheConfig() {
    return RedisCacheConfiguration.defaultCacheConfig()
        .entryTtl(Duration.ofMinutes(10))
        .disableCachingNullValues();
}
// Кэшируем метод сервиса
@Cacheable("users")
public User getUserById(Long id) {
    return userService.fetchUserFromRemoteApi(id);
}
Вот ссылка на демо-проект на Spring Boot (для работы нужен запущенный Redis на порту 6379) 👉 Java Portal

Подсказка по Spring Boot: если нужно, чтобы DTO спокойно игнорировали лишние поля в JSON от клиента и не ломали API, можно по
Подсказка по Spring Boot: если нужно, чтобы DTO спокойно игнорировали лишние поля в JSON от клиента и не ломали API, можно повесить @JsonIgnoreProperties(ignoreUnknown = true) Дано DTO:
public class UserDTO {
    private String name;
    private int age;

    // геттеры и сеттеры
}
Если с клиента прилетает такой JSON:
{
    "name": "Alice",
    "age": 25,
    "extraField": "not expected"
}
Получим ошибку:
UnrecognizedPropertyException: Unrecognized field "extraField"
Эту ситуацию решаем через аннотацию @JsonIgnoreProperties:
@JsonIgnoreProperties(ignoreUnknown = true)
public class UserDTO {
    ...
}
👉 Java Portal

LATENCY VS THROUGHPUT Когда пользователи говорят что приложение «тормозит», причина может быть в двух плоскостях: * проблема
LATENCY VS THROUGHPUT Когда пользователи говорят что приложение «тормозит», причина может быть в двух плоскостях: * проблема latency (каждый запрос обрабатывается медленно) * проблема throughput (система забита и не тянет нагрузку) Иногда это вообще смесь обоих. Latency — время, которое сервер тратит на выполнение одного запроса от начала до ответа. Throughput — сколько запросов сервер способен обработать за единицу времени. Представим, что ты инженер в сервисе доставки пиццы. Сценарий 1: Пользователь нажимает «Отправить заказ» и ответ долго крутится — значит высокий latency. Для пользователя это воспринимается как «всё лагает». Низкий latency = быстрый отклик для каждого конкретного запроса. Сценарий 2: Ответы идут примерно по 100 мс — вроде норм. Но если система способна держать только 10 запросов в секунду, а одновременно приходит тысяча, всё разваливается. Это низкий throughput. Высокий throughput = возможность обслуживать много пользователей одновременно. Обе метрики критичны, особенно когда система растёт по нагрузке. * Ответы быстрые, но при всплеске трафика сыпятся таймауты — проблема в throughput. * Каждый запрос тормозит даже при маленьком трафике — проблема в latency. » Как чинят проблемы с latency (ускоряем отдельные запросы) Причины: медленные SQL-запросы, тяжёлые внешние API, прожорливая логика, геолокация сервера и так далее. Обычно помогают индексы в БД, кэширование, оптимизация кода, CDN, профилирование узких мест. » Как фиксят проблемы с throughput (увеличиваем пропускную способность) Обычно упирается в ресурсы. Масштабирование: больше серверов, балансировка нагрузки, кэширование, горизонтальное расширение и т. п. P.S. Для пользовательских API чаще гонятся за низким latency, а для фоновых задач типа batch-процессинга чаще важнее throughput, чем скорость каждого отдельного задания. Всё упирается в то, под что именно ты оптимизируешься. 👉 Java Portal

Spring Boot совет В тестах на Spring Boot можно без лишних настроек использовать RestTestClient через аннотацию @AutoConfigur
Spring Boot совет В тестах на Spring Boot можно без лишних настроек использовать RestTestClient через аннотацию @AutoConfigureRestTestClient Для TestRestTemplate есть аналогичная аннотация — @AutoConfigureTestRestTemplate
@SpringBootTest
@AutoConfigureRestTestClient
public class PersonControllerTests {

    private static final String API_PATH = "/persons";

    @Test
    void add(@Autowired RestTestClient restTestClient) {
        restTestClient.post().uri(API_PATH)
                .body(Instancio.create(Person.class))
                .exchange()
                .expectStatus().is2xxSuccessful()
                .expectBody(Person.class)
                .value(person -> assertNotNull(person.getId()));
    }
}
👉 Java Portal

Hidden классы в Java. Что скрывают Lambda выражения С переходом Java на более безопасные и стандартизированные подходы к дина
Hidden классы в Java. Что скрывают Lambda выражения С переходом Java на более безопасные и стандартизированные подходы к динамической генерации классов, скрытые (hidden) классы стали ключевым механизмом замены устаревшего Unsafe::defineAnonymousClass Они решают проблемы доступности, управления жизненным циклом и контроля доступа, особенно актуальные для разработчиков фреймворков и языков на JVM. Хотя скрытые классы пока не полностью заменяют функциональность Unsafe, они лежат в основе ряда важных механизмов, такие как, например, реализация лямбд в JDK. Подробнее 👉 Java Portal

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

Git worktree — отличный способ поднять песочницу, куда можно запустить агентов искать решение, пока ты спокойно продолжаешь р
Git worktree — отличный способ поднять песочницу, куда можно запустить агентов искать решение, пока ты спокойно продолжаешь работу на master или другой ветке. На фото баш-скрипт, который : создаёт новый worktree/ветку под задачку с префиксом ga fix (типа fizzy--fix), а потом gd можно снести всё к чертям, когда закончил. Если хочешь потыкать у себя — есть удобный gist для копипасты. 👉 Java Portal

Понимание Git worktree. Отличная фича Git, особенно актуальная в эпоху агентных ИИ. Подробнее 👉 Java Portal
Понимание Git worktree. Отличная фича Git, особенно актуальная в эпоху агентных ИИ. Подробнее 👉 Java Portal

Java-лайфхак: record — это не только про данные. В них можно добавить свои конструкторы или методы для валидации. // Конструк
Java-лайфхак: record — это не только про данные. В них можно добавить свои конструкторы или методы для валидации.
// Конструкторы, статические методы и методы экземпляра:

public record Email(String address) {

    // Конструктор с валидацией
    public Email {
        if (address == null || !address.matches("^[\\w-.]+@([\\w-]+\\.)+[\\w-]{2,4}$")) {
            throw new IllegalArgumentException("Некорректный email: " + address);
        }
    }

    // Метод экземпляра
    public String domain() {
        return address.substring(address.indexOf('@') + 1);
    }

    // Статический метод
    public static Email from(String raw) {
        return new Email(raw.trim().toLowerCase());
    }
}
👉 Java Portal

Может пригодится: самохостящаяся система uptime-мониторинга, которую можно развернуть у себя и следить за тем, работают ли тв
Может пригодится: самохостящаяся система uptime-мониторинга, которую можно развернуть у себя и следить за тем, работают ли твои HTTP/S сервисы. Приложение показывает статус, считает аптайм, умеет проверять SSL, есть публичные статус-страницы, уведомления и прочее. Забираем здесь 👉 Java Portal

Java совет: по возможности не возвращай из методов изменяемые внутренние коллекции. Это дает плюсы: 1. Не светишь внутреннее состояние, меньше рисков и утечек 2. Можно спокойно менять реализацию под капотом, не ломая остальной код Если всё же нужно возвращать коллекции напрямую, можно сделать так: - Вернуть глубокие копии коллекций (сложнее в реализации) - Вернуть только read-only представление, например:
Collections.unmodifiableList(items)
👉 Java Portal

Spring Boot: все важные аннотации 👉 Java Portal
Spring Boot: все важные аннотации 👉 Java Portal

Какие фичи C++ реально стоят того, чтобы ими пользоваться каждый день — а какие живут только в докладах и спорах на форумах? Во втором выпуске «АйТир Листа» встретились два практикующих разработчика — Данил Черепанов (МойОфис) и Антон Полухин (Яндекс) — и разобрали любимые и спорные возможности C++. Где-то всё было однозначно, а местами мнения разошлись кардинально 🙂 👉 Выпуск ЗДЕСЬ Реклама ООО "НОВЫЕ ОБЛАЧНЫЕ ТЕХНОЛОГИИ" ИНН: 7703807270 erid: 2W5zFJaQXLt

Spring Boot: аккуратно задавайте границы @ComponentScan, чтобы случайно не просканировать целиком весь пакет. Предположим, вы пишете что-то вроде @ComponentScan("com.mycompany"), хотя на самом деле нужно сканировать только часть подпакетов com.mycompany: - Увеличивается время сканирования classpath - Замедляется старт приложения - Подтягиваются классы, которые вообще не должны регистрироваться как Spring-бины Лучшие практики: Полагайтесь на дефолты:
@SpringBootApplication
public class MyApplication { }
По умолчанию Spring сканирует только подпакеты пакета, в котором лежит MyApplication. Сканируйте конкретные подпакеты:
@ComponentScan({
    "com.mycompany.myapp.product",
    "com.mycompany.myapp.order"
})
👉 Java Portal

Типы Серверов в Современных Системах 👉 Java Portal
Типы Серверов в Современных Системах 👉 Java Portal

⭐️ Road To Highload: Крупноблочная архитектура В видеопроекте Road to Highload Сергей Трегуб, руководитель бэкенд‑разработки
⭐️ Road To Highload: Крупноблочная архитектура В видеопроекте Road to Highload Сергей Трегуб, руководитель бэкенд‑разработки продуктовых сервисов Яндекс 360, рассказывает, как крупноблочная архитектура упрощает коммуникацию между разными командами разработки и помогает быстро принимать решения: в каком компоненте разместить новую бизнес‑логику и какие дополнительные блоки потребуются для её поддержки.
Road to Highload — это цикл видеоматериалов от Яндекс 360 о том, как строятся системы, которыми ежедневно пользуются миллионы людей и тысячи компаний. Здесь обсуждаются high‑load и отказоустойчивость не по учебникам, а на основе многолетнего практического опыта.
Смотрите проект, чтобы узнать, как создаются одни из крупнейших облачных сервисов в России: ➕ Сайт проекта VK Видео Ютуб