ar
Feedback

لا تقع ضحية للمخادعين! تيليمتريو يكتشف ويُميّز هذه القنوات 👉 إذا كنت تريد رؤية العلامة، اشترك

Java | Фишки и трюки

Java | Фишки и трюки

الذهاب إلى القناة على Telegram

Java: примеры кода, интересные фишки и полезные трюки Купить рекламу: https://telega.in/c/java_tips_and_tricks ✍️По всем вопросам: @Pascal4eg

إظهار المزيد
6 677
المشتركون
-224 ساعات
-167 أيام
-6630 أيام
أرشيف المشاركات
Что выведет код?
Anonymous voting

public class Quest {
    public static void main(String[] args) {
        System.out.print(op1() + op2() * op3());
    }

    private static int op1() {
        System.out.print(1);
        return 1;
    }
    private static int op2() {
        System.out.print(2);
        return 2;
    }
    private static int op3() {
        System.out.print(3);
        return 3;
    }
}
#java #quest

⌨️ Использование Fixed Thread Pool 1️⃣ Создание пула потоков Для начала нужно создать экземпляр ExecutorService, который будет представлять ваш пул потоков. В этом примере мы создадим фиксированный пул из 5 потоков:
ExecutorService executor = Executors.newFixedThreadPool(5);
2️⃣ Отправка задач для выполнения После создания пула, вы можете отправлять ему задачи с помощью метода submit(). В качестве примера, давайте создадим несколько задач, которые будут выполняться параллельно:
for (int i = 0; i < 10; i++) {
    final int taskId = i;
    executor.submit(() -> {
        System.out.println("Задача " + taskId + " выполняется в: " + Thread.currentThread().getName());
        // Имитация длительной задачи
        try {
            Thread.sleep(1000); // Задержка на 1 секунду
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
        }
        System.out.println("Задача " + taskId + " завершена в: " + Thread.currentThread().getName());
    });
}
3️⃣ Завершение работы пула После того как все задачи были отправлены, важно завершить работу пула, чтобы освободить ресурсы:
executor.shutdown(); // Ждем завершения всех задач
В этом примере создается пул из 5 потоков, и на него отправляется 10 задач. Поскольку пул состоит из 5 потоков, одновременно будут выполняться не более 5 задач. Остальные задачи будут ожидать своей очереди. Это демонстрирует, как Thread Pool управляет ресурсами и оптимизирует обработку задач. При использовании Thread Pool вы можете быть уверены, что ваше приложение будет работать более эффективно, избегая затрат на создание новых потоков и управляя нагрузкой на систему. #java #FixedThreadPool

💼 Декабрьский челлендж для алготрейдеров! Используешь роботов в торговле на бирже? Тогда заходи в Терминал или приложение Т-
💼 Декабрьский челлендж для алготрейдеров! Используешь роботов в торговле на бирже? Тогда заходи в Терминал или приложение Т-Банка, нажимай на кнопку «Участвовать», подключай брокерский счет и готовься к конкурсу от Т-Инвестиций. С 2 по 13 декабря твой робот должен совершить минимум 1000 сделок. По итогам конкурса выберем трейдеров с самой высокой доходностью в двух категориях: портфели до 1 млн руб. и от 1 млн руб. Лидеры категорий разделят между собой призовой фонд в размере 550 000 рублей. Узнать больше про конкурс можно тут. P.S.📚 А если не торгуешь, но эта тема интересна - то изучи Invest API для подключения торговых роботов, готовый sdk и примеры роботов других участников. Сроки акции с 2.12.2024 по 13.12.2024. Подробнее об организаторе акции, порядке её проведения, призах, сроках, месте и порядке их получения на tbank.ru. АО «ТБанк». Реклама.

photo content

⌨️ Использование логов: Log4j и SLF4J Логирование — важная часть программирования, позволяющая отслеживать поведение приложения, находить и устранять ошибки, а также анализировать производительность. В мире Java два наиболее популярных инструмента для логирования — Log4j и SLF4J. Разберем их, выясним, в чем их отличия, и как их эффективно использовать! 🛠 Log4j — это мощная библиотека логирования, создающая гибкий и настраиваемый механизм для записи отчетов о различных событиях. Плюсы: - Гибкая настройка: Вы можете четко настраивать уровни логирования, выводить логи в различные форматы и хранить их в файлах или базах данных. - Аспектная ориентация: Легко создавать сложные правила логирования. Пример использования Log4j: 1. Добавление зависимостей (в pom.xml):

   <dependency>
       <groupId>log4j</groupId>
       <artifactId>log4j</artifactId>
       <version>1.2.17</version>
   </dependency>
2. Создание конфигурации (log4j.properties):

   log4j.rootLogger=DEBUG, FILE

   log4j.appender.FILE=org.apache.log4j.FileAppender
   log4j.appender.FILE.File=application.log
   log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
   log4j.appender.FILE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1} - %m%n
3. Пример кода:

   import org.apache.log4j.Logger;

   public class Log4jExample {
       static Logger logger = Logger.getLogger(Log4jExample.class);

       public static void main(String[] args) {
           logger.info("Информационное сообщение");
           logger.error("Ошибка!", new Exception("Пример исключения"));
       }
   }
📖 SLF4J (Simple Logging Facade for Java) — это абстракция для разных библиотек логирования, которая позволяет сменить библиотеку логирования без изменения кода. Плюсы: - Универсальность: Поддерживает различные реализации логирования, что позволяет быть гибким в выборе инструментов. - Чистота кода: Позволяет более лаконично управлять логами. Пример использования SLF4J: 1. Добавление зависимостей (в pom.xml):

   <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
       <version>1.7.30</version>
   </dependency>
   <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-log4j12</artifactId>
       <version>1.7.30</version>
   </dependency>
2. Пример кода:

   import org.slf4j.Logger;
   import org.slf4j.LoggerFactory;

   public class Slf4jExample {
       private static final Logger logger = LoggerFactory.getLogger(Slf4jExample.class);

       public static void main(String[] args) {
           logger.info("Информационное сообщение с SLF4J");
           logger.error("Ошибка!", new Exception("Пример исключения"));
       }
   }
🔄 Когда использовать? - Log4j — когда вам нужен детальный контроль и настройка логирования. Хорошо подходит для сложных приложений, требующих многофункционального логирования. - SLF4J — когда нужна гибкость и возможность переключаться между различными библиотеками логирования. Идеален для разработчиков, работающих с несколькими проектами. 💡 Итог: Используйте SLF4J для создания абстрактного логирования и Log4j в качестве конкретной реализации, чтобы не только создать гибкую, но и мощную систему логирования для вашего Java-приложения! #java #Logging #Log4j #SLF4J

🔍 Google — В С Ё ? В 2024 году невозможно найти что-то полезное, просто загуглив: выдача поиска забита мусором из ChatGPT, а
🔍 Google — В С Ё ? В 2024 году невозможно найти что-то полезное, просто загуглив: выдача поиска забита мусором из ChatGPT, а все годные материалы не попадают в топы поиска. Хорошо, что есть База Знаний — сеть каналов, в которой команда опытных айтишников постит лучшее из мира IT. Для вашего удобства всё отсортировано по категориям: 👩‍💻 Все языки: https://t.me/main_it_baza 🖥 Java: https://t.me/java_baza 👩‍💻 Frontend: https://t.me/frontend_baza 👣 Backend: https://t.me/backend_baza 📊 Архив: https://t.me/knowledge_baza 🕔 Ссылки будут активны ещё 48 часов, успейте сохранить себе, чтобы не потерять

⌨️ Что такое Пул Потоков (Thread Pool)? Пул потоков (Thread Pool) — это группа заранее созданных потоков, готовых к выполнению задач. Вместо создания нового потока для каждой задачи, пул повторно использует уже существующие потоки, что снижает нагрузку на систему и повышает производительность приложения. 📌 Основные виды пулов потоков: 1️⃣ Фиксированный Пул (Fixed Thread Pool): - Создает заданное количество потоков. Если все потоки заняты, новые задачи ждут в очереди.

   ExecutorService executor = Executors.newFixedThreadPool(5);
2️⃣ Пул с переменным количеством потоков (Cached Thread Pool): - Создает новые потоки по мере необходимости и уничтожает неактивные потоки после определенного времени.

   ExecutorService executor = Executors.newCachedThreadPool();
3️⃣ Планировщик (Scheduled Thread Pool): - Позволяет выполнять задачи с задержкой или периодически.

   ScheduledExecutorService executor = Executors.newScheduledThreadPool(3);
🏷️ Используйте пулы потоков, чтобы упростить управление многопоточными задачами и улучшить производительность вашего приложения! #java #ThreadPool

Senior-разработчик создал крутейший канал про SQL Благодаря простым картинкам даже новичок научится разрабатывать приложения
+4
Senior-разработчик создал крутейший канал про SQL Благодаря простым картинкам даже новичок научится разрабатывать приложения с использованием баз данных. Присоединяйтесь: @SQL

⌨️ Создание RESTful API на Spring Boot 1️⃣ Настройка проекта Создайте новый проект Spring Boot, добавив зависимости Spring Web и Lombok. 2️⃣ Создание модели User

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private Long id;
    private String name;
    private String email;
}
Модель данных для пользователя с свойствами ID, именем и email. 3️⃣ Создание контроллера UserController

import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;

@RestController
@RequestMapping("/api/users")
public class UserController {
    private final List<User> users = new ArrayList<>();

    @GetMapping
    public List<User> getAllUsers() {
        return users; // Получение всех пользователей
    }

    @PostMapping
    public User createUser(@RequestBody User user) {
        users.add(user); // Создание нового пользователя
        return user;
    }
}
Контроллер, обрабатывающий запросы для получения и создания пользователей. 4️⃣ Примеры запросов ✔️ Получение всех пользователей: Запрос:

GET /api/users
Возвращает список всех пользователей. ✔️ Создание нового пользователя: Запрос:

POST /api/users
Content-Type: application/json

{
    "id": 1,
    "name": "John Doe",
    "email": "john.doe@example.com"
}
Создаёт нового пользователя и возвращает его данные. 5️⃣ Тестирование API с Postman Используйте Postman для отправки запросов и проверки работы вашего API. Вы можете получать данные, добавлять пользователей, обновлять и удалять их по аналогии с примерами выше. #java #RESTfulAPI #SpringBoot

🌐 REST и RESTful API REST (Representational State Transfer) — это архитектурный стиль для проектирования сетевых приложений. Он использует стандартные методы HTTP и акцентирует внимание на взаимодействии между клиентом и сервером с помощью ресурсов. Основные принципы REST: 1️⃣ Клиент-серверная архитектура: - Четкое разделение между клиентом и сервером. Клиент отвечает за пользовательский интерфейс, а сервер — за обработку данных и бизнес-логику. 2️⃣ Статус и состояние: - Каждый запрос от клиента к серверу должен содержать всю необходимую информацию для обработки запроса. Сервер не хранит состояние сеанса (stateless). 3️⃣ Кэшируемость: - Ответы должны быть явно обнародованы как кэшируемые или не кэшируемые. Это позволяет уменьшить количество запросов к серверу и улучшает производительность. 4️⃣ Единообразие интерфейса: - Все взаимодействия между клиентом и сервером осуществляются через четкий и единообразный интерфейс, что упрощает интеграцию. 5️⃣ Многоуровневость: - Система может быть структурирована на несколько уровней, где каждый уровень может вызывать другой, обеспечивая гибкость и упрощая управление. RESTful API — это API, который следует принципам REST. Это интерфейс, который использует стандартные HTTP методы для выполнения операций с ресурсами, представленными в виде URI. Основные HTTP методы в RESTful API: 1️⃣ GET: - Используется для получения информации о ресурсе. - Пример: GET /users — получить список всех пользователей. 2️⃣ POST: - Используется для создания нового ресурса. - Пример: POST /users — создать нового пользователя. 3️⃣ PUT: - Используется для обновления существующего ресурса (полное обновление). - Пример: PUT /users/1 — обновить информацию о пользователе с ID=1. 4️⃣ PATCH: - Используется для частичного обновления ресурса. - Пример: PATCH /users/1 — обновить определенные поля у пользователя с ID=1. 5️⃣ DELETE: - Используется для удаления ресурса. - Пример: DELETE /users/1 — удалить пользователя с ID=1. RESTful API обычно возвращают данные в форматах: - JSON (JavaScript Object Notation): легковесный формат, который легко читаем и записывается как людьми, так и машинами. Это самый распространенный формат для передачи данных в RESTful API. - XML (eXtensible Markup Language): более старый формат, который также используется, но менее популярен в новых приложениях. Применение RESTful API: ✔️ Веб-приложения: RESTful API часто используются в веб-приложениях для взаимодействия с серверами и базами данных. ✔️ Мобильные приложения: Многие мобильные приложения используют RESTful API для получения данных. ✔️ Интеграция систем: RESTful API позволяют различным системам взаимодействовать друг с другом с минимальными усилиями. #REST #RESTfulAPI #API

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

public class Quest {
    public static void main(String[] args) {
        int b = 500;
        int c = inc(b);
        System.out.println(b==c);
    }
    private static int inc(int num) {
        return num++;
    }
}
#java #quest

Прожарка резюме для Java-разработчиков уже завтра Ребята из менторской программы ШОРТКАТ разберут на эфире реальные резюме и
Прожарка резюме для Java-разработчиков уже завтра Ребята из менторской программы ШОРТКАТ разберут на эфире реальные резюме и подскажут, что улучшить, чтобы точно дойти до собеса. Когда: 28 ноября, в четверг, в 19:00 по мск Ревьюит резюме рекрутер с опытом работы в Яндексе и Т-Банке. ☑️ Если хотите закинуть своё резюме, подпишитесь на бота @shortcut_sh_bot — резюме будут собирать там  ☑️ Если закидывать нечего, но хочется посмотреть со стороны — тоже подписывайтесь на бота @shortcut_sh_bot. Там будет ссылка на трансляцию и запись после После эфира все получат памятку, как использовать ChatGPT для резюме. Ссылку пришлют, не поверите, тоже в боте @shortcut_sh_bot Короче, подпишитесь на бот, чтобы ничего не пропустить @shortcut_sh_bot  Реклама. ООО "ШОРТКАТ", ИНН: 9731139396, erid: 2VtzqwCXBFD

⌨️ Сравнение объектов с помощью Comparator и Comparable В Java для сортировки объектов используются два ключевых интерфейса: Comparable и Comparator. Понимание их отличий и применения поможет вам эффективно управлять сортировкой данных в коллекциях. 📚 Краткие определения: - Comparable: - Используется, когда класс должен иметь естественный порядок. Например, мы можем сортировать людей по возрасту. - Сигнатура метода: int compareTo(T o). Пример:

  class Person implements Comparable<Person> {
      private String name;
      private int age;

      public Person(String name, int age) {
          this.name = name;
          this.age = age;
      }

      public int getAge() {
          return age;
      }

      @Override
      public int compareTo(Person other) {
          return Integer.compare(this.age, other.age); // Сравнение по возрасту
      }
  }
- Comparator: - Используется для создания внешних стратегий сравнения, позволяя определять несколько способов сортировки. Подходит для сортировки объектов разных классов. - Сигнатура метода: int compare(T o1, T o2). Пример:

  import java.util.Comparator;

  class NameComparator implements Comparator<Person> {
      @Override
      public int compare(Person p1, Person p2) {
          return p1.name.compareTo(p2.name); // Сравнение по имени
      }
  }
⚖️ Когда использовать: - Comparable: - Используйте, если у класса есть естественный порядок. Например, чтобы сортировать людей по возрасту. - Сортировка с помощью Collections.sort() или Arrays.sort() будет проще. Пример использования:

  List<Person> people = Arrays.asList(new Person("Alice", 30), new Person("Bob", 25));
  Collections.sort(people); // Сортировка по возрасту с использованием Comparable
- Comparator: - Идеален для ситуаций, когда необходимо изменить порядок сортировки или сравнивать объекты разных классов. Пример использования:

  List<Person> people = Arrays.asList(new Person("Alice", 30), new Person("Bob", 25));
  Collections.sort(people, new NameComparator()); // Сортировка по имени с использованием Comparator
#java #Comparator #Comparable

Типичная картина на рынке в 2024: вы отправили свое резюме в 100+ компаний, и… тишина. Или наконец-то попали на собеседование
Типичная картина на рынке в 2024: вы отправили свое резюме в 100+ компаний, и… тишина. Или наконец-то попали на собеседование, а после него — опять шаблонное сообщение с отказом. Знакомо каждому новичку. Чтобы не допустить типичных ошибок и чувствовать себя уверенно на любом интервью, приходи на бесплатную карьерную консультацию! Координатор FAANG School найдет слабые места и превратит их в твои сильные стороны: 🟠основные ошибки, которые допускают джуны в своем резюме; 🟠проекты, которые реально вызывают интерес работодателей (вместо скучных формальных списков); 🟠как сегодня выглядит рынок труда и чего ждут работодатели от твоего CV; 🟠полный обзор востребованных технологий - какие навыки будут важны в 2025 году, и как их освоить Улучши резюме, выделись среди конкурентов и успешно пройти собеседование. ⬇️ Без лишней воды, фокус только на том, что сработает в реальном мире. Не упусти свой шанс. Записывайся на карьерную сессию прямо сейчас и получи Java Roadmap в подарок!

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

public class Quest {
    public static void main(String[] args) {
        List<Integer> list = Arrays.asList(1,2,3);
        List<Integer> subList = list.subList(1, 2);
        subList.set(0, 5);
        System.out.println(list.get(1));
    }
}
#java #quest

Бесплатный интенсив: Java-разработчик: старт в профессии с нуля. 📆 Когда: 27-28 ноября в 19:00 по мск. За два дня интенсива
Бесплатный интенсив: Java-разработчик: старт в профессии с нуля. 📆 Когда: 27-28 ноября в 19:00 по мск. За два дня интенсива в прямом эфире, под руководством опытного Java-разработчика, вы сможете: ✔️ Познакомиться с синтаксисом и основными конструкциями языка Java. ✔️ Написать свой первый проект и определить, подходит ли вам профессия разработчика. ✔️ Создать Telegram-бота с нуля. ✔️ Узнать ответы интересующие вас вопросы. ✔️ Получить доступ к закрытому профессиональному сообществу. 🎁 Подарки для участниковинтенсива: гайд «Как заговорить на сленге IT-специалистов», карта компетенций начинающего Java-разработчика и доступ в закрытое сообщество «Старт в Java» от Хекслета!

⌨️ HashMap и TreeMap: Когда и как использовать В Java коллекции Map предоставляют возможность хранить пары "ключ-значение". Два популярных варианта — HashMap и TreeMap. Давайте разберем их ключевые особенности и когда их лучше использовать. 📚 Kраткие определения: - HashMap:   - Неупорядоченная коллекция.   - Основан на хэш-таблице. - TreeMap:   - Упорядоченная коллекция.   - Основан на красно-черном дереве.   - Поддерживает сортировку по ключам. ⚖️ Когда использовать: - HashMap:   - Если важна производительность и порядок хранения не имеет значения.   - Когда нужно быстро получать значения по ключу - TreeMap:   - Если необходимо хранить элементы в отсортированном порядке.   - Для использования функционала "примитивного" поиска (например, firstKey() или lastKey()). 📌 Подведение итогов: Выбор между HashMap и TreeMap зависит от ваших требований к производительности и порядку элементов. Помните, что HashMap лучше подходит для большинства случаев, когда необходим быстрый доступ, а TreeMap — для упорядоченного хранения данных. #java #HashMap #TreeMap