ch
Feedback
Секреты Java

Секреты Java

前往频道在 Telegram

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

显示更多
7 991
订阅者
无数据24 小时
无数据7
无数据30
帖子存档
Тестовое собеседование на Middle Java-разработчика в среду Заходи завтра, 9 октября в 19:00 по мск на открытое онлайн-собесед
Тестовое собеседование на Middle Java-разработчика в среду Заходи завтра, 9 октября в 19:00 по мск на открытое онлайн-собеседование от ШОРТКАТ, чтобы узнать: - Чего ждут от кандидатов на Middle позиции в Java-разработке - Какие вопросы задают на интервью и зачем - Как подготовиться к собесу, чтобы получить оффер - Интервью проведёт Роман Половинцев, ex. TeamLead в Сбере. Чтобы записаться на эфир, переходи в бот → @shortcut_sh_bot Реклама. ООО "ШОРТКАТ", ИНН: 9731139396, erid:2Vtzqx8KAyg

❓Какой метод корректно переопределяет метод на изображении выше?
Anonymous voting

#test
#test

Разработчик Java, ты тут? 😎 Хочешь построить карьеру в IT? Для Java-разработчиков запускаем бесплатный онлайн-интенсив в Отк
+5
Разработчик Java, ты тут? 😎   Хочешь построить карьеру в IT? Для Java-разработчиков запускаем бесплатный онлайн-интенсив в Открытых школах Т1. Прокачай скилы и, если повезет, попади в штат Холдинга Т1 — крупнейшей ИТ-компании по выручке в России по версии RAEX и CNews Analytics 2023.  Зачем участвовать? 🔹 Уникальный рыночный опыт. Наши проекты ежегодно получают награды на ИТ-конкурсах: Global CIO, Национальной банковской премии и др. 🔹 Быстрый рост в ИТ при экспертной поддержке. Карьерные треки для выпускников Открытых школ позволяют быстро вырасти в мидла. 🔹 Работа в бигтехе, где есть ДМС, удалёнка и крутые офисы, спорт и обучение, митапы, программы развития и др. Регистрация до 11 октября! #реклама О рекламодателе

✅ Когда использовать интерфейс, а когда абстрактный класс в Java? В Java оба инструмента — интерфейсы и абстрактные классы —
Когда использовать интерфейс, а когда абстрактный класс в Java? В Java оба инструмента — интерфейсы и абстрактные классы — используются для создания общих "шаблонов", общих типов, но они имеют разные цели и применения. ▫️Интерфейс: Когда нужно определить общий контракт, общие действия, которые можно будет делать с объектами-реализациями интерфейса. Например мы имеем интерфейс:
public interface Movable {
    void move();
}
И допустим мы имеем классы Стол, Книга, Машина, Камень. Мы хотим, чтобы все объекты этих классов могли быть "подвинуты", но каждый класс реализации сам выберет как он будет "двигаться". Не забываем, что класс может реализовывать несколько интерфейсов. И если мы хотим наделить свою книгу (из набора классов из примера) способностью "открываться" (как, возможно, и другие классы в нашем приложении) то можем создать и реализовать интерфейс:
public interface Openable {
    void open();
}
А почему мы не поставили метод open() в интерфейс Movable, и не назвали, например MovableAndOpenavble, как думаете? ▫️Абстрактный класс: А вот если у нас есть общая функициональность (в противовес разной функциональности под общим контрактом в интерфейсах), и что не менее реже - общие свойства, то стоит выбрать абстрактный класс. Например:
   public abstract class Animal {
   
     private String name;
     
       public void sleep() {
           // свернуться клубком и храпеть
       }
       
       public abstract void makeSound(); // Должен быть реализован в подклассах
     
     .... // осальной код
   }
Пусть у нас в проекте есть собаки, кошки и пр. живность, но спят они в нашем приложении одинаково - свернувшись клубком и храпят. А так же у каждого животного есть свое имя. Вот эти свойства и поведение стоит выделять в общий асбтрактный класс. Ведь если бы мы сделали, например, интерфес
public interface Soundable {
    void sleep();
    void makeSound();
}
то sleep() с одинаковой реализацией пришлось бы оставлять в каждом типе живтоного. Вы могли бы сказать: "А давайте сделаем sleep()" дефолтным!". Но только он не сможет обращаться к полям класса реализации, и цель у него изначальна у дефолтных классов другая) Резюме: - Интерфейс: когда вам нужно описать общие действия (что делать), но конкретные реализации зависят от каждого класса. - Абстрактный класс: когда вы хотите обеспечить общую функциональность (как делать) и общие свойства, но с возможностью переопределения некоторых методов. 🫡 Секреты Java #java #class #interface

🔒 7539 ГБ платного контента для программистов выложили в Telegram Выбирай направление и обучайся: 👩‍💻 Java — 644 ГБ 🖥 Python — 724 ГБ 🖥 Frontend — 981 ГБ 🖥 Backend — 817 ГБ 👩‍💻 Все языки — 4373 ГБ Пост удалится через 48 часов 🕔

✅ Метод Thread interrupt(): как он работает? В Java метод interrupt() используется для прерывания потока (Thread). Однако, ва
Метод Thread interrupt(): как он работает? В Java метод interrupt() используется для прерывания потока (Thread). Однако, важно понимать, что вызов метода interrupt() НЕ завершает поток немедленно — вместо этого он ставит поток в "прерванное" состояние. Как работает interrupt()? Когда вызывается метод interrupt() на потоке, он устанавливает специальный флаг прерывания. Поток может периодически проверять этот флаг и решать, как реагировать на него (например, завершить выполнение или обработать прерывание). Основные аспекты: 1. Поток, который был прерван, не завершается автоматически. 2. Если поток находится в состоянии ожидания/блокировки (например через sleep(), wait() или join()), то при прерывании выбрасывается InterruptedException. 3. Если поток не находится в состоянии ожидания, он продолжает выполняться, но при этом может периодически проверять, был ли он прерван. Пример 1: Прерывание потока во время выполнения
public class Example {
    public static void main(String[] args) {
        var thread = new Thread(() -> {
            for (int i = 0; i < 10; i++) {
                // Проверяем флаг прерывания
                if (Thread.currentThread()
                             .isInterrupted()) {
                    System.out.println("Поток был прерван!");
                    break;
                }
                System.out.println("Работаем: " + i);
                try {
                    Thread.sleep(500); // Спим чуть
                } catch (InterruptedException e) {
                    System.out.println("Сон был прерван, завершаем работу...");
                    break;
                }
            }
        });

        thread.start();
        
        try {
            Thread.sleep(1000); // Даём потоку немного поработать
        } catch (InterruptedException e) {}
        
        thread.interrupt(); // Прерываем поток
    }
}
Вывод:
Работаем: 0
Работаем: 1
Сон был прерван, завершаем работу...
В этом примере поток прерывается во время Thread.sleep(500) через исключение InterruptedException. Пример 2: Прерывание потока, находящегося в ожидании Если поток находится в состоянии ожидания или сна, и на него вызывается метод interrupt(), он немедленно прерывается и выбрасывает исключение InterruptedException.
public class Example {

    public static void main(String[] args) {
        var thread = new Thread(() -> {
            try {
                System.out.println("Поток ждет 10 секунд...");
                Thread.sleep(10000); // Спим 10 секунд
            } catch (InterruptedException e) {
                System.out.println("Поток был прерван во время ожидания.");
            }
        });

        thread.start();

        try {
            Thread.sleep(3000); // Ждем 3 секунды
        } catch (InterruptedException e) {}

        // Прерываем поток
        thread.interrupt();
    }
}
Что там происходит: 1. Поток засыпает на 10 секунд с помощью Thread.sleep(10000). 2. Через 3 секунды основной поток вызывает метод interrupt(), и поток немедленно прерывается. 3. Исключение InterruptedException выбрасывается, что мы можем обработать в блоке catch. В итоге: Метод interrupt() не убивает поток немедленно, но сообщает ему, что он был прерван. Поток должен сам обрабатывать это событие, проверяя свой флаг прерывания с помощью методов isInterrupted() или interrupted(), либо через исключение InterruptedException. Этот подход позволяет безопасно завершать работу потоков, давая им возможность корректно завершить свою логику перед остановкой. 🫡 Секреты Java #java #multithreading #thread

Яндекс Foodtech Tour едет в Санкт-Петербург! Митапы для бэкенд-разработчиков о технологиях Еком-сервисов Яндекса теперь в сев
Яндекс Foodtech Tour едет в Санкт-Петербург! Митапы для бэкенд-разработчиков о технологиях Еком-сервисов Яндекса теперь в северной столице. 17 октября организаторы расскажут о новых сценариях и стартапах в компании. В программе три доклада:  👉 Никита Пятаков, старший разработчик в Яндекс Лавке, расскажет о запуске аптек внутри сервиса 👉 Леша Тришин, руководитель группы специального подключения в Яндекс Маркете, поделится опытом интеграции сервиса с китайскими маркетплейсами 👉 Олег Гладышев, старший разработчик в Яндекс Еде, объяснит, зачем Яндексу свои умные велосипеды, и покажет, как они создаются После докладов гостей ждет открытый микрофон со спикерами и афтепати. Зовите друзей и регистрируйтесьОбратите внимание, количество мест ограничено. После регистрации обязательно дождитесь подтверждения заявки. 

#test
#test

❓Какой код нужно вставить на изображении выше вместо // insert here, чтобы вывод был 1 3 8 ?
Anonymous voting

Короче, ищем менторов — Middle и Senior Java-разработчиков Ищем в ШОРТКАТ — менторскую платформу от команды разработчиков из
Короче, ищем менторов — Middle и Senior Java-разработчиков Ищем в ШОРТКАТ — менторскую платформу от команды разработчиков из бигтеха. Мы помогаем найти крутую работу, апнуть грейд или сменить стек. Что надо будет делать: проводить тестовые собесы → оценивать грейд → помогать разбираться в сложных темах. Что взамен: • От 40К за 5-7 часов работы в неделю •Доступ к обучению и комьюнити сильных менторов из Booking, Сбер, Oracle, Tinkoff •Возможность выступать на эфирах, куда уже приходят 500+ джавистов, и стать заметнее на рынке Заполняй форму — свяжемся и расскажем подробности ➡️ https://forms.gle/rFY9z9GKggqfgSS76 Реклама. ООО "ШОРТКАТ", ИНН: 9731139396, erid 2VtzqwxskCq

✅ Как сделать, чтобы Git перестал отслеживать файл, добавленный в `.gitignore` ? Иногда бывает, что вы добавляете файл в .git
Как сделать, чтобы Git перестал отслеживать файл, добавленный в `.gitignore` ? Иногда бывает, что вы добавляете файл в .gitignore, а Git продолжает его отслеживать, потому что он был добавлен в репозиторий до того, как его внесли в .gitignore. Чтобы Git перестал отслеживать этот файл нужно выполнить всего одну команду:
git rm --cached <file>
Где <file> - это, конечно, путь к файлу. Если вы хотите прекратить отслеживать целую папку:
git rm -r --cached <folder>
Важно: Эта команда не удалит файл с вашего диска, она лишь уберёт его из отслеживаемых в репозитории. Но после вашего git commit + git push и следующего git pull других разработчиков файл будет удален на их машинах. 🫡 Секреты Java #git

Станьте разработчиком нейро-сотрудников на Python и зарабатывайте от 150.000р в месяц 🔥🔥🔥 Мы научим вас создавать топовых нейро-сотрудников на базе GPT-4 Omni, и вы сможете: 1️⃣ Устроиться разработчиком в крупную компанию и зарабатывать от 150 тысяч ₽ в месяц 2️⃣ Разрабатывать такие проекты на заказ и зарабатывать от 500 тысяч ₽ за проект 3️⃣ Создать нейро-сотрудника в вашей компании и вырасти на +30-100% в зарплате Что будет на интенсиве? 🧬 Теория: как создаются нейро-сотрудники с GPT-4o на Python 🧬 Практика: мы создадим нейро-консультанта, нейро-HR, нейро-маркетолога и др. Ведущий интенсива - Senior AI разработчик нейросетей и основатель Университета искусственного интеллекта 🔥 Регистрируйтесь на бесплатный интенсив! Встречаемся в ближайший четверг!

✅ Что такое Java Servlet? Простым языком, это классы, которые могут получать HTTP-запросы и возвращать ответы. Это то на чем
Что такое Java Servlet? Простым языком, это классы, которые могут получать HTTP-запросы и возвращать ответы. Это то на чем строятся Java web-приложения и то что используется по капотом того же Spring Web (DispatcherServlet). Основные функции Java Servlets: ▫️Обработка запросов и формирование ответов: сервлеты принимают HTTP-запросы (GET, POST и другие) и формируют соответствующий HTTP-ответ. ▫️Динамическая генерация контента: сервлеты позволяют динамически создавать HTML-страницы, данные JSON или XML в зависимости от запроса пользователя. ▫️Управление сессиями: с помощью сервлетов можно управлять сессиями пользователей и хранить информацию о пользователях между запросами. Пример Java Servlet Создадим простой сервлет, который отвечает на GET-запрос и выводит на веб-страницу сообщение "Hello, World!". ▫️Шаг 1. Создание сервлета Для этого потребуется класс, который расширяет HttpServlet и переопределяет метод doGet().
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

// Аннотация @WebServlet указывает по какому пути будет доступен сервлет
@WebServlet("/hello")
public class HelloWorldServlet extends HttpServlet {

    // Переопределение метода doGet для обработки GET-запросов
    public void doGet(HttpServletRequest request, HttpServletResponse response) 
            throws IOException {
        // Установка типа контента
        response.setContentType("text/html");

        // Получение объекта PrintWriter для вывода данных на веб-страницу
        PrintWriter out = response.getWriter();
        out.println("<html><body>");
        out.println("<h1>Hello, World!</h1>");
        out.println("</body></html>");
    }
}
▫️Шаг 2. Конфигурация сервлета Чтобы сервлет работал, его нужно зарегистрировать в веб-приложении. Это можно сделать либо через файл конфигурации web.xml, либо с помощью аннотации @WebServletServlet API 3.1 web.xml стал необязательным). В нашем примере мы используем аннотацию:
@WebServlet("/hello")
Это означает, что когда пользователь отправит запрос на URL /hello, веб-сервер вызовет наш HelloWorldServlet. ▫️Шаг 3. Развертывание на сервере 1. Разместите ваш сервлет в проекте веб-приложения (например, с использованием Apache Tomcat или любого другого сервера). 2. Соберите war-ник и разверните на сервере. 3. Перейдите по адресу http://localhost:8080/your-project-name/hello в браузере, чтобы увидеть результат (your-project-name - это путь к вашему приложению, который установит, например, Tomcat). ▫️Шаг 4. Результат После того как вы выполните все шаги и отправите GET-запрос на сервер, браузер отобразит следующую страницу:
<html>
  <body>
    <h1>Hello, World!</h1>
  </body>
</html>
У сервлета есть также и другие методы соответствующие HTTP-запросам: doGet(), doPost(), doPut(), doDelete() и другие. Заключение Java Servlets — это основа многих современных веб-приложений на платформе Java. Сервлеты позволяют динамически обрабатывать запросы, генерировать HTML и управлять сессиями пользователей. В реальных проектах сервлеты часто используются в связке с фреймворками, такими как Spring или JavaServer Faces (JSF), которые предлагают высокоуровневые абстракции для создания сложных веб-приложений. 🫡 Секреты Java #java #servlet

Недавно увидел хороший пост про Maven для новичков. Вот отсюда

❓Какой из следующих методов корректно переопределит метод на изображении выше?
Anonymous voting

#test
#test

♨️Clojure в действии: как он меняет правила игры для бэкенд-разработчиков? Приглашаем вас на открытый вебинар 3 октября в 20:
♨️Clojure в действии: как он меняет правила игры для бэкенд-разработчиков? Приглашаем вас на открытый вебинар 3 октября в 20:00 мск, где мы обсудим: - с какими задачами сталкиваются разработчики Clojure; - основные особенности и преимущества Clojure по сравнению с другими языками; - какие возможности и перспективы предлагает Clojure для разработчиков.  Встречаемся в преддверии старта курса «Clojure Developer». Все участники вебинара получат специальную цену на обучение!  ➡️ Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: РЕГИСТРАЦИЯ Ждем вас!  Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

❓Успешно ли пройдет компиляция кода на изображении выше?
Anonymous voting

#test
#test