В первой части постов навалили жесткой базы, чтобы вправить мозги на место. Во второй дали конкретные инструменты, фреймворки и пошаговые инструкции, что нужно кодить прямо сейчас.
Часть 1. Введение, юзкейсы и реальность
Разбираемся с терминами, снимаем розовые очки и смотрим, где ИИ реально приносит бабки, а где только жжет нервы:
1. «Так что вообще считается AI-агентом?»
2. «Где тут бот, а где уже AI-агент?»
3. «Не надо пихать AI-агента в каждую задачу»
4. «Что уже можно спокойно делать через AI-агентов?»
5. «А что через AI-агентов пока лучше не трогать?»
Часть 2. Изнанка, ошибки и архитектура
Как всё это устроено под капотом, чтобы не слить бюджет и не наломать дров на старте:
6. «Можно ли просто сесть вечером и собрать себе AI-агента?»
7. «С чего вообще начать, если хочется попробовать AI-агентов»
8. «Почему AI-агент может внезапно начать творить дичь»
9. «Где AI-агенты реально экономят время, а где только добавляют возни»
10. «Почему они жрут столько денег?»
Часть 3. Хардкорная практика (Что делать руками)
Хватит теории. Открываем ноут, запускаем Cursor и делаем нормальные, отказоустойчивые системы:
11. «Почему одного промпта мало?»
12. «Почему AI-агенту мало просто “дать доступ к данным”»
13. «Если не следить за AI-агентом, он быстро начинает жить своей жизнью»
14. «Собрать демку легко. Но как же сделать нормально»
15. «Как сделать, чтобы это не развалилось через неделю?»
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👏1💯1
BeanFactory —
ApplicationContext расширяет BeanFactory и добавляет всё, без чего реальное приложение не живёт:
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥1😁1
False sharing возникает, когда
Несмотря на отсутствие логической связи, процессор вынужден постоянно инвалидировать кэш, создавая задержки.
Последствия:
Как избежать:
•
•
•
#concurrency
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥1😁1
Optional<T> —
Не стоит использовать
—
—
—
Стоит использовать:
#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥1👏1💯1
G1
Ключевые фазы
→
→
→
→
#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1🔥1
PhantomReference —
Используется для
В отличие от finalize(), это надёжный способ отследить
#jvm
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1🔥1👏1
WeakReference — это
Если на объект есть только weak references, GC может
WeakReference<Data> weak = new WeakReference<>(data);
data = null;
// GC может удалить объект
Data retrieved = weak.get(); // может вернуть null
Используется в
#jvm
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1🔥1🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
Включайте кружок там личное приглашение от спикера. 👆
Уже завтра в прямом эфире, разбираем архитектуру контекста в мультиагентных системах.
🤫 Секретный лут:
👉 Регистрируйтесь на трансляцию
Please open Telegram to view this post
VIEW IN TELEGRAM
Иммутабельный объект — это объект,
🤖 Осталось 4 места на курс по ИИ-агентам. Набор закрывается 30 апреля.
🔗 Успеть на обучение
#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2❤1
Многопоточность — это способность программы
Параллелизм, с другой стороны, — это
#concurrency
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥1👏1
Осталось всего 4 места на курс по ИИ-агентам. 30 апреля закрываем набор окончательно.
В ГС честно рассказали:
— Кому курс не подойдет;
— Какой хардкор в программе (LangGraph, AutoGen, CrewAI);
— Как мы даем токены, чтобы вы не тратили свои деньги.
🏃♀️ Записаться, пока есть места
В ГС честно рассказали:
— Кому курс не подойдет;
— Какой хардкор в программе (LangGraph, AutoGen, CrewAI);
— Как мы даем токены, чтобы вы не тратили свои деньги.
Please open Telegram to view this post
VIEW IN TELEGRAM
🌚1
@Conditional регистрирует бин только при
@Bean
@Conditional(WindowsCondition.class)
public Service windowsService() {
return new WindowsService();
}
class WindowsCondition implements Condition {
public boolean matches(ConditionContext context,
AnnotatedTypeMetadata metadata) {
return System.getProperty("os.name")
.contains("Windows");
}
}
Spring Boot предоставляет готовые: @ConditionalOnProperty, @ConditionalOnClass, @ConditionalOnMissingBean.
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤2🔥1
🔹 synchronized —
—
—
—
🔹 ReentrantLock
ReentrantLock lock = new ReentrantLock();
// Попытка без ожидания
if (lock.tryLock()) {
try {
// критическая секция
} finally {
lock.unlock(); // обязателен!
}
}
// С таймаутом
if (lock.tryLock(500, TimeUnit.MILLISECONDS)) { ... }
// С прерыванием
lock.lockInterruptibly();
🔹 Когда synchronized
🔹 Когда ReentrantLock
#concurrency
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍3🔥1
Метод возвращает устаревшие данные. Иногда и только на нескольких потоках. Воспроизвести локально — нереально 👇
📦 Задание — code review
Команда добавила простой in-memory кэш для тяжёлых вычислений. На одном потоке работает идеально. На проде с нагрузкой — иногда возвращает старый результат или null.
@Component
public class PricingCache {
private final Map<String, BigDecimal> cache = new HashMap<>();
private final PricingEngine pricingEngine;
public PricingCache(PricingEngine pricingEngine) {
this.pricingEngine = pricingEngine;
}
public BigDecimal getPrice(String productId) {
if (cache.containsKey(productId)) {
return cache.get(productId);
}
BigDecimal price = pricingEngine.calculate(productId);
cache.put(productId, price);
return price;
}
public void invalidate(String productId) {
cache.remove(productId);
}
public void invalidateAll() {
cache.clear();
}
}
▪️ Объясни
— В чём проблема в коде
— Как переписать getPrice верно
Ставьте → 🔥, если нравится формат. Если нет → 🌚
#practise
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍3❤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
👍8❤2🔥2
Strategy — это
Когда использовать:
—
—
—
Преимущества:
#patterns
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3🔥2⚡1
Singleton — это
🔹 Основные характеристики:
—
—
—
🔹 Когда использовать:
—
—
—
—
#patterns
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍3🔥1
Adapter (Адаптер) — это
🔹 Когда использовать:
#patterns
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥1🤔1