fa
Feedback
Секреты Java

Секреты Java

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

Обсуждаем Java, архитектуру, фреймворки и всё, о чем должны говорить разработчики. Владелец: @Alexey_Morl Реклама на бирже: https://telega.in/c/java_secrets

نمایش بیشتر
7 991
مشترکین
اطلاعاتی وجود ندارد24 ساعت
اطلاعاتی وجود ندارد7 روز
اطلاعاتی وجود ندارد30 روز
آرشیو پست ها
#test
#test

Ещё одна мощная фишка Java — это try-with-resources, которая значительно упрощает работу с ресурсами (например, файлами или сетевыми соединениями) и автоматически закрывает их после использования. Обычно ресурсы, такие как файлы или потоки, нужно явно закрывать, чтобы избежать утечек. Но с помощью конструкции try-with-resources Java автоматически закроет ресурсы, когда они больше не нужны, даже если возникнет исключение. Пример работы с файлом:

try (BufferedReader reader = new BufferedReader(new FileReader("file.txt"))) {
    String line;
    while ((line = reader.readLine()) != null) {
        System.out.println(line);
    }
} catch (IOException e) {
    e.printStackTrace();
}
В этом коде BufferedReader автоматически закроется после выполнения блока try, что исключает риск утечки ресурсов. Эта конструкция делает код более чистым и безопасным.

Какой у Вас возраст?
Anonymous voting

❓Что выведет код на изображении выше?
Anonymous voting

#test
#test

Забирай пошаговую roadmap по JAVA FAANG School в течение 24 часов отдают бесплатно свою библиотеку знаний. Вы можете получить
Забирай пошаговую roadmap по JAVA FAANG School в течение 24 часов отдают бесплатно свою библиотеку знаний. Вы можете получить доступ: – Redis - 5 улучшений для твоего пет-проекта – Пошаговая RoadMap по Java – Мануал по Docker. Основные команды и концепции – Микросервисы. Вопросы с собеседований – Шпаргалка с горячими клавишами JetBrains IDE. Ускоришь работу в 10 раз – Desk setup. Подборка аксессуаров для комфортной работы – Шпаргалка по Kafka – Подробный гайд, как найти работу в IT без опыта – Подборка платформ с вакансиями для java-разработчиков Из свежих пополнений – Инструкция по работе с Git (ключевой навык для любого разработчика!) Библиотека знаний пополняется постоянно, но бесплатный доступ длится всего сутки. Чтобы получить полезные материалы, переходи по ссылке и жми на оранжевую кнопку.

✅ В чем отличия HashMap и Hashtable ? HashMap и Hashtable — это структуры данных в Java, которые используются для хранения па
В чем отличия HashMap и Hashtable ? HashMap и Hashtable — это структуры данных в Java, которые используются для хранения пар «ключ-значение». Несмотря на схожие функции, у них есть важные отличия, которые нужно учитывать при выборе подходящей структуры данных: ▫️Потокобезопасность: - HashMap не является потокобезопасной. Это означает, что если несколько потоков одновременно работают с HashMap без внешней синхронизации, возможны проблемы с корректностью данных. - Hashtable потокобезопасна. Все методы Hashtable синхронизированы, что делает её подходящей для многопоточных приложений, но при этом замедляет производительность при большом количестве запросов из-за синхронизации. ▫️Производительность: - HashMap быстрее, потому что у нее нет дополнительной нагрузки синхронизации. Если вы используете HashMap в однопоточной среде или в случаях, где потокобезопасность не важна, это более предпочтительный выбор. - Hashtable медленнее из-за синхронизированных методов. ▫️Нулевые ключи и значения: - HashMap допускает один null-ключ и любое количество null-значений. - Hashtable не допускает ни null-ключей, ни null-значений. Попытка вставить null вызовет NullPointerException. ▫️Появление в языке Java: - HashMap был введен в Java 1.2 как часть Java Collections Framework. - Hashtable появился ранее, с Java 1.0, и не является частью современных коллекций, хотя по-прежнему используется в некоторых проектах для обратной совместимости. ▫️Наследование: - HashMap наследуется от AbstractMap, а также реализует интерфейс Map. - Hashtable наследуется от класса Dictionary, который считается устаревшим в современном Java-коде, и также реализует интерфейс Map. ▫️Как выбрать: - Если вам нужно работать в многопоточной среде и требуется потокобезопасность, то имеет смысл рассмотреть ConcurrentHashMap (более современная замена Hashtable), которая обеспечивает лучшую производительность в многопоточном окружении. - Если же потокобезопасность не требуется, используйте HashMap, которая является быстрее и более гибкой для большинства сценариев. Таким образом, HashMap чаще используется в современных приложениях из-за её эффективности и гибкости, тогда как Hashtable сохраняет свою актуальность в устаревших проектах или в ситуациях, где необходима полная синхронизация. 🫡 Секреты Java #java #hashmap #hashtable

❓Что выведет код на изображении выше?
Anonymous voting

#test
#test

Узнаете себя? 🔹Мне трудно собраться, чтобы выполнять важные задачи 🔹Я хочу поменять свою жизнь, но каждый раз что-то мешает 🔹У меня есть проблемы со сном 🔹Я заедаю негативные эмоции 🔹Я испытываю стресс, тревогу, депрессию Если звучит знакомо, то попробуйте комплексную терапию от UWIO ☺️☺️ объединили когнитивно-поведенческую терапию и опыт передовых зарубежных компаний чтобы помочь справится с негативными состояниями. Почему UWIO? 1️⃣Непрерывность. Не отдельные консультации, а продуманное комплексное решение 2️⃣Терапия, основанная на данных. Специалист между сессиями анализирует ваше состояние и вносит необходимые корректировки. 3️⃣Контроль прогресса в системе аналитики. Свой прогресс вы можете видеть прозрачно на панели аналитики в приложении 🔸Начните свой путь в бот-приложении в Telegram Реклама. ООО "ЮВИО" ИНН:5906175087 Erid:2VSb5w97PHS

✅ Аннотация @SneakyThrows в Lombok Аннотация @SneakyThrows из библиотеки Lombok позволяет скрывать необходимость обработки пр
Аннотация @SneakyThrows в Lombok Аннотация @SneakyThrows из библиотеки Lombok позволяет скрывать необходимость обработки проверяемых исключений (checked exceptions) в Java. Обычно в Java при использовании методов, которые могут выбросить проверяемые исключения, требуется явно обработать их в блоках try-catch или прокидывать дальше с помощью ключевого слова throws. @SneakyThrows автоматически обрабатывает такие исключения без необходимости прописывать их вручную. Как это работает? Вот, что говорит документация:
Код, сгенерированный lombok, не будет игнорировать, оборачивать, заменять или иным образом изменять выданное проверенное исключение; он просто обманывает компилятор.
Пример использования
import lombok.SneakyThrows;

public class Example {

    @SneakyThrows
    public void readFile() {
        // Компилятор ожидает, что FileInputStream выбросит проверяемое исключение FileNotFoundException
        // Однако, благодаря @SneakyThrows, мы можем не использовать try-catch
        FileInputStream fileInputStream = new FileInputStream("file.txt");
        // Чтение файла
    }

    public static void main(String[] args) {
        new Example().readFile();
    }
}
В этом примере метод readFile() вызывает конструктор FileInputStream, который может выбросить исключение FileNotFoundException. Обычно мы должны обрабатывать это исключение с помощью try-catch или объявить его через throws. Но с аннотацией @SneakyThrows это становится не обязательным, Lombok автоматически добавит код для обработки исключения. Использование с конкретными исключениями Вы также можете указать конкретные типы исключений, которые нужно обрабатывать с помощью @SneakyThrows. Например:
@SneakyThrows(IOException.class)
public void processFile() {
    // Здесь @SneakyThrows обрабатывает только IOException
    FileInputStream fileInputStream = new FileInputStream("file.txt");
}
Когда использовать @SneakyThrows? - Когда нужно упростить код и избежать явной обработки проверяемых исключений. - Для тестов или прототипов, где исключения не имеют критического значения. - Когда вы точно знаете, что исключение не произойдёт, но компилятор всё равно требует его обработки. Предостережения Хотя @SneakyThrows помогает избежать явной обработки исключений, важно использовать его осторожно. Обработка проверяемых исключений в Java служит для того, чтобы заставить разработчиков задуматься о возможных ошибках и корректно их обрабатывать. Использование @SneakyThrows может скрыть такие ошибки и сделать код менее надёжным, если исключение действительно произойдёт. Заключение Аннотация @SneakyThrows в Lombok упрощает работу с проверяемыми исключениями, автоматически "оборачивая" их в непроверяемые. Это удобно для упрощения кода, но её следует использовать с осторожностью, чтобы не упустить потенциальные ошибки, которые обычно требуют явной обработки. 🫡 Секреты Java #java #lombok

Как повысить свой скилл в Java всего за 5 минут в день? «Java в тестах» поможет тебе стать настоящим экспертом в Java! Ежедневные тесты по Java Core и Spring, которые публикуют в канале можно спокойно использовать в том числе для подготовки к сертификации по: ▫️OCA / OCP экзаменам от Oracle ▫️Сертификации по Spring от VMWare. Или просто когда скучно на перерыве за кофе) Подключайся и стань настоящим профессионалом Java 👉 @java_in_quizes

✅ Создание экземпляров вложенных классов в Java Вот в продолжение этого теста давайте разберем как создаются экземпляры вложе
Создание экземпляров вложенных классов в Java Вот в продолжение этого теста давайте разберем как создаются экземпляры вложенных классов и почему, на том же примере. В Java существуют два типа вложенных классов: статические вложенные классы и нестатические внутренние классы и способ создания экземпляров этих классов различается в зависимости от их типа: Наш пример из теста:
public class Quiz {

    static class A {
    }

    class B {
    }

    public static void main(String[] args) {
       new Quiz.A(); // создание объекта класса А
       new Quiz().new B(); // создание объекта класса B
    }
}
▫️Статические вложенные классы (static nested classes) В нашем примере - это класс А. Статические вложенные классы объявляются с ключевым словом static и не зависят от экземпляра внешнего класса. Это означает, что их можно создавать напрямую, используя имя внешнего класса. Почему инициализируем через new Quiz.A()? Статические вложенные классы не требуют создания объекта внешнего класса, так как они не зависят от его состояния. Это делает их похожими на обычные статические члены (например, методы или поля) класса. Они могут существовать сами по себе, что делает их удобными для создания вспомогательных классов, связанных с внешним классом, но не зависящих от его экземпляра. Т.е. как мы обращаемся к статическим полям, например Quiz.field, так же мы указываем на статический вложенный класс и добавляем оператор new, чтобы создать его экземпляр. ▫️Нестатические (внутренние) классы (non-static inner classes) В примере - это класс B. Нестатические внутренние классы привязаны к объекту внешнего класса, поэтому для их создания сначала необходимо создать экземпляр внешнего класса. Внутренний класс имеет доступ к полям и методам внешнего класса, что делает его зависимым от состояния внешнего объекта. Почему инициализируем через new Quiz().new B() ? Нестатические внутренние классы тесно связаны с экземпляром внешнего класса, поскольку они могут напрямую обращаться к его полям и методам, даже к приватным. Это создаёт сильную связь между внутренним и внешним классами. В результате, при создании внутреннего класса требуется объект внешнего класса, чтобы он мог взаимодействовать с его состоянием. Поэтому мы сначала создаем объект внешнего класса new Quiz(), а затем через него создаем экземпляр внутреннего new B(). Заключение - Статические вложенные классы можно создавать напрямую, используя имя внешнего класса, поскольку они не зависят от его экземпляра. - Нестатические внутренние классы требуют экземпляра внешнего класса для своей инициализации, так как они могут обращаться к его состоянию. Ставь 👍 если разобрался 🫡 Секреты Java #java #class

Ищем автора эталонного кода! 💎 Если вы уверены, что вашему коду подходит звание «Эталонный», а вам — звание «Автор самого кр
Ищем автора эталонного кода! 💎 Если вы уверены, что вашему коду подходит звание «Эталонный», а вам — звание «Автор самого красивого кода», то приглашаем принять участие в Конкурсе красоты кода 2.0 и выиграть классные призы от Сбера: iPhone 16 и умную колонку SberBoom. Опытные эксперты определят победителей в пяти категориях: Backend, Frontend, DevOps, AI и Mobile, — а награждение пройдёт на ключевом IT-событии HighLoad в Москве, 2 и 3 декабря. Больше 40 участников прошлого конкурса стали частью команды Сбера. Возможно, следующим станете именно вы — переходите по ссылке и изучайте подробности!

❓Какой из утверждений верно?
Anonymous voting

#test
#test

✅ Контроль порядка создания бинов в Spring ▫️Как мы можем задать порядок инициализации бинов? Аннотация @DependsOn в Spring п
Контроль порядка создания бинов в Spring ▫️Как мы можем задать порядок инициализации бинов? Аннотация @DependsOn в Spring позволит нам это сделать. Она указывает, что один или несколько бинов должны быть инициализированы до создания текущего бина. Это полезно, когда между бинами есть зависимости, которые не могут быть автоматически решены с помощью внедрения зависимостей. ▫️Как работает? @DependsOn принимает один или несколько имен бинов (в виде строк) и указывает, что эти бины должны быть инициализированы перед тем, как будет создан бин, который помечен данной аннотацией. Допустим, у нас есть два бина, BeanA и BeanB. BeanB зависит от инициализации BeanA, но эта зависимость не явная (например, если BeanB использует ресурсы, создаваемые BeanA).
@Configuration
public class AppConfig {

    @Bean
    public BeanA beanA() {
        return new BeanA();
    }

    @Bean
    @DependsOn("beanA")
    public BeanB beanB() {
        return new BeanB();
    }
}
В этом примере: - Метод beanB() возвращает экземпляр BeanB, но перед его созданием будет гарантировано, что BeanA уже инициализирован. - Аннотация @DependsOn("beanA") гарантирует, что BeanA будет создан до BeanB. Так же можно указать несколько бинов, от которых зависит текущий бин:
@Bean
@DependsOn({"beanA", "beanC"})
public BeanB beanB() {
    return new BeanB();
}
Здесь бин BeanB зависит от двух бинов — BeanA и BeanC, которые будут инициализированы до него. @DependsOn можно также использовать на уровне класса, если бин создаётся через аннотацию @Component:
import org.springframework.stereotype.Component;
import org.springframework.context.annotation.DependsOn;

@Component
@DependsOn("beanA")
public class BeanB {
    // логика BeanB
}
В этом случае бин BeanB будет создан только после того, как будет инициализирован BeanA. ▫️Когда использовать @DependsOn? - Неявные зависимости: Если один бин должен быть инициализирован до другого, но Spring не может это автоматически определить через внедрение зависимостей. - Инициализация внешних ресурсов: Например, если один бин инициализирует соединение с базой данных, а другой бин зависит от этого соединения. 🫡 Секреты Java #java #spring

Вы Java разработчик и хотите делиться знаниями с другими? Станьте автором курса в Яндекс Практикуме — создавайте и улучшайте
Вы Java разработчик и хотите делиться знаниями с другими? Станьте автором курса в Яндекс Практикуме — создавайте и улучшайте образовательный контент и влияйте на формирование индустрии. Что делать? Помимо теории нужно будет придумывать квизы, тесты, практические задания, дополняя это примерами из вашей профессиональной жизни. Почему вам стоит стать автором курса? - Помощь тысячам людей получить востребованную IT-профессию. - Прокачка себя и подтверждение своей экспертности. - Дополнительный доход на удалёнке с гибким графиком. Посмотреть детали и откликнуться