<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Mohibul Hassan</title>
    <link>https://mohibulsblog.netlify.app/</link>
    <description>Recent content on Mohibul Hassan</description>
    <generator>Hugo -- 0.146.7</generator>
    <language>en-us</language>
    <copyright>2026 Mohibul Hassan Chowdhury. All rights reserved.</copyright>
    <lastBuildDate>Wed, 06 May 2026 14:31:53 +0600</lastBuildDate>
    <atom:link href="https://mohibulsblog.netlify.app/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Day 100: What 100 Days of Java Actually Changed in How I Think About Software</title>
      <link>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day100-capstone.md/</link>
      <pubDate>Mon, 30 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day100-capstone.md/</guid>
      <description>An honest retrospective on a challenge that did not happen in a clean streak, and on how learning Java slowly turned into learning how systems behave.</description>
    </item>
    <item>
      <title>Day 99: Virtual Threads Didn&#39;t Kill Event Loops. Here&#39;s How Each Works</title>
      <link>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day99/</link>
      <pubDate>Fri, 13 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day99/</guid>
      <description>After Day 98, I thought virtual threads replaced event loops. Then I opened Netty&amp;#39;s source code zero virtual threads. I built both models from scratch to understand when each wins. Here&amp;#39;s what I learned about non-blocking I/O, event loops, and the real trade-offs.</description>
    </item>
    <item>
      <title>Why Your Parallel Streams were Leaving CPU Cores Idle (And How to Fix It)</title>
      <link>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day100-spliterator/</link>
      <pubDate>Wed, 24 Dec 2025 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day100-spliterator/</guid>
      <description>I added .parallel() expecting near-linear speedup on 8 cores. I got 60% CPU utilization. Here&amp;#39;s why the default spliterator gets load balancing wrong, and how a 50-line fix pushed it to 95%.</description>
    </item>
    <item>
      <title>Day 98: I Thought Virtual Threads Were Just Green Threads They&#39;re Actually Continuations on the Heap</title>
      <link>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day98/</link>
      <pubDate>Tue, 23 Dec 2025 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day98/</guid>
      <description>Deep dive into Java 21 Virtual Threads implementation - from continuations and heap-based stacks to mount/unmount mechanics, pinning problems, and production trade-offs.</description>
    </item>
    <item>
      <title>Day 97: Java Concurrency Toolkit Part 3 - Advanced Patterns &amp; Production Readiness</title>
      <link>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day97/</link>
      <pubDate>Mon, 22 Dec 2025 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day97/</guid>
      <description>Advanced Java concurrency - DelayQueue, ReentrantLock, Phaser with debugging techniques, monitoring patterns, and production readiness checklist.</description>
    </item>
    <item>
      <title>Day 96: Java Concurrency Toolkit Part 2 - Core Synchronization Patterns</title>
      <link>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day96/</link>
      <pubDate>Wed, 10 Dec 2025 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day96/</guid>
      <description>Master core Java concurrency synchronization - CyclicBarrier, Semaphore, ThreadFactory, and BlockingQueue with production patterns, trade-offs, and real-world examples.</description>
    </item>
    <item>
      <title>Day 95: Java Concurrency Toolkit Part 1 - Foundation &amp; Execution Patterns</title>
      <link>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day95/</link>
      <pubDate>Fri, 21 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day95/</guid>
      <description>Master the foundation of Java concurrency - Executor, ExecutorService, ScheduledExecutorService, Future, CompletableFuture, and CountDownLatch with production patterns, trade-offs, and debugging techniques.</description>
    </item>
    <item>
      <title>Day 94: Nobody Told Me Java Application Could Start This Fast and The Rabbit hole I explored</title>
      <link>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day94/</link>
      <pubDate>Thu, 30 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day94/</guid>
      <description>Your Java app takes so much time to start. You&amp;#39;ve tried everything, or have you? Here&amp;#39;s how I cut startup time using techniques you probably haven&amp;#39;t tried yet.</description>
    </item>
    <item>
      <title>Day 93: Stop Leaking Passwords - Building Java&#39;s Answer to PHP&#39;s #[SensitiveParameter]</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day93/</link>
      <pubDate>Tue, 07 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day93/</guid>
      <description>Building a @Sensitive annotation with annotation processor to mask sensitive data in logs and stack traces - Java&amp;#39;s answer to PHP&amp;#39;s #[SensitiveParameter]</description>
    </item>
    <item>
      <title>Day 92: Building AI Agents with Java 21 and Spring AI - My Learning from the Workshop</title>
      <link>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day92/</link>
      <pubDate>Wed, 10 Sep 2025 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day92/</guid>
      <description>Learn to build intelligent Java AI applications using Spring AI framework. Complete tutorial covering ChatClient, RAG implementation, vector databases, and AWS Bedrock integration for enterprise AI agents.</description>
    </item>
    <item>
      <title>Day 91: The Art of Reading Massive Files Without Breaking a Sweat - Memory Mapping in Java 21</title>
      <link>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day91/</link>
      <pubDate>Fri, 15 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day91/</guid>
      <description>Ever wondered how to process gigabyte-sized files without crashing your JVM? Discover Memory Mapping a file that turn your Java application into a data processing powerhouse.</description>
    </item>
    <item>
      <title>Day 90: How I Built a Secret Agent That Infiltrates Any Java Application</title>
      <link>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day90/</link>
      <pubDate>Fri, 18 Jul 2025 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day90/</guid>
      <description>Ever wondered how APM tools like New Relic spy on your Java applications? Learn to build your own secret agent that infiltrates any JVM and monitors method execution times—no source code changes required.</description>
    </item>
    <item>
      <title>Day 89: When Your Singleton Isn&#39;t Really a Singleton (And How to Fix It)</title>
      <link>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day89/</link>
      <pubDate>Thu, 26 Jun 2025 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day89/</guid>
      <description>That perfect Singleton you wrote? It&amp;#39;s probably creating multiple instances in production—here&amp;#39;s why it happens and five bulletproof ways to fix it.</description>
    </item>
    <item>
      <title>Day 88: Multilingual Audio Transcription with Gemini 1.5, Vertex AI, and Spring Boot</title>
      <link>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day88/</link>
      <pubDate>Tue, 29 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day88/</guid>
      <description>Leveraging Google Cloud Vertex AI&amp;#39;s Gemini 1.5 for advanced, multilingual audio transcription within a Spring Boot application, including prompt engineering, safety settings management, and confidence scoring.</description>
    </item>
    <item>
      <title>Day 87: Java&#39;s Environment Variable Paradox: Easy to Read, Impossible to Change?</title>
      <link>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day87/</link>
      <pubDate>Wed, 26 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day87/</guid>
      <description>Day 87: Java&amp;#39;s Environment Variable Paradox: Easy to Read, Impossible to Change?</description>
    </item>
    <item>
      <title>Day 86: Building a Secure Java Sandbox with Custom Class Loaders, Process isolation and Java Platform Module System – Executing JAR and .java Files Safely</title>
      <link>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day86/</link>
      <pubDate>Wed, 12 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day86/</guid>
      <description>Day 86: Building a Secure Java Sandbox with Custom Class Loaders, Process isolation and Java Platform Module System</description>
    </item>
    <item>
      <title>Day 85: Idempotent APIs in Java: Concepts, Implementation Strategies, and a Spring Boot File Upload Implementation</title>
      <link>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day85/</link>
      <pubDate>Thu, 02 Jan 2025 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day85/</guid>
      <description>Day 85: Idempotent APIs in Java: Concepts, Implementation Strategies, and a Spring Boot File Upload Implementation</description>
    </item>
    <item>
      <title>Day 84: Hot Class Reload in Java – A Webpack HMR-like Experience for Java Developers</title>
      <link>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day84/</link>
      <pubDate>Fri, 04 Oct 2024 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day84/</guid>
      <description>Day 84: Hot Class Reload in Java – A Webpack HMR-like Experience for Java Developers using WatchService and Javax.tools api</description>
    </item>
    <item>
      <title>Day 83: Java Object Cloning: Exploring Shallow and Deep Copy Techniques</title>
      <link>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day83/</link>
      <pubDate>Sat, 14 Sep 2024 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day83/</guid>
      <description>Day 83: Java Object Cloning: Exploring Shallow and Deep Copy Techniques</description>
    </item>
    <item>
      <title>Day 82: Reflection in Java: Building a Simple DI Container in 100 Lines of Code</title>
      <link>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day82/</link>
      <pubDate>Sat, 17 Aug 2024 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day82/</guid>
      <description>Day 82: Reflection in Java: Building a Simple DI Container in 100 Lines of Code</description>
    </item>
    <item>
      <title>Day 81: Creating custom stream operations ex: Slide, Shift, Zip and Fold using Spliterator</title>
      <link>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day81/</link>
      <pubDate>Thu, 04 Jul 2024 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day81/</guid>
      <description>Day 81: Creating custom stream operations ex: Slide, Shift, Zip and Fold using Spliterator</description>
    </item>
    <item>
      <title>Day 80: From Concept to Code: Implementing a Dummy Consistent Hashing in Java using TreeMap</title>
      <link>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day80/</link>
      <pubDate>Thu, 23 May 2024 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day80/</guid>
      <description>Day 80: From Concept to Code: Implementing a Dummy Consistent Hashing in Java using TreeMap</description>
    </item>
    <item>
      <title>Day 79: Did you know that too much print statement can cost you money</title>
      <link>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day79/</link>
      <pubDate>Fri, 03 May 2024 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day79/</guid>
      <description>Day 79: Did you know that too much print statement can cost you money</description>
    </item>
    <item>
      <title>Day 78: Java 22 - Embracing Safe Memory Allocation Using FFM API - An alternative to Unsafe API</title>
      <link>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day78/</link>
      <pubDate>Thu, 18 Apr 2024 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day78/</guid>
      <description>Day 78: Java 22 - Embracing Safe Memory Allocation Using MemorySegment and Arena API - An alternative to Unsafe API</description>
    </item>
    <item>
      <title>Day 77: Explore Something Unsafe : Crafting a Memory allocator using Java Unsafe API</title>
      <link>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day77/</link>
      <pubDate>Thu, 14 Mar 2024 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day77/</guid>
      <description>Explore Something Unsafe : Crafting a Memory allocator using Java Unsafe API</description>
    </item>
    <item>
      <title>Day 76: Implementing a dummy Service Oriented Architecture (SOA) service to Understand Java Service Provider Interface (SPI)</title>
      <link>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day76/</link>
      <pubDate>Fri, 26 Jan 2024 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day76/</guid>
      <description>Implementing a dummy Service Oriented Architecture (SOA) service to Understand Java SPI</description>
    </item>
    <item>
      <title>Day 75: Java BufferedReader: Do We Know Why We Need To Close It?</title>
      <link>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day75/</link>
      <pubDate>Tue, 02 Jan 2024 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day75/</guid>
      <description>Java Buffered Reader and why we need to close and what will happend if we dont</description>
    </item>
    <item>
      <title>Day 74: Java Security: Crafting a toy TLS Server with Java Security API</title>
      <link>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day74/</link>
      <pubDate>Tue, 12 Dec 2023 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day74/</guid>
      <description>Java Security: Crafting a toy TLS Server with Java Security API</description>
    </item>
    <item>
      <title>Day 73: Java Security: Safeguarding Data with Encryption and Keys</title>
      <link>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day73/</link>
      <pubDate>Mon, 11 Sep 2023 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day73/</guid>
      <description>Java Security: Safeguarding Data with Encryption and Keys</description>
    </item>
    <item>
      <title>Day 72: Can a HashMap Take Null or Empty String as a Key in Java?</title>
      <link>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day72/</link>
      <pubDate>Wed, 26 Jul 2023 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day72/</guid>
      <description>Can a HashMap Take Null or Empty String as a Key in Java? Lets see if it can or not and how does it impact serialization.</description>
    </item>
    <item>
      <title>Day 71: Understanding Heap poullion in java and its causes and how to prevent it</title>
      <link>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day71/</link>
      <pubDate>Fri, 09 Jun 2023 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/posts/java/100daysofjava/day71/</guid>
      <description>Understanding Heap poullion in java and its causes and how to prevent it.</description>
    </item>
    <item>
      <title>Day 70:Diving deep into Array copy- Measuring Array Copy Performance in Java with JMH: A Comparative Analysis of Methods</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day70/</link>
      <pubDate>Sat, 15 Apr 2023 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day70/</guid>
      <description>Measuring the performance of different array copying methods in Java using JMH</description>
    </item>
    <item>
      <title>Day 69 : Unlocking Java Performance Secrets: Harnessing the Power of JMH Microbenchmarking</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day69/</link>
      <pubDate>Wed, 05 Apr 2023 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day69/</guid>
      <description>Exploring benchmarking harness in Java and how its use to understand performance</description>
    </item>
    <item>
      <title>Day 68 : Becoming a memory plumber; A tale of Memory Leak and how to find them ( part 3)</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day68/</link>
      <pubDate>Thu, 30 Mar 2023 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day68/</guid>
      <description>Finding memory leak by analyzing GC and memory dump using VisualVM and Eclipse MAT </description>
    </item>
    <item>
      <title>Day 67: Becoming a memory plumber; A tale of Memory Leak and how to find them ( part 2)</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day67/</link>
      <pubDate>Sat, 21 Jan 2023 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day67/</guid>
      <description>Finding memory leak by analyzing GC and memory dump using VisualVM and Eclipse MAT </description>
    </item>
    <item>
      <title>Day 66: Becoming a memory plumber; A tale of Memory Leak and how to find them ( part 1)</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day66/</link>
      <pubDate>Fri, 20 Jan 2023 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day66/</guid>
      <description>Finding memory leak by analyzing GC and memory dump using VisualVM and Eclipse MAT </description>
    </item>
    <item>
      <title>Day 65: A tale of RMI (Remote Method Invocation)  in java</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day65/</link>
      <pubDate>Thu, 12 Jan 2023 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day65/</guid>
      <description>Understanding how RPC and RMI works in java </description>
    </item>
    <item>
      <title>Day 64: Implementing a basic Bloom Filter Using Java BitSet api</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day64/</link>
      <pubDate>Wed, 28 Dec 2022 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day64/</guid>
      <description>Implementing a basic bloom filter to understand its concepts and usages using Java BitSet api</description>
    </item>
    <item>
      <title>Day 63: Alert system for Java OutOfMemory Error </title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day63/</link>
      <pubDate>Wed, 14 Dec 2022 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day63/</guid>
      <description>Using JMX to write an alert system for Java JVM OutOfMemory Error</description>
    </item>
    <item>
      <title>Day 62: Understanding JMX and its architecture ( Agent Level )</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day62/</link>
      <pubDate>Tue, 29 Nov 2022 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day62/</guid>
      <description>Understanding JMX architecture and how it works. In part 2 will learn about the second layer of JMX</description>
    </item>
    <item>
      <title>Day 61: Understanding JMX and its architecture (Management Level) </title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day61/</link>
      <pubDate>Tue, 15 Nov 2022 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day61/</guid>
      <description>Understanding JMX architecture and how it works. In part 1 will learn about the first layer of JMX</description>
    </item>
    <item>
      <title>Day 60: Generating JVM heap dump programmatically </title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day60/</link>
      <pubDate>Fri, 11 Nov 2022 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day60/</guid>
      <description>Generating Heap dumps programatically by using MBeanServer and PlatformBeans to get Management information from JVM</description>
    </item>
    <item>
      <title>Day 59: Understanding Proxy and Dynamic Proxy in Java</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day59/</link>
      <pubDate>Fri, 04 Nov 2022 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day59/</guid>
      <description>Understanding Proxy and Dynamic Proxy in Java</description>
    </item>
    <item>
      <title>Day 58: Mocking void methods using ArgumentCapture and Answering</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day58/</link>
      <pubDate>Sun, 23 Oct 2022 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day58/</guid>
      <description>Mocking void methods using ArgumentCapture and Answering</description>
    </item>
    <item>
      <title>Day 57: All about Random in Java ( Random, SecureRandom,ThreadLocalRandom and SplittableRandom)</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day57/</link>
      <pubDate>Thu, 13 Oct 2022 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day57/</guid>
      <description>Understanding details and compare use cases  of Random, ThreadLocalRandom and SecureRandom</description>
    </item>
    <item>
      <title>Day 56: Zero length Array and Its use </title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day56/</link>
      <pubDate>Thu, 06 Oct 2022 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day56/</guid>
      <description>What is zero length Array and why its in java and how its used</description>
    </item>
    <item>
      <title>Blue-Green Deployment using DNS</title>
      <link>https://mohibulsblog.netlify.app/posts/tutorial/devops/blue-green-release-dns/</link>
      <pubDate>Mon, 03 Oct 2022 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/tutorial/devops/blue-green-release-dns/</guid>
      <description>Blue-Green Deployment using DNS to reduce downtime of production application </description>
    </item>
    <item>
      <title>Day 55: Understanding static and instance initializer in java classes and</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day55/</link>
      <pubDate>Mon, 26 Sep 2022 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day55/</guid>
      <description>Understanding java classe&amp;#39;s static and instance initializer </description>
    </item>
    <item>
      <title>Git troubleshooting : 6 helpful command with explanations</title>
      <link>https://mohibulsblog.netlify.app/posts/tutorial/git/git-troubleshooting-with-helpful-commands/</link>
      <pubDate>Thu, 15 Sep 2022 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/tutorial/git/git-troubleshooting-with-helpful-commands/</guid>
      <description>git troubleshooting with helpful commands to revert, stash, split, recover commits</description>
    </item>
    <item>
      <title>Day 54: Understanding volatile keyword&#39;s use for Multi Threaded program</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day54/</link>
      <pubDate>Thu, 01 Sep 2022 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day54/</guid>
      <description>Understanding volatile keyword&amp;#39;s use in incrementing a double variable and see how it behaves in multi threaded env</description>
    </item>
    <item>
      <title>Day 53: Processing Http Request Asynchronously using CompletableFutures</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day53/</link>
      <pubDate>Wed, 17 Aug 2022 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day53/</guid>
      <description>Using CompletableFuture&amp;#39;s execution to process http request asynchronously</description>
    </item>
    <item>
      <title>Day 52: Async Processing HttpRequest&#39;s using ExecutorCompletionService</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day52/</link>
      <pubDate>Tue, 26 Jul 2022 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day52/</guid>
      <description>Async Processing HttpRequest&amp;#39;s using ExecutorCompletionService</description>
    </item>
    <item>
      <title>Day 51: Creating Stream (using StreamSupport API)  from Spliterator by converting Iterator to Spliterator</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day51/</link>
      <pubDate>Sat, 28 May 2022 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day51/</guid>
      <description>Creating Stream (using StreamSupport API)  from Spliterator by converting Iterator to Spliterator</description>
    </item>
    <item>
      <title>Day 50: Marker interface and it&#39;s uses</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day50/</link>
      <pubDate>Sat, 21 May 2022 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day50/</guid>
      <description>Marker interface and it&amp;#39;s uses</description>
    </item>
    <item>
      <title>Day 49: A utility class for Zip and Unzip files using java FileSystem api (Part 2)</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day49/</link>
      <pubDate>Fri, 06 May 2022 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day49/</guid>
      <description>Zip and Unzip file using Java FileSystem api</description>
    </item>
    <item>
      <title>Day 48: A utility class for Zip and Unzip files using java Zip api (Part 1)</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day48/</link>
      <pubDate>Mon, 11 Apr 2022 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day48/</guid>
      <description>A utility class to zip and unzip files and directories</description>
    </item>
    <item>
      <title>Day 47: ThreadMXBean to get information about thread&#39;s status, deadlock monitoring and cpu time that the thread got etc.</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day47/</link>
      <pubDate>Mon, 28 Mar 2022 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day47/</guid>
      <description>Using ThreadMXBean get thread execution and monitoring related information for running threads in jvm</description>
    </item>
    <item>
      <title>Day 46: Writing a generic and thread safe ObjectPool to enable pooling for any type of class</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day46/</link>
      <pubDate>Wed, 16 Mar 2022 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day46/</guid>
      <description>Implementing ObjectPool pattern to get any type object pooling</description>
    </item>
    <item>
      <title>Day 45: learning about the internals of JVM and JRE (part 3)</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day45/</link>
      <pubDate>Tue, 01 Mar 2022 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day45/</guid>
      <description>learning what is Runtime and Runtime environment and Java Runtime</description>
    </item>
    <item>
      <title>Day 44: learning about the internals of JRE and JVM (Part 2)</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day44/</link>
      <pubDate>Thu, 24 Feb 2022 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day44/</guid>
      <description>learning about jvm internals and its architecture</description>
    </item>
    <item>
      <title>Day 43: learning about the internals of jre, jvm (Part 1)</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day43/</link>
      <pubDate>Mon, 14 Feb 2022 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day43/</guid>
      <description>Understating the internals of runtime, execution model, Application level virtualization, jre, jvm and compilation of java program</description>
    </item>
    <item>
      <title>Day 42: using custom annotations and check if its a class level or field level annotation</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day42/</link>
      <pubDate>Fri, 11 Feb 2022 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day42/</guid>
      <description>implementing custom annotations and check if its a class level or field level annotation.</description>
    </item>
    <item>
      <title>Day 41: Generating unique id&#39;s based on device MAC address and epoch time</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day41/</link>
      <pubDate>Thu, 03 Feb 2022 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day41/</guid>
      <description>Distributed unique id&amp;#39;s generator based on device MAC address and epoch time and supplier</description>
    </item>
    <item>
      <title>Day 40: Generator implementation using custom Iterator and Threads. </title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day40/</link>
      <pubDate>Thu, 27 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day40/</guid>
      <description>A python like generator implementation using custom Iterator, Thread and ThreadGroup</description>
    </item>
    <item>
      <title>Day 39: Local date time to UTC date time and vice versa with respect to timezone and Day light saving</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day39/</link>
      <pubDate>Fri, 21 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day39/</guid>
      <description>Converting LocalDateTime to UTC and vice versa with respect to timezone and Day Light saving time.</description>
    </item>
    <item>
      <title>Day 37: Feature toggle to enable disable features for paid and unpaid user</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day37/</link>
      <pubDate>Wed, 05 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day37/</guid>
      <description>How to enable disable features for paid and unpaid users using feature toggle pattern</description>
    </item>
    <item>
      <title>Day 38: One of the cases to use check and unchecked exceptions</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day38/</link>
      <pubDate>Wed, 05 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day38/</guid>
      <description>Checked exceptions and unchecked exceptions and use case</description>
    </item>
    <item>
      <title>Day 36: Learned about banned dependencies and how to ban transitive dependency in a maven or gradle project</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day36/</link>
      <pubDate>Tue, 14 Dec 2021 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day36/</guid>
      <description>Using maven-enforcer plugin and gradle constraints to ban already vulnerable libs in maven or gradle project or from any other dependencies as transitive dependencies</description>
    </item>
    <item>
      <title>Day 35: Emulating Pair in java using AbstractMap.SimpleEntry&lt;&gt;() and new Object() {} implementation</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day35/</link>
      <pubDate>Mon, 06 Dec 2021 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day35/</guid>
      <description>Pair behavior in java</description>
    </item>
    <item>
      <title>Advent of Code Day 02</title>
      <link>https://mohibulsblog.netlify.app/posts/adeventofcode2021/day02/</link>
      <pubDate>Thu, 02 Dec 2021 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/adeventofcode2021/day02/</guid>
      <description>Solutions of Advent of Code 2021 Day02 in Java, Rust and GO</description>
    </item>
    <item>
      <title>Advent of Code Day 01</title>
      <link>https://mohibulsblog.netlify.app/posts/adeventofcode2021/day01/</link>
      <pubDate>Wed, 01 Dec 2021 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/adeventofcode2021/day01/</guid>
      <description>Solutions of Advent of Code 2021 Day 01 in Java, Rust and GO</description>
    </item>
    <item>
      <title>Day 34: Inspecting JVM runtime memory and processor count with Runtime</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day34/</link>
      <pubDate>Wed, 01 Dec 2021 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day34/</guid>
      <description>Inspecting JVM runtime memory and available processor count with Runtime.getRuntime().</description>
    </item>
    <item>
      <title>Day 33: Getting a programmer joke asynchronously with CompletableFuture, HttpClient, and Jackson</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day33/</link>
      <pubDate>Thu, 25 Nov 2021 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day33/</guid>
      <description>Getting a programmer joke asynchronously with CompletableFuture, HttpClient, and Jackson.</description>
    </item>
    <item>
      <title>Day 32: Using Objects.equals() when values may be null</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day32/</link>
      <pubDate>Wed, 17 Nov 2021 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day32/</guid>
      <description>Using Objects.equals() when one of the values may be null.</description>
    </item>
    <item>
      <title>Day 31: Compressing and decompressing text with Deflater and Inflater</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day31/</link>
      <pubDate>Wed, 10 Nov 2021 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day31/</guid>
      <description>Compressing and decompressing text with Deflater and Inflater.</description>
    </item>
    <item>
      <title>Day 30: Exploring a generator-style approach in Java with Supplier and IntStream</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day30/</link>
      <pubDate>Thu, 04 Nov 2021 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day30/</guid>
      <description>Exploring a generator-style approach in Java with Supplier and IntStream.generate().</description>
    </item>
    <item>
      <title>Day 29: ParameterizedTest and MethodSource for repeated test inputs</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day29/</link>
      <pubDate>Thu, 28 Oct 2021 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day29/</guid>
      <description>Using ParameterizedTest and MethodSource to run the same file-presence test with different inputs.</description>
    </item>
    <item>
      <title>Day 28: Arrays.asList() and new ArrayList&lt;&gt;() are not the same</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day28/</link>
      <pubDate>Fri, 22 Oct 2021 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day28/</guid>
      <description>Arrays.asList() and new ArrayList&amp;lt;&amp;gt;() both return lists, but they do not behave the same way.</description>
    </item>
    <item>
      <title>Day 27: Implementing a Unix pipe-like class in Java with Function composition</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day27/</link>
      <pubDate>Thu, 14 Oct 2021 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day27/</guid>
      <description>Implementing a Unix pipe-like class in Java with Function composition.</description>
    </item>
    <item>
      <title>Day 26: Writing a method to retry another method execution</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day26/</link>
      <pubDate>Thu, 30 Sep 2021 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day26/</guid>
      <description>Writing a method to retry another method execution, Using TimerTask&amp;#39;s schedule() and scheduleAtFixedRate to check availability </description>
    </item>
    <item>
      <title>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.</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day25/</link>
      <pubDate>Tue, 21 Sep 2021 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day25/</guid>
      <description>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.</description>
    </item>
    <item>
      <title>Day 24: Removing nulls from list using Collections.singleton and Objects.isNull</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day24/</link>
      <pubDate>Tue, 14 Sep 2021 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day24/</guid>
      <description>Removing nulls from list using Collections.singleton and Objects.isNull</description>
    </item>
    <item>
      <title>Day 23: TemporalAdjuster ofDateAdjuster implementation and DayOfWeek calculating the next working day with Bangla name.</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day23/</link>
      <pubDate>Wed, 08 Sep 2021 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day23/</guid>
      <description>TemporalAdjuster ofDateAdjuster implementation and DayOfWeek calculating the next working day with Bangla name.</description>
    </item>
    <item>
      <title>Day 22: Using stream of streams and flatmapping it to concat multiple streams</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day22/</link>
      <pubDate>Mon, 06 Sep 2021 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day22/</guid>
      <description>Using stream of streams and flatmapping it to concat multiple streams</description>
    </item>
    <item>
      <title>Day 21: Optional.ifPresent and Optional.filter to log and filter the Scheduled Day according to holiday</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day21/</link>
      <pubDate>Tue, 31 Aug 2021 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day21/</guid>
      <description>Optional.ifPresent and Optional.filter to log and filter the Scheduled Day according to holiday</description>
    </item>
    <item>
      <title>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()</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day20/</link>
      <pubDate>Fri, 20 Aug 2021 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day20/</guid>
      <description>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()</description>
    </item>
    <item>
      <title>Day 19: Stream.peek to get debug information and log it.</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day19/</link>
      <pubDate>Tue, 17 Aug 2021 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day19/</guid>
      <description>Stream.peek to get debug information and log it.</description>
    </item>
    <item>
      <title>Day 18: using Scanner.findAll to get all the download links from a json file.</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day18/</link>
      <pubDate>Fri, 13 Aug 2021 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day18/</guid>
      <description>using Scanner.findAll to get all the download links from a json file.</description>
    </item>
    <item>
      <title>Day 17: Unicode decoding side effect. Application throws exception when a comment is removed.</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day17/</link>
      <pubDate>Fri, 06 Aug 2021 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day17/</guid>
      <description>Unicode decoding side effect. Application throws exception when a comment is removed.</description>
    </item>
    <item>
      <title>Day 16: Two interface having same signature default method causing to override them.</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day16/</link>
      <pubDate>Tue, 03 Aug 2021 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day16/</guid>
      <description>Two interface having same signature default method causing to override them.</description>
    </item>
    <item>
      <title>Day 15: Batching files and moving them using intStream</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day15/</link>
      <pubDate>Tue, 27 Jul 2021 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day15/</guid>
      <description>Batching files and moving them using intStream</description>
    </item>
    <item>
      <title>Day 14: Using stream parallel to add id to file names.</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day14/</link>
      <pubDate>Fri, 23 Jul 2021 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day14/</guid>
      <description>Using stream parallel to add id to file names.</description>
    </item>
    <item>
      <title>Day 13: Using Collectors.groupingBy and Collectors.counting to get numbers of file present of a particular type</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day13/</link>
      <pubDate>Mon, 19 Jul 2021 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day13/</guid>
      <description>Using Collectors.groupingBy and Collectors.counting to get numbers of file present of a particular type</description>
    </item>
    <item>
      <title>Day 12: Files.walk() and functional interface to remove file extension from fileNames</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day12/</link>
      <pubDate>Wed, 14 Jul 2021 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day12/</guid>
      <description>Files.walk() and functional interface to remove file extension from fileNames</description>
    </item>
    <item>
      <title>Day 11: Supplier, Consumer functional interface and httpclient to get and output Bitcoin info</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day11/</link>
      <pubDate>Fri, 09 Jul 2021 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day11/</guid>
      <description>Supplier, Consumer functional interface and httpclient to get and output Bitcoin info</description>
    </item>
    <item>
      <title>Day 10: Function is a functional interface that takes an input and gives an output. so functions can be chained.</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day10/</link>
      <pubDate>Tue, 06 Jul 2021 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day10/</guid>
      <description>Function is a functional interface that takes an input and gives an output. so functions can be chained.</description>
    </item>
    <item>
      <title>Day 9: Functional interface</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day9/</link>
      <pubDate>Mon, 05 Jul 2021 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day9/</guid>
      <description>Functional interface</description>
    </item>
    <item>
      <title>Day 8: I always liked string interpolation in JS. Now i found out about Javas MessageFormat&#39;s format method which lets us in its way use string interpolation.</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day8/</link>
      <pubDate>Sat, 03 Jul 2021 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day8/</guid>
      <description>I always liked string interpolation in JS. Now i found out about Javas MessageFormat&amp;#39;s format method which lets us in its way use string interpolation.</description>
    </item>
    <item>
      <title>Day 7: Today i found out that string declared with &#34;&#34; 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.</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day7/</link>
      <pubDate>Fri, 02 Jul 2021 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day7/</guid>
      <description>Today i found out that string declared with &amp;#34;&amp;#34; 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.</description>
    </item>
    <item>
      <title>Day 6: For Loop vs Foreach Loop Performance, and Why My First Benchmark Was Misleading</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day6/</link>
      <pubDate>Thu, 01 Jul 2021 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day6/</guid>
      <description>A corrected learning note about for-loop and foreach-loop performance, including why the original timing test was not a valid Java benchmark.</description>
    </item>
    <item>
      <title>Day 5: Getting stream of char from string.chars()</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day5/</link>
      <pubDate>Wed, 30 Jun 2021 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day5/</guid>
      <description>Getting stream of char from string.chars()</description>
    </item>
    <item>
      <title>Day 4: try with resource helps to close open resources that uses .close() method to close.</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day4/</link>
      <pubDate>Tue, 29 Jun 2021 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day4/</guid>
      <description>try with resource helps to close open resources that uses .close() method to close.</description>
    </item>
    <item>
      <title>Day 3: Using Objects.requireNonNullElse() where Optional not being able to be used.</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day3/</link>
      <pubDate>Mon, 28 Jun 2021 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day3/</guid>
      <description>Using Objects.requireNonNullElse() where Optional not being able to be used.</description>
    </item>
    <item>
      <title>Day 2: Getting the last element of a Stream.</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day2/</link>
      <pubDate>Sun, 27 Jun 2021 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day2/</guid>
      <description>Getting the last element of a Stream.</description>
    </item>
    <item>
      <title>Day 1: Checking Whether a String Matches One of Several Values</title>
      <link>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day1/</link>
      <pubDate>Sat, 26 Jun 2021 00:00:00 +0000</pubDate>
      <guid>https://mohibulsblog.netlify.app/posts/java/100daysofjava/day1/</guid>
      <description>Checking whether a string matches one of several allowed values in Java.</description>
    </item>
  </channel>
</rss>
