Skip to content

evdmatvey/lru-cache

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Цель:

  1. Попробовать реализовать в учебных целях простой cache, который реализует LRU стратегию
  2. Реализовать свой двусвязный список
  3. Попробовать следовать TDD

Структуры данных:

  1. Двусвязный список

    • свой класс DoubleLinkedList (Не LinkedList т.к. нужно будет удалять элемент из конца)
  2. Хэш-таблица

    • JS Map

Алгоритм работы:

  1. Пусть размер кеша n

  2. Пока число закешированных элементов (C) меньше n, добавляем элемент в начало кэша

  3. Если С = n:

    • Если элемент есть в кэше, переместить его в начало
    • Если элемента нет в кэше, убрать последний и добавить его в начало
  4. Сохранить в хеш-таблице актуальную информацию о номерах элементов

С какими данными может работать:

  1. number
  2. string

Что можно улучшить

  1. Добавить возможность указывать timeout удаления элемента из кеша
  2. Добавить возможность использовать произвольные объекты как ключ и как значение

About

Implementation of lru-cache for educational purposes in typescript

Topics

Resources

Stars

Watchers

Forks