Posts

Showing posts from September, 2013

Observability Done Right: Best Practices and Anti-Patterns for Effective System Monitoring

Image
  WHAT Observability is a concept that refers to the ability to gain insights into the behavior and performance of complex systems. In the context of software engineering, observability involves the collection, analysis, and visualization of data from software applications, infrastructure, and other components of a system. In the animal kingdom, observability plays a critical role in survival, allowing animals to monitor their surroundings, detect threats, and find food. Dolphins use echolocation to observe their surroundings. They emit high-frequency sounds that bounce off objects, allowing them to create a 3D map of their environment. Thanks for reading Knowledge Cafe! Subscribe for free to receive new posts and support my work. Subscribed WHY In today's era, architectures are becoming increasingly large, complex, and fast-paced due to the faster development and deployment of software by distributed teams with the help of DevOps, continuous delivery, and agile development methodo...

Facts about HashMap in Java 6

Image
  Few points regarding HashMap DS in Java 6 as per the source code. HashMap extends AbstractMap implements Map Backed by array of Map.Entry where each element points to a list of Map.Entry  Default Initial Capacity – 16 i.e. Entry[16] Default load factor  - 0.75 i.e. when size reaches 75% of capacity – resizing of internal data structure is triggered. Capacity is always in power of 2 - if 5 is passed as initialCapacity in constructor, capacity will be set to 8 – it just does bitwise shift of 1 until it gets a number just greater than the passed capacity value. If 8 is passed – actual capacity will be 16 . (for detail check source code) provides a hook method init() which subclasses can use for addition functionality- it is invoked from constructor. modCount member variable to track the modifications in hashmap. same is used for Fail-fast detection modifications means adding new Entry and removing Entry  from hashmap provide supplemen...

ConcurrentHashMap

Image
J ava thread safety problems can bring down your Java EE application and the Java EE container fairly easily. One of most common problems I have observed when troubleshooting Java EE performance problems is infinite looping triggered from the non-thread safe HashMap get() and put() operations. There seem to be three different synchronized Map implementations in the Java API: Hashtable Collections.synchronizedMap(Map) ConcurrentHashMap ConcurrentHashMap in Java is introduced as an alternative of Hashtable in Java 1.5 as part of Java concurrency package. Prior to Java 1.5 if you need a Map implementation, which can be safely used in a concurrent and multi-threaded Java program, than, you only have Hashtable or synchronized Map because HashMap is not thread-safe. With ConcurrentHashMap, now you have better choice; because, not only it can be safely used in concurrent multi-threaded environment but also provides better performance...