Lab5 - tkmrqq/LaboratoryWorks GitHub Wiki
Условия приема:
- Оформление - названия файлов, функций, переменных, отступы, структура проекта и т.п.; небольшие баги должны быть исправлены. // Code name convention (camelCase, snake_case)
- Использование Git (использование файлов gitignore, README)
- Условие автомата: Sonar (Отсутствие багов и code Smells)
Условия: Программа должна выполнять поиск IP адреса по доменному имени в файле, содержащем DNS таблицу. Поиск необходимо реализовать через кэш с алгоритмом LRU.
- Пользователь задает доменное имя.
- Программа проверяет наличие данных в кэше: a. если HIT (присутствует в кэше) – возвращает IP адрес пользователю. b. если MISS (отсутствует в кэше) – программа производит поиск по файлу, помещает запись в кэш и возвращает IP адрес.
Кэш должен содержать значения <key, value>, где k – это доменное имя, а v – IP адрес. Данные в кэш помещаются по алгоритму LRU. Примерная структурная схема кэша:
DNS-файл содержит данные вида: lms.bsuir.by IN A 192.168.251.23 (тип 1) lms2.bsuir.by IN CNAME lms.bsuir.by (тип 2)
На 4-6
- Реализовать алгоритм хеширования.
- Реализовать кэш (размер кэша ограничен программой!!!) с алгоритмом LRU.
- Реализовать поиск для записей типа 1.
- Подготовить файл для тестирования программы.
На 7-8
- Реализовать поиск для записей типа 2.
- Добавить возможность добавления записей в файл (валидации на ввод IP и дублирование записей!!!).
На 9-10
- Реализовать поиск всех доменных имен для IP адреса.