[xxhash] Создание cuckooget для сверхбыстрого локального сохранения сайтов [cuckoohash table]
Привет, я бездарь.
Я создал то, что хотел, с функциями для создания локального зеркала сайта, потому что ничего подобного не существовало.
httpithub.cturackooget
Введение
Функция зеркалирования этого сайта сильно вдохновлена xavier roche, создателем HTTrack.
[xavier roche’s homework](httplog.httrack.c
Читая его блог, я наткнулся на следующую статью:
[Coucal, Cuckoo-hashing-based hashtable with stash area C library](httplog.httrack.c/uc
Что касается хеш-таблиц кукушки, есть понятное объяснение в слайдах Кумаги, которые все любят, под названием "Мир хеш-таблиц, о котором вы не знаете".
Я подумал об этом. Это часть, где при столкновении "выталкиваются другие элементы, как это делает кукушка". Я подумал, что это свойство можно использовать, когда есть огромный список и потенциальные дубликаты.
ahewfewjjwefawefj
Вычисление хеша
Поскольку безопасность не требовалась, я нашел и интегрировал недавний xxhash.
Для хеш-таблицы кукушки требуется два типа, поэтому они генерируются с помощью xxh32 и xxhash64.
Кроме того, как заметил Иигау-кун, я зафиксировал верхний предел размера таблицы, поэтому я реализовал изменение размера таблицы с помощью _resize.
Уникальное взвешивание
Приоритет сохранения целевого URL изменяется путем последовательного указания строк, содержащихся в URL, с помощью опции -w --weight.
Например, это позволяет гибко настраивать параметры без зависимости от иерархического указания.
Самый быстрый?
Я не буду много писать, так как это может вызвать критику, но количество соединений по умолчанию составляет 50.
Но, честно говоря, он быстр и без 50 соединений.
Почему скорость важна? Я сохранял раздел UNIX на 5ch примерно в 2022 или 2023 году. Это было около 30 ГБ.
В то время я был шокирован тем, что из-за слишком большого количества скриптов исторические темы и сообщения постоянно уходили в архив.
Поэтому для меня скорость была крайне важна.
Что осталось...
Я хотел бы создать файл кэша, что я однажды пытался сделать и потерпел неудачу, чтобы можно было продолжить обработку после прерывания, а также реализовать LRU-кэш...
Я потерпел много неудач, поэтому хотел бы как-нибудь это интегрировать.
На этом все. До новых встреч.
И... я устал и заснул, глядя на компьютер...