PhantomReference —
Используется для
В отличие от finalize(), это надёжный способ отследить
#jvm
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1👏1💯1
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Proglib.academy | IT-курсы
Это просто станет частью профессии. А вот умение встроить AI в процесс разработки так, чтобы он действительно ускорял работу команды, останется конкурентным преимуществом
До конца июля действует специальная цена — 59 990 ₽ вместо 79 990 ₽
Please open Telegram to view this post
VIEW IN TELEGRAM
😁1🤔1
Напишите production-ready ретраер 👇
📦 Задание
Реализуйте утилиту, которая повторяет операцию при временном сбое:
public <T> T executeWithRetry(Supplier<T> operation) {
// Ваша реализация
}📋 Требования
— Максимум N попыток.
— Экспоненциальная задержка: 100ms → 200ms → 400ms… с верхней границей (cap).
— Добавить jitter (случайный разброс), чтобы избежать «thundering herd» при массовых ретраях.
— Ретраить только временные ошибки, бизнес-ошибки пробрасывать сразу.
— Корректно обработать прерывание (InterruptedException + восстановление флага interrupt).
— После исчерпания попыток пробросить последнее исключение (с сохранением причины).
Ставьте → 🔥, если нравится формат. Если нет → 🌚
#practise
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍1👏1
HashMap —
Что происходит при put(key, value):
🔹 Коллизия:
До Java 8 →
С Java 8 →
// Упрощённо: Node в списке или TreeNode в дереве
static class Node<K,V> {
final int hash;
final K key;
V value;
Node<K,V> next;
}
🔹 Load factor и resize:
По умолчанию capacity =
Как только элементов стало больше
Поэтому если заранее знаете размер — задавайте начальную ёмкость:
// Хотим 1000 элементов без resize:
// 1000 / 0.75 ≈ 1334, берём следующую степень двойки
Map<String, Integer> map = new HashMap<>(2048);
#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2🔥1
Когда название файла уже само по себе считается техническим долгом 👇
Forwarded from Proglib.academy | IT-курсы
У вас в проекте есть файл вроде utils_v2_final_FIX.py, который все боятся трогать ❓
Что делаете с таким легаси?
❤️ Не трогаю: работает — и ладно
👍 Переписываю с нуля и надеюсь на лучшее
🔥 Сначала покрываю тестами, потом рефакторю по частям
👾 У нас такого нет — честно-честно
На курсе «ИИ для разработчиков» разберём третий подход: как с помощью агента зафиксировать текущее поведение легаси-кода тестами, а затем менять его небольшими безопасными шагами — без одного огромного PR на тысячу файлов.
До 31 июля действует скидка и бессрочный доступ к материалам.
🔗 Занять место со скидкой
🏃♀️ Proglib Academy
Что делаете с таким легаси?
❤️ Не трогаю: работает — и ладно
👍 Переписываю с нуля и надеюсь на лучшее
🔥 Сначала покрываю тестами, потом рефакторю по частям
👾 У нас такого нет — честно-честно
На курсе «ИИ для разработчиков» разберём третий подход: как с помощью агента зафиксировать текущее поведение легаси-кода тестами, а затем менять его небольшими безопасными шагами — без одного огромного PR на тысячу файлов.
До 31 июля действует скидка и бессрочный доступ к материалам.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
— Statement используется для
— PreparedStatement
Поэтому в реальных проектах почти всегда используют PreparedStatement.
#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤🔥1🔥1
this — это
—
—
—
—
#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤2🔥1
@Qualifier используется для
Без @Qualifier Spring не знает,
@Bean
@Qualifier("primary")
public DataSource primaryDB() { ... }
@Bean
@Qualifier("secondary")
public DataSource secondaryDB() { ... }
@Autowired
@Qualifier("primary")
private DataSource dataSource;
Альтернатива — использовать
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍2🔥1
Разработчику нужен стабильный результат, DevOps — контроль инфраструктуры, техлиду — правила для всей команды. Собрали это в одном посте 👇
Forwarded from Proglib.academy | IT-курсы
Но цель одна: перейти от случайных удачных запусков к управляемому процессу на реальном проекте — с понятными правилами, ревью, контролем расходов и безопасности
На курсе «ИИ для разработчиков» участники выстраивают такой процесс на практике: подключают инструменты, задают границы для агента и учатся понимать, где ему можно доверять работу, а где требуется проверка.
Please open Telegram to view this post
VIEW IN TELEGRAM
Нагрузочное тестирование — это проверка поведения системы
Обычно проверяем:
—
—
—
—
Используем инструменты типа
#tests
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤2🔥1
ConcurrentHashMap использует
В отличие от Collections.synchronizedMap(...), который
#concurrency
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥4❤2🥰1
Один доступ вместо вечного выбора между «нужно для работы» и «давно хотелось изучить» 👇
Forwarded from Proglib.academy | IT-курсы
Сегодня хочется разобраться в AI-агентах. Через пару недель появляется задача, где нужны алгоритмы. Потом понимаешь, что неплохо бы освежить Python или математику для Data Science.
В подписку Proglib Academy входят все основные направления — AI, ML, Python, алгоритмы, математика для DS и другие курсы, а ещё закрытый видеохаб с вебинарами практиков.
Начать можно с пробного месяца. Если решите остаться, его стоимость зачтётся при оформлении подписки
Please open Telegram to view this post
VIEW IN TELEGRAM
В Java классы не поддерживают множественное наследование, а только интерфейсы позволяют такое. Если два интерфейса имеют одинаковый default-метод, то компилятор потребует явного переопределения в классе. Это и есть решение проблемы.
#tests
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2😁2🥱2