Rumah  >  Artikel  >  Java  >  Fungsi Hashing di Jawa

Fungsi Hashing di Jawa

WBOY
WBOYasal
2024-08-30 15:33:22817semak imbas

Fungsi Hashing dalam Java dicipta sebagai penyelesaian untuk mentakrif & mengembalikan nilai objek dalam bentuk integer, dan nilai pulangan ini yang diperoleh sebagai output daripada fungsi hashing dipanggil sebagai nilai Hash. Setiap fungsi Hashing mengembalikan integer 4 bait sebagai nilai pulangan untuk objek. Mana-mana dua objek daripada jenis yang sama akan mempunyai nilai integer yang sama seperti output fungsi Hashing, dan begitu juga, objek yang berbeza akan mempunyai nilai cincang yang berbeza. Seseorang tidak boleh memperoleh objek daripada nilai cincang, dan ini menjadikan fungsi pencincangan fungsi yang tidak boleh diubah.

Apakah Fungsi Hashing?

Mulakan Kursus Pembangunan Perisian Percuma Anda

Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain

Fungsi Hash boleh ditakrifkan sebagai fungsi yang mengembalikan nilai integer yang sepadan dengan Objek. Fungsi Hash sentiasa mengembalikan nilai integer yang sama untuk objek yang sama. Nilai integer yang dikembalikan oleh fungsi hash dipanggil Nilai Hash. Berikut ialah perkara penting mengenai fungsi Hash:

  • Sentiasa mengembalikan integer (4 bait) untuk Objek.
  • Kami tidak boleh mengira keadaan objek daripada nilai cincang iaitu fungsi cincang tidak boleh diterbalikkan.
  • Dua objek yang sama akan mempunyai nilai cincang yang sama.
  • Dua objek yang tidak sama rata tidak selalu mempunyai nilai Hash yang berbeza.

Aplikasi Fungsi Hash

Berikut ialah aplikasi biasa bagi fungsi cincang:

1. Struktur Data

Hampir setiap bahasa pengaturcaraan mengandungi struktur data berasaskan cincang. Sebagai contoh, java mengandungi struktur data Hash, Peta Hash, Set Hash, Set Pokok yang berdasarkan fungsi Hash. Struktur data ini ialah reka bentuk Nilai Kunci, di mana setiap kunci adalah unik, manakala nilai yang sama boleh wujud untuk berbilang kunci.

2. Ringkasan Mesej

Algoritma ini digunakan dalam semakan integriti data. Algoritma ini mengambil mesej dari sebarang panjang sebagai input dan menghasilkan data panjang tetap (128-bit) sebagai output. Contoh algoritma ringkasan mesej termasuk MD2, MD4, MD5 dan MD6.

3. Algoritma Hash Selamat

Algoritma ini digunakan untuk keselamatan data dan digunakan dalam aplikasi serta protokol seperti Secure Socket Layer (SSL). SHA-0, SHA-1, SHA-2 dan SHA-3 adalah kategori biasa bagi Algoritma Hash Selamat.

4. Pengesahan Kata Laluan dan Storan

Mari kita pertimbangkan senario log masuk di mana apabila kata laluan dimasukkan untuk mengesahkan pengguna, nilai cincang kata laluan yang dimasukkan akan dikira dan dihantar melalui rangkaian ke pelayan tempat cincang asal disimpan. Ini dilakukan untuk memastikan tiada sniffing dilakukan apabila kata laluan dihantar daripada klien ke pelayan.

5. Operasi Pengkompil

Memandangkan kata kunci yang berbeza digunakan dalam bahasa pengaturcaraan, untuk membezakan antara kata kunci dan pengecam ini, pengkompil menggunakan set cincang yang dilaksanakan menggunakan jadual cincang untuk menyimpan semua kata kunci dan pengecam ini.

6. Algoritma Rabin- Karp

Ia ialah algoritma carian yang menggunakan pencincangan untuk mencari satu atau lebih corak dalam rentetan tertentu. Ia adalah salah satu Algoritma yang paling biasa digunakan.

7. Antara Muka Setanding dan Pembanding

Antara muka ini mengandungi fungsi yang digunakan untuk membandingkan dua objek pada satu masa. Nilai pulangan bagi fungsi ini mungkin negatif, sifar atau positif berdasarkan sama ada objek tertentu adalah kurang daripada, sama atau lebih besar daripada objek yang kita bandingkan. Pembanding dalaman dan antara muka setanding menggunakan fungsi cincang untuk membandingkan objek antara satu sama lain.

8. Barisan Keutamaan

Barisan keutamaan tidak seperti baris gilir biasa yang mengikut susunan FIFO (First in First Out). Elemen baris gilir keutamaan disusun dalam susunan tersuai berdasarkan keutamaannya, yang dilaksanakan secara dalaman menggunakan setanding dan pembanding yang pelatih berdasarkan Fungsi Hash.

Merancang Fungsi Hash

Berikut ialah beberapa prinsip reka bentuk umum untuk mencipta fungsi cincang:

  • Fungsi cincang harus dinilai dengan cekap.
  • Nilai cincang yang dikira daripada fungsi cincang hendaklah diedarkan secara seragam; ini membantu mengelakkan perlanggaran.
  • Bahasa pengaturcaraan Java menyediakan fungsi pencincangan umum dengan kaedah hashCode () dalam kelas super Objek.
public int hashCode (){
//Logic goes here
}

Perlanggaran Hash di Jawa

Perlanggaran cincang berlaku apabila dua atau lebih objek mengembalikan nilai cincang yang sama. Mari kita ambil contoh peta cincang java yang menyimpan data dalam pasangan nilai kunci. Apabila kita meletakkan objek dalam peta cincang, nilai cincang kunci dikira dan berdasarkan lokasi baldi nilai cincang ini untuk menyimpan objek nilai ditemui. Objek yang mempunyai nilai cincang yang berbeza mesti masuk ke dalam baldi yang berbeza. Apabila dua atau lebih objek mempunyai nilai cincang yang sama, ia disimpan di lokasi baldi yang sama menggunakan struktur data tambahan yang dipanggil senarai terpaut. Semua objek yang mempunyai nilai cincang yang sama dirantai bersama menggunakan senarai terpaut. Mekanisme ini dipanggil rantaian. Berikut ialah cara untuk mengendalikan perlanggaran ialah fungsi cincang:

  • Perantaian: Seperti yang telah dibincangkan, idea di sebalik perantaian adalah untuk mencipta senarai objek yang dipautkan yang mempunyai nilai cincangan yang sama. Chaining ialah teknik yang mudah tetapi memerlukan overhed memori tambahan.
  • Pengalamatan Terbuka: Dalam teknik ini, semua elemen disimpan dalam jadual cincang di mana setiap entri mengandungi sama ada rekod atau NULL. Apabila elemen dicari, setiap entri dalam jadual cincang dicari untuk rekod yang dikehendaki sehingga rekod yang diperlukan ditemui, atau disimpulkan bahawa rekod itu tidak wujud dalam jadual.

Kelebihan Hashing

Berikut adalah kelebihan pencincangan:

  1. Bandingkan kandungan dua fail dengan mudah dan cekap, tanpa membukanya.
  2. Fungsi cincang digunakan dalam menyemak integriti fail.
  3. Dengan bantuan pencincangan, operasi carian dalam struktur data menjadi lebih pantas.
  4. Fungsi cincang memainkan peranan penting dalam keselamatan data kerana kebanyakan algoritma dan protokol keselamatan menggunakan pencincangan.
  5. Pencincangan menukar data kepada nilai atau kunci panjang tetap yang lebih pendek, yang mewakili rentetan asal yang boleh dihantar melalui rangkaian.

Keburukan Hashing

Selain daripada kelebihan, terdapat juga beberapa batasan pencincangan:

  1. Pencincangan tidak boleh dilaksanakan untuk mengisih data.
  2. Perlanggaran cincang tidak boleh dielakkan secara praktikal, yang seterusnya membawa kepada ketidakcekapan.

Atas ialah kandungan terperinci Fungsi Hashing di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Fungsi Matematik di JawaArtikel seterusnya:Fungsi Matematik di Jawa