Lab5 - tkmrqq/LaboratoryWorks GitHub Wiki

Лабораторная работа 5

Цель: освоить принципы работы с хеш-таблицами и двусвязными списками.

Задача: написать программу поиска с кэшем.

Условия приема:

  • Оформление - названия файлов, функций, переменных, отступы, структура проекта и т.п.; небольшие баги должны быть исправлены. // Code name convention (camelCase, snake_case)
  • Использование Git (использование файлов gitignore, README)
  • Условие автомата: Sonar (Отсутствие багов и code Smells)

Условия: Программа должна выполнять поиск IP адреса по доменному имени в файле, содержащем DNS таблицу. Поиск необходимо реализовать через кэш с алгоритмом LRU.

  1. Пользователь задает доменное имя.
  2. Программа проверяет наличие данных в кэше: a. если HIT (присутствует в кэше) – возвращает IP адрес пользователю. b. если MISS (отсутствует в кэше) – программа производит поиск по файлу, помещает запись в кэш и возвращает IP адрес.

Кэш должен содержать значения <key, value>, где k – это доменное имя, а v – IP адрес. Данные в кэш помещаются по алгоритму LRU. Примерная структурная схема кэша:

image

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 адреса.
⚠️ **GitHub.com Fallback** ⚠️