Interactive Atlas
100DaysOfJava Knowledge Graph
A beautiful, interactive graph of the 100DaysOfJava series with topic intelligence and direct post navigation.
Loading graph data...
Legend
- Sequence edge
- Reference edge
- Topic edge
Fallback list
If interactive rendering is unavailable, use this list of posts.
- Day 100: What 100 Days of Java Actually Changed in How I Think About Software
- Day 99: Virtual Threads Didn't Kill Event Loops. Here's How Each Works
- Why Your Parallel Streams were Leaving CPU Cores Idle (And How to Fix It)
- Day 98: I Thought Virtual Threads Were Just Green Threads They're Actually Continuations on the Heap
- Day 97: Java Concurrency Toolkit Part 3 - Advanced Patterns & Production Readiness
- Day 96: Java Concurrency Toolkit Part 2 - Core Synchronization Patterns
- Day 95: Java Concurrency Toolkit Part 1 - Foundation & Execution Patterns
- Day 94: Nobody Told Me Java Application Could Start This Fast and The Rabbit hole I explored
- Day 93: Stop Leaking Passwords - Building Java's Answer to PHP's #[SensitiveParameter]
- Day 92: Building AI Agents with Java 21 and Spring AI - My Learning from the Workshop
- Day 91: The Art of Reading Massive Files Without Breaking a Sweat - Memory Mapping in Java 21
- Day 90: How I Built a Secret Agent That Infiltrates Any Java Application
- Day 89: When Your Singleton Isn't Really a Singleton (And How to Fix It)
- Day 88: Multilingual Audio Transcription with Gemini 1.5, Vertex AI, and Spring Boot
- Day 87: Java's Environment Variable Paradox: Easy to Read, Impossible to Change?
- Day 86: Building a Secure Java Sandbox with Custom Class Loaders, Process isolation and Java Platform Module System – Executing JAR and .java Files Safely
- Day 85: Idempotent APIs in Java: Concepts, Implementation Strategies, and a Spring Boot File Upload Implementation
- Day 84: Hot Class Reload in Java – A Webpack HMR-like Experience for Java Developers
- Day 83: Java Object Cloning: Exploring Shallow and Deep Copy Techniques
- Day 82: Reflection in Java: Building a Simple DI Container in 100 Lines of Code
- Day 81: Creating custom stream operations ex: Slide, Shift, Zip and Fold using Spliterator
- Day 80: From Concept to Code: Implementing a Dummy Consistent Hashing in Java using TreeMap
- Day 79: Did you know that too much print statement can cost you money
- Day 78: Java 22 - Embracing Safe Memory Allocation Using FFM API - An alternative to Unsafe API
- Day 77: Explore Something Unsafe : Crafting a Memory allocator using Java Unsafe API
- Day 76: Implementing a dummy Service Oriented Architecture (SOA) service to Understand Java Service Provider Interface (SPI)
- Day 75: Java BufferedReader: Do We Know Why We Need To Close It?
- Day 74: Java Security: Crafting a toy TLS Server with Java Security API
- Day 73: Java Security: Safeguarding Data with Encryption and Keys
- Day 72: Can a HashMap Take Null or Empty String as a Key in Java?
- Day 71: Understanding Heap poullion in java and its causes and how to prevent it
- Day 70:Diving deep into Array copy- Measuring Array Copy Performance in Java with JMH: A Comparative Analysis of Methods
- Day 69 : Unlocking Java Performance Secrets: Harnessing the Power of JMH Microbenchmarking
- Day 68 : Becoming a memory plumber; A tale of Memory Leak and how to find them ( part 3)
- Day 67: Becoming a memory plumber; A tale of Memory Leak and how to find them ( part 2)
- Day 66: Becoming a memory plumber; A tale of Memory Leak and how to find them ( part 1)
- Day 65: A tale of RMI (Remote Method Invocation) in java
- Day 64: Implementing a basic Bloom Filter Using Java BitSet api
- Day 63: Alert system for Java OutOfMemory Error
- Day 62: Understanding JMX and its architecture ( Agent Level )
- Day 61: Understanding JMX and its architecture (Management Level)
- Day 60: Generating JVM heap dump programmatically
- Day 59: Understanding Proxy and Dynamic Proxy in Java
- Day 58: Mocking void methods using ArgumentCapture and Answering
- Day 57: All about Random in Java ( Random, SecureRandom,ThreadLocalRandom and SplittableRandom)
- Day 56: Zero length Array and Its use
- Day 55: Understanding static and instance initializer in java classes and
- Day 54: Understanding volatile keyword's use for Multi Threaded program
- Day 53: Processing Http Request Asynchronously using CompletableFutures
- Day 52: Async Processing HttpRequest's using ExecutorCompletionService
- Day 51: Creating Stream (using StreamSupport API) from Spliterator by converting Iterator to Spliterator
- Day 50: Marker interface and it's uses
- Day 49: A utility class for Zip and Unzip files using java FileSystem api (Part 2)
- Day 48: A utility class for Zip and Unzip files using java Zip api (Part 1)
- Day 47: ThreadMXBean to get information about thread's status, deadlock monitoring and cpu time that the thread got etc.
- Day 46: Writing a generic and thread safe ObjectPool to enable pooling for any type of class
- Day 45: learning about the internals of JVM and JRE (part 3)
- Day 44: learning about the internals of JRE and JVM (Part 2)
- Day 43: learning about the internals of jre, jvm (Part 1)
- Day 42: using custom annotations and check if its a class level or field level annotation
- Day 41: Generating unique id's based on device MAC address and epoch time
- Day 40: Generator implementation using custom Iterator and Threads.
- Day 39: Local date time to UTC date time and vice versa with respect to timezone and Day light saving
- Day 37: Feature toggle to enable disable features for paid and unpaid user
- Day 38: One of the cases to use check and unchecked exceptions
- Day 36: Learned about banned dependencies and how to ban transitive dependency in a maven or gradle project
- Day 35: Emulating Pair in java using AbstractMap.SimpleEntry<>() and new Object() {} implementation
- Day 34: Inspecting JVM runtime memory and processor count with Runtime
- Day 33: Getting a programmer joke asynchronously with CompletableFuture, HttpClient, and Jackson
- Day 32: Using Objects.equals() when values may be null
- Day 31: Compressing and decompressing text with Deflater and Inflater
- Day 30: Exploring a generator-style approach in Java with Supplier and IntStream
- Day 29: ParameterizedTest and MethodSource for repeated test inputs
- Day 28: Arrays.asList() and new ArrayList<>() are not the same
- Day 27: Implementing a Unix pipe-like class in Java with Function composition
- Day 26: Writing a method to retry another method execution
- Day 25: Using a implementation of supplier creating and caching a large file (any Class in this case that will initialize a very large object) lazily and thread-safe.
- Day 24: Removing nulls from list using Collections.singleton and Objects.isNull
- Day 23: TemporalAdjuster ofDateAdjuster implementation and DayOfWeek calculating the next working day with Bangla name.
- Day 22: Using stream of streams and flatmapping it to concat multiple streams
- Day 21: Optional.ifPresent and Optional.filter to log and filter the Scheduled Day according to holiday
- Day 20: Some previous post had optional.get() in them which is not a best practice if its not with Optional.isPresent(). better than isPresent is to use orElse(), orElseGet(), orElseThrow()
- Day 19: Stream.peek to get debug information and log it.
- Day 18: using Scanner.findAll to get all the download links from a json file.
- Day 17: Unicode decoding side effect. Application throws exception when a comment is removed.
- Day 16: Two interface having same signature default method causing to override them.
- Day 15: Batching files and moving them using intStream
- Day 14: Using stream parallel to add id to file names.
- Day 13: Using Collectors.groupingBy and Collectors.counting to get numbers of file present of a particular type
- Day 12: Files.walk() and functional interface to remove file extension from fileNames
- Day 11: Supplier, Consumer functional interface and httpclient to get and output Bitcoin info
- Day 10: Function is a functional interface that takes an input and gives an output. so functions can be chained.
- Day 9: Functional interface
- Day 8: I always liked string interpolation in JS. Now i found out about Javas MessageFormat's format method which lets us in its way use string interpolation.
- Day 7: Today i found out that string declared with "" are placed in string constant pool while with new keyword its in heap. String.intern() return string if defined in string pool otherwise creates the string and then returns it.
- Day 6: Today I got to know that for loop is faster than foreach loop for a large amount of elements. after checking I found out that is on average 2 times faster for the below program in my machine.
- Day 5: Getting stream of char from string.chars()
- Day 4: try with resource helps to close open resources that uses .close() method to close.
- Day 3: Using Objects.requireNonNullElse() where Optional not being able to be used.
- Day 2: Getting the last element of a Stream.
- Day 1: Comparing/ checking equality against multiple Strings.