cevap
It uygulama bağımlı (ve ağır nedenle, algoritma sürece tutarlı olarak, tamamen uygulamaya kadariçindir.) Ancak, cevap here uyarınca, sen karma OpenJDK oluşturulur native source file görebilirsiniz Ancak ilginç bir açıklama ayrıca, Daha önce belirtildiği
// Possibilities:
// * MD5Digest of {obj,stwRandom}
// * CRC32 of {obj,stwRandom} or any linear-feedback shift register function.
// * A DES- or AES-style SBox[] mechanism
// * One of the Phi-based schemes, such as:
// 2654435761 = 2^32 * Phi (golden ratio)
// HashCodeValue = ((uintptr_t(obj) >> 3) * 2654435761)^GVars.stwRandom ;
// * A variation of Marsaglia's shift-xor RNG scheme.
// * (obj^stwRandom) is appealing, but can result
// in undesirable regularity in the hashCode values of adjacent objects
// (objects allocated back-to-back, in particular). This could potentially
// result in hashtable collisions and reduced hashtable efficiency.
// There are simple ways to "diffuse" the middle address bits over the
// generated hashCode values
//
, varsayılan algoritması sadece rastgele bir sayı ile gitmektir: 7 aslında bu özel sürümde mümkün algoritmalar numarasını belirtir, (get_next_hash()
fonksiyonu bakmak) aşağı durumları:
// Marsaglia's xor-shift scheme with thread-specific state
// This is probably the best overall implementation -- we'll
// likely make this the default in future releases.
Bu olasılıklar yukarıdaki listede belirtilen (obj^stwRandom)
yaklaşıma benzer, ama aynı zamanda karma içine "parçacığına özgü durumu" bilgisini bağlayarak arkaya hızla ayrılan nesne ile ilişkili istenmeyen düzenliliklerin etrafında alır - eğer öyleyse Aynı anda iki nesnenin tahsis edilmesinden dolayı çok benzer bir zamanda tahsis edilen iki nesne, hashta beslenen ayrı diş ipliği bilgilerinin, yine de yeterli sayıda karma oluşturulmasını sağlamalıdır.
- 1. Nedir? ve << demek?
- 2. <nedir? ve <? php
- 3. Git, <<<<<<< HEAD dosyasına
- 4. <% # ve <% = açılış etiketleri arasındaki fark nedir?
- 5. Java, bitshifts kullanırken, neden 1 << 32! = 1 << 31 << 1?
- 6. Diyelim ve operatör << (...) gibi sınıf adından sonra kullanıldığında kullanılan ampersan nedir?
- 7. ??? Ben scala kodunda kullanılan sembol</p> <pre><code>??? </code></pre> <p>gördük
- 8. EJS: <% = versus <% -
- 9. <: <İş nasıl?
- 10. ANT'de "**" ne anlama geliyor?</p> <pre><code><copy todir="/something"> <fileset dir="/source"> <exclude name="**/*.sql"/> </fileset> </copy> </code></pre> <p>adı özelliğinde <code>**</code> nedir:
- 11. Perl'de "% _" nedir?</p> <pre><code>@list = grep { !$_{$_}++ } @list; </code></pre> <p>tekilleştirme için bir deyim gibi:
- 12. Operatörler << sınıfları için biçimlendirmeli misiniz?
- 13. "<%:" ne yapıyor?</p> <pre><code><%: Model.FirstName %> </code></pre> <p>"<%:" Ne vermez: do
- 14. <a1> Git</ a1>
- 15. i EF 4.0 <code>ObjectSet</code> kullanmak için kullanılan DbSet
- 16. "<Module>" türü nedir?
- 17. Bu garip koşullu operatör sözdizimi nedir?</p> <pre><code>bool bRes = (a < b) ? a=b, true : false; </code></pre> <p><code>a < b</code>, o zaman <code>a=b</code> infaz ve <code>bRes</code> doğrudur edilir:
- 18. Akış çıkışında <yerine <neden hala <çoğum?
- 19. Bağlantı.Close() ve connection.Dispose() arasındaki fark nedir? <code>SQLiteDataReader</code> nesne için</p> <ul> <li><code>Close()</code></li> <li><code>Dispose()</code></li> </ul> <p>aynı:
- 20. $ <ve $ @,
- 21. İçindeki eleman sayısı <5 in <a1 <0</ a1><T>
- 22. Asp.net'de <#eval ve <#bind arasındaki fark nedir?
- 23. EF7 Ben <code>UWP</code> uygulamada, <code>SQLite</code> ile <code>EF7</code> kullanıyorum veritabanını
- 24. <f:viewParam> ve <f:param> arasındaki fark nedir?
- 25. ASP.NET MVC'de <% # ve <% = arasındaki fark nedir?
- 26. bu değişken <code>block</code> özel olarak ele alınacaktır sağlamak için kullanılan <code>Objective C</code> bir değişken üzerinde
- 27. Fark <code>resource</code> ve <code>resources</code> yöntemlerle</p> İşte <p>arasında mantıksal fark nedir
- 28. Kanal seç <- <- Kanal
- 29. XPath - tüm elemanlar alt elemanlara belge</p> <pre><code><a> <b> <c/> <d/> </b> <b> <c/> <d/> </b> </a> </code></pre> <p>Verilen
- 30. Şu izle ifadem tutan bana gösteriyor Şu anda bir</p> <pre><code>Expression<Func<T,bool>> </code></pre> <p>bir</p> <pre><code>Expression<Func<T,object>> </code></pre> <p>dönüştürmek çalışıyorum
Sadece meraklı ... Java açık bir kaynak olduğu için, kendinizi kendinizden izlemekten neyi durdurdu? –
@ PM77-1 belki de bunun aslında “yerli” yöntem olduğu ve pek çok kişinin uygulama için nereye bakılacağını bilmediği gerçeğidir. – Pshemo
Yerel kaynağa bağlanan http://stackoverflow.com/questions/17977495/java-object-hashcode-algorithm adresine bakın. Ancak, kaynağı okuduktan sonra daha da kafam karıştı. – user2864740