Références de l’article « Les secrets des algorithmes à haute fréquence en Java (et autre) »

Retrouvez ici la liste des références qui accompagnent l’article « Les secrets des algorithmes à haute fréquence en Java (et autre) » (p.28-39), publié dans GNU/Linux Magazine n°184 (numéro de juillet-août 2015)  :

[1] The lockless page cache : http://lwn.net/Articles/291826/

[2] Lock free and wait free : http://concurrencyfreaks.blogspot.fr/2013/05/lock-free-and-wait-free-definition-and.html

[3] Doug Lea : https://en.wikipedia.org/wiki/Doug_Lea

[4] Dmitry Vyukov : http://www.1024cores.net/home/about-me

[5] ConcurrentHashMap.tableSizeFor() : http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8-b132/java/util/concurrent/ConcurrentHashMap.java#692

[6] Striped64 : http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8-b132/java/util/concurrent/atomic/Striped64.java#214

[7] Striped64 : http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8-b132/java/util/concurrent/ConcurrentHashMap.java

[8] ConcurrentHashMap.spread() : http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8-b132/java/util/concurrent/ConcurrentHashMap.java#684

[9] Jenkins hash function : https://en.wikipedia.org/wiki/Jenkins_hash_function

[10] NonBlockingHashMap : http://grepcode.com/file/repo1.maven.org/maven2/com.github.stephenc.high-scale-lib/high-scale-lib/1.1.4/org/cliffc/high_scale_lib/NonBlockingHashMap.java#112

[11] Unsafe : http://www.docjar.com/docs/api/sun/misc/Unsafe.html

[12] Unsafe.objectFieldOffset() : http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8-b132/sun/misc/Unsafe.java#670

[13] Java’s Lock-Free Concurrency : http://www.pwendell.com/2012/08/13/java-lock-free-deepdive.html

[14] Java Atomic : http://cr.openjdk.java.net/~andrew/jdk6-hs17-merge/src/os_cpu/linux_x86/vm/atomic_linux_x86.inline.hpp.html

[15] Cpu cache flushing fallacy : http://mechanical-sympathy.blogspot.fr/2013/02/cpu-cache-flushing-fallacy.html

[16] ConcurrentHashMap ligne 6287 : http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8-b132/java/util/concurrent/ConcurrentHashMap.java#6287

[17] ConcurrentHashMap ligne 755 : http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8-b132/java/util/concurrent/ConcurrentHashMap.java#755

[18] Unsafe ligne 899 : http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8-b132/sun/misc/Unsafe.java#899

[19] ConcurrentLinkedQueue ligne 189 : http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8-b132/java/util/concurrent/ConcurrentLinkedQueue.java#189

[20] lazySet() de la classe AtomicInteger : http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicInteger.html#lazySet(int)

[21] Cache-oblivious algorithm : https://en.wikipedia.org/wiki/Cache-oblivious_algorithm

[22] Faux partage : https://en.wikipedia.org/wiki/False_sharing

[23] Lock free : http://fr.slideshare.net/InfoQ/lockfree-algorithms-for-ultimate-performance

[24] Hotspot synchronizer.cpp ligne l452 : http://hg.openjdk.java.net/jdk8/jdk8/hotspot/file/tip/src/share/vm/runtime/synchronizer.cpp#l452

[25] Faux partage : http://daniel.mitterdorfer.name/articles/2014/false-sharing/

[26] Striped64 ligne 120 : http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8-b132/java/util/concurrent/atomic/Striped64.java#120

[27] ConcurrentHashMap ligne 620 : http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8-b132/java/util/concurrent/ConcurrentHashMap.java#620

[28] ConcurrentHashMap ligne 657 – http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8-b132/java/util/concurrent/ConcurrentHashMap.java#657

[29] Allocation mémoire JVM : https://stackoverflow.com/questions/25512146/how-jvm-ensures-thread-safety-of-memory-allocation-for-a-new-object

[30] Spinlock : http://fr.wikipedia.org/wiki/Spinlock

[31] A Pair of Concurrency Bugs : http://www.azulsystems.com/blog/cliff/2011-09-23-a-pair-of-somebody-elses-concurrency-bugs

[32] synchronizer.cpp ligne l495 : http://hg.openjdk.java.net/jdk8/jdk8/hotspot/file/tip/src/share/vm/runtime/synchronizer.cpp#l495

[33] RMW : http://en.wikipedia.org/wiki/Read-modify-write

[34] Problème ABA : https://en.wikipedia.org/wiki/ABA_problem

[35] Comparison of LL.2FSC and compare-and-swap : https://en.wikipedia.org/wiki/Load-link/store-conditional#Comparison_of_LL.2FSC_and_compare-and-swap

[36] DEC Alpha : https://en.wikipedia.org/wiki/DEC_Alpha

[37] PowerPC : https://en.wikipedia.org/wiki/PowerPC

[38] Architecture MIPS : https://en.wikipedia.org/wiki/MIPS_architecture

[39] ARM : https://en.wikipedia.org/wiki/ARM_architecture

[40] Scala STM : https://nbronson.github.io/scala-stm/

[41] STM en Clojure : http://clojure.org/concurrent_programming

[42] Java Thread Affinity : https://github.com/OpenHFT/Java-Thread-Affinity

[43] Scheduleur Linux : http://lwn.net/Articles/80911/

[44] synchronizer.cpp : http://hg.openjdk.java.net/jdk8/jdk8/hotspot/file/tip/src/share/vm/runtime/synchronizer.cpp

[45] Synchronisation Java/Scala : http://blog.takipi.com/5-things-you-didnt-know-about-synchronization-in-java-and-scala/

[46] AKKA : http://akka.io/

[47] Lock free Hash : http://web.stanford.edu/class/ee380/Abstracts/070221_LockFreeHash.pdf

[48] Sharedhashmap vs Redis : http://vanillajava.blogspot.fr/2014/05/sharedhashmap-vs-redis.html

[49] Redis : http://redis.io/

[50] High-scale-lib : http://high-scale-lib.sourceforge.net/

[51] LMAXCollections : https://github.com/LMAX-Exchange/LMAXCollections

[52] Snaptree : https://github.com/nbronson/snaptree/

[53] Concurrency Freaks : http://sourceforge.net/projects/ccfreaks/

[54] Disruptor : https://github.com/LMAX-Exchange/disruptor/wiki/Introduction

[55] BlockingQueue : http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/BlockingQueue.html

[56] In memory database : https://en.wikipedia.org/wiki/List_of_in-memory_databases

[57] Columnar vs. Key-Value Storage Models : http://bigdata.ulitzer.com/node/2757779

[58] SAP Hana : http://hana.sap.com/abouthana.html

[59] Traitement transactionnel en ligne : https://fr.wikipedia.org/wiki/Traitement_transactionnel_en_ligne

[60] XAP MemoryXtend : http://www.gigaspaces.com/xap-memoryxtend-flash-performance-big-data

[61] CEP : https://en.wikipedia.org/wiki/Complex_event_processing

[62] CEP Esper : http://esper.codehaus.org/tutorials/faq_esper/faq.html

[63] SAP ESP : http://scn.sap.com/community/developer-center/esp

[64] Tibco CEP : http://www.tibco.com/products/event-processing/complex-event-processing

[65] Futex : https://en.wikipedia.org/wiki/Futex

[66] Java9 : http://www.infoq.com/news/2014/08/Java9-FirstFeatures

[67] Projet Valhalla : http://www.infoq.com/news/2014/07/Project-Valhalla

[68] Java Application Hostile to JIT Compilation : http://www.infoq.com/articles/Java-Application-Hostile-to-JIT-Compilation

[69] ThreadMXBean : https://docs.oracle.com/javase/1.5.0/docs/api/java/lang/management/ThreadMXBean.html

[70] Micro benchmark JMH : http://openjdk.java.net/projects/code-tools/jmh/

[71] OverSeer : http://www.peternier.com/projects/overseer/overseer.php

[72] Blog Concurrency Freaks : http://concurrencyfreaks.blogspot.fr/

[73] Blog Bad-Concurrency : http://bad-concurrency.blogspot.fr/

[74] Blog 1024cores : http://blog.1024cores.net/

[75] Blog Mechanical-Sympathy : http://mechanical-sympathy.blogspot.fr/

[76] Blog Psy lob saw : http://psy-lob-saw.blogspot.fr/