Java Learning
18.6K subscribers
1.62K photos
1 video
3 files
1K links
№ 5079899194

Обучающий канал по Java

Ссылка для друга - https://t.iss.one/+ZEYYht6-46w5MDM6

По всем вопросам @mascarov_valentin

Реклама на бирже - https://telega.in/c/Java_per_month
Download Telegram
➡️ Использование библиотеки json-unit для тестирования JSON-ответов в Java

json-unit — это удобная библиотека для сравнения и тестирования JSON-данных в Java. Она поддерживает сравнение структуры, частичное совпадение данных и игнорирование несущественных различий, что делает её идеальной для тестирования API-ответов.

json-unit — отличный выбор для разработчиков, которым нужно тестировать и проверять сложные JSON-структуры.

🔗 Ссылочка на доку

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Вопрос на собеседовании

Что такое try-with-resources в Java, и как он улучшает управление ресурсами?

Ответ ⬇️
"Try-with-resources" — это конструкция, введенная в Java 7, которая автоматически закрывает ресурсы (например, файлы, потоки) после использования. Это помогает избежать утечек ресурсов и улучшает читаемость кода.

Пример использования ⚙️
Здесь BufferedReader автоматически закрывается после завершения блока try, даже если возникает исключение.

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class Main {
public static void main(String[] args) {
try (BufferedReader br = new BufferedReader(new FileReader("file.txt"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}


Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
➡️ Использование библиотеки Reactor для работы с реактивным программированием в Java

Reactor — это библиотека для построения асинхронных, реактивных систем. Она использует потоковую обработку данных и позволяет эффективно управлять асинхронными операциями с минимальной задержкой.

Reactor поддерживает функциональный стиль программирования и является основой для Spring WebFlux.

🔗 Ссылочка на доку

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Трюк с битовыми операциями

Этот код демонстрирует обмен значений двух переменных (a и b) без использования дополнительной временной переменной.

Он использует битовую операцию XOR (^). Ключевой момент здесь в том, что XOR двух одинаковых чисел возвращает 0, а XOR числа с 0 возвращает само это число. Таким образом, когда мы применяем XOR к a и b и затем обратно, мы фактически обмениваем их значения.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤‍🔥5
В чем отличия между TreeSet и HashSet?

Основное отличие между TreeSet и HashSet заключается в том, что TreeSet хранит элементы в отсортированном порядке, в то время как порядок хранения элементов в HashSet не определен. TreeSet также обеспечивает быстрый поиск и извлечение элементов в отсортированном порядке.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤‍🔥2🔥1
➡️ Использование библиотеки JDBI3 для работы с базами данных

JDBI3 — это легковесная библиотека для удобного взаимодействия с базами данных. Она позволяет выполнять SQL-запросы и маппить результаты прямо на объекты Java.

JDBI3 упрощает работу с базами данных благодаря поддержке fluent-интерфейса.

🔗 Ссылочка на доку

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
➡️ Использование библиотеки Takari для создания плагинов Maven

Takari — это библиотека, предназначенная для упрощения разработки Maven-плагинов. Она предоставляет удобные инструменты для создания высокопроизводительных плагинов с минимальным количеством кода.

🔗 Ссылочка на доку

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
➡️ Использование блока try-with-resources для автоматического управления ресурсами в Java

Блок try-with-resources обеспечивает автоматическое закрытие ресурсов, таких как файлы, потоки, сокеты и другие, которые требуют освобождения после использования. Это упрощает управление ресурсами и помогает избежать утечек.

🗣 Полезно для работы с любыми ресурсами, которые реализуют интерфейс AutoCloseable.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥1
Вопрос на собеседовании

Что такое рефлексия в Java и в каких ситуациях она используется?

Ответ ⬇️
Рефлексия в Java — это механизм, который позволяет программе исследовать или изменять свою собственную структуру во время выполнения. С помощью рефлексии можно динамически создавать объекты, вызывать методы, получать информацию о классах, полях и методах, что особенно полезно при создании библиотек, фреймворков или инструментов для тестирования. Однако, из-за своей динамической природы, рефлексия может замедлить выполнение программы и нарушить безопасность, поэтому её использование должно быть обдуманным.

Пример использования ⚙️
import java.lang.reflect.iss.onethod;

public class ReflectionExample {
public void sayHello() {
System.out.println("Hello, world!");
}

public static void main(String[] args) throws Exception {
// Получаем класс через рефлексию
Class<?> clazz = ReflectionExample.class;

// Создаем экземпляр класса
Object instance = clazz.getDeclaredConstructor().newInstance();

// Получаем метод sayHello
Method method = clazz.getMethod("sayHello");

// Вызываем метод через рефлексию
method.invoke(instance); // Вывод: Hello, world!
}
}


Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥1
➡️ Использование паттерна "Цепочка обязанностей" (Chain of Responsibility) для обработки запросов

Паттерн "Цепочка обязанностей" позволяет передавать запросы по цепочке обработчиков, где каждый обработчик решает, обработать запрос или передать его дальше по цепочке.

Это делает код более гибким и расширяемым, так как добавлять новые обработчики можно без изменения существующего кода.

Паттерн помогает избежать жесткой привязки между отправителем и получателем запроса.
Полезен для создания гибкой системы обработки событий или запросов.

🔗 Почитать подробнее

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
➡️ Использование библиотеки Helidon для микросервисов

Helidon — это легковесная библиотека для создания реактивных микросервисов с использованием виртуальных потоков. Обеспечивает высокую производительность и простоту разработки.

Поддерживает асинхронные запросы.
Легко интегрируется с микросервисной архитектурой.

🔗 Ссылочка на доку

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
➡️ Использование библиотеки Micronaut AOT для оптимизации приложений

Micronaut AOT — это библиотека для автоматической оптимизации приложений. Она улучшает производительность приложений за счет генерации кода на этапе компиляции, снижая время запуска и объем использования памяти.

Оптимизирует запуск приложений.
Поддерживает интеграцию с нативными образами.

🔗 Ссылочка на доку

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Что будет выведено при выполнении кода?

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
➡️ Использование библиотеки Fastutil для оптимизации работы с коллекциями в Java

Fastutil — это библиотека, предоставляющая эффективные реализации коллекций для примитивных типов данных в Java. Она позволяет существенно сократить использование памяти и улучшить производительность по сравнению со стандартными коллекциями.

Fastutil поддерживает списки, множества, карты и другие структуры для примитивов.
Повышает эффективность работы с большими объемами данных.

🔗 Ссылочка на доку

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🤔1
➡️ Использование библиотеки Agrona для высокопроизводительных структур данных в Java

Agrona — это библиотека, предоставляющая эффективные структуры данных и примитивы для высокопроизводительных приложений. Она включает очереди, кольцевые буферы, а также инструменты для работы с памятью и сетевыми операциями.

Agrona оптимизирует использование памяти и ускоряет обработку данных.
Идеальна для приложений с высокими требованиями к производительности.

🔗 Ссылочка на доку

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Обработка изображений

Думаем, каждый согласится, что подавать информацию в виде изображения лучше всего для восприятия. Однако сначала нужно сгенерировать такое изображение, и на этот случай в Java есть множество инструментов.

К примеру, класс java.awt.BufferedImage который позволяет обрабатывать изображения каким угодно способом, хоть попиксельно.

Чтобы загрузить изображение из файла используют ImageIO::read, для записи — ImageIO::write.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥1
Вопрос на собеседовании

Что такое «метод по умолчанию» в интерфейсах Java, и в каких случаях его использование оправдано?

Ответ ⬇️
Метод по умолчанию (default method) в интерфейсах Java предоставляет реализацию метода прямо в интерфейсе. Это позволяет расширять функциональность интерфейса без необходимости изменять все классы, которые его уже реализуют. Если класс реализует интерфейс, но не переопределяет метод по умолчанию, используется реализация интерфейса.

Использование методов по умолчанию оправдано, когда нужно добавить новое поведение без нарушения обратной совместимости.


Пример использования ⚙️
interface Animal {
default void sound() {
System.out.println("Животное издает звук");
}
}

class Dog implements Animal {}

public class Main {
public static void main(String[] args) {
Dog dog = new Dog();
dog.sound(); // Животное издает звук
}
}


Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥2
⚙️ Files.move()

В Java метод Files.move() из пакета java.nio.file используется для переименования или перемещения файла/директории. Он является мощным инструментом для работы с файловой системой.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Что будет выведено при выполнении кода?

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4