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

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

Сотрудничество @offercraft_support
Download Telegram
Какие ограничения накладываются на Java-апплеты?
Ответ -
В основном из-за соображений безопасности на Java-апплеты налагаются следующие ограничения:
*️⃣Апплет не может загружать библиотеки или определять собственные методы.
*️⃣Апплет не может обычно читать или записывать файлы на хосте выполнения.
*️⃣ Апплет не может читать определенные системные свойства.
*️⃣Апплет не может устанавливать сетевые соединения, кроме как с хостом, с которого он пришел.
*️⃣ Апплет не может запускать никакую программу на хосте, который его выполняет.

🖥 Java Developer | Backend | #⃣#вопрос #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7👏2🔥1
Паттерны проектирования. Структурные паттерны. Decorator (Декоратор).

Паттерн проектирования "Декоратор" (Decorator) используется для динамического добавления новых обязанностей объектам, не изменяя их структуру. Этот паттерн позволяет расширять функциональность объектов, оборачивая их в класс-декоратор. Это особенно полезно, когда нужно добавить функциональность к объектам на лету, не создавая при этом большое количество подклассов.
interface Car {
void draw();
}
class SportCar implements Car {
public void draw() {
System.out.println("SportCar");
}
}
class UnknownCar implements Car {
public void draw() {
System.out.println("UnknownCar");
}
}
abstract class CarDecorator implements Car {
protected Car decorated;
public CarDecorator(Car decorated){
this.decorated = decorated;
}
public void draw(){
decorated.draw();
}
}
class BlueCarDecorator extends CarDecorator {
public BlueCarDecorator(Car decorated) {
super(decorated);
}
public void draw() {
decorated.draw();
setColor();
}
private void setColor(){
System.out.println("Color: red");
}
}

public class DecoratorTest {
public static void main(String[] args) {
Car sportCar = new SportCar();
Car blueUnknownCar = new BlueCarDecorator(new UnknownCar());
sportCar.draw();
System.out.println();
blueUnknownCar.draw();
}
}

😎 Преимущества паттерна Decorator

1⃣ Гибкость: Можно легко комбинировать различные декораторы.

2⃣Расширяемость: Новые декораторы могут быть добавлены без изменения существующего кода.

3⃣ Соблюдение принципа единственной ответственности: Каждый класс отвечает за свою часть функциональности.

😌 Недостатки паттерна Decorator

1⃣Сложность: Может привести к большому количеству классов.

2⃣Трудности с отладкой: Из-за оберток может быть сложнее отследить поведение программы.

Таким образом, паттерн "Декоратор" позволяет динамически добавлять новые функциональности к объектам, сохраняя при этом гибкость и расширяемость системы.

🖥Java Developer | Backend |#⃣ #обучение #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥2
🔤 Сериализация в Java. Давайте разбираться

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

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

🖥Java Developer | Backend |#⃣ #статья #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9👏3🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁4👏2👍1
Leetcode. Задача 135. Candy. (hard)

В очереди стоят n детей. Каждому ребенку присвоено значение рейтинга, указанное в массиве целых чисел ratings.

Вы раздаете конфеты этим детям с соблюдением следующих требований:

Каждый ребенок должен получить как минимум одну конфету.
Дети с более высоким рейтингом должны получать больше конфет, чем их соседи.
Верните минимальное количество конфет, которое вам нужно иметь, чтобы распределить их среди детей.

Пример:
Input: ratings = [1,0,2]
Output: 5
Explanation: You can allocate to the first, second and third child with 2, 1, 2 candies respectively.


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

1⃣Мы начинаем с создания массива конфет той же длины, что и массив оценок, и инициализируем все его значения значением 1;

2⃣Проход слева-направо. Мы проходим по массиву оценок от начала до конца. Для каждого ребенка (кроме первого) мы сравниваем его рейтинг с рейтингом слева. Если он выше, мы обновляем массив конфет, чтобы этот ребенок был на единицу больше, чем ребенок слева. Это учитывает второе условие, но учитывает только левого соседа ребенка;

3⃣Проход справа-налево. После прямого прохода мы снова проходим по массиву, но в обратном направлении. На этот раз мы сравниваем рейтинг каждого ребенка с рейтингом ребенка справа. Если рейтинг выше, нам нужно убедиться, что у ребенка больше конфет, чем у правого соседа. Итак, мы обновляем массив конфет для этого потомка, чтобы он был максимальным между его текущим количеством конфет и на одну конфету больше, чем конфеты правого соседа. Это гарантирует, что оба соседних условия проверены и выполнены;

4️⃣В конце считаем сумму конфет.

😎 Решение:
class Solution {
public int candy(int[] ratings) {
int n = ratings.length;
int[] candies = new int[n];
Arrays.fill(candies, 1);

for (int i = 1; i < n; i++) {
if (ratings[i] > ratings[i - 1]) {
candies[i] = candies[i - 1] + 1;
}
}
for (int i = n - 2; i >= 0; i--) {
if (ratings[i] > ratings[i + 1]) {
candies[i] = Math.max(candies[i], candies[i + 1] + 1);
}
}
int totalCandies = 0;
for (int candy : candies) {
totalCandies += candy;
}
return totalCandies;
}
}


🖥 Java Developer | Backend | #⃣#задача #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1👏1
Какова цель метода Class.forName?
Ответ -
Этот метод используется для загрузки драйвера, который установит соединение с базой данных.

🖥 Java Developer | Backend | #⃣#вопрос #java
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍2👏1
🔤 Оптимистические и пессимистические блокировки на примере Hibernate (JPA)

В данное статье рассказывается про то, зачем нужны оптимистические и пессимистические блокировки

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

🖥Java Developer | Backend |#⃣ #статья #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32🔥2
Честно, ещё один баг и я скажу «Я согласна!»

🖥 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