Example #1
0
        static void Main(string[] args)
        {
            NativeCache <string> cache = new NativeCache <string>(7);

            cache.Appeal("translator");
            cache.Appeal("video");
            cache.Appeal("google");
            cache.Appeal("yandex");
            cache.Appeal("google");
            cache.Appeal("video");
            cache.Appeal("yandex");
            cache.PrintCache();

            cache.Appeal("vk.com");
            cache.PrintCache();

            cache.Appeal("mts");
            cache.PrintCache();
        }
        static void Main(string[] args)
        {
            NativeCache <string> testCache = new NativeCache <string>(10);

            // Формируем уникальные пары ключ - значение по размеру таблицы
            for (int i = 0; i < testCache.size; i++)
            {
                string key   = "Key0" + i;
                string value = "" + (char)(i + 33);
                testCache.Put(key, value);
            }

            // отображаем внутренние массивы ключей, значений и обращений
            Console.WriteLine("Исходная заполненная таблица:");
            testCache.Print();

            for (int i = 0; i < 10; i++) // имитируем обращения к таблице
            {
                switch (i)
                {
                case 0: testCache.IsKey("Key00"); goto case 1;

                case 1: testCache.IsKey("Key01"); goto case 2;

                case 2: testCache.IsKey("Key02"); goto case 3;

                case 3: testCache.IsKey("Key03"); goto case 4;

                case 4: testCache.IsKey("Key04"); goto case 5;

                case 5: testCache.IsKey("Key05"); goto case 6;

                case 6: testCache.IsKey("Key06"); goto case 7;

                case 7: testCache.IsKey("Key07"); goto case 8;

                case 8: testCache.IsKey("Key08"); goto case 9;

                case 9: testCache.IsKey("Key09"); break;
                }
            }

            // отображаем массивы, число обращений теперь изменилось
            Console.WriteLine("Таблица после обращений:");
            testCache.Print();

            testCache.Put("Key46", "A"); // Добавлем новый ключ в слот с уже существующим ключом

            Console.WriteLine("Таблица после записи новой пары ключ \\ значение :");
            testCache.Print();           // Ключ и значение с минимальным числом обращений перезаписаны

            testCache.Get("Key46");      // увеличиваем число обращений по ключу Key46
            testCache.Get("Key46");      // теперь ключ Key01 с минимальным числом обращений 2
            testCache.Put("Key47", "B"); // Добавляяем новый ключ

            Console.WriteLine("Таблица после записи 2й новой пары ключ \\ значение :");

            testCache.Print();           // Ключ с минимальным числом обращений (Key01) перезаписан

            testCache.Get("Key47");      // увеличиваем число обращений по ключу Key47
            testCache.Get("Key47");      // после обращений к ключу Key 47 теперь ключи Key46 и Key02 с минимальным числом обращений
            testCache.Put("Key47", "C"); // Добавляяем новый ключ

            Console.WriteLine("Таблица после записи 3й новой пары ключ \\ значение :");
            testCache.Print(); // Ключ с минимальным числом обращений (Key46) перезаписан, поскольку в таблице записан раньше ключа Key02

            Console.ReadKey();
        }