Как реализовать LRU cache?

Middle
268 просмотров
AFK Offer AI

LRU (Least Recently Used) — при переполнении удаляем самый давно использованный элемент. Структура: map для O(1) доступа + doubly linked list для порядка. Get: находишь в map, перемещаешь в голову списка. Put: если есть — обновляешь и в голову. Если нет и полон — удаляешь хвост из списка и map, добавляешь в голову. В Go: container/list для списка, map[key]*list.Element. Для concurrent доступа — оборачиваешь в sync.RWMutex. Часто спрашивают на middle собесах.

Следующий вопрос

Как защитить gRPC сервис?