Java tests
2.42K subscribers
110 photos
12 links
Java задачи и тесты

По всем вопросам- @workakkk

@itchannels_telegram - 🔥лучшие ит-каналы

@pythonl - 🐍

@ai_machinelearning_big_data- ml

@ArtificialIntelligencedl - AI

@datascienceiot - ml 📚

@pythonlbooks-📚
Download Telegram
⚙️ Динамическое изменение поведения объектов с помощью InvocationHandler и Proxy

В Java можно динамически изменять поведение объектов, используя InvocationHandler и Proxy.

🗣️ Это полезно для создания прокси-объектов, которые могут оборачивать существующие объекты и добавлять новые функции, такие как логирование, кеширование или контроль доступа.


InvocationHandler позволяет перехватывать вызовы методов у прокси-объекта и добавлять дополнительное поведение, такое как логирование.

Использование Proxy позволяет динамически создавать новый объект, который ведет себя как реальный объект, но с добавленным поведением.

Этот подход позволяет добавлять новое поведение к существующим объектам без изменения их кода, что делает его мощным инструментом для реализации аспектно-ориентированного программирования (AOP).
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Какая строка на изображении выше успешно скомпилируется?
Anonymous Quiz
11%
// 1
11%
// 2
14%
// 3
11%
// 4
5%
// 5
8%
// 6
40%
Никакая
Сколько строк выведет этот код?
Anonymous Quiz
12%
0. Этот код не скомпилируется
3%
1
16%
2
61%
3
5%
4
3%
Узнать ответ
👍6🔥1
Что из вариантов лучше всего описывается определением: Операция, которая содержит серию задач, которые должны быть выполнены либо все, либо не выполнена ни одн

#spring
Что из вариантов лучше всего описывается определением: Операция, которая содержит серию задач, которые должны быть выполнены либо все, либо не выполнена ни одна.
Anonymous Quiz
5%
Query
86%
Transaction
6%
Prepared statement
3%
Callback
Java-баг, который выглядит нормально, но ломает `HashMap`

Что выведет этот код?


Map<List<Integer>, String> map = new HashMap<>();

List<Integer> key = new ArrayList<>(List.of(1, 2));

map.put(key, "Ritesh");

key.add(3);

System.out.println(map.get(key));


Многие ожидают:


Ritesh


Но результат:

```text
null
```

Почему?

HashMap ищет ключ через:

```java
hashCode()
equals()
```

Когда мы сделали:

```java
map.put(key, "Ritesh");
```

ключ был:

```text
[1, 2]
```

У него был один
hashCode.

Но потом:

```java
key.add(3);
```

ключ стал:

```text
[1, 2, 3]
```

И его
hashCode изменился.

HashMap уже положил объект в bucket по старому hash, а при get() ищет по новому.

Схема:

```text
put()

[1,2]
hash = X

bucket X


key.add(3)

[1,2,3]
hash = Y


get()

ищем bucket Y
→ запись не найдена
```

Главное правило:

Не изменяйте объект после того, как использовали его как ключ в
HashMap.

Лучше использовать:

String
Integer
record
immutable-объекты

Например:

```java
Map<List<Integer>, String> map = new HashMap<>();

List<Integer> key = List.of(1, 2);

map.put(key, "value");
```

Самые опасные баги в Java - те, где объект всё ещё существует, ссылка всё та же, но структура данных уже не может его нормально найти.

#java #backend #programming
1
Вам доклады по Go или Java? VK приглашает на митап с двойной начинкой
26 августа VK собирает Go- и Java-инженеров, чтобы прокачать знания.

В программе два трека — Go и Java, по три доклада в каждом.

Трек Go:
• «Компиляция Go в динамическую либу, или как мы ускорили выкатку фичи в два раза, но нам не понравилось», Михаил Кичигин, бэкенд-разработчик, Avito Tech
• «Go-платформа VK: как мы построили единую основу для создания Go-сервисов», Александр Апанасенко, руководитель команды SDK Backend, VK
• «Почтальон от Kubernetes до Palo Alto. Как осуществляется доставка информации об адресах», Дарья Кулькина, бэкенд-разработчик, Точка Банк

Трек Java:
• «Перформанс-трюки в поисковой платформе Ozon», Пётр Портнов, ведущий разработчик среднего поиска, Ozon
• «Архитектура современного движка платёжной системы и переход к новой архитектуре», Игорь Крикунов, технический лидер разработки DBC, Альфа-Банк
• «Переход от федерации S3-кластеров в пользу коммунального и мультитенантного кластера», Кирилл Боблак, ведущий разработчик One-cloud, VK

А ещё будет мастер-класс по прокачке навыка, который сделает вас звездой любого вечера, и афтепати, чтобы обсудить доклады в неформальной обстановке.

Встречаемся в 17:00, начало в 18:00. Участие бесплатное, регистрация обязательна.
Каким будет результат выполнения кода?
Anonymous Quiz
17%
24
16%
25
65%
32
2%
33
3