Java Developer | Backend
1.7K subscribers
136 photos
1 video
231 links
Авторский канал действующего java разработчика

Платформа: https://offercraft.ru

Сотрудничество @offercraft_support
Download Telegram
Честно, ещё один баг и я скажу «Я согласна!»

🖥 Java Developer | Backend | #⃣#мемы #java
Please open Telegram to view this post
VIEW IN TELEGRAM
😁5👍4🔥2
Основы Java Collection Framework. Списки (List)

Java Collection Framework (JCF) — это архитектура, которая предоставляет набор интерфейсов и классов для работы с группами объектов. Основные реализации коллекций в Java включают:

😎Списки (List):

1️⃣ArrayList: динамический массив, который позволяет хранить элементы и обеспечивает быстрый доступ по индексу.

2️⃣ LinkedList: реализация списка, основанная на двусвязном списке, обеспечивает быструю вставку и удаление элементов.

Пример:

   import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class ListExample {
public static void main(String[] args) {
// Использование ArrayList
List<String> arrayList = new ArrayList<>();
arrayList.add("Apple");
arrayList.add("Banana");
System.out.println("ArrayList: " + arrayList);

// Использование LinkedList
List<String> linkedList = new LinkedList<>();
linkedList.add("Orange");
linkedList.add("Grape");
System.out.println("LinkedList: " + linkedList);
}
}


Java Collection Framework предлагает множество классов и интерфейсов для работы с данными. Выбор конкретной реализации зависит от требований к производительности и функциональности, таких как необходимость в сохранении порядка элементов или быстром доступе к элементам по индексу.

🖥Java Developer | Backend |#⃣ #обучение #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁4🔥2👍1
🔤 Кэширование с FeignClient: как ускорить микросервисы и стать героем проекта

FeignClient — это такая магия в мире Spring, которая позволяет взаимодействовать с другими сервисами так, будто вы вызываете локальный метод. Никакой головной боли с HTTP-запросами, сериализацией и прочими мелочами.

🔗 Ссылка на статью

🖥Java Developer | Backend |#⃣ #статья #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2👏2
Основы Java Collection Framework. Множества (Set).

Java Collection Framework (JCF) — это архитектура, которая предоставляет набор интерфейсов и классов для работы с группами объектов. Основные реализации коллекций в Java включают:

😎Множества (Set):

1️⃣ HashSet: реализация множества, которая не сохраняет порядок элементов и не допускает дубликатов.

2️⃣ LinkedHashSet: сохраняет порядок добавления элементов.

3️⃣ TreeSet: реализует интерфейс NavigableSet и хранит элементы в отсортированном порядке.

Пример:

   import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.TreeSet;
import java.util.Set;

public class SetExample {
public static void main(String[] args) {
// Использование HashSet
Set<String> hashSet = new HashSet<>();
hashSet.add("Apple");
hashSet.add("Banana");
hashSet.add("Apple"); // Дубликат не будет добавлен
System.out.println("HashSet: " + hashSet);

// Использование LinkedHashSet
Set<String> linkedHashSet = new LinkedHashSet<>();
linkedHashSet.add("Orange");
linkedHashSet.add("Grape");
System.out.println("LinkedHashSet: " + linkedHashSet);

// Использование TreeSet
Set<String> treeSet = new TreeSet<>();
treeSet.add("Banana");
treeSet.add("Apple");
treeSet.add("Grape");
System.out.println("TreeSet: " + treeSet);
}
}


Java Collection Framework предлагает множество классов и интерфейсов для работы с данными. Выбор конкретной реализации зависит от требований к производительности и функциональности, таких как необходимость в сохранении порядка элементов или быстром доступе к элементам по индексу.

🖥Java Developer | Backend |#⃣ #обучение #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32🔥1
Что такое ненадежные апплеты?
Ответ -
Ненадежные апплеты — это те апплеты Java, которые не могут получить доступ к локальным системным файлам или выполнить их. По умолчанию все загруженные апплеты считаются ненадежными.

🖥 Java Developer | Backend | #⃣#вопрос #java
Please open Telegram to view this post
VIEW IN TELEGRAM
4👏2🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7🤩3👍2
Объясните роль драйвера в JDBC.
Ответ -
Драйвер JDBC предоставляет специфичные для поставщика реализации абстрактных классов, предоставляемых API JDBC. Каждый драйвер должен предоставлять реализации для следующих классов пакета java.sql: Connection, Statement, PreparedStatement, CallableStatement, ResultSet и Driver.

🖥 Java Developer | Backend | #⃣#вопрос #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥1👏1
Основы Java Collection Framework. Карты (Map):

Java Collection Framework (JCF) — это архитектура, которая предоставляет набор интерфейсов и классов для работы с группами объектов. Основные реализации коллекций в Java включают:

😎Карты (Map):

1️⃣HashMap: реализация карты, которая не сохраняет порядок ключей и допускает один null ключ.

2️⃣ LinkedHashMap: сохраняет порядок добавления элементов.

3️⃣TreeMap: реализует интерфейс NavigableMap и хранит элементы в отсортированном порядке по ключу.

Пример:

   import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.TreeMap;

public class MapExample {
public static void main(String[] args) {
// Использование HashMap
Map<String, Integer> hashMap = new HashMap<>();
hashMap.put("Apple", 1);
hashMap.put("Banana", 2);
System.out.println("HashMap: " + hashMap);

// Использование LinkedHashMap
Map<String, Integer> linkedHashMap = new LinkedHashMap<>();
linkedHashMap.put("Orange", 3);
linkedHashMap.put("Grape", 4);
System.out.println("LinkedHashMap: " + linkedHashMap);

// Использование TreeMap
Map<String, Integer> treeMap = new TreeMap<>();
treeMap.put("Banana", 2);
treeMap.put("Apple", 1);
treeMap.put("Grape", 3);
System.out.println("TreeMap: " + treeMap);
}
}


Java Collection Framework предлагает множество классов и интерфейсов для работы с данными. Выбор конкретной реализации зависит от требований к производительности и функциональности, таких как необходимость в сохранении порядка элементов или быстром доступе к элементам по индексу.

🖥Java Developer | Backend |#⃣ #обучение #java
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥31👍1👏1
🔤 От подвала до облака: как обучить нейросеть в домашних условиях

Всем известно, что обучение нейросетей требует значительных вычислительных ресурсов. Но что делать, если у вас нет мощного оборудования? В этой статье рассказывается о том, как обучить нейросеть частями, но и объясняются ключевые понятия вроде слоев, батчей, и функций активации. Эта статья может быть полезна начинающим разработчикам, кто только погружается в нейронки.

🔗 Ссылка на статью

🖥Java Developer | Backend |#⃣ #статья #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2👏1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁5👍3🔥3
Задача:
Leetcode. Задача 35. Search Insert Position (easy)

Дан отсортированный массив уникальных целых чисел и значение target. Необходимо вернуть индекс вхождения значения target. Если вхождения нет, то верните индекс, где это значение должно было бы быть в соответствии с порядком.

Вы должны написать алгоритм со временной сложностью O(log n).

Пример:
Input: nums = [1,3,5,6], target = 5
Output: 2


👨‍💻 Алгоритм:

1⃣Инициализируйте указатели left и right: left = 0, right = n - 1.

2⃣Пока left <= right:
Сравните средний элемент массива nums[pivot] с целевым значением target.
Если средний элемент является целевым, то есть target == nums[pivot]: верните pivot.
Если цель не найдена:
Если target < nums[pivot], продолжайте поиск в левом подмассиве. right = pivot - 1.
Иначе продолжайте поиск в правом подмассиве. left = pivot + 1.
3⃣Верните left.

😎 Решение:
class Solution {
public int searchInsert(int[] nums, int target) {
int left = 0;
int right = nums.length - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (nums[mid] == target) {
return mid;
} else if (nums[mid] > target) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return left;
}
}


🖥 Java Developer | Backend | #⃣#задача #java
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👏2👍1
Что такое JDBC?
Ответ -
JDBC — это уровень абстракции, который позволяет пользователям выбирать между базами данных. JDBC позволяет разработчикам писать приложения баз данных на Java, не беспокоясь о базовых деталях конкретной базы данных.
🖥 Java Developer | Backend | #⃣#вопрос #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2👏1
🔤 Мастерство работы с Java Stream

В этой статье мы постараемся подробно рассмотреть Java Stream. Без долгих предисловий сразу приступим к делу. Для начала возьмём знакомый класс Student. Представим, что у нас есть группа студентов:

🔗 Ссылка на статью

🖥Java Developer | Backend |#⃣ #статья #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2👏1
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5😁3👍2👏1
Тестирование с помощью JUnit 5

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

*️⃣Основные аннотации JUnit 5

1️⃣@Test: аннотация, указывающая, что метод является тестовым.

2️⃣ @BeforeEach: метод, помеченный этой аннотацией, будет выполняться перед каждым тестом.

3️⃣ @AfterEach: метод, помеченный этой аннотацией, будет выполняться после каждого теста.

4️⃣ @BeforeAll: метод, помеченный этой аннотацией, будет выполняться один раз перед всеми тестами (должен быть статическим).

5️⃣@AfterAll: метод, помеченный этой аннотацией, будет выполняться один раз после всех тестов (должен быть статическим).

6️⃣@DisplayName: позволяет задать более читаемое имя для теста.

Рассмотрим пример простого класса Calculator и его тестирования с помощью JUnit 5.

public class Calculator {
public int add(int a, int b) {
return a + b;
}

public int subtract(int a, int b) {
return a - b;
}

public int multiply(int a, int b) {
return a * b;
}

public double divide(int a, int b) {
if (b == 0) {
throw new IllegalArgumentException("Division by zero");
}
return (double) a / b;
}
}


Тестовый класс TestCalculator
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

class CalculatorTest {

private Calculator calculator;

@BeforeEach
void setUp() {
calculator = new Calculator();
}

@AfterEach
void tearDown() {
// Здесь можно освободить ресурсы, если это необходимо
}

@Test
@DisplayName("Тестирование сложения")
void testAdd() {
assertEquals(5, calculator.add(2, 3), "2 + 3 должно быть равно 5");
assertEquals(-1, calculator.add(-2, 1), "-2 + 1 должно быть равно -1");
}

@Test
@DisplayName("Тестирование вычитания")
void testSubtract() {
assertEquals(1, calculator.subtract(3, 2), "3 - 2 должно быть равно 1");
assertEquals(-3, calculator.subtract(-2, 1), "-2 - 1 должно быть равно -3");
}

@Test
@DisplayName("Тестирование умножения")
void testMultiply() {
assertEquals(6, calculator.multiply(2, 3), "2 * 3 должно быть равно 6");
assertEquals(-2, calculator.multiply(-1, 2), "-1 * 2 должно быть равно -2");
}

@Test
@DisplayName("Тестирование деления")
void testDivide() {
assertEquals(2.0, calculator.divide(4, 2), "4 / 2 должно быть равно 2.0");
assertThrows(IllegalArgumentException.class, () -> calculator.divide(1, 0), "Деление на ноль должно выбрасывать IllegalArgumentException");
}
}


Тесты можно запускать из IDE (например, IntelliJ IDEA или Eclipse) или с помощью командной строки с использованием Maven или Gradle.

Если вы используете Maven, убедитесь, что у вас в pom.xml добавлена зависимость JUnit 5:

<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.9.0</version>
<scope>test</scope>
</dependency>


*️⃣Заключение

JUnit 5 — это мощный инструмент для тестирования Java-приложений. Он предоставляет множество возможностей для организации и выполнения тестов. Использование аннотаций @BeforeEach, @AfterEach, @Test и других позволяет создавать чистые и понятные тестовые классы. Тестирование кода помогает обеспечить его корректность и надежность при изменениях и добавлении новых функций.

🖥Java Developer | Backend |#⃣ #обучение #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥3👏2
Созвон с начальством

🖥 Java Developer | Backend | #⃣#мемы #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2😁2
🔤 Транзакции в Spring: сила управления данными

Сегодня разберемся с транзакциями в Spring так, чтобы всё стало ясно и понятно: зачем они нужны, как работают и как их настроить так, чтобы данные были под контролем.

🔗 Ссылка на статью

🖥Java Developer | Backend |#⃣ #статья #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Что такое ThreadPool (Часть 1)

ThreadPool (пул потоков) в Java — это механизм, который позволяет управлять группой потоков для выполнения задач. Вместо создания нового потока для каждой задачи, что может быть неэффективно и затратно по ресурсам, пул потоков переиспользует уже существующие потоки для выполнения новых задач. Это позволяет значительно улучшить производительность приложения, особенно в сценариях с большим количеством задач.

*️⃣Основные компоненты ThreadPool:

1️⃣ Executor: интерфейс, который определяет метод execute(), используемый для выполнения задач.

2️⃣ ExecutorService: подинтерфейс Executor, который добавляет методы для управления жизненным циклом пула.

3️⃣ ThreadPoolExecutor: конкретная реализация ExecutorService, которая предоставляет расширенные возможности настройки пула потоков.

*️⃣Пример использования ThreadPool с помощью Executors:

Java предоставляет класс Executors, который позволяет легко создать пул потоков. Например, можно создать фиксированный пул потоков с заданным количеством потоков.

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class ThreadPoolExample {
public static void main(String[] args) {
// Создание пула из 5 потоков
ExecutorService executorService = Executors.newFixedThreadPool(5);

// Добавление задач в пул
for (int i = 0; i < 10; i++) {
final int taskId = i;
executorService.submit(() -> {
System.out.println("Задача " + taskId + " выполняется в потоке " + Thread.currentThread().getName());
try {
Thread.sleep(2000); // Имитация долгой задачи
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
System.out.println("Задача " + taskId + " завершена");
});
}

// Завершение работы пула
executorService.shutdown();
}
}


🖥Java Developer | Backend |#⃣ #обучение #java
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍2👏2
Вопрос: Для чего используется Connection pool?
Ответ -
Взаимодействие с базой данных может быть затратным, в отношении открытия и закрытия подключений к базе данных. Особенно, когда число клиентов базы данных увеличивается, эти затраты очень высоки, и потребляется большое количество ресурсов. Пул подключений к базе данных получается при запуске сервером приложений и поддерживается в пуле. Запрос на подключение обслуживается подключением, находящимся в пуле. В конце подключения запрос возвращается в пул и может использоваться для удовлетворения будущих запросов.

🖥 Java Developer | Backend | #⃣#вопрос #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2