जावा 8 प्रदर्शन में सुधार के लिए स्ट्रिंग कुंजी के लिए वैकल्पिक हैशिंग प्रदान कर रहा है जब बड़ी संख्या में कुंजी हैश कोड टकराव का सामना करना पड़ता है। क्या कोई यह समझा सकता है कि यह क्या है और यह कैसे काम करेगा?जावा 8 में स्ट्रिंग कुंजी के लिए वैकल्पिक हैशिंग क्या है?
उत्तर
[email protected]
की
this email से
:
- एक नया इंटरफेस Hashable32 शुरू की है।
- Hashable32 एक विधि hash32()
- स्ट्रिंग लागू करता Hashable32 और hash32() विधि
- HashMap एट अल स्ट्रिंग समझते हैं और hash32 (आह्वान) के बजाय hashCode()
के संशोधन प्रदान करता है कोड:
- Murmur3: https://code.google.com/p/smhasher/wiki/MurmurHash3
- althashing "7" webrev : http://cr.openjdk.java.net/~mduigou/althashing7/8/webrev/
- althashing "8" webrev: http://cr.openjdk.java.net/~mduigou/althashing8/8/webrev/
जो मैं बता सकता हूं, पुराने हैशिंग एल्गोरिदम के साथ सबसे बड़ी खामियां थीं कि कभी-कभी लंबे तारों के लिए शून्य लौटा दी जाती है, और यह कि एक विशेष कार्यान्वयन को निर्दिष्ट करने से वीएम को "हैश-स्ट्रिंग" फ़ंक्शन लागू करने की संभावना को रोक दिया गया था जिसे डिजाइन किया गया था उस विशेष मशीन पर इष्टतम प्रदर्शन (उदाहरण के लिए एक 64-बिट मशीन एक फ़ंक्शन का उपयोग कर सकती है जो 8 बाइट्स के समूहों पर चलती है और फिर परिणाम को 32 बिट्स तक पहुंचाती है)। मुझे आश्चर्य है कि पुराना स्ट्रिंग हैश के सटीक मूल्यों पर वास्तव में कितना कोड निर्भर करता है, और 'संगतता कार्यवाही' की अनुमति देना कितना मुश्किल होगा? – supercat
यह ध्यान देने योग्य है कि MurmurHash3 को पारी Dos हमलों पर रोक नहीं लगेगी: http://emboss.github.com/blog/2012/12/14/breaking-murmur-hash-flooding-dos-reloaded/
इस सवाल का अधिक प्रासंगिकता लाने के लिए, वैकल्पिक हैशिंग को जेडीके 8 से हटा दिया गया है। चेक आउट:
http://docs.oracle.com/javase/8/docs/technotes/guides/collections/changes8.html
http://openjdk.java.net/jeps/180
यह ध्यान रखें कि एक बार एक हैश बकेट में आइटम की संख्या एक निश्चित सीमा से परे होती है, कि बाल्टी एक संतुलित पेड़ से प्रविष्टियों में से एक लिंक्ड सूची का उपयोग करने से स्विच करेंगे दिलचस्प है।
हैश (वस्तु कुंजी) HashMap में समारोह संशोधित किया गया है करने के लिए स्ट्रिंग वस्तुओं के लिए कोई विशेष उपचार के साथ इस प्रकार है:
static final int hash(Object key) {
int h;
return (key == null) ? 0 : (h = key.hashCode())^(h >>> 16);
}
- 1. जावा में SHA2 पासवर्ड हैशिंग
- 2. Emacs में सी-कुंजी के लिए वैकल्पिक?
- 3. संकलन-समय स्ट्रिंग हैशिंग
- 4. पासवर्ड हैशिंग क्या है?
- 5. क्या FIPS-सक्षम सिस्टम के लिए MD5 पर वैकल्पिक हैशिंग एल्गोरिदम है?
- 6. जावा स्ट्रिंग एन्कोडिंग (UTF-8)
- 7. जावा के लिए सेवा के लिए वैकल्पिक?
- 8. हैशिंग ओएलई वेरिएंट के लिए अनुशंसित कार्यान्वयन क्या है?
- 9. जावा में 8 वर्ण अद्वितीय स्ट्रिंग
- 10. वैकल्पिक कुंजी के साथ defrecord
- 11. स्ट्रिंग के लिए जावा का आंतरिक प्रतिनिधित्व क्या है? संशोधित यूटीएफ -8? UTF-16?
- 12. बाइनरी हैशिंग - यह क्या है?
- 13. हैशिंग जानकारी में क्या उद्देश्य है?
- 14. जावा के पर्यवेक्षण वर्ग के लिए वैकल्पिक?
- 15. उम्मीदवार कुंजी है, वैकल्पिक कुंजी, एसक्यूएल में समग्र कुंजी क्या हैं?
- 16. हैश टेबल कार्यान्वयन के लिए हैशिंग एल्गोरिदम
- 17. वैकल्पिक रजिस्ट्री कुंजी
- 18. यूटीएफ -8 गुणों में जावा स्ट्रिंग को एन्कोड किया गया
- 19. पासवर्ड हैशिंग जावा और PHP
- 20. मैक में ग्रहण के लिए जावा संपादक में 'सामग्री सहायता' के लिए गर्म कुंजी क्या है?
- 21. जावा/स्प्रिंग आधारित वेबसाइटों के लिए वैकल्पिक
- 22. जावा के स्ट्रिंग रीडर के लिए रूबी समतुल्य क्या है?
- 23. जांचें कि क्या स्ट्रिंग वैध यूटीएफ -8 जावा
- 24. एमडी 5 हैशिंग सी #
- 25. कुकीज़ के लिए वैकल्पिक
- 26. वैकल्पिक typedef या सी # में उपवर्गीकरण स्ट्रिंग के लिए
- 27. .NET में से कौन सा हैशिंग एल्गोरिदम पासवर्ड हैशिंग के लिए पर्याप्त सुरक्षित है?
- 28. MySQL: प्राथमिक कुंजी 8-बाइट स्ट्रिंग है। क्या बिगिनट या बिनरी (8) का उपयोग करना बेहतर है?
- 29. स्ट्रिंग के लिए शून्य क्या है?
- 30. enum कुंजी के साथ शब्दकोश के लिए वैकल्पिक?
+1 इस सेवा हमलों के इनकार से बचने के लिए इस्तेमाल किया जा सकता। –
धन्यवाद, मैं इसे ध्यान में रखूंगा –
@ पीटर लेवरी क्या आप [इस बग रिपोर्ट] (https://bugzilla.redhat.com/show_bug.cgi?id=750533) या कुछ और करते हैं जब आप DoS का उल्लेख करते हैं? –