fa
Feedback
Easy Java

Easy Java

رفتن به کانال در Telegram

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

نمایش بیشتر
5 220
مشترکین
-424 ساعت
-217 روز
-9030 روز
آرشیو پست ها
👩‍💻 Что такое 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 | #Мемы

Если тебя спросят это на Java-собеседовании — ты ответишь? Java развивается, требования растут, а вопросы на интервью уже дав
Если тебя спросят это на Java-собеседовании — ты ответишь? Java развивается, требования растут, а вопросы на интервью уже давно не ограничиваются equals/hashCode. Мы собираем канал Java Junior для тех, кто хочет реально понимать Java, а не угадывать ответы. 🚀 Java Core • Spring • практика • задачи • паттерны • тонкости JVM Каждый пост — удар по слабым местам в знаниях. 🔥 Идём дальше Мы готовим Telegram Web App — мини-приложение для обучения и объективной оценки уровня Java-разработчика. Что внутри: ▶ актуальные тесты и практические задания по backend на Java ▶ система подтверждения навыков ▶ марафоны для подготовки к собеседованиям 🗓 Первая версия — 18 февраля Готовьте IDE. Ссылка будет скоро 👀 👉 Java Junior

👩‍💻 TutorialsPoint Java for Beginners — курс по Java для начинающих TutorialsPoint — это онлайн-ресурс, который предоставля
👩‍💻 TutorialsPoint Java for Beginners — курс по Java для начинающих TutorialsPoint — это онлайн-ресурс, который предоставляет широкий спектр учебных материалов и учебных пособий, включая учебные пособия по различным языкам программирования, включая Java. 👀 Что изучается:
— Структуры данных: Обучение включает в себя работу с массивами, списками и другими структурами данных. — Объектно-ориентированное программирование (ООП): Вы изучите концепции ООП, такие как классы, объекты, наследование, полиморфизм и инкапсуляция. — Потоки ввода/вывода: Вы научитесь более глубоко разбираться с потоками для ввода и вывода данных. — Java API: Рассмотрение стандартной библиотеки классов Java.
Ссылка на ресурс ➡️ Easy Java | #Ресурсы

📖 Jqwik: обзор тестирования на основе свойств в UI и API В статье объясняют, как вместо проверки конкретных данных тестирова
📖 Jqwik: обзор тестирования на основе свойств в UI и API В статье объясняют, как вместо проверки конкретных данных тестировать их свойства, зачем это нужно, как помогает Jqwik для Java и где пригодится на практике. ⛓ Читать статью ➡️ Easy Java | #Статья

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

👩‍💻 Викторина: что выведет код?
import java.lang.annotation.*;
import java.lang.reflect.Method;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@interface MyAnnotation {
    String value() default "";
}

class Processor {
    @MyAnnotation("first")
    public void method1() {}
    
    @MyAnnotation("second")
    private void method2() {}
    
    @MyAnnotation("third")
    protected void method3() {}
    
    public void method4() {}
}

public class Main {
    public static void main(String[] args) throws Exception {
        Class<?> clazz = Processor.class;
        int count = 0;
        
        for (Method method : clazz.getDeclaredMethods()) {
            if (method.isAnnotationPresent(MyAnnotation.class)) {
                count++;
                // Делаем приватный метод доступным
                method.setAccessible(true);
            }
        }
        
        System.out.println("Annotated methods: " + count);
    }
}
➡️ Easy Java | #Викторина

Сеньор с 11+ годами опыта в IT — Влад: слил все курсы топовых зарубежных компаний в свой Телеграм канал ├ Алгоритмы и структу
Сеньор с 11+ годами опыта в IT — Влад: слил все курсы топовых зарубежных компаний в свой Телеграм канал Алгоритмы и структуры данных 2.4 ТБ ├ Python — 1.9 ТБ ├ Fullstack — 1.5 ТБ ├ DevOps 1.1 ТБ ├ Базы данных 850 ГБ ├ Безопасность 790 ГБ └ Мобилка 620 ГБ Все материалы собрали из компании которую лучше не называть Разбивка по стекам: Backend — 2.8 ТБ ├ Frontend — 1.7 ТБ ├ DevOps & Infra — 1.9 ТБ ├ Mobile — 1.2 ТБ └ Algorithms — 2.1 ТБ Оставляем ссылку на архив https://t.me/+J0oNDvQ03gdkN2My

👩‍💻 Что такое Math.multiplyExact() и зачем он нужен? Math.multiplyExact() — это метод из класса java.lang.Math, который выполняет умножение двух чисел с проверкой на переполнение. При переполнении выбрасывается исключение ArithmeticException. ⚡️ Пример:
public class MultiplyExactExample {
    public static void main(String[] args) {
        // Безопасное умножение int
        int a = 1000000;
        int b = 2000;
        
        try {
            int result1 = Math.multiplyExact(a, b);
            System.out.println(a + " * " + b + " = " + result1);
        } catch (ArithmeticException e) {
            System.out.println("Переполнение int: " + e.getMessage());
        }
        
        // Переполнение на примере
        int maxInt = Integer.MAX_VALUE;
        
        try {
            int dangerous = Math.multiplyExact(maxInt, 2);
        } catch (ArithmeticException e) {
            System.out.println("Ожидаемое переполнение: " + maxInt + " * 2");
        }
        
        // Работа с long
        long big1 = 10_000_000_000L;
        long big2 = 5_000L;
        
        try {
            long result2 = Math.multiplyExact(big1, big2);
            System.out.println(big1 + " * " + big2 + " = " + result2);
        } catch (ArithmeticException e) {
            System.out.println("Переполнение long: " + e.getMessage());
        }
        
        // Практический пример: вычисление факториала с проверкой
        System.out.println("\nВычисление факториала с проверкой переполнения:");
        for (int i = 1; i <= 20; i++) {
            try {
                long factorial = computeFactorial(i);
                System.out.println(i + "! = " + factorial);
            } catch (ArithmeticException e) {
                System.out.println(i + "! - переполнение!");
                break;
            }
        }
    }
    
    private static long computeFactorial(int n) {
        long result = 1;
        for (int i = 2; i <= n; i++) {
            result = Math.multiplyExact(result, i);
        }
        return result;
    }
}
Особенно полез при научных и финансовых вычислениях, откладки математических алгоритмов, криптографических операциях. ➡️ Easy Java | #Теория

Изучаешь Java и тебе нужен доступ к AI-чатам и обучающим ресурсам? Ты хочешь просто прокачивать свой навык программирования:
+1
Изучаешь Java и тебе нужен доступ к AI-чатам и обучающим ресурсам? Ты хочешь просто прокачивать свой навык программирования: использовать современные AI-инструменты типа ChatGPT и Claude, смотреть видео-туториалы – а сайты недоступны или грузятся вечно. Что делать? Использовать Telegram-бот Marzipan. ✔️ Безопасный доступ к ChatGPT, Anthropic Claude, Google Gemini и другим AI-инструментам. ✔️ Высокая скорость загрузки видео без задержек. ✔️ Работает на телефоне и ноутбуке. ✔️ Настраивается за 1 минуту прямо в Telegram. ✔️ Бесплатные 3 дня, затем от 199р в месяц. Без заморочек, просто подключайся и будь в тренде современного стека разработки! Переходи в бота, подключай бесплатную пробную подписку – и уже через минуту ты сможешь программировать так, как это делает весь мир. 👉 Перейти в бота 👈

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

📇 Гарантированное получение данных через REST API: подходы и библиотеки для Java В данной статье автор разобрал основные под
📇 Гарантированное получение данных через REST API: подходы и библиотеки для Java
В данной статье автор разобрал основные подходы к работе с REST API в Java и поделился популярными библиотеками для реализации retry-механизмов. Каждый из подходов имеет свои преимущества и недостатки, а выбор подходящего решения зависит от конкретных требований проекта.
🔤 Читать статью 🔤 ➡️ Easy Java | #Статьи #API