Johdatus Java-hajautustoimintoon
Koska tiedämme, että Java on oliokeskeinen kieli, siis objektin tilan kuvaamiseksi tulisi olla mekanismi, olipa objekti sitten suuri tahansa. Java-hajautustoiminto syntyi tämän vaatimuksen täyttämiseksi.
Mikä on hashing-toiminto?
Hash-funktio voidaan määritellä funktiona, joka palauttaa objektin vastaavan kokonaisluvun. Hash-funktio palauttaa aina saman kokonaislukuarvon samalle objektille. Hajautustoiminnon palauttama kokonaislukuarvo on nimeltään Hash-arvo. Seuraavassa on tärkeitä asioita koskien Hash-toimintoa:
- Palauttaa aina kokonaisluvun (4 tavua) objektille.
- Objektitilaa ei voida laskea hash-arvosta, joka hash-funktiot ovat luonteeltaan peruuttamattomia.
- Kahdellä samanlaisella esineellä on sama hash-arvo.
- Kahdessa epätasa-arvoisessa objektissa ei aina ole erilaisia Hash-arvoja.
Hash-toiminnon sovellukset
Tässä on hash-toimintojen yleisiä sovelluksia:
1. Tietorakenteet
Lähes jokainen ohjelmointikieli sisältää hash-pohjaiset tietorakenteet. Esimerkiksi java sisältää Hash-taulukon, Hash Map, Hash Set, Tree Set datarakenteet, jotka perustuvat Hash-toimintoon. Näiden tietorakenteiden perusta on avain-arvosuunnittelu, jossa jokainen avain on ainutlaatuinen, kun taas sama arvo voi esiintyä useille avaimille.
2. Message Digest
Tätä algoritmia käytetään tietojen eheyden tarkistamisessa. Tämä algoritmi ottaa sisään minkä tahansa pituisen viestin ja tuottaa lähtönä kiinteän pituisen (128-bittisen) datan. Esimerkkejä viestin hajotusalgoritmeista ovat MD2, MD4, MD5 ja MD6.
3. Suojattu Hash-algoritmi
Tätä algoritmia käytetään tietoturvallisuuteen ja sitä käytetään sovelluksissa ja protokolloissa, kuten SSL (Secure Socket Layer). SHA-0, SHA-1, SHA-2 ja SHA-3 ovat yleisiä luokkia Secure Hash -algoritmissa.
4. Salasanan tarkistus ja tallennus
Tarkastellaan sisäänkirjautumisskenaariota, jossa salasanan syöttämisen yhteydessä käyttäjän todentamiseksi, lasketun syötetyn salasanan hash-arvo lasketaan ja lähetetään verkon kautta palvelimelle, johon alkuperäisen tiiviste tallennetaan. Tämä tehdään sen varmistamiseksi, ettei hanua suoriteta, kun salasana lähetetään asiakkaalta palvelimelle.
5. Kääntäjän toiminta
Koska ohjelmointikielellä käytetään erilaisia avainsanoja näiden avainsanojen ja tunnisteiden erottamiseksi, kääntäjä käyttää hajautusjoukkoa, joka toteutetaan hajautustaulukon avulla, kaikkien näiden avainsanojen ja tunnisteiden tallentamiseen.
6. Rabin-Karp-algoritmi
Se on hakualgoritmi, joka käyttää hajautusta etsimään yhtä tai useampaa mallia tietystä merkkijonosta. Se on yksi yleisimmin käytetyistä algoritmeista.
7. Vertailukelpoiset ja vertailurajapinnat
Nämä rajapinnat sisältävät toimintoja, joita käytetään kahden objektin vertailuun kerrallaan. Näiden funktioiden palautusarvo voi olla negatiivinen, nolla tai positiivinen perustuen siihen, onko annettu objekti pienempi, yhtä suuri tai suurempi kuin objekti, johon verrataan. Sisäisesti vertailija ja vertailukelpoiset rajapinnat käyttävät hajautusfunktiota esineiden vertailuun toisistaan.
8. Prioriteettijono
Prioriteettijono on toisin kuin normaali jono, joka seuraa FIFO (ensimmäinen ensimmäisenä) -järjestystä. Prioriteettijonoissa elementit on järjestetty mukautettuun järjestykseen niiden prioriteetin perusteella, joka toteutetaan sisäisesti vertailukelpoisella ja vertailijalla, joka harjoittelijoille perustuu Hash-toimintoihin.
Hash-toimintojen suunnittelu
Tässä on joitain yleisiä suunnitteluperiaatteita hash-toimintojen luomiseen:
- Hajautustoiminto tulisi arvioida tehokkaasti.
- Hajautusfunktioista lasketut hash-arvot tulisi jakaa tasaisesti, tämä auttaa välttämään törmäyksiä.
- Java-ohjelmointikieli tarjoaa yleisen hash-toiminnon hashCode () -menetelmällä Object-superluokassa.
public int hashCode ()(
//Logic goes here
)
Hash-törmäys Java-ohjelmassa
Hajautumisen aiheuttama törmäys tapahtuu, kun kaksi tai useampi esine palauttaa saman hash-arvon. Otetaanpa esimerkki java-hash-kartasta, joka tallentaa tiedot avain-arvopareihin. Kun laitamme objektin hash-kartalle, avaimen hash-arvo lasketaan ja tämän hash-arvon kauhan sijainti arvo-objektin tallentamiseksi löytyy. Objektien, joilla on erilaiset hash-arvot, on mentävä erilaisiin kauhoihin. Kun kahdella tai useammalla esineellä on sama hash-arvo, ne tallennetaan samaan kauhan sijaintiin käyttämällä ylimääräistä tietorakennetta, jota kutsutaan linkitettynä luettelona. Kaikki objektit, joilla on sama hash-arvo, ketjuutetaan yhdessä linkitetyn luettelon avulla. Tätä mekanismia kutsutaan ketjuttamiseksi. Seuraavat tavat käsitellä törmäyksiä on hash-toiminto:
- Ketjuttaminen: Kuten jo käsitelty, ketjuttamisen taustalla on luoda linkitetty luettelo esineistä, joilla on sama hash-arvo. Ketjuttaminen on yksinkertainen tekniikka, mutta vaatii ylimääräistä muistia.
- Open Addressing: Tässä tekniikassa kaikki elementit tallennetaan hash-taulukkoon, jossa jokainen merkintä sisältää joko tietueen tai NULL: n. Kun elementtiä etsitään, hajautustaulukon jokaisesta merkinnästä etsitään haluttua tietuetta, kunnes vaadittu tietue löytyy tai todetaan, että tietuetta ei ole taulukossa.
Hajautuksen edut
Seuraavat ovat hajauttamisen etuja:
- Vertaa kahden tiedoston sisältöä helposti ja tehokkaasti avamatta niitä.
- Hash-toimintoja käytetään tiedoston eheyden tarkistamiseen.
- Hajautuksen avulla hakuoperaatio tietorakenteissa on nopeutunut.
- Hash-toiminnot ovat tärkeässä asemassa tietoturvassa, koska suurin osa tietoturva-algoritmeista ja -protokoloista hyödyntää hajauttamista.
- Hajautus muuntaa datan lyhyemmäksi kiinteän pituiseksi arvoksi tai avaimeksi, joka edustaa alkuperäistä merkkijonoa, joka voidaan lähettää verkon kautta.
Hajautuksen haitat
Hyötyjen lisäksi hajauttamiselle on myös joitain rajoituksia:
- Hajauttamista ei voida toteuttaa tietojen lajittelua varten.
- Hajautumisen törmäystä ei voida käytännössä välttää, mikä puolestaan johtaa tehottomuuteen.
Suositellut artikkelit
Tämä on opas Java-hashing Function -sovellukseen. Tässä keskustellaan hash-toiminnon sovelluksista sekä eduista ja haitoista. Voit myös katsoa seuraavia artikkeleita saadaksesi lisätietoja -
- VB.Netin ilmoitus ja alustaminen
- Java-ohjelma näyttää HashMap ja TreeMap
- Hajauttamisen tyypit DBMS-järjestelmässä
- Steganografian tekniikat
- Ryhmät Java-ohjelmoinnissa
- Hashmap Java-sovelluksessa