Skip to content

Megaprog/Cache

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 

Repository files navigation

Cache

Реализация очень абстракного кэша с использованием алгоритмов по выбору: Least Recently Used (LRU) - наименее давно использовавшийся; Least Frequently Used (LFU) - наименее часто используемый.

Основные интерфейсы и реализация кэша находятся в пакете cache. В его вложенных пакетах расположены реализации стратегий хранения, вытеснения, генерации и т.д. В корневом пакете лежат классы для тестирования кэша.

Основным классом, осуществляющим тестирования является TestObjectFactory. Алгоритм достаточно прост. В несколько потоков запускаются процессы сравнивающие значение получаемые по случайно выбранному ключу из тестовой фабрики и эталонной. Если объкты не эквиваленты (они сравниваются методом equeals), то это расхождение добавляется в коллекцию и затем выводится в консоль. Эталонная фабрика реализуется классом RandomEmployeeFactory, она при создании наполняет себя определенным количеством случайно генерируемых объектов Employee. Тестируемая фабрика это двухуровневый потокоустойчивый кэш из класса CacheMTImpl использующий стратегию хранения оперативную память MemoryStore и алгоритм LRU. В качестве фабрики кэш первого уровня получает другой кэш, состоящий из того же класса CacheMTImpl, но использующего стратегию хранения файловую систему и алгоритм LFU. Таким образом, в совокупности получается 2-х уровневый кэш.

Для создания и иннициализации тестовых объектов используется Spring IoC. Файл конфигурации по умолчанию cache.xml

About

Simple realization LFU and LRU cache algorithms

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages