[xxhash] Criei o cuckooget para salvar sites localmente em altíssima velocidade [cuckoohash table]

4 min

language: ja bn en es hi pt ru zh-cn zh-tw

Olá, sou um inútil.
Não existia nada com os recursos que eu queria para criar um espelho de site localmente, então eu o fiz.
httpithub.cturackooget

Introdução

A funcionalidade de espelhamento deste site é fortemente influenciada por xavier roche, o criador do HTTrack.
[xavier roche’s homework](httplog.httrack.c
Ao ler o blog dele, vi o seguinte artigo.
[Coucal, Cuckoo-hashing-based hashtable with stash area C library](httplog.httrack.c/uc
Em relação às tabelas hash Cuckoo, há uma explicação fácil de entender no slide ""O mundo das tabelas hash que você não conhece"" do slide de Kumagi, que todos adoram.

Eu tive uma ideia. É a parte que "expulsa outros elementos como o hábito do cuco" em caso de colisão. Pensei que essa característica poderia ser aproveitada quando há uma lista enorme e a possibilidade de duplicação.
ahewfewjjwefawefj

Cálculo de Hash

Como não exige segurança, encontrei o recente xxhash e o incorporei.
Como são necessários dois tipos para a tabela hash Cuckoo, eles são gerados com xxh32 e xxhash64.
Além disso, como Iigau-kun percebeu que eu havia fixado o limite superior do tamanho da tabela, fiz com que o tamanho da tabela fosse redimensionado com _resize.

Ponderação Inexistente em Outros Lugares

A prioridade de salvamento do URL de destino varia ao descrever sequencialmente as strings contidas no URL com a opção -w --weight.
Por exemplo, isso tornou possível configurar de forma flexível, sem depender da especificação hierárquica.

O mais rápido?

Não vou escrever muito porque provavelmente serei criticado, mas o número de conexões padrão é 50.
Mas, para ser honesto, é rápido mesmo sem chegar a 50.
Por que a velocidade é importante? Eu estava salvando o quadro UNIX do 5ch por volta de 2022 ou 2023. Eram aproximadamente 30GB.
Naquela época, fiquei chocado com a quantidade de scripts que faziam com que os tópicos e postagens históricos fossem rapidamente perdidos nos arquivos antigos.
Por isso, para mim, a velocidade era inevitavelmente importante.

O que resta...

Gostaria de criar um arquivo de cache que falhei em fazer uma vez e permitir a continuação do processamento após uma interrupção, e talvez a implementação de um cache LRU...
Tive várias falhas, então quero tentar incorporá-las de alguma forma.
Então. Conto com vocês novamente.

E... eu estava tão cansado que adormeci enquanto olhava para o computador...