ฟังก์ชันแฮชคืออะไร?
เป็นสิ่งที่ใช้ในวิทยาการคอมพิวเตอร์ทั้งหมด
ฟังก์ชันแฮชเป็นเพียงฟังก์ชันที่สร้างค่าความยาวคงที่สำหรับแต่ละอินพุตที่ได้รับ
ไม่เป็นไร.
นั่นหมายความว่าอย่างไร?
ฉันมีตัวสร้างแฮช MD5 ที่นี่
MD5 เป็นประเภทของฟังก์ชันแฮช และมีหลายประเภทที่คุณอาจเคยได้ยินเกี่ยวกับ SHA one, SHA
256 และอื่นๆ อีกมากมาย
การใช้ฟังก์ชันแฮชนี้
มาดูกันว่าจะเกิดอะไรขึ้นถ้าฉันทำ
สวัสดี
คุณเห็นได้ทันที
MD5 แฮชสตริงนี้และเปลี่ยนเป็นคำที่ไม่มีความหมายนี้
นั่นคือสิ่งที่ฟังก์ชันแฮชทำ
เราให้อินพุตและฟังก์ชันสร้างรูปแบบสุ่ม
ตอนนี้มีบางแง่มุมที่สำคัญของฟังก์ชันแฮช
อย่างแรกคือมันเป็นวิธีหนึ่ง
ในแง่ที่ว่าถ้าฉันให้สิ่งนี้กับใครซักคน พวกเขาไม่รู้ว่าข้อมูลที่ป้อนคืออะไร
และแทบจะเป็นไปไม่ได้เลยที่ฉันจะมีเงื่อนงำว่าข้อมูลที่ป้อนคืออะไร
อย่างที่สองคือไม่ว่าฉันจะทักทายกี่ครั้งมันก็จะเหมือนเดิม
แต่ทันทีที่ฉันเปลี่ยนสิ่งหนึ่ง มันจะเปลี่ยนผลลัพธ์โดยสิ้นเชิง
ถ้าฉันกลับไปสวัสดีและ
ดูฉันเพิ่งเปลี่ยนเป็นตัวพิมพ์ใหญ่ H แม้แต่ตัวพิมพ์ใหญ่
มันเริ่มต้นด้วย 5 D เพราะถ้าผมเขียนตัวพิมพ์ใหญ่ H มันจะต่างไปจากเดิมอย่างสิ้นเชิงอีกครั้ง
และเมื่อดูสิ่งนี้ อย่างน้อย เราก็สามารถพูดได้ว่า
อืม.
ฉันไม่รู้ว่าสิ่งนี้มีประโยชน์สำหรับอะไร แต่สิ่งหนึ่งที่ฉันรู้คือไม่ว่าอะไรจะเกิดขึ้น ถ้าฉันป้อนข้อมูลแบบเดียวกัน
ก็จะให้ผลลัพธ์แบบเดียวกัน
แต่ฉันไม่รู้ว่าจะแปลงกลับเป็นได้อย่างไร
สวัสดี
นี่คือสิ่งที่เราเรียกว่าเป็นอิสระหรือเป็นอิสระ
มีการออกเสียงที่แตกต่างกัน
ฉันไม่แน่ใจจริงๆ ว่าอันไหนเป็นอันไหน แต่มันเป็นวิธีแฟนซีที่จะบอกว่าฟังก์ชันที่รับอินพุตจะให้เอาต์พุตเดียวกันเสมอ
ข้อดีข้อหนึ่งและเหตุผลที่เราต้องการใช้สิ่งนี้ในโครงสร้างข้อมูลคือเราสามารถเข้าถึงข้อมูลได้รวดเร็วมาก
เพราะทั้งหมดที่ฉันต้องทำเพื่อค้นหาองุ่นหรือองุ่นแบบจุดในตะกร้าคือการส่งองุ่นไปทำอย่างอื่น เช่น แฮช MD5
มันสร้างหมายเลขนี้ให้ฉัน และฉันรู้ทันทีว่ามันอยู่ที่ไหนในหน่วยความจำของฉันบนคอมพิวเตอร์ของเรา
แต่นี่ดูไม่เหมือนที่อยู่เลยใช่ไหม
ในทางเทคนิค ฟังก์ชันแฮชที่เราใช้สำหรับตารางแฮชคือการเอาองุ่น สร้างคำที่ไม่มีความหมาย
แล้วแปลงเป็นพื้นที่ดัชนีหรือพื้นที่ที่อยู่ที่มีตามตัวเลขนี้
คุณเห็นไหม ไม่เหมือนการแข่งขันที่เราเพิ่งสั่งดัชนีด้วยตารางแฮช ทั้งหมดที่เราต้องทำคือให้คีย์ และเรารู้แน่ชัดว่ารายการนั้นอยู่ที่ไหนในความทรงจำของเรา
แต่คุณอาจสงสัยว่า ฟังก์ชันแฮชของกล่องดำนี้ ทำงานช้าลงใช่หรือไม่
เพราะทุกครั้งที่เราต้องการเพิ่มคุณสมบัติ
และผลองุ่นมูลค่า 10,000 ต่อตารางแฮช
เราต้องรันมันผ่านฟังก์ชันแฮชเพื่อให้เราสามารถตัดสินใจว่าจะใส่มันไว้ที่ใดในหน่วยความจำ
และถ้าคุณสังเกตเห็นงานที่ดี นั่นเป็นปัจจัยใหญ่
คุณไม่ต้องการให้ใช้เวลานานมากเพราะทุกครั้งที่คุณเพิ่มคุณสมบัติในหน่วยความจำหรือเรียกคุณสมบัติในหน่วยความจำเพราะอีกครั้งเราทั้งสองครั้งเราส่งองุ่นที่สำคัญไปยังฟังก์ชันแฮช
หาได้จากที่ไหน
เราต้องการสิ่งนี้ให้เร็วจริงๆ
และภายใต้ประทุน จำไว้ว่า เนื่องจากมีตารางแฮชในทุกภาษา พวกมันจึงถูกใช้งานด้วยฟังก์ชันการแฮชที่เหมาะสมที่สุด
รวดเร็วจริงๆ
เป็นหมายเหตุด้านข้าง
ฟังก์ชันแฮชเช่น SHA 256 ใช้เวลานานมากในการสร้างแฮช
และมันเป็นฟังก์ชันการแฮชที่ซับซ้อนมากเกินไป ซึ่งใช้บ่อยในสถานที่ต่างๆ เช่น การเข้ารหัส ซึ่งคุณต้องการให้ใช้เวลานานกว่านี้
แต่นั่นอยู่นอกเหนือขอบเขตของหลักสูตรนี้
หากคุณสนใจ เราขอแนะนำให้คุณตรวจสอบความแตกต่างระหว่างสองสิ่งนี้
เพื่อทบทวน
เรามีลูกกุญแจที่เป็นองุ่น
เราส่งมันผ่านฟังก์ชันแฮชที่จะแฮชบางสิ่งอย่างรวดเร็วจริงๆ แล้วแมปอะไรก็ตามที่แฮชออกมาเป็นที่อยู่หน่วยความจำที่เราต้องการเก็บไว้
ข้อมูลคือองุ่น 10,000
และเมื่อพูดถึงฟังก์ชันการแฮช คุณมักจะปล่อยให้สิ่งนี้เป็นเฟรมเวิร์กหรือภาษาใดก็ตามที่คุณใช้อยู่
และเรามักจะสมมติความซับซ้อนของเวลาหรือสัญกรณ์เก่าขนาดใหญ่ของ oh one เพราะสิ่งนี้เกิดขึ้นเร็วมาก
ไม่เป็นไร.
ตอนนี้เราเข้าใจแล้วว่ากล่องดำนี้ใช้ทำอะไร เรามาพูดถึงตารางแฮชกันดีกว่า เหตุใดจึงมีประโยชน์และทำไมในบางกรณีจึงดีกว่าอาร์เรย์