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 11 773 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 10 276-o'rinni va Rossiya mintaqasida 54 524-o'rinni egallagan.

📊 Auditoriya ko‘rsatkichlari va dinamika

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

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

  • Tasdiqlash holati: Tasdiqlanmagan
  • Jalb etish (ER): Auditoriya o‘rtacha 10.13% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 5.77% ini tashkil etuvchi reaksiyalarni to‘playdi.
  • Post qamrovi: Har bir post o‘rtacha 1 193 marta ko‘riladi; birinchi sutkada odatda 680 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 28 Avgust, 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.

11 773
Obunachilar
-124 soatlar
-377 kunlar
-15330 kunlar
Postlar arxiv
freeCodeCamp выкатили бесплатный курс по Git и GitHub для новичков. За 1 час разберёшь базу: ветки, слияния, pull request’ы и
freeCodeCamp выкатили бесплатный курс по Git и GitHub для новичков. За 1 час разберёшь базу: ветки, слияния, pull request’ы и базовую командную работу. Отличный быстрый вход для тех, кто откладывал Git «на потом». Git-курс тут 👉 Java Portal

Java-совет: ты можешь использовать LinkedHashMap, чтобы легко реализовать LRU-кеш (Least Recently Used). Тебе просто нужно за
Java-совет: ты можешь использовать LinkedHashMap, чтобы легко реализовать LRU-кеш (Least Recently Used). Тебе просто нужно заинстанцировать это вот так:
int capacity = 3;
Map<Integer, String> cache = new LinkedHashMap<>(capacity, 0.75f, true) {
    protected boolean removeEldestEntry(Map.Entry eldest) {
        return size() > capacity;
    }
};

cache.put(1, "one");
cache.put(2, "two");
cache.put(3, "three");
cache.get(1);
cache.put(4, "four"); // 2 удаляется (наименее недавно использованный)

System.out.println(cache);
👉 Java Portal

Нужна API, чтобы попрактиковаться в программировании? Это, пожалуй, лучший вариант для приложений с прогнозом погоды. ✓ Полно
Нужна API, чтобы попрактиковаться в программировании? Это, пожалуй, лучший вариант для приложений с прогнозом погоды. ✓ Полностью бесплатная ✓ Без регистрации и без API-ключа ✓ Работает по HTTPS и с включённым CORS Можно тренироваться с JavaScript, Python, Java и чем угодно ещё: → open-meteo.com 👉 Java Portal

+3
⚡️ ВАЙБ-КОДИНГ теперь в Telegram! Ребята сделали крутейший канал, где на наглядных примерах и понятном языке рассказывают как войти в новую эру разработки с ИИ, делятся полезными фишками и инструментами Подписывайтесь: @vibecoding_tg

Совет по Java: начиная с Java 19 можно потрогать фичу под названием virtual threads. Virtual threads это лёгкие потоки, которые управляются JVM, а не операционной системой. JVM умеет приостанавливать и возобновлять выполнение без лишней траты ресурсов ОС. IO-вызовы не блокируют потоки ОС. Виртуальные потоки работают поверх небольшого пула платформенных потоков. Пример:
try (ExecutorService executor = Executors.newVirtualThreadPerTaskExecutor()) {
    for (int i = 0; i < 10000; i++) {
        executor.submit(() -> {
            Thread.sleep(1000);
        });
    }
}
👉 Java Portal

Знали, что у EnableWebSecurity есть параметр debug, который включает отладку безопасности? 🤯 Это помогает разобраться, что вообще происходит во время разработки. Но в проде такое включать нельзя. 👉 Java Portal

GitHub теперь в Telegram! Самый прогерский канал, где за 10 минут ты научишься: / Пробив по фото и номеру в ТГ // Как взломат
GitHub теперь в Telegram! Самый прогерский канал, где за 10 минут ты научишься: / Пробив по фото и номеру в ТГ // Как взломать вебку подруги /// Мануал по OSINT разведке Подписывайся, нас уже сотни тысяч: >@GitHub

Совет по Java: старайся не шарить данные между потоками. Используй неизменяемые объекты Или строй взаимодействие потоков чере
Совет по Java: старайся не шарить данные между потоками. Используй неизменяемые объекты Или строй взаимодействие потоков через сообщения, без прямой модификации общего состояния С неизменяемыми объектами:
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());
    }
}
Обмен сообщениями:
...
new Thread(() -> {
    try {
        queue.put("mess1");
    } catch (InterruptedException e) {}
}).start();

...

new Thread(() -> {
    try {
        String mess = queue.take();
    } catch (InterruptedException e) {}
}).start();
👉 Java Portal

Одна из самых опасных проблем в распределенных системах это двойная запись: сохранить что-то в своей базе и параллельно опубл
Одна из самых опасных проблем в распределенных системах это двойная запись: сохранить что-то в своей базе и параллельно опубликовать событие в другой системе, рассчитывая что оба шага пройдут вместе. А что если нет? Представь классический поток: 1️⃣Сохраняешь заказ в базе. 2️⃣Отправляешь событие в Kafka или делаешь запрос в другую API, чтобы сообщить что заказ создан. Где проблема? 👉Если шаг 1 прошел, а шаг 2 упал: База говорит заказ создан, но внешний сервис об этом не знает. 👉Если шаг 2 прошел, а шаг 1 упал: Ты опубликовал фантомное событие о том, чего нет. Это и есть двойная запись. И если думаешь что это тебя не коснется, просто подожди пока прод покажет тебе реальность. Тут и появляется Transactional Outbox Pattern. Что именно делает этот паттерн? 🤔 Избавляет от необходимости писать в два места одновременно. Превращает внешнюю запись в надежный процесс. Идея простая, вот минимальный способ это реализовать: 1. Когда сохраняешь данные в базе (INSERT/UPDATE), ты параллельно пишешь событие в отдельную таблицу, например outbox. 2. Оба INSERT выполняются в одной транзакции. Если что-то падает, падает все. Так достигается гарантированное консистентное состояние. 3. Затем отдельный процесс (poller или scheduler) читает эту таблицу и публикует реальное событие в Kafka, RabbitMQ или куда нужно. 4. Если публикация упала, ничего страшного. Событие остается в таблице пока его не получится отправить. С этим достаточно простым потоком ты получаешь консистентность без двойной записи. Почему это так хорошо работает? Потому что принимает неприятную правду: Нельзя рассчитывать что два разных системы корректно обработают одну и ту же транзакцию. ❌База умеет в транзакции. ❌Kafka — нет. ❌Rabbit — нет. ❌Webhook тем более. Поэтому решение не в том чтобы это «продавить», а в том чтобы адаптировать архитектуру к реальности: Единственная запись, которой реально можно доверять — запись в твою базу. Все внешнее (то что не хранится в твоей базе) должно выполняться позже, с ретраями, логами и прочим. Но да, это не бесплатно. Нужно: —> Создать таблицу outbox. —> Настроить ретраи. —> Удалять обработанные события. —> Мониторить poller (или любую другую реализацию). —> Не допустить двойные вставки в outbox чтобы избежать дублей. И ключевая мысль: Цена Transactional Outbox намного ниже цены ручной починки рассинхрона между сервисами и системами. А это в проде дороже золота. 👉 Java Portal

Совет по Java: в JPA можно использовать native query не только для SELECT, но и для UPDATE, DELETE и INSERT. Учти, что в этом
Совет по Java: в JPA можно использовать native query не только для SELECT, но и для UPDATE, DELETE и INSERT. Учти, что в этом случае всё проходит мимо EntityManager и PersistenceContext. 👉 Java Portal

Кандидаты часто путаются, когда спрашивают:
в чем разница между rate limiting и throttling?
На самом деле всё очень просто. * Rate limiting Задаёт фиксированный максимум запросов. Если превысил лимит — лишние запросы просто блокируются. Пример: 100 запросов в минуту разрешено. 101-й — отклоняется. * Throttling Не блокирует. Он замедляет обработку запросов, когда ты начинаешь спамить. Пример: после 100 запросов каждый следующий обрабатывается с задержкой, но всё равно проходит. Запомнить легко: Rate limiting — стоп сверхлимита. Throttling — замедление сверхлимита. 👉 Java Portal

Java даёт много вариантов по части синтаксиса, но функциональные интерфейсы — одна из самых аккуратных и приятных фишек языка ☕️ Сегодня разберём 4 штуки, которые встречаются чаще всего. Если поймёшь их, писать код станет современнее, местами чище Идея простая 👇 Функциональный интерфейс — это интерфейс с одним абстрактным методом. Благодаря этому его можно реализовать через лямбды. В Java их много, но вот четыре, которые ты будешь видеть постоянно: 👉 Consumer — делает что-то Consumer принимает значение и ничего не возвращает. Отлично подходит для побочных эффектов: логирование, вывод в консоль, сохранение, отправка и так далее.
Consumer<String> consumer = str -> System.out.println(str);
consumer.accept("Hola");
Проще говоря: "получи это и сделай с этим что-то". 👉 Supplier — дай что-то Supplier ничего не принимает и возвращает значение. Часто используется для получения конфигураций, генерации ID, ленивого создания объектов и прочего.
Supplier<Double> supplier = () -> Math.random();
supplier.get();
То есть: "выдай нужную штуку, когда я попрошу". 👉 Function<T, R> — преобразуй что-то Принимает значение типа T и возвращает значение типа R. На практике эта штука — самая распространённая.
Function<Integer, String> function = number -> "N° " + number;
function.apply(5);
По смыслу: "получаю T, возвращаю R". 👉Predicate — реши что-то (true/false) Принимает значение и возвращает boolean. Часто нужен для фильтрации списков, простых проверок, валидаций, правил.
Predicate<String> predicate = s -> s.length() > 5;
predicate.test("Java");
То есть: "подходит или не подходит под условие". Важно: Эти интерфейсы существуют не ради компактного кода. Они нужны, чтобы ты думал через операции, а не через классы. Они идеально заходят в Streams, в коллбеки, в валидации, в композицию логики — везде, где есть простая операция, для которой не нужна отдельная сущность. Это не замена всему на свете. Речь не про то, чтобы переписать всю систему в функциональном стиле. Но они реально помогают во множестве сценариев. Если научишься читать Function, Consumer, Supplier и Predicate, то спокойно разберёшь и напишешь современный Java-код без лишних страданий. И это уже хороший шаг вперёд. 😁 👉 Java Portal

Разработчик выложил проект ShadowStream, систему отслеживания изменений в базе данных (CDC), построенную на PostgreSQL logical replication. Цель проекта — ловить любые изменения в реальном времени и передавать их в потоковую инфраструктуру. Как это работает: - изменения в базе (INSERT, UPDATE, DELETE) сразу перехватываются через logical replication - события сериализуются в Protobuf и отправляются в Redis Streams для быстрого доступа - параллельно те же данные архивируются в Kafka для надежного хранения - Kafka использует grouped consumer'ов: два обработчика работают параллельно, плюс резервная группа с отдельным offset - поверх всего в Django Admin добавлена визуализация gRPC-вызовов Исходники открыты на GitHub Проект может пригодиться тем, кто работает с потоковой обработкой данных, аналитикой, репликацией или интеграцией микросервисов. 🙂 👉 Java Portal

Уроки по ИБ, белый хакинг, вирусы, социальная инженерия, безопасность ИБ Книга — Более 1660 русскоязычных книг по ИБ и Социал
Уроки по ИБ, белый хакинг, вирусы, социальная инженерия, безопасность ИБ Книга Более 1660 русскоязычных книг по ИБ и Социальной Инженерии можно найти на канале. no system is safe // cybersec — один из древнейших ресурсов по информационной безопасности в рунете. Книги, курсы, полезные тулсы, уроки по Linux, новости клирнета и даркнета. Python и 1000 программ уроки по Python. Python мы будем использовать для создания хакерского софта. Этичный Хакер — один из крупнейших ресурсов по информационной безопасности в СНГ. Бэкап — канал с исходниками популярных проектов. Здесь вы найдёте исходные коды нейросетей, ботов, сайтов и других интересных проектов, которые дадут дополнительные знания Весь материал на каналах в общем доступе. Ничего лишнего.

Можно использовать асинхронный логгинг в Spring Boot, настроив logback (logback-spring.xml). Лог-сообщения отправляются в очередь и обрабатываются отдельным фоновым потоком. Это уменьшает задержки, связанные с вводом-выводом. Положи файл конфигурации logback в папку resources:
src/main/resources/logback-spring.xml
Вот пример:
<configuration>

    <!-- Console appender, обёрнутый в асинхронный -->
    <appender name="ASYNC_CONSOLE" class="ch.qos.logback.classic.AsyncAppender">
        <appender-ref ref="CONSOLE" />
        <queueSize>5000</queueSize>
        <discardingThreshold>0</discardingThreshold>
        <includeCallerData>false</includeCallerData>
    </appender>

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] %logger - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="ASYNC_CONSOLE" />
    </root>

</configuration>
👉 Java Portal

Какой будет вывод и почему?
class Person {
    String name;
}

public class Test {
    static void modify(Person obj) {
        obj.name = "Rahul";         
        obj = new Person();         
        obj.name = "Amit";
    }

    public static void main(String[] args) {
        Person p = new Person();
        p.name = "Sumit";

        modify(p);

        System.out.println(p.name);
    }
}
Если ты не можешь ответить на это, значит ты пока не готов к интервью. 👉 Java Portal

Как Яндекс кошмарит вас на собеседованиях ❤️ Успешно пройти секцию по профильным хардам, но смачно опозориться на логической
Как Яндекс кошмарит вас на собеседованиях ❤️ Успешно пройти секцию по профильным хардам, но смачно опозориться на логической задаче с часами? В этом вся суть интервью в Яндексе 😆 Автор этой истории побывал на собесе в Яндексе и рассказал всю правду о клоунаде, которая там происходила. Готовьте попкорн! Вита Заебумба | Путь корпората — топовый канал про IT, сферу найма, трешовые собесы и работу в корпорациях. Просто кладезь кулстори не только от автора, но и от подписчиков Атмосфера 12/10: авторская подача, юмор и топ комменты от аудитории, состоящей из бизнес/системных, дата аналитиков, разрабов, продактов и других айтишников 🔥Истории, которые уже успели стать бестселлером: 🟡Поймала дешёвок за руку на собесе в Ягодках 🛍 🟡Мое мнение, что будет с рынком найма в 2026 году + полезные материалы 🟡Эффект Писюхи, или как я столкнулась с эйджизмом в найме 🟡Aston, разлогинься, или как продать свою жопу в рабство 🟡Если твой руководитель ведет себя так, беги оттуда Но тут не только про веселье и треш. Подписывайтесь, если хотите: 🟢Узнать лайфхаки продающего резюме 🟢Быть в курсе актуальной ситуации на рынке 🟢Обойти 90% кандидатов 🟢Не продешевить на собесе и выгодно себя продать ➡️ @vitazaebymba

Совет по Spring Boot Когда пишешь REST API на Spring Boot, обычно используют префикс /api Чтобы не лепить @RequestMapping("/a
Совет по Spring Boot Когда пишешь REST API на Spring Boot, обычно используют префикс /api Чтобы не лепить @RequestMapping("/api") в каждом контроллере, можно настроить это один раз вот так:
@Configuration
class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void configurePathMatch(PathMatchConfigurer configurer) {
        configurer.addPathPrefix("/api",
                aClass -> aClass.getPackage().getName().startsWith("com.sivalabs.bookstore"));
    }
}
👉 Java Portal

Spring Modulith добавили поддержку Application-Module Aware миграций в Flyway. Посмотреть, как это работает, можно тут👇 http
+1
Spring Modulith добавили поддержку Application-Module Aware миграций в Flyway. Посмотреть, как это работает, можно тут👇 https://github.com/sivaprasadreddy/spring-modular-monolith 👉 Java Portal

Приглашаем на ЮMoneyDay — бесплатную онлайн-конференцию про финтех и IT 🔥 На протяжении двух дней будем общаться с разработч
Приглашаем на ЮMoneyDay — бесплатную онлайн-конференцию про финтех и IT 🔥 На протяжении двух дней будем общаться с разработчиками, инженерами, тестировщиками, продактами, дизайнерами и другими специалистами из ЮMoney. Они расскажут про свой опыт работы в большом финансовом продукте, поделятся лайфхаками и секретами. Будут доклады по 16 направлениям: 🟣 Будущее финтеха 🟣 Бэкенд 🟣 Фронтенд 🟣 Тестирование 🟣 Python 🟣 Менеджмент проектов 🟣 Менеджмент продуктов 🟣 Системный анализ 🟣 SQL 🟣 UX 🟣 ИИ 🟣 Архитектура IT-решений 🟣 Внутренние системы 🟣 Мобильная разработка 🟣 Инфраструктура 🟣 О компании Встречаемся онлайн 5 и 6 декабря в 11:00 мск. Чтобы участвовать, зарегистрируйтесь на сайте конференции