SlideShare uma empresa Scribd logo
1 de 79
Baixar para ler offline
@ljacomet#DevoxxMA #ehcache
Ehcache 3
JSR-107 on steroids
Louis Jacomet - Lead Software Engineer
@ljacomet#DevoxxMA #ehcache
Who am I?
• Louis Jacomet
• Software engineer, closer to 40 than 20 and still coding!
• @ Terracotta (Software AG) since 2013
• Working on Ehcache mostly
• Team manager and fiddling in infrastructure
• No idea how to do a (nice) UI, especially a web one
• Enjoys concurrency, API design and hard problems
@ljacomet#DevoxxMA #ehcache
And what about you?
• Who knows nothing about caching?
• Who already uses caching in production?
• Who had production problems related to
caching?
• Who knows about JCache?
@ljacomet#DevoxxMA #ehcache
Agenda
•Caching and JSR-107
•Ehcache past and present
•Ehcache 3 future
@ljacomet#DevoxxMA #ehcache
Caching and JSR-107
@ljacomet#DevoxxMA #ehcache
Caching
• Data structure holding a temporary copy of data
• Trade off between higher memory usage and
reduced latency
• Targets
• Data which is reused
• Data which is expensive to compute / retrieve
@ljacomet#DevoxxMA #ehcache
Caches all over the place
CPU
Browser
Network
Disk
@ljacomet#DevoxxMA #ehcache
What should I cache?
• Keys
• Proper equals/
hashcode
• Immutable
• Small(ish)
• Value
• Proper equals/
hashcode
• Ideally immutable
• Think concurrent
otherwise
• Size matters
@ljacomet#DevoxxMA #ehcache
JSR-107 javax.cache
• Java Community Process driven standard
• Specifies API and semantics for temporary, 

in-memory caching of Java objects,
including object creation, shared access,
spooling, invalidation, and consistency
across JVM's
@ljacomet#DevoxxMA #ehcache
JSR-107 Features
• CacheManager / Cache
• Expiration
• Creation/Access/
Update
• Integration
• CacheLoader /
Writer
• CacheEntryListener
• Created/Updated
• Removed/Expired
• Get old value
• Entry processor
• Annotations
• MBeans, exposing
• Configuration
• Statistics
• No capacity control !
@ljacomet#DevoxxMA #ehcache
JSR-107 gotcha’s
• MutableConfiguration
• Always invoke
MutableConfiguration.setTypes(Class, Class)
• Otherwise Cache only knows about Object
• Adding a CacheLoader factory is not enough -
need to invoke setReadThrough(boolean)
@ljacomet#DevoxxMA #ehcache
JSR-107 gotcha’s (2)
• Compare and Swap operations with a CacheLoader
• Loader is ignored
• putIfAbsent checks Cache only, not underlying
system of record
• Results in a weird contract
@ljacomet#DevoxxMA #ehcache
Ehcache past and
present
@ljacomet#DevoxxMA #ehcache
A bit of history
• Announced in November 2003 on
• v1.0 released on September 2004
• Only a few days before Java 5 and generics
• Acquired in 2009 by
• v2.0 released in March 2010
• Terracotta acquired in 2011 by
@ljacomet#DevoxxMA #ehcache
Storage model: tiers
• Multiple storage tiers
• Heap: like objects in a regular hash map
• Off-heap: binary form stored outside of
Garbage Collector reach
• Disk: binary form stored on disk
• Clustered: binary form stored on other
server(s)
@ljacomet#DevoxxMA #ehcache
Overflow model
Heap
Disk
@ljacomet#DevoxxMA #ehcache
Heap
Disk
Overflow model
@ljacomet#DevoxxMA #ehcache
Disk
Heap
Overflow model
@ljacomet#DevoxxMA #ehcache
Disk
Heap
Overflow model
@ljacomet#DevoxxMA #ehcache
Disk
Heap
Overflow model
@ljacomet#DevoxxMA #ehcache
Authoritative tier model
Heap
Disk
@ljacomet#DevoxxMA #ehcache
Disk
Heap
Authoritative tier model
@ljacomet#DevoxxMA #ehcache
Heap
Disk
Authoritative tier model
@ljacomet#DevoxxMA #ehcache
Heap
Disk
Authoritative tier model
@ljacomet#DevoxxMA #ehcache
Heap
Disk
Authoritative tier model
@ljacomet#DevoxxMA #ehcache
Why the new model?
• Predictable latency
• Every put pays the price of the lower /
slowest tier
• No degradation when a higher tier gets full
• Preserves fast(er) access for hot set
• When a mapping is accessed it moves to the
fastest tier available
@ljacomet#DevoxxMA #ehcache
Not a cache feature?
• Search
• What does searching on a hot set means?
• Even without interacting with the cache, two
execution of the same query could return different
results
• Pinning
• Prevent eviction from cache entries
• May adversly effect the ability of the cache to
respect size constraints
@ljacomet#DevoxxMA #ehcache
Ehcache 3
The future is here
@ljacomet#DevoxxMA #ehcache
Lifecycle - explicit
• CacheManager
• init / close methods
• create and close caches
• PersistentCacheManager
• Maintenance mode
• Destroy cache data
@ljacomet#DevoxxMA #ehcache
Cache<K, V> for proper typing
• Ehcache 2.x not generic, was time to change
that
• Needs to be known at runtime
• No one wants a ClassCastException
• Cache data may live beyond application
lifecycle
• Usage show that frequently key and values are
of the same type in a given cache
@ljacomet#DevoxxMA #ehcache
Serialization
• Required as soon as we move away from the
heap
• Fully customisable in Ehcache 3
@ljacomet#DevoxxMA #ehcache
CacheLoaderWriter
• Enables the cache-through pattern
• Consistent across all cache operations
• Single interface
• Loader only - make sure write related
methods throw
• Writer only - what?
• Anyone having a good use case for this -
talk to us
@ljacomet#DevoxxMA #ehcache
Cache through - miss
Application Cache
Database
@ljacomet#DevoxxMA #ehcache
Cache through - miss
Application Cache
Database
@ljacomet#DevoxxMA #ehcache
Cache through - miss
Application Cache
Database
@ljacomet#DevoxxMA #ehcache
Cache through - miss
Application Cache
Database
@ljacomet#DevoxxMA #ehcache
Cache through - miss
Application Cache
Database
@ljacomet#DevoxxMA #ehcache
Cache through - hit
Application Cache
Database
@ljacomet#DevoxxMA #ehcache
Cache through - hit
Application Cache
Database
@ljacomet#DevoxxMA #ehcache
Cache through - hit
Application Cache
Database
@ljacomet#DevoxxMA #ehcache
Cache through - write
Application Cache
Database
@ljacomet#DevoxxMA #ehcache
Cache through - write
Application Cache
Database
@ljacomet#DevoxxMA #ehcache
Cache through - write
Application Cache
Database
@ljacomet#DevoxxMA #ehcache
Cache through - write
Application Cache
Database
@ljacomet#DevoxxMA #ehcache
Write behind
• Enables scaling your writes
• Putter does not pay for write latency
• Batching and coalescing options
• Simplified compared to 2.x - no more sizing
gotchas
@ljacomet#DevoxxMA #ehcache
Application Cache
Database
queue
Write behind
@ljacomet#DevoxxMA #ehcache
Application Cache
Database
queue
Write behind
@ljacomet#DevoxxMA #ehcache
Application Cache
Database
queue
Write behind
@ljacomet#DevoxxMA #ehcache
Application Cache
Database
queue
Write behind
@ljacomet#DevoxxMA #ehcache
Application Cache
Database
queue
Write behind
@ljacomet#DevoxxMA #ehcache
Application Cache
Database
queue
Write behind
@ljacomet#DevoxxMA #ehcache
Application Cache
Database
queue
Write behind
@ljacomet#DevoxxMA #ehcache
Application Cache
Database
queue
Write behind
@ljacomet#DevoxxMA #ehcache
Application Cache
Database
queue
Write behind
@ljacomet#DevoxxMA #ehcache
Application Cache
Database
queue
Write behind - eviction
(K1,V1)
(K1,V1)
@ljacomet#DevoxxMA #ehcache
Application Cache
Database
queue
Write behind - eviction
(K1,V1)
@ljacomet#DevoxxMA #ehcache
Application Cache
Database
queue
Write behind - eviction
(K1,V1)
@ljacomet#DevoxxMA #ehcache
Application Cache
Database
queue
Write behind - eviction
(K1,V1)
@ljacomet#DevoxxMA #ehcache
Application Cache
Database
queue
Write behind - eviction
(K1,V1)
@ljacomet#DevoxxMA #ehcache
Write behind - failure
Application Cache
queue
Database
@ljacomet#DevoxxMA #ehcache
Write behind - failure
Application Cache
queue
Database
@ljacomet#DevoxxMA #ehcache
Write behind - failure
Application Cache
queue
Database
@ljacomet#DevoxxMA #ehcache
Write behind - failure
Application Cache
queue
Database
@ljacomet#DevoxxMA #ehcache
Write behind - failure
Application Cache
queue
Database
@ljacomet#DevoxxMA #ehcache
Write behind - failure
Application Cache
queue
Database
@ljacomet#DevoxxMA #ehcache
Write behind - failure
Application Cache
queue
Database
@ljacomet#DevoxxMA #ehcache
Write behind - failure
Application Cache
queue
Database
@ljacomet#DevoxxMA #ehcache
Write behind - failure
Database
@ljacomet#DevoxxMA #ehcache
Database
Write behind - failure
@ljacomet#DevoxxMA #ehcache
queue
Database
Write behind - failure
@ljacomet#DevoxxMA #ehcache
queue
Database
Write behind - failure
@ljacomet#DevoxxMA #ehcache
queue
Database
Write behind - failure
@ljacomet#DevoxxMA #ehcache
Expiry
• Offers context
@ljacomet#DevoxxMA #ehcache
Eviction Veto and Prioritizer
• Veto
• Enables to suggest a veto on certain mappings
• Prioritizer
• Allows to sort sample before picking eviction
victim
• Not applicable to all stores
• Both are hints only - capacity always takes priority
@ljacomet#DevoxxMA #ehcache
Transactions
• Full blown XA resource
• includes recovery support
• Needs work for transaction managers
integration
• Code isolated in its own module
• Currently part of the main Ehcache 3 jar
@ljacomet#DevoxxMA #ehcache
Clustering using Terracotta
@ljacomet#DevoxxMA #ehcache
Automatic Resource Control
• Enables sizing in natural units
• n bytes on heap
• Percentage of the max heap available
• Define resource pools at the cache manager
• Cross eviction amongst caches
• Enables auto balancing
@ljacomet#DevoxxMA #ehcache
Resilience strategy
• A cache is to be resilient
• Yet… sh*t happens
• Storage failures
• SLA violations (timeouts?)
• Very explicit contract at this time
• To be refined when clustering is wrapping up
@ljacomet#DevoxxMA #ehcache
Q&A
Thank you for your time

Mais conteúdo relacionado

Mais procurados

Practicing Continuous Deployment
Practicing Continuous DeploymentPracticing Continuous Deployment
Practicing Continuous Deployment
zeeg
 
Use case for using the ElastiCache for Redis in production
Use case for using the ElastiCache for Redis in productionUse case for using the ElastiCache for Redis in production
Use case for using the ElastiCache for Redis in production
知教 本間
 

Mais procurados (20)

Integrated Cache on Netscaler
Integrated Cache on NetscalerIntegrated Cache on Netscaler
Integrated Cache on Netscaler
 
Practicing Continuous Deployment
Practicing Continuous DeploymentPracticing Continuous Deployment
Practicing Continuous Deployment
 
DjangoCon 2010 Scaling Disqus
DjangoCon 2010 Scaling DisqusDjangoCon 2010 Scaling Disqus
DjangoCon 2010 Scaling Disqus
 
In Memory Database In Action by Tanel Poder and Kerry Osborne
In Memory Database In Action by Tanel Poder and Kerry OsborneIn Memory Database In Action by Tanel Poder and Kerry Osborne
In Memory Database In Action by Tanel Poder and Kerry Osborne
 
Memcached Code Camp 2009
Memcached Code Camp 2009Memcached Code Camp 2009
Memcached Code Camp 2009
 
Memcached
MemcachedMemcached
Memcached
 
Use case for using the ElastiCache for Redis in production
Use case for using the ElastiCache for Redis in productionUse case for using the ElastiCache for Redis in production
Use case for using the ElastiCache for Redis in production
 
Caching with Memcached and APC
Caching with Memcached and APCCaching with Memcached and APC
Caching with Memcached and APC
 
Memcached Study
Memcached StudyMemcached Study
Memcached Study
 
Data Analytics Service Company and Its Ruby Usage
Data Analytics Service Company and Its Ruby UsageData Analytics Service Company and Its Ruby Usage
Data Analytics Service Company and Its Ruby Usage
 
Troubleshooting Complex Oracle Performance Problems with Tanel Poder
Troubleshooting Complex Oracle Performance Problems with Tanel PoderTroubleshooting Complex Oracle Performance Problems with Tanel Poder
Troubleshooting Complex Oracle Performance Problems with Tanel Poder
 
Oracle Latch and Mutex Contention Troubleshooting
Oracle Latch and Mutex Contention TroubleshootingOracle Latch and Mutex Contention Troubleshooting
Oracle Latch and Mutex Contention Troubleshooting
 
Moxi - Memcached Proxy
Moxi - Memcached ProxyMoxi - Memcached Proxy
Moxi - Memcached Proxy
 
Understanding DSE Search by Matt Stump
Understanding DSE Search by Matt StumpUnderstanding DSE Search by Matt Stump
Understanding DSE Search by Matt Stump
 
Varnish 4 cool features
Varnish 4 cool featuresVarnish 4 cool features
Varnish 4 cool features
 
Meetup on Apache Zookeeper
Meetup on Apache ZookeeperMeetup on Apache Zookeeper
Meetup on Apache Zookeeper
 
Apache Traffic Server & Lua
Apache Traffic Server & LuaApache Traffic Server & Lua
Apache Traffic Server & Lua
 
Tanel Poder - Troubleshooting Complex Oracle Performance Issues - Part 2
Tanel Poder - Troubleshooting Complex Oracle Performance Issues - Part 2Tanel Poder - Troubleshooting Complex Oracle Performance Issues - Part 2
Tanel Poder - Troubleshooting Complex Oracle Performance Issues - Part 2
 
Ansible at work
Ansible at workAnsible at work
Ansible at work
 
Async and Non-blocking IO w/ JRuby
Async and Non-blocking IO w/ JRubyAsync and Non-blocking IO w/ JRuby
Async and Non-blocking IO w/ JRuby
 

Semelhante a Ehcache 3: JSR-107 on steroids at Devoxx Morocco

Rapid API Development ArangoDB Foxx
Rapid API Development ArangoDB FoxxRapid API Development ArangoDB Foxx
Rapid API Development ArangoDB Foxx
Michael Hackstein
 
HTML5: Building the Next Generation of Web Applications
HTML5: Building the Next Generation of Web ApplicationsHTML5: Building the Next Generation of Web Applications
HTML5: Building the Next Generation of Web Applications
Chrome Developer Relations
 
UKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basicsUKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basics
Ulrich Krause
 

Semelhante a Ehcache 3: JSR-107 on steroids at Devoxx Morocco (20)

Ehcache3 — JSR-107 on steroids
Ehcache3 — JSR-107 on steroidsEhcache3 — JSR-107 on steroids
Ehcache3 — JSR-107 on steroids
 
Caching 101: sur la JVM et au delà
Caching 101: sur la JVM et au delàCaching 101: sur la JVM et au delà
Caching 101: sur la JVM et au delà
 
Caching 101: Caching on the JVM (and beyond)
Caching 101: Caching on the JVM (and beyond)Caching 101: Caching on the JVM (and beyond)
Caching 101: Caching on the JVM (and beyond)
 
Caching 101: Caching on the JVM (and beyond)
Caching 101: Caching on the JVM (and beyond)Caching 101: Caching on the JVM (and beyond)
Caching 101: Caching on the JVM (and beyond)
 
Embracing the Future
Embracing the FutureEmbracing the Future
Embracing the Future
 
Devoxx UK 2015: How Java EE has changed pattern implementation
Devoxx UK 2015: How Java EE has changed pattern implementationDevoxx UK 2015: How Java EE has changed pattern implementation
Devoxx UK 2015: How Java EE has changed pattern implementation
 
Rapid API Development ArangoDB Foxx
Rapid API Development ArangoDB FoxxRapid API Development ArangoDB Foxx
Rapid API Development ArangoDB Foxx
 
Road to Opscon (Pisa '15) - DevOoops
Road to Opscon (Pisa '15) - DevOoopsRoad to Opscon (Pisa '15) - DevOoops
Road to Opscon (Pisa '15) - DevOoops
 
OpenNTF Webinar 2022-08 - XPages Jakarta EE Support in Practice
OpenNTF Webinar 2022-08 - XPages Jakarta EE Support in PracticeOpenNTF Webinar 2022-08 - XPages Jakarta EE Support in Practice
OpenNTF Webinar 2022-08 - XPages Jakarta EE Support in Practice
 
Overview of the ehcache
Overview of the ehcacheOverview of the ehcache
Overview of the ehcache
 
In-memory No SQL- GIDS2014
In-memory No SQL- GIDS2014In-memory No SQL- GIDS2014
In-memory No SQL- GIDS2014
 
Platform cache
Platform cachePlatform cache
Platform cache
 
44CON 2014 - Pentesting NoSQL DB's Using NoSQL Exploitation Framework, Franci...
44CON 2014 - Pentesting NoSQL DB's Using NoSQL Exploitation Framework, Franci...44CON 2014 - Pentesting NoSQL DB's Using NoSQL Exploitation Framework, Franci...
44CON 2014 - Pentesting NoSQL DB's Using NoSQL Exploitation Framework, Franci...
 
06 integrate elasticsearch
06 integrate elasticsearch06 integrate elasticsearch
06 integrate elasticsearch
 
HTML5: Building the Next Generation of Web Applications
HTML5: Building the Next Generation of Web ApplicationsHTML5: Building the Next Generation of Web Applications
HTML5: Building the Next Generation of Web Applications
 
Where Django Caching Bust at the Seams
Where Django Caching Bust at the SeamsWhere Django Caching Bust at the Seams
Where Django Caching Bust at the Seams
 
UKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basicsUKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basics
 
Gianluca Varisco - DevOoops (Increase awareness around DevOps infra security)
Gianluca Varisco - DevOoops (Increase awareness around DevOps infra security)Gianluca Varisco - DevOoops (Increase awareness around DevOps infra security)
Gianluca Varisco - DevOoops (Increase awareness around DevOps infra security)
 
Ratpack Web Framework
Ratpack Web FrameworkRatpack Web Framework
Ratpack Web Framework
 
Introduction to memcached
Introduction to memcachedIntroduction to memcached
Introduction to memcached
 

Último

CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
VishalKumarJha10
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
masabamasaba
 

Último (20)

%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban
 
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 

Ehcache 3: JSR-107 on steroids at Devoxx Morocco