Skip to content

Latest commit

 

History

History
23 lines (19 loc) · 2.47 KB

README.md

File metadata and controls

23 lines (19 loc) · 2.47 KB

Cache

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

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

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

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