ch
Feedback
Easy Java

Easy Java

前往频道在 Telegram

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

显示更多
5 038
订阅者
-224 小时
-187
-7430
帖子存档
Что выведет код?
Anonymous voting

👩‍💻 Викторина: что выведет код?
// Предположим, что этот код находится в файле src/com/example/Main.java
package com.example;

import java.net.URL;
import java.net.URLClassLoader;

class Secret {
    static String message = "Top Secret";
}

public class Main {
    public static void main(String[] args) throws Exception {
        // Создаем загрузчик, который видит тот же класс, но в другом пакете
        URLClassLoader loader = new URLClassLoader(
            new URL[]{new URL("file:./classes/")},
            ClassLoader.getPlatformClassLoader() // Не делегирует системному загрузчику
        );
        
        Class<?> secretClass = loader.loadClass("com.example.Secret");
        String value = (String) secretClass.getField("message").get(null);
        
        System.out.println("Value: " + value);
        
        // Проверяем равенство классов
        System.out.println("Same class: " + (Secret.class == secretClass));
        
        // Проверяем instanceof
        Secret s = new Secret();
        System.out.println("Instance: " + secretClass.isInstance(s));
    }
}
➡️ Easy Java | #Викторина

👩‍💻 Что такое Thread.sleep() и зачем он нужен? Thread.sleep() — это статический метод класса java.lang.Thread, который приостанавливает выполнение текущего потока на указанное количество миллисекунд или наносекунд.
```java
public class ThreadSleepExample {
    
    public static void main(String[] args) {
        System.out.println("Демонстрация Thread.sleep()");
        
        // Простая задержка
        System.out.println("Начало работы");
        try {
            Thread.sleep(2000); // Пауза 2 секунды
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
            System.out.println("Поток был прерван");
        }
        System.out.println("Прошло 2 секунды");
        
        // Создание анимации загрузки
        System.out.print("Загрузка");
        for (int i = 0; i < 5; i++) {
            try {
                Thread.sleep(500); // Полсекунды между точками
                System.out.print(".");
            } catch (InterruptedException e) {
                break;
            }
        }
        System.out.println(" Готово!");
        
        // Имитация таймера
        for (int seconds = 3; seconds > 0; seconds--) {
            System.out.println("Осталось: " + seconds + " сек");
            try {
                Thread.sleep(1000); // Пауза 1 секунда
            } catch (InterruptedException e) {
                System.out.println("Таймер прерван");
                break;
            }
        }
        System.out.println("Время вышло!");
        
        // Пример с перехватом прерывания
        Thread countingThread = new Thread(() -> {
            for (int i = 1; i <= 10; i++) {
                System.out.println("Считаем: " + i);
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    System.out.println("Поток прервали на счете " + i);
                    return; // Выходим из метода run()
                }
            }
        });
        
        countingThread.start();
        
        // Даем потоку посчитать до 3, потом прерываем
        try {
            Thread.sleep(3500);
            countingThread.interrupt(); // Прерываем поток
        } catch (InterruptedException e) {
            // Игнорируем
        }
    }
}
```

Особенности:

· Выбрасывает InterruptedException — checked exception
· Точность задержки зависит от операционной системы
· Приостанавливает только текущий поток
· После пробуждения поток переходит в состояние Runnable

Для чего особенно полезен:

· Создание задержек в UI анимациях
· Имитация длительных операций при тестировании
· Управление частотой выполнения в циклах
· Простая синхронизация потоков во времени
· Реализация тайм-аутов и ожидания
· Демонстрация многопоточности в учебных примерах

Важные замечания:
     } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
            System.out.println("Поток был прерван");
        }
        System.out.println("Прошло 2 секунды");
        
        // Создание анимации загрузки
        System.out.print("Загрузка");
        for (int i = 0; i < 5; i++) {
            try {
            
➡️ Easy Java | #Теория

Как разработчик решил параллельно найму пилить свои бизнес-проекты с нулевым опытом: дневник с передовой Меня зовут Александр Торбек, И я попал в день сурка: код писать умею, зарплата стабильная. Но в заднице зудит ощущение катастрофического застоя. Поэтому я сделал глупейшую вещь — начал разрабатывать продукты. Без связей, плана и стратегии. В блоге буду фиксировать: — идеи (и почему 90% из них — говно собаки) — что сделал, сколько заработал — мысли айтишника, который впервые думает как продакт, а не как тупой исполнитель Я хочу пройти весь путь от основателя продукта до продажника. И выяснить, смогу ли без бизнес-бэкграунда выйти на уровень дядек в элитных пиджаках. Если тоже хотите создавать свои продукты — посмотрите, как я набиваю шишки первым: @atorbek_it

Точно ли нейронки эволюционируют так быстро? ➡️ Easy Java | #Мем
Точно ли нейронки эволюционируют так быстро? ➡️ Easy Java | #Мем

Библиотека для автоматического модульного тестирования Тесты — обязательная часть любого проекта, но иногда этой части разраб
Библиотека для автоматического модульного тестирования Тесты — обязательная часть любого проекта, но иногда этой части разработки уделяет не так много внимания. JUnit — библиотека, позволяющая автоматизировать данный процесс. Подходит для Java 17 или Kotlin 2.1. ⛓ Ознакомиться с библиотекой ➡️ Easy Java | #Ресурсы

Что выведет код?
Anonymous voting

👩‍💻 Викторина: что выведет код?
import java.util.HashSet;
import java.util.Set;

record Point(int x, int y) {
    // Переопределяем equals, но не hashCode
    @Override
    public boolean equals(Object obj) {
        if (!(obj instanceof Point p)) return false;
        return this.x == p.x && this.y == p.y;
    }
}

public class Main {
    public static void main(String[] args) {
        Set<Point> set = new HashSet<>();
        
        Point p1 = new Point(1, 2);
        Point p2 = new Point(1, 2);
        Point p3 = new Point(3, 4);
        
        set.add(p1);
        set.add(p2);
        set.add(p3);
        
        System.out.println(set.size());
        System.out.println(p1.equals(p2));
        System.out.println(set.contains(new Point(1, 2)));
    }
}
➡️ Easy Java | #Викторина

⚡️ Писать код руками больше не нужно! Привет. Меня зовут Кирилл. Я создаю топовые подборки с уроками по AI и вайбкодингу: — 6
⚡️ Писать код руками больше не нужно! Привет. Меня зовут Кирилл. Я создаю топовые подборки с уроками по AI и вайбкодингу: — 60+ промптов для дебага: поиск ошибок, оптимизация кода — 40 бесплатных курсов по вайбкодингу — 150 гайдов, как использовать ChatGPT, Claude Code, Antigravity, Cursor, Perplexity, Lovable — 100 готовых модулей: авторизация, админки, логирование, тесты, i18n — 37 MCP серверов: дизайн, разработка, Тесты/QA, деплой Всего 10 минут в день на канале и ты начнешь писать код на 85% быстрее и сможешь за пару дней закрывать спринты. Подписывайся, чтобы получать подборки каждую неделю!

Вопрос с собеса Зачем в Java используется ключевое слово volatile? Пример🔽
public class Main {
    private static volatile boolean running = true;

    public static void main(String[] args) throws InterruptedException {
        Thread worker = new Thread(() -> {
            while (running) {
                // бесконечный цикл, пока running == true
            }
            System.out.println("Поток завершён");
        });

        worker.start();
        Thread.sleep(1000);
        running = false;
    }
}
Ответ🔽
volatile говорит JVM, что переменная может изменяться в других потоках, и запрещает кэшировать её значение. Без volatile поток может "застрять", не заметив изменения переменной. 📌 volatile не делает операции атомарными, но гарантирует видимость изменений между потоками. Используется для флагов, сигналов остановки и простейшей синхронизации
➡️ Easy Java | #Собес

В IT хватает тех, кто пересказывает чужие статьи. Но есть те, кто пишет изнутри системы. NeuroNinja 🥷🏻 - авторский канал инженера СберТехнологий, который показывает, что происходит по ту сторону интерфейса. В канале вы найдете: 🟢 Разборы реальных кейсов из практики 🟢 Гайды по нейросетям без воды 🟢 Полезные инструменты и лайфхаки 🟢 Честные мысли о трендах в IT Живые обсуждения для тех, кто не просто читает про ИИ, а строит его будущее🚀. 👉 Подписаться: https://t.me/+mAs8eSHFkjBkYTUy

👩‍💻 Что такое BufferedReader.lines() и зачем он нужен? BufferedReader.lines() — это метод, который возвращает Stream<String> строк, прочитанных из BufferedReader. Каждый элемент потока — это одна строка из файла или другого источника. ⚡️ Пример:
import java.io.*;
import java.nio.file.*;
import java.util.stream.*;

public class BufferedReaderLinesExample {
    public static void main(String[] args) {
        String filePath = "example.txt";
        
        // Создаем тестовый файл
        createTestFile(filePath);
        
        // Чтение файла с использованием lines()
        try (BufferedReader reader = Files.newBufferedReader(Paths.get(filePath))) {
            
            // Простое чтение всех строк
            System.out.println("Все строки файла:");
            reader.lines()
                  .forEach(System.out::println);
            
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        // Сложная обработка с Stream API
        try (BufferedReader reader = Files.newBufferedReader(Paths.get(filePath))) {
            
            System.out.println("\nАнализ файла:");
            
            long lineCount = reader.lines().count();
            System.out.println("Всего строк: " + lineCount);
            
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        // Фильтрация и преобразование
        try (BufferedReader reader = Files.newBufferedReader(Paths.get(filePath))) {
            
            System.out.println("\nСтроки содержащие 'Java':");
            reader.lines()
                  .filter(line -> line.contains("Java"))
                  .map(String::toUpperCase)
                  .forEach(System.out::println);
                  
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        // Параллельная обработка большого файла
        try (BufferedReader reader = Files.newBufferedReader(Paths.get(filePath))) {
            
            long wordCount = reader.lines()
                .parallel()  // Включаем параллельную обработку
                .flatMap(line -> Arrays.stream(line.split("\\s+")))
                .filter(word -> !word.isEmpty())
                .count();
                
            System.out.println("\nВсего слов в файле: " + wordCount);
            
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    private static void createTestFile(String path) {
        try (BufferedWriter writer = Files.newBufferedWriter(Paths.get(path))) {
            writer.write("Java - популярный язык программирования\n");
            writer.write("Stream API появился в Java 8\n");
            writer.write("BufferedReader предоставляет удобные методы\n");
            writer.write("lines() возвращает Stream строк\n");
            writer.write("Это полезно для обработки больших файлов\n");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
Особенно полезен для обработки больших лог-файлов, парсинге CSV, анализе текстовых данных, чтении конфигурационных файлов.
➡️ Easy Java | #Теория

➡️ Easy Java | #Мемы
➡️ Easy Java | #Мемы

Сеньор за полгода? 📈 Эта девушка получила оффер в IT-компанию, хотя весь её опыт — пара курсов с ютуба 😱 Она воспользовалас
Сеньор за полгода? 📈 Эта девушка получила оффер в IT-компанию, хотя весь её опыт — пара курсов с ютуба 😱 Она воспользовалась ИИ-помощником и легко скрыла все свои пробелы в знаниях. Теперь впереди: ⤵️ удалёнка, стартовое обучение и ставка 55$ в час. Проходи собеседования вместе с Interview Ninja 🥷 Проверь успех на себе — есть 100 бесплатных запросов на день. 👉 @interview_ninja

📖 Сборник из 350 вопросов с ответами на собеседование Java Junior В сборнике вопросы от самых базовых, до самых продвинутых
📖 Сборник из 350 вопросов с ответами на собеседование Java Junior В сборнике вопросы от самых базовых, до самых продвинутых среди «джуновских» вопросов. Сразу можно посмотреть ответ, что очень удобно. ⛓ Ссылка на сборник ➡️ Easy Java | #Ресурсы

Ухватил ОФФЕР с ЗП более чем 500к🤑 Несколько раз в месяц Топовые IT компании выкладывают вакансии с огромной зарплатой даже
Ухватил ОФФЕР с ЗП более чем 500к🤑 Несколько раз в месяц Топовые IT компании выкладывают вакансии с огромной зарплатой даже у джунов, а я расскажу как попасть на ТимЛида‼️ Я — Артем и в своём телеграм канале рассказываю: 🔴 Как максимально быстро вырасти до Тим Лида в IT компаний с нуля — [Инструкция] 🔴 Как собрать лучшую команду на удалёнке — [Пояснение] 🔴Подсказки и фишечки от ТимЛида с 13 летним опытом — [Список] Подписаться можно тут: https://t.me/+edzOK2TDrBNjZTVi

Что выведет код?
Anonymous voting

👩‍💻 Викторина: что выведет код?
def counter_decorator(func):
    count = 0
    def wrapper(*args, **kwargs):
        nonlocal count
        count += 1
        result = func(*args, **kwargs)
        print(f"Call {count}: {result}")
        return result
    return wrapper

@counter_decorator
def multiply(a, b):
    return a * b

multiply(2, 3)
multiply(4, 5)
multiply(6, 7)
➡️ Easy Java | #Викторина

👩‍💻 Что такое Optional.orElseThrow() и зачем он нужен? Optional.orElseThrow() — это метод класса Optional<T>, который возвращает значение, если оно присутствует, или выбрасывает исключение, если значение отсутствует. Добавлен в Java 10 как альтернатива get() с явным указанием исключения. ⚡️ Пример:
import java.util.*;
import java.util.function.Supplier;

public class OrElseThrowExample {
    
    public static void main(String[] args) {
        // Пример с пользователями
        Optional<User> user = findUserById(123);
        
        try {
            // Получение значения с дефолтным исключением
            User foundUser = user.orElseThrow();
            System.out.println("Найден пользователь: " + foundUser.name());
        } catch (NoSuchElementException e) {
            System.out.println("Пользователь не найден (дефолтное исключение)");
        }
        
        // С кастомным исключением
        Optional<User> emptyUser = findUserById(999);
        
        try {
            User user2 = emptyUser.orElseThrow(
                () -> new UserNotFoundException("Пользователь с ID 999 не существует")
            );
        } catch (UserNotFoundException e) {
            System.out.println("Поймано кастомное исключение: " + e.getMessage());
        }
        
        // Практический пример: валидация конфигурации
        Config config = loadConfig()
            .orElseThrow(() -> new IllegalStateException("Конфигурация не загружена"));
        
        System.out.println("Конфигурация загружена: " + config);
        
        // Цепочка вызовов с обработкой ошибок
        String result = findUserById(123)
            .map(User::email)
            .orElseThrow(() -> new RuntimeException("Email не найден"));
            
        System.out.println("Email пользователя: " + result);
    }
    
    static Optional<User> findUserById(int id) {
        // Имитация поиска в базе данных
        if (id == 123) {
            return Optional.of(new User(123, "Иван Иванов", "ivan@example.com"));
        }
        return Optional.empty();
    }
    
    static Optional<Config> loadConfig() {
        // Имитация загрузки конфигурации
        return Optional.of(new Config("production"));
    }
    
    record User(int id, String name, String email) {}
    record Config(String environment) {}
    
    static class UserNotFoundException extends Exception {
        public UserNotFoundException(String message) {
            super(message);
        }
    }
}
Особенно полезен при валидации прааметров, обработки отсутствующих значений в цепочках вызовов, замене проверов if, преобразовании optional в исключения в контроллерах/сервисах.
➡️ Easy Java | #Теория

Разве не так? ➡️ Easy Java | #Мемы
Разве не так? ➡️ Easy Java | #Мемы