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👍3🔥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
🥱3👍2😁2
This media is not supported in your browser
VIEW IN TELEGRAM
Разберём на вебинаре, как тратить меньше на AI-агентов — без потери качества кода.
— когда дорогая модель действительно нужна, а когда хватит дешёвой;
— сколько стоит один прогон и куда уходят токены;
— какие задачи можно отдавать субагентам;
— как настроить маршрутизацию моделей;
— что проверять в AI-коде перед merge.
Please open Telegram to view this post
VIEW IN TELEGRAM
Facade — это
Простыми словами:
▪️ Пример:
// Сложная подсистема
class InventoryService {
boolean checkStock(String productId) {
return true; // проверка на складе
}
}
class PaymentService {
boolean charge(String userId, BigDecimal amount) {
return true; // списание средств
}
}
class ShippingService {
String createShipment(String orderId, String address) {
return "TRACK-" + orderId; // создание доставки
}
}
class NotificationService {
void sendOrderConfirmation(String userId, String trackingId) {
System.out.println("Уведомление отправлено: " + trackingId);
}
}
// Фасад — один метод вместо четырёх
class OrderFacade {
private final InventoryService inventory = new InventoryService();
private final PaymentService payment = new PaymentService();
private final ShippingService shipping = new ShippingService();
private final NotificationService notification = new NotificationService();
public String placeOrder(String userId, String productId,
BigDecimal amount, String address) {
if (!inventory.checkStock(productId)) {
throw new IllegalStateException("Нет на складе");
}
if (!payment.charge(userId, amount)) {
throw new IllegalStateException("Оплата не прошла");
}
String trackingId = shipping.createShipment(productId, address);
notification.sendOrderConfirmation(userId, trackingId);
return trackingId;
}
}
// Клиент вызывает один метод
OrderFacade facade = new OrderFacade();
String tracking = facade.placeOrder("user1", "SKU-100",
new BigDecimal("2999.00"), "Москва, ул. Пушкина");
▪️ Когда использовать
—
—
—
▪️ Минус
#patterns
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4