1. Ymmärrä päällekkäisten tietojen lähde ja vaikutus
Ensinnäkin meidän on ymmärrettävä, miksi niin paljon päällekkäisiä tietoja syntyy. Sanakirjatiedoston rakentamisen aikana tietoja voidaan kerätä useista tietolähteistä, ja näiden tietolähteiden välillä on osittaisia päällekkäisyyksiä. Esimerkiksi kerättäessä tietoja eri sanaluetteloista, yhteisistä salasanasarjoista, erilaisista merkkiyhdistelmäluetteloista jne., Joitakin perussanoja tai yksinkertaisia salasanayhdistelmiä voi olla useissa lähteissä.
Näillä päällekkäisillä tiedoilla on monia haitallisia vaikutuksia. Tallennuksen näkökulmasta 2T:n tila on jo erittäin suuri, ja jos siinä on paljon päällekkäistä sisältöä, se vastaa arvokkaan tallennustilan tuhlausta. Kun käytät tätä sanakirjatiedostoa salasanan murtamiseen tai muihin toimintoihin, päällekkäinen sisältö voi aiheuttaa tarpeettomia haku-ja vertailutoimintoja. Jos esimerkiksi salasanan murtamisen aikana algoritmin on verrattava sanakirjan sisältöä kohdesalasanaan yksitellen, toistuva sisältö lisää vertailujen määrää, mikä hidastaa koko murtamisprosessia.
2. Tekstinkäsittelytyökaluihin perustuva suodatusmenetelmä
Käytä työkaluja Windows-järjestelmässä
-Käytä PowerShelliä
-Windows-järjestelmässä PowerShell tarjoaa runsaasti tekstinkäsittelyominaisuuksia. Voimme käyttää seuraavaa PowerShell-komentosarjaa päällekkäisten rivien poistamiseen:
```powershell
$lines = get-content " dictionary.txt "
$uniqueLines = @ ()
foreach ($line in $lines) {
if ($uniquelines-notcontains $line) {
$uniqueLines + = $line
{
```
Tämä skripti lukee ensin kaikki "dictionary.txt"-rivit taulukkoon "$lines". Kierrä sitten jokainen rivi silmukalla, ja jos rivi ei ole uudessa taulukossa "$ uniqueLines", lisää se uuteen taulukkoon. Lopuksi tallenna uuden taulukon sisältö "unique_dictionary.txt": iin.
Jaa ja valloita algoritmi
-Koska sanakirjatiedostomme ovat erittäin suuria (2T), suora käsittely voi kohdata ongelmia, kuten riittämätön muisti. Jaa ja valloita-algoritmi voi ratkaista tämän ongelman hyvin. Voimme jakaa tämän suuren tiedoston useisiin pienempiin alatiedostoihin. Voimme esimerkiksi jakaa sen tietyn määrän rivejä tai tiedoston koon mukaan.
-Suodata sitten toistuvasti jokaiselle alatiedostolle erikseen. Yhdistä käsitellyt alitiedostot uudelleen yhdeksi tiedostoksi. Yhdistämisen aikana sinun on myös tarkistettava uudelleen, onko päällekkäistä sisältöä, koska sama sisältö voi olla eri alitiedostojen välillä.
4. Tarkista suodatustulokset
Toistuvan suodatuksen suorittamisen jälkeen meidän on tarkistettava, ovatko tulokset oikein. Voit käyttää joitain yksinkertaisia menetelmiä, kuten satunnaisesti valita joitain rivejä ja tarkistaa, kuinka monta kertaa nämä rivit esiintyvät alkuperäisessä tiedostossa ja suodatetussa tiedostossa. Jos se näkyy useita kertoja alkuperäisessä tiedostossa ja vain kerran suodatetussa tiedostossa, suodatus on voimassa.
Lisäksi voit verrata alkuperäisen tiedoston ja suodatetun tiedoston kokoa. Jos suodatetun tiedoston koko on huomattavasti pienempi kuin alkuperäinen tiedosto ja se toimii normaalisti myöhemmissä testeissä (kuten tämän sanakirjatiedoston käyttäminen yksinkertaiseen salasanahakuun nähdäksesi, toimiiko se kunnolla eikä salasanaa, jonka pitäisi olla olemassa, ole puuttunut), se voi myös osoittaa toistuvaa Suodatustyö on saavuttanut hyviä tuloksia.
Palvelimemme käyttää 512G muistia ja nopeaa NVMe-protokollan kiintolevypalvelinta. Käsittelyn onnistuminen kesti puoli kuukautta ja tehokkaiden käsittelykomentosarjojen löytäminen verkkosivuston asiakaspalvelu kommunikoida ja suodattaa toistuvan prosessin aikana esiintyneet sudenkuopat ja kirjoittaa automaattisia käsittelykomentosarjoja!
2T:n tekstityyppisten sanakirjatiedostojen päällekkäisten sisältöjen suodattaminen on haastavaa, mutta erittäin välttämätöntä työtä. Valitsemalla työkaluja ja algoritmeja järkevästi voimme poistaa päällekkäisen sisällön tehokkaasti ja parantaa sanakirjatiedostojen laatua ja käyttötehokkuutta, mikä on erittäin tärkeää sekä salasanan murtamisessa että muissa tähän sanakirjatiedostoon perustuvissa sovellusskenaarioissa.