es
Feedback
Easy Java

Easy Java

Ir al canal en Telegram

Лучшие обучающие материалы и другие полезности для Java-разработчиков. Сотрудничество: @heywan_n1 Цены: @heywan_media Реклама на бирже: https://telega.in/c/+r8kkGSypBY84MmIy

Mostrar más
5 037
Suscriptores
-224 horas
-187 días
-7430 días
Archivo de publicaciones
📖 Разработка на Java без всего Снова показываю как можно вести разработку «голыми руками» — без IDE, документации и даже инт
📖 Разработка на Java без всего Снова показываю как можно вести разработку «голыми руками» — без IDE, документации и даже интернета. На этот раз с помощью «пользовательской» Ubuntu Linux и OpenJDK. ⛓ Читать статью ➡️ Easy Java | #Статья

👩‍💻 Что такое DelayQueue в Java и зачем она нужна? DelayQueue — это потокобезопасная очередь из java.util.concurrent, где элементы становятся доступными только после истечения заданного времени задержки. Элементы должны реализовывать интерфейс Delayed.
Она удобна для отложенной обработки задач — таймеров, кэшей с TTL, планировщиков.
• Элементы выдаются только после задержки • Работает в многопоточном режиме • Идеальна для задач с таймаутами ⚡️ Пример:
import java.util.concurrent.*;

class Task implements Delayed {
    long start = System.currentTimeMillis() + 1000;
    public long getDelay(TimeUnit u) { return u.convert(start - System.currentTimeMillis(), TimeUnit.MILLISECONDS); }
    public int compareTo(Delayed o) { return Long.compare(getDelay(TimeUnit.MILLISECONDS), o.getDelay(TimeUnit.MILLISECONDS)); }
    public String toString() { return "Задача выполнена"; }
}

public class Main {
    public static void main(String[] args) throws Exception {
        DelayQueue<Task> q = new DelayQueue<>();
        q.put(new Task());
        System.out.println(q.take()); // ждём 1 сек
    }
}
👀 DelayQueue особенно полезна для отложенных задач, TTL-кэшей и планировщиков.
➡️ Easy Java | #Теория

Ответ:
Anonymous voting

➡️ Easy Java | #Викторина
➡️ Easy Java | #Викторина

Вопрос с собеса Что такое WeakReference в Java и зачем она используется? Пример🔽
import java.lang.ref.WeakReference;

public class Main {
    public static void main(String[] args) {
        String strong = new String("Hello");
        WeakReference<String> weak = new WeakReference<>(strong);

        System.out.println("До GC: " + weak.get()); // ➔ Hello

        strong = null;
        System.gc(); // просим сборщик мусора освободить память

        System.out.println("После GC: " + weak.get()); // ➔ null (объект мог быть удалён)
    }
}
Ответ🔽
WeakReference позволяет держать ссылку на объект, не мешая сборщику мусора его удалить. Как только на объект не остаётся сильных (обычных) ссылок, GC может освободить память, даже если есть WeakReference. 📌 Основные применения: — кэши, где не критично хранить данные постоянно — структуры, которые не должны мешать очистке памяти — предотвращение утечек в долгоживущих коллекциях.
➡️ Easy Java | #Собес

Ну да я слева ➡️ Easy Java | #Мемы

⚡️Бесплатное обучение фронтенд-разработке с нуля с личной поддержкой от наставника На канале Интенсивный JavaScript разработчик и действующий тимлид помогает изучить фронтенд на практике Когда-то он работал крупье в казино, а сейчас помогает новичкам попасть в IT и собеседует людей в свою команду С 30 августа по 2 сентября он проводит бесплатный интенсив, где поможет разобраться во фронтенде с нуля Что получите на интенсиве ✅ Напишете свой проект на JS: сайт с аниме ✅ Узнаете, как вам сейчас попасть в сферу, каких ошибок избегать ✅ Что делать с ИИ: стоит ли заходить в ИТ, или уже поздно, и нас всех заменят ✅ и получите пошаговый план изучения фронтенда с нуля до трудоустройства или стабильных 50 тысяч на фрилансе Интенсив подойдёт, даже если вы новичок — всё объясняют так, чтобы поняла даже ваша бабушка Подписывайтесь, осталось 27 мест Учиться самостоятельно можно бесконечно, если не знать, куда копать. На интенсиве сократите время на поиск информации и получите пошаговый план от разработчика, который нанимает новичков в команду 📌 Если вы уже пробовали изучать фронтенд, но каждый шаг — это гуглинг, страдание и тысяча вкладок, — приходите на интенсив. Увидите путь от вёрстки до Angular и сможете продолжать изучать фронтенд без хаоса в голове. 👉Участвовать бесплатно 🔥Первый урок уже доступен

Ответ:
Anonymous voting

➡️ Easy Java | #Викторина
➡️ Easy Java | #Викторина

📖 Хватит терять время! Ускоряем сборку с помощью Spring Test Profiler Покажу: Spring Test Profiler находит лишние перезапуск
📖 Хватит терять время! Ускоряем сборку с помощью Spring Test Profiler Покажу: Spring Test Profiler находит лишние перезапуски контекста и рассинхрон конфигов; унифицирую окружение, чиню кэш и ускоряю интеграц-тесты. Будет чек-лист. ⛓ Читать статью ➡️ Easy Java | #Статья

👩‍💻 Что такое Exchanger в Java и зачем он нужен? Exchanger — это синхронизатор из пакета java.util.concurrent, который позволяет двум потокам обмениваться данными в точке встречи. Каждый поток вызывает метод exchange(), и когда оба потока доходят до этой точки, они обмениваются переданными объектами.
Это удобно, когда два потока должны координировать свои действия, передавая результаты вычислений друг другу.
• Позволяет безопасно обмениваться объектами между потоками • Подходит для реализации producer-consumer моделей • Удобен для синхронных этапов вычислений ⚡️ Пример:
import java.util.concurrent.Exchanger;

public class Main {
    public static void main(String[] args) {
        Exchanger<String> exchanger = new Exchanger<>();

        Runnable producer = () -> {
            try {
                String data = "Данные от Producer";
                System.out.println("Producer отправил: " + data);
                String response = exchanger.exchange(data);
                System.out.println("Producer получил: " + response);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        };

        Runnable consumer = () -> {
            try {
                String data = "Ответ от Consumer";
                System.out.println("Consumer отправил: " + data);
                String received = exchanger.exchange(data);
                System.out.println("Consumer получил: " + received);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        };

        new Thread(producer).start();
        new Thread(consumer).start();
    }
}
👀 Exchanger особенно полезен, когда два потока выполняют разные задачи и должны регулярно обмениваться результатами — например, генератор данных и обработчик, или два этапа сложного расчёта.
➡️ Easy Java | #Теория

Ответ:
Anonymous voting

➡️ Easy Java | #Викторина
➡️ Easy Java | #Викторина

Вопрос с собеса Что такое ConcurrentHashMap в Java и чем он отличается от HashMap? Пример🔽
import java.util.concurrent.ConcurrentHashMap;
import java.util.Map;

public class Main {
    public static void main(String[] args) {
        Map<String, Integer> map = new ConcurrentHashMap<>();

        map.put("A", 1);
        map.put("B", 2);

        map.forEach((k, v) -> {
            System.out.println(k + " = " + v);
            map.put("C", 3); // не вызовет ConcurrentModificationException
        });

        System.out.println(map);
    }
}
Ответ🔽
HashMap не является потокобезопасной: если несколько потоков одновременно изменяют её, возможны ошибки и ConcurrentModificationException. ConcurrentHashMap — это потокобезопасная альтернатива, которая: — позволяет одновременно читать и писать без полной блокировки всей карты — делит данные на сегменты для повышения производительности — гарантирует согласованность данных при многопоточном доступе 📌 Если работа только в одном потоке — можно использовать обычный HashMap. Если данные разделяются между потоками — правильнее брать ConcurrentHashMap.
➡️ Easy Java | #Собес

Вот вот ➡️ Easy Java | #Мемы
Вот вот ➡️ Easy Java | #Мемы

Ответ:
Anonymous voting

➡️ Easy Java | #Викторина
➡️ Easy Java | #Викторина

📖 Как заменить GitHub Copilot на полностью офлайн‑Continue Plugin Покажу, как приручить Continue вместо Copilot: подключу ло
📖 Как заменить GitHub Copilot на полностью офлайн‑Continue Plugin Покажу, как приручить Continue вместо Copilot: подключу локальную LLM, всё без сети — файлы не утекут. Настройка в IDE+LM Studio, фишки, грабли, бенч, выводы. ⛓ Читать статью ➡️ Easy Java | #Статья

👩‍💻 Что такое Semaphore в Java и зачем он нужен? Semaphore — это синхронизатор из пакета java.util.concurrent, который ограничивает количество потоков, одновременно обращающихся к ресурсу. Он работает как счётчик разрешений (permits): поток должен получить разрешение, чтобы продолжить работу, и обязан его освободить после завершения.
Это удобно, когда ресурс ограничен — например, доступ к базе, пулу соединений или ограниченному количеству файлов.
• Контролирует доступ к общим ресурсам • Поддерживает справедливый режим (fair) для очередности • Помогает избежать перегрузки системных ресурсов ⚡️ Пример:
import java.util.concurrent.Semaphore;

public class Main {
    private static final Semaphore semaphore = new Semaphore(2); // максимум 2 потока одновременно

    public static void main(String[] args) {
        Runnable task = () -> {
            try {
                semaphore.acquire();
                System.out.println(Thread.currentThread().getName() + " получил доступ");
                Thread.sleep(1000);
                System.out.println(Thread.currentThread().getName() + " освобождает доступ");
            } catch (InterruptedException e) {
                e.printStackTrace();
            } finally {
                semaphore.release();
            }
        };

        for (int i = 1; i <= 5; i++) {
            new Thread(task, "Поток " + i).start();
        }
    }
}
👀 Semaphore особенно полезен в системах, где необходимо ограничить количество одновременных операций — например, при обращении к API с лимитами, управлении пулом соединений или ограничении нагрузки на сервис.
➡️ Easy Java | #Теория

AI-агенты: новая волна автоматизации бизнеса 🔛 Бизнес все активнее внедряет AI-агентов, которые работают быстрее, дешевле и
AI-агенты: новая волна автоматизации бизнеса 🔛 Бизнес все активнее внедряет AI-агентов, которые работают быстрее, дешевле и без усталости. Это не просто чат-боты, а полноценные цифровые сотрудники, которые автоматизируют процессы в HR, финансах, маркетинге и других сферах. Админ канала Ai, работай! подготовил обзор российских и зарубежных решений: где AI-агенты уже зарабатывают деньги, как они трансформируют рынок и какие технологии стоит изучить сегодня, чтобы не остаться позади. Забирай PDF бесплатно: https://t.me/+fSgLZqj-yt04MWYy