{"edges":[{"id":"edge-post-day-1-comparing-checking-equality-against-multiple-strings-post-day-2-getting-the-last-element-of-a-stream-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-1-comparing-checking-equality-against-multiple-strings","target":"post-day-2-getting-the-last-element-of-a-stream","type":"sequence","weight":1.3},{"id":"edge-post-day-2-getting-the-last-element-of-a-stream-post-day-3-using-objects-requirenonnullelse-where-optional-not-being-able-to-be-used-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-2-getting-the-last-element-of-a-stream","target":"post-day-3-using-objects-requirenonnullelse-where-optional-not-being-able-to-be-used","type":"sequence","weight":1.3},{"id":"edge-post-day-3-using-objects-requirenonnullelse-where-optional-not-being-able-to-be-used-post-day-4-try-with-resource-helps-to-close-open-resources-that-uses-close-method-to-close-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-3-using-objects-requirenonnullelse-where-optional-not-being-able-to-be-used","target":"post-day-4-try-with-resource-helps-to-close-open-resources-that-uses-close-method-to-close","type":"sequence","weight":1.3},{"id":"edge-post-day-4-try-with-resource-helps-to-close-open-resources-that-uses-close-method-to-close-post-day-5-getting-stream-of-char-from-string-chars-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-4-try-with-resource-helps-to-close-open-resources-that-uses-close-method-to-close","target":"post-day-5-getting-stream-of-char-from-string-chars","type":"sequence","weight":1.3},{"id":"edge-post-day-5-getting-stream-of-char-from-string-chars-post-day-6-for-vs-foreach-performance-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-5-getting-stream-of-char-from-string-chars","target":"post-day-6-for-vs-foreach-performance","type":"sequence","weight":1.3},{"id":"edge-post-day-6-for-vs-foreach-performance-post-day-7-string-pool-and-intern-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-6-for-vs-foreach-performance","target":"post-day-7-string-pool-and-intern","type":"sequence","weight":1.3},{"id":"edge-post-day-7-string-pool-and-intern-post-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-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-7-string-pool-and-intern","target":"post-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","type":"sequence","weight":1.3},{"id":"edge-post-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-post-day-9-functional-interface-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-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","target":"post-day-9-functional-interface","type":"sequence","weight":1.3},{"id":"edge-post-day-9-functional-interface-post-day-10-function-is-a-functional-interface-that-takes-an-input-and-gives-an-output-so-functions-can-be-chained-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-9-functional-interface","target":"post-day-10-function-is-a-functional-interface-that-takes-an-input-and-gives-an-output-so-functions-can-be-chained","type":"sequence","weight":1.3},{"id":"edge-post-day-10-function-is-a-functional-interface-that-takes-an-input-and-gives-an-output-so-functions-can-be-chained-post-day-11-supplier-consumer-functional-interface-and-httpclient-to-get-and-output-bitcoin-info-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-10-function-is-a-functional-interface-that-takes-an-input-and-gives-an-output-so-functions-can-be-chained","target":"post-day-11-supplier-consumer-functional-interface-and-httpclient-to-get-and-output-bitcoin-info","type":"sequence","weight":1.3},{"id":"edge-post-day-11-supplier-consumer-functional-interface-and-httpclient-to-get-and-output-bitcoin-info-post-day-12-files-walk-and-functional-interface-to-remove-file-extension-from-filenames-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-11-supplier-consumer-functional-interface-and-httpclient-to-get-and-output-bitcoin-info","target":"post-day-12-files-walk-and-functional-interface-to-remove-file-extension-from-filenames","type":"sequence","weight":1.3},{"id":"edge-post-day-12-files-walk-and-functional-interface-to-remove-file-extension-from-filenames-post-day-13-using-collectors-groupingby-and-collectors-counting-to-get-numbers-of-file-present-of-a-particular-type-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-12-files-walk-and-functional-interface-to-remove-file-extension-from-filenames","target":"post-day-13-using-collectors-groupingby-and-collectors-counting-to-get-numbers-of-file-present-of-a-particular-type","type":"sequence","weight":1.3},{"id":"edge-post-day-13-using-collectors-groupingby-and-collectors-counting-to-get-numbers-of-file-present-of-a-particular-type-post-day-14-using-stream-parallel-to-add-id-to-file-names-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-13-using-collectors-groupingby-and-collectors-counting-to-get-numbers-of-file-present-of-a-particular-type","target":"post-day-14-using-stream-parallel-to-add-id-to-file-names","type":"sequence","weight":1.3},{"id":"edge-post-day-14-using-stream-parallel-to-add-id-to-file-names-post-day-15-batching-files-and-moving-them-using-intstream-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-14-using-stream-parallel-to-add-id-to-file-names","target":"post-day-15-batching-files-and-moving-them-using-intstream","type":"sequence","weight":1.3},{"id":"edge-post-day-15-batching-files-and-moving-them-using-intstream-post-day-16-two-interface-having-same-signature-default-method-causing-to-override-them-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-15-batching-files-and-moving-them-using-intstream","target":"post-day-16-two-interface-having-same-signature-default-method-causing-to-override-them","type":"sequence","weight":1.3},{"id":"edge-post-day-16-two-interface-having-same-signature-default-method-causing-to-override-them-post-day-17-unicode-decoding-side-effect-application-throws-exception-when-a-comment-is-removed-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-16-two-interface-having-same-signature-default-method-causing-to-override-them","target":"post-day-17-unicode-decoding-side-effect-application-throws-exception-when-a-comment-is-removed","type":"sequence","weight":1.3},{"id":"edge-post-day-17-unicode-decoding-side-effect-application-throws-exception-when-a-comment-is-removed-post-day-18-using-scanner-findall-to-get-all-the-download-links-from-a-json-file-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-17-unicode-decoding-side-effect-application-throws-exception-when-a-comment-is-removed","target":"post-day-18-using-scanner-findall-to-get-all-the-download-links-from-a-json-file","type":"sequence","weight":1.3},{"id":"edge-post-day-18-using-scanner-findall-to-get-all-the-download-links-from-a-json-file-post-day-19-stream-peek-to-get-debug-information-and-log-it-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-18-using-scanner-findall-to-get-all-the-download-links-from-a-json-file","target":"post-day-19-stream-peek-to-get-debug-information-and-log-it","type":"sequence","weight":1.3},{"id":"edge-post-day-19-stream-peek-to-get-debug-information-and-log-it-post-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-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-19-stream-peek-to-get-debug-information-and-log-it","target":"post-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","type":"sequence","weight":1.3},{"id":"edge-post-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-post-day-21-optional-ifpresent-and-optional-filter-to-log-and-filter-the-scheduled-day-according-to-holiday-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-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","target":"post-day-21-optional-ifpresent-and-optional-filter-to-log-and-filter-the-scheduled-day-according-to-holiday","type":"sequence","weight":1.3},{"id":"edge-post-day-21-optional-ifpresent-and-optional-filter-to-log-and-filter-the-scheduled-day-according-to-holiday-post-day-22-using-stream-of-streams-and-flatmapping-it-to-concat-multiple-streams-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-21-optional-ifpresent-and-optional-filter-to-log-and-filter-the-scheduled-day-according-to-holiday","target":"post-day-22-using-stream-of-streams-and-flatmapping-it-to-concat-multiple-streams","type":"sequence","weight":1.3},{"id":"edge-post-day-22-using-stream-of-streams-and-flatmapping-it-to-concat-multiple-streams-post-day-23-temporaladjuster-ofdateadjuster-implementation-and-dayofweek-calculating-the-next-working-day-with-bangla-name-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-22-using-stream-of-streams-and-flatmapping-it-to-concat-multiple-streams","target":"post-day-23-temporaladjuster-ofdateadjuster-implementation-and-dayofweek-calculating-the-next-working-day-with-bangla-name","type":"sequence","weight":1.3},{"id":"edge-post-day-23-temporaladjuster-ofdateadjuster-implementation-and-dayofweek-calculating-the-next-working-day-with-bangla-name-post-day-24-removing-nulls-from-list-using-collections-singleton-and-objects-isnull-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-23-temporaladjuster-ofdateadjuster-implementation-and-dayofweek-calculating-the-next-working-day-with-bangla-name","target":"post-day-24-removing-nulls-from-list-using-collections-singleton-and-objects-isnull","type":"sequence","weight":1.3},{"id":"edge-post-day-24-removing-nulls-from-list-using-collections-singleton-and-objects-isnull-post-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-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-24-removing-nulls-from-list-using-collections-singleton-and-objects-isnull","target":"post-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","type":"sequence","weight":1.3},{"id":"edge-post-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-post-day-26-using-timertask-s-schedule-and-scheduleatfixedrate-to-check-uptime-and-keep-alive-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-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","target":"post-day-26-using-timertask-s-schedule-and-scheduleatfixedrate-to-check-uptime-and-keep-alive","type":"sequence","weight":1.3},{"id":"edge-post-day-26-using-timertask-s-schedule-and-scheduleatfixedrate-to-check-uptime-and-keep-alive-post-day-27-unix-pipe-with-function-composition-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-26-using-timertask-s-schedule-and-scheduleatfixedrate-to-check-uptime-and-keep-alive","target":"post-day-27-unix-pipe-with-function-composition","type":"sequence","weight":1.3},{"id":"edge-post-day-27-unix-pipe-with-function-composition-post-day-28-arrays-aslist-vs-arraylist-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-27-unix-pipe-with-function-composition","target":"post-day-28-arrays-aslist-vs-arraylist","type":"sequence","weight":1.3},{"id":"edge-post-day-28-arrays-aslist-vs-arraylist-post-day-29-parameterizedtest-and-methodsource-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-28-arrays-aslist-vs-arraylist","target":"post-day-29-parameterizedtest-and-methodsource","type":"sequence","weight":1.3},{"id":"edge-post-day-29-parameterizedtest-and-methodsource-post-day-30-generator-style-intstream-with-supplier-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-29-parameterizedtest-and-methodsource","target":"post-day-30-generator-style-intstream-with-supplier","type":"sequence","weight":1.3},{"id":"edge-post-day-30-generator-style-intstream-with-supplier-post-day-31-deflater-and-inflater-compression-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-30-generator-style-intstream-with-supplier","target":"post-day-31-deflater-and-inflater-compression","type":"sequence","weight":1.3},{"id":"edge-post-day-31-deflater-and-inflater-compression-post-day-32-objects-equals-to-avoid-nullpointerexception-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-31-deflater-and-inflater-compression","target":"post-day-32-objects-equals-to-avoid-nullpointerexception","type":"sequence","weight":1.3},{"id":"edge-post-day-32-objects-equals-to-avoid-nullpointerexception-post-day-33-completablefuture-httpclient-and-jackson-joke-api-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-32-objects-equals-to-avoid-nullpointerexception","target":"post-day-33-completablefuture-httpclient-and-jackson-joke-api","type":"sequence","weight":1.3},{"id":"edge-post-day-33-completablefuture-httpclient-and-jackson-joke-api-post-day-34-runtime-jvm-memory-and-processor-count-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-33-completablefuture-httpclient-and-jackson-joke-api","target":"post-day-34-runtime-jvm-memory-and-processor-count","type":"sequence","weight":1.3},{"id":"edge-post-day-34-runtime-jvm-memory-and-processor-count-post-day-35-emulating-pair-in-java-using-abstractmapsimpleentry-and-new-object-implementation-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-34-runtime-jvm-memory-and-processor-count","target":"post-day-35-emulating-pair-in-java-using-abstractmapsimpleentry-and-new-object-implementation","type":"sequence","weight":1.3},{"id":"edge-post-day-35-emulating-pair-in-java-using-abstractmapsimpleentry-and-new-object-implementation-post-day-36-learned-about-banned-dependencies-and-how-to-ban-transitive-dependency-in-a-maven-or-gradle-project-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-35-emulating-pair-in-java-using-abstractmapsimpleentry-and-new-object-implementation","target":"post-day-36-learned-about-banned-dependencies-and-how-to-ban-transitive-dependency-in-a-maven-or-gradle-project","type":"sequence","weight":1.3},{"id":"edge-post-day-36-learned-about-banned-dependencies-and-how-to-ban-transitive-dependency-in-a-maven-or-gradle-project-post-day-37-feature-toggle-to-enable-disable-features-for-paid-and-unpaid-user-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-36-learned-about-banned-dependencies-and-how-to-ban-transitive-dependency-in-a-maven-or-gradle-project","target":"post-day-37-feature-toggle-to-enable-disable-features-for-paid-and-unpaid-user","type":"sequence","weight":1.3},{"id":"edge-post-day-37-feature-toggle-to-enable-disable-features-for-paid-and-unpaid-user-post-day-38-one-of-the-case-to-use-check-and-unchecked-exceptions-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-37-feature-toggle-to-enable-disable-features-for-paid-and-unpaid-user","target":"post-day-38-one-of-the-case-to-use-check-and-unchecked-exceptions","type":"sequence","weight":1.3},{"id":"edge-post-day-38-one-of-the-case-to-use-check-and-unchecked-exceptions-post-day-39-local-date-time-to-utc-date-time-and-vice-versa-with-respect-to-timezone-and-day-light-saving-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-38-one-of-the-case-to-use-check-and-unchecked-exceptions","target":"post-day-39-local-date-time-to-utc-date-time-and-vice-versa-with-respect-to-timezone-and-day-light-saving","type":"sequence","weight":1.3},{"id":"edge-post-day-39-local-date-time-to-utc-date-time-and-vice-versa-with-respect-to-timezone-and-day-light-saving-post-day-40-generator-implementation-using-custom-iterator-and-threads-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-39-local-date-time-to-utc-date-time-and-vice-versa-with-respect-to-timezone-and-day-light-saving","target":"post-day-40-generator-implementation-using-custom-iterator-and-threads","type":"sequence","weight":1.3},{"id":"edge-post-day-40-generator-implementation-using-custom-iterator-and-threads-post-day-41-generating-unique-id-s-based-on-device-mac-address-and-epoch-time-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-40-generator-implementation-using-custom-iterator-and-threads","target":"post-day-41-generating-unique-id-s-based-on-device-mac-address-and-epoch-time","type":"sequence","weight":1.3},{"id":"edge-post-day-41-generating-unique-id-s-based-on-device-mac-address-and-epoch-time-post-day-42-using-custom-annotations-and-check-if-its-a-class-level-or-field-level-annotation-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-41-generating-unique-id-s-based-on-device-mac-address-and-epoch-time","target":"post-day-42-using-custom-annotations-and-check-if-its-a-class-level-or-field-level-annotation","type":"sequence","weight":1.3},{"id":"edge-post-day-42-using-custom-annotations-and-check-if-its-a-class-level-or-field-level-annotation-post-day-43-learning-about-the-internals-of-jre-jvm-part-1-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-42-using-custom-annotations-and-check-if-its-a-class-level-or-field-level-annotation","target":"post-day-43-learning-about-the-internals-of-jre-jvm-part-1","type":"sequence","weight":1.3},{"id":"edge-post-day-43-learning-about-the-internals-of-jre-jvm-part-1-post-day-44-learning-about-the-internals-of-jre-and-jvm-part-2-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-43-learning-about-the-internals-of-jre-jvm-part-1","target":"post-day-44-learning-about-the-internals-of-jre-and-jvm-part-2","type":"sequence","weight":1.3},{"id":"edge-post-day-44-learning-about-the-internals-of-jre-and-jvm-part-2-post-day-45-learning-about-the-internals-of-jvm-and-jre-part-3-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-44-learning-about-the-internals-of-jre-and-jvm-part-2","target":"post-day-45-learning-about-the-internals-of-jvm-and-jre-part-3","type":"sequence","weight":1.3},{"id":"edge-post-day-45-learning-about-the-internals-of-jvm-and-jre-part-3-post-day-46-writing-a-generic-objectpool-to-enable-pooling-for-any-type-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-45-learning-about-the-internals-of-jvm-and-jre-part-3","target":"post-day-46-writing-a-generic-objectpool-to-enable-pooling-for-any-type","type":"sequence","weight":1.3},{"id":"edge-post-day-46-writing-a-generic-objectpool-to-enable-pooling-for-any-type-post-day-47-threadmxbean-to-get-information-about-thread-s-status-deadlock-monitoring-and-cpu-time-that-the-thread-got-etc-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-46-writing-a-generic-objectpool-to-enable-pooling-for-any-type","target":"post-day-47-threadmxbean-to-get-information-about-thread-s-status-deadlock-monitoring-and-cpu-time-that-the-thread-got-etc","type":"sequence","weight":1.3},{"id":"edge-post-day-47-threadmxbean-to-get-information-about-thread-s-status-deadlock-monitoring-and-cpu-time-that-the-thread-got-etc-post-day-48-a-utility-class-for-zip-and-unzip-files-using-java-zip-api-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-47-threadmxbean-to-get-information-about-thread-s-status-deadlock-monitoring-and-cpu-time-that-the-thread-got-etc","target":"post-day-48-a-utility-class-for-zip-and-unzip-files-using-java-zip-api","type":"sequence","weight":1.3},{"id":"edge-post-day-48-a-utility-class-for-zip-and-unzip-files-using-java-zip-api-post-day-49-zip-and-unzip-file-using-java-filesystem-api-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-48-a-utility-class-for-zip-and-unzip-files-using-java-zip-api","target":"post-day-49-zip-and-unzip-file-using-java-filesystem-api","type":"sequence","weight":1.3},{"id":"edge-post-day-49-zip-and-unzip-file-using-java-filesystem-api-post-day-50-marker-interface-and-it-s-uses-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-49-zip-and-unzip-file-using-java-filesystem-api","target":"post-day-50-marker-interface-and-it-s-uses","type":"sequence","weight":1.3},{"id":"edge-post-day-50-marker-interface-and-it-s-uses-post-day-51-creating-stream-using-streamsupport-api-from-iterator-and-splitting-by-group-and-partitioning-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-50-marker-interface-and-it-s-uses","target":"post-day-51-creating-stream-using-streamsupport-api-from-iterator-and-splitting-by-group-and-partitioning","type":"sequence","weight":1.3},{"id":"edge-post-day-51-creating-stream-using-streamsupport-api-from-iterator-and-splitting-by-group-and-partitioning-post-day-52-async-processing-httprequest-s-using-executorcompletionservice-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-51-creating-stream-using-streamsupport-api-from-iterator-and-splitting-by-group-and-partitioning","target":"post-day-52-async-processing-httprequest-s-using-executorcompletionservice","type":"sequence","weight":1.3},{"id":"edge-post-day-52-async-processing-httprequest-s-using-executorcompletionservice-post-day-53-processing-http-request-asynchronously-using-completablefuture-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-52-async-processing-httprequest-s-using-executorcompletionservice","target":"post-day-53-processing-http-request-asynchronously-using-completablefuture","type":"sequence","weight":1.3},{"id":"edge-post-day-53-processing-http-request-asynchronously-using-completablefuture-post-day-54-understanding-volatile-keyword-s-use-for-multi-threaded-program-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-53-processing-http-request-asynchronously-using-completablefuture","target":"post-day-54-understanding-volatile-keyword-s-use-for-multi-threaded-program","type":"sequence","weight":1.3},{"id":"edge-post-day-54-understanding-volatile-keyword-s-use-for-multi-threaded-program-post-day-55-understanding-static-and-instance-initializer-in-java-classes-and-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-54-understanding-volatile-keyword-s-use-for-multi-threaded-program","target":"post-day-55-understanding-static-and-instance-initializer-in-java-classes-and","type":"sequence","weight":1.3},{"id":"edge-post-day-55-understanding-static-and-instance-initializer-in-java-classes-and-post-day-56-zero-length-array-and-its-use-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-55-understanding-static-and-instance-initializer-in-java-classes-and","target":"post-day-56-zero-length-array-and-its-use","type":"sequence","weight":1.3},{"id":"edge-post-day-56-zero-length-array-and-its-use-post-day-57-understand-and-compare-use-case-of-random-threadlocalrandom-and-securerandom-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-56-zero-length-array-and-its-use","target":"post-day-57-understand-and-compare-use-case-of-random-threadlocalrandom-and-securerandom","type":"sequence","weight":1.3},{"id":"edge-post-day-57-understand-and-compare-use-case-of-random-threadlocalrandom-and-securerandom-post-day-58-mocking-void-methods-using-argumentcapture-and-answering-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-57-understand-and-compare-use-case-of-random-threadlocalrandom-and-securerandom","target":"post-day-58-mocking-void-methods-using-argumentcapture-and-answering","type":"sequence","weight":1.3},{"id":"edge-post-day-58-mocking-void-methods-using-argumentcapture-and-answering-post-day-59-understanding-proxy-and-dynamic-proxy-in-java-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-58-mocking-void-methods-using-argumentcapture-and-answering","target":"post-day-59-understanding-proxy-and-dynamic-proxy-in-java","type":"sequence","weight":1.3},{"id":"edge-post-day-59-understanding-proxy-and-dynamic-proxy-in-java-post-day-60-generating-jvm-heap-dump-programmatically-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-59-understanding-proxy-and-dynamic-proxy-in-java","target":"post-day-60-generating-jvm-heap-dump-programmatically","type":"sequence","weight":1.3},{"id":"edge-post-day-60-generating-jvm-heap-dump-programmatically-post-day-61-understanding-jmx-and-its-architecture-part-1-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-60-generating-jvm-heap-dump-programmatically","target":"post-day-61-understanding-jmx-and-its-architecture-part-1","type":"sequence","weight":1.3},{"id":"edge-post-day-61-understanding-jmx-and-its-architecture-part-1-post-day-62-understanding-jmx-and-its-architecture-agent-level-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-61-understanding-jmx-and-its-architecture-part-1","target":"post-day-62-understanding-jmx-and-its-architecture-agent-level","type":"sequence","weight":1.3},{"id":"edge-post-day-62-understanding-jmx-and-its-architecture-agent-level-post-day-63-alert-system-for-java-outofmemory-error-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-62-understanding-jmx-and-its-architecture-agent-level","target":"post-day-63-alert-system-for-java-outofmemory-error","type":"sequence","weight":1.3},{"id":"edge-post-day-63-alert-system-for-java-outofmemory-error-post-day-52-implementing-a-basic-bloom-filter-using-java-bitset-api-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-63-alert-system-for-java-outofmemory-error","target":"post-day-52-implementing-a-basic-bloom-filter-using-java-bitset-api","type":"sequence","weight":1.3},{"id":"edge-post-day-52-implementing-a-basic-bloom-filter-using-java-bitset-api-post-day-65-a-tale-of-rmi-and-rpc-in-java-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-52-implementing-a-basic-bloom-filter-using-java-bitset-api","target":"post-day-65-a-tale-of-rmi-and-rpc-in-java","type":"sequence","weight":1.3},{"id":"edge-post-day-65-a-tale-of-rmi-and-rpc-in-java-post-day-65-becoming-a-memory-plumber-a-tale-of-memory-leak-and-how-to-find-them-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-65-a-tale-of-rmi-and-rpc-in-java","target":"post-day-65-becoming-a-memory-plumber-a-tale-of-memory-leak-and-how-to-find-them","type":"sequence","weight":1.3},{"id":"edge-post-day-65-becoming-a-memory-plumber-a-tale-of-memory-leak-and-how-to-find-them-post-day-67-becoming-a-memory-plumber-a-tale-of-memory-leak-and-how-to-find-them-part-1-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-65-becoming-a-memory-plumber-a-tale-of-memory-leak-and-how-to-find-them","target":"post-day-67-becoming-a-memory-plumber-a-tale-of-memory-leak-and-how-to-find-them-part-1","type":"sequence","weight":1.3},{"id":"edge-post-day-67-becoming-a-memory-plumber-a-tale-of-memory-leak-and-how-to-find-them-part-1-post-day-68-becoming-a-memory-plumber-a-tale-of-memory-leak-and-how-to-find-them-part-3-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-67-becoming-a-memory-plumber-a-tale-of-memory-leak-and-how-to-find-them-part-1","target":"post-day-68-becoming-a-memory-plumber-a-tale-of-memory-leak-and-how-to-find-them-part-3","type":"sequence","weight":1.3},{"id":"edge-post-day-68-becoming-a-memory-plumber-a-tale-of-memory-leak-and-how-to-find-them-part-3-post-day-69-unlocking-java-performance-secrets-harnessing-the-power-of-jmh-microbenchmarking-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-68-becoming-a-memory-plumber-a-tale-of-memory-leak-and-how-to-find-them-part-3","target":"post-day-69-unlocking-java-performance-secrets-harnessing-the-power-of-jmh-microbenchmarking","type":"sequence","weight":1.3},{"id":"edge-post-day-69-unlocking-java-performance-secrets-harnessing-the-power-of-jmh-microbenchmarking-post-day-70-diving-deep-into-array-copy-measuring-array-copy-performance-in-java-with-jmh-a-comparative-analysis-of-methods-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-69-unlocking-java-performance-secrets-harnessing-the-power-of-jmh-microbenchmarking","target":"post-day-70-diving-deep-into-array-copy-measuring-array-copy-performance-in-java-with-jmh-a-comparative-analysis-of-methods","type":"sequence","weight":1.3},{"id":"edge-post-day-70-diving-deep-into-array-copy-measuring-array-copy-performance-in-java-with-jmh-a-comparative-analysis-of-methods-post-day-71-what-is-heap-pollution-and-how-does-it-happen-in-java-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-70-diving-deep-into-array-copy-measuring-array-copy-performance-in-java-with-jmh-a-comparative-analysis-of-methods","target":"post-day-71-what-is-heap-pollution-and-how-does-it-happen-in-java","type":"sequence","weight":1.3},{"id":"edge-post-day-71-what-is-heap-pollution-and-how-does-it-happen-in-java-post-day-72-can-a-hashmap-take-null-or-empty-string-as-a-key-in-java-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-71-what-is-heap-pollution-and-how-does-it-happen-in-java","target":"post-day-72-can-a-hashmap-take-null-or-empty-string-as-a-key-in-java","type":"sequence","weight":1.3},{"id":"edge-post-day-72-can-a-hashmap-take-null-or-empty-string-as-a-key-in-java-post-day-73-java-security-safeguarding-data-with-encryption-signatures-and-keys-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-72-can-a-hashmap-take-null-or-empty-string-as-a-key-in-java","target":"post-day-73-java-security-safeguarding-data-with-encryption-signatures-and-keys","type":"sequence","weight":1.3},{"id":"edge-post-day-73-java-security-safeguarding-data-with-encryption-signatures-and-keys-post-day-74-java-security-crafting-a-toy-tls-server-with-java-security-apis-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-73-java-security-safeguarding-data-with-encryption-signatures-and-keys","target":"post-day-74-java-security-crafting-a-toy-tls-server-with-java-security-apis","type":"sequence","weight":1.3},{"id":"edge-post-day-74-java-security-crafting-a-toy-tls-server-with-java-security-apis-post-day-75-java-bufferedreader-do-we-know-why-we-need-to-close-it-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-74-java-security-crafting-a-toy-tls-server-with-java-security-apis","target":"post-day-75-java-bufferedreader-do-we-know-why-we-need-to-close-it","type":"sequence","weight":1.3},{"id":"edge-post-day-75-java-bufferedreader-do-we-know-why-we-need-to-close-it-post-day-76-implementing-a-dummy-service-oriented-architecture-soa-service-to-understand-java-service-provider-interface-spi-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-75-java-bufferedreader-do-we-know-why-we-need-to-close-it","target":"post-day-76-implementing-a-dummy-service-oriented-architecture-soa-service-to-understand-java-service-provider-interface-spi","type":"sequence","weight":1.3},{"id":"edge-post-day-76-implementing-a-dummy-service-oriented-architecture-soa-service-to-understand-java-service-provider-interface-spi-post-day-77-explore-something-unsafe-crafting-a-memory-allocator-using-java-unsafe-api-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-76-implementing-a-dummy-service-oriented-architecture-soa-service-to-understand-java-service-provider-interface-spi","target":"post-day-77-explore-something-unsafe-crafting-a-memory-allocator-using-java-unsafe-api","type":"sequence","weight":1.3},{"id":"edge-post-day-77-explore-something-unsafe-crafting-a-memory-allocator-using-java-unsafe-api-post-day-78-memorysegment-api-alterative-approach-to-unsafe-api-java-22-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-77-explore-something-unsafe-crafting-a-memory-allocator-using-java-unsafe-api","target":"post-day-78-memorysegment-api-alterative-approach-to-unsafe-api-java-22","type":"sequence","weight":1.3},{"id":"edge-post-day-78-memorysegment-api-alterative-approach-to-unsafe-api-java-22-post-day-79-did-you-know-too-much-print-statement-can-cost-you-money-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-78-memorysegment-api-alterative-approach-to-unsafe-api-java-22","target":"post-day-79-did-you-know-too-much-print-statement-can-cost-you-money","type":"sequence","weight":1.3},{"id":"edge-post-day-79-did-you-know-too-much-print-statement-can-cost-you-money-post-day-80-consistent-hashing-in-java-using-treemap-and-hashfunction-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-79-did-you-know-too-much-print-statement-can-cost-you-money","target":"post-day-80-consistent-hashing-in-java-using-treemap-and-hashfunction","type":"sequence","weight":1.3},{"id":"edge-post-day-80-consistent-hashing-in-java-using-treemap-and-hashfunction-post-day-81-creating-custom-stream-operations--ex--slide-shift-zip-and-fold-using-spliterator-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-80-consistent-hashing-in-java-using-treemap-and-hashfunction","target":"post-day-81-creating-custom-stream-operations--ex--slide-shift-zip-and-fold-using-spliterator","type":"sequence","weight":1.3},{"id":"edge-post-day-81-creating-custom-stream-operations--ex--slide-shift-zip-and-fold-using-spliterator-post-day-82-making-a-java-dependency-injection-container-using-reflection-and-custom-annotation-api-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-81-creating-custom-stream-operations--ex--slide-shift-zip-and-fold-using-spliterator","target":"post-day-82-making-a-java-dependency-injection-container-using-reflection-and-custom-annotation-api","type":"sequence","weight":1.3},{"id":"edge-post-day-82-making-a-java-dependency-injection-container-using-reflection-and-custom-annotation-api-post-day-83-understanding-shallow-vs-deep-copy-in-java-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-82-making-a-java-dependency-injection-container-using-reflection-and-custom-annotation-api","target":"post-day-83-understanding-shallow-vs-deep-copy-in-java","type":"sequence","weight":1.3},{"id":"edge-post-day-83-understanding-shallow-vs-deep-copy-in-java-post-day-84-crafting-a-simple-hot-swapping-system-for-java-code-change-reload-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-83-understanding-shallow-vs-deep-copy-in-java","target":"post-day-84-crafting-a-simple-hot-swapping-system-for-java-code-change-reload","type":"sequence","weight":1.3},{"id":"edge-post-day-84-crafting-a-simple-hot-swapping-system-for-java-code-change-reload-post-day-85-idempotent-apis-java-concepts-implementation-strategies-spring-boot-file-upload-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-84-crafting-a-simple-hot-swapping-system-for-java-code-change-reload","target":"post-day-85-idempotent-apis-java-concepts-implementation-strategies-spring-boot-file-upload","type":"sequence","weight":1.3},{"id":"edge-post-day-85-idempotent-apis-java-concepts-implementation-strategies-spring-boot-file-upload-post-day-86-building-a-secure-java-sandbox-with-custom-class-loaders-and-security-policies-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-85-idempotent-apis-java-concepts-implementation-strategies-spring-boot-file-upload","target":"post-day-86-building-a-secure-java-sandbox-with-custom-class-loaders-and-security-policies","type":"sequence","weight":1.3},{"id":"edge-post-day-86-building-a-secure-java-sandbox-with-custom-class-loaders-and-security-policies-post-day-87-javas-environment-variable-paradox-easy-to-read-impossible-to-change-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-86-building-a-secure-java-sandbox-with-custom-class-loaders-and-security-policies","target":"post-day-87-javas-environment-variable-paradox-easy-to-read-impossible-to-change","type":"sequence","weight":1.3},{"id":"edge-post-day-87-javas-environment-variable-paradox-easy-to-read-impossible-to-change-post-day88-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-87-javas-environment-variable-paradox-easy-to-read-impossible-to-change","target":"post-day88","type":"sequence","weight":1.3},{"id":"edge-post-day88-post-day89-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day88","target":"post-day89","type":"sequence","weight":1.3},{"id":"edge-post-day89-post-day90-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day89","target":"post-day90","type":"sequence","weight":1.3},{"id":"edge-post-day90-post-day91-java-memory-mapping-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day90","target":"post-day91-java-memory-mapping","type":"sequence","weight":1.3},{"id":"edge-post-day91-java-memory-mapping-post-day-92-building-java-ai-agents-with-spring-ai-my-unicorn-rental-adventure-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day91-java-memory-mapping","target":"post-day-92-building-java-ai-agents-with-spring-ai-my-unicorn-rental-adventure","type":"sequence","weight":1.3},{"id":"edge-post-day-92-building-java-ai-agents-with-spring-ai-my-unicorn-rental-adventure-post-day-93-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-92-building-java-ai-agents-with-spring-ai-my-unicorn-rental-adventure","target":"post-day-93","type":"sequence","weight":1.3},{"id":"edge-post-day-93-post-day94-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-93","target":"post-day94","type":"sequence","weight":1.3},{"id":"edge-post-day94-post-day95-part1-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day94","target":"post-day95-part1","type":"sequence","weight":1.3},{"id":"edge-post-day95-part1-post-day96-part2-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day95-part1","target":"post-day96-part2","type":"sequence","weight":1.3},{"id":"edge-post-day96-part2-post-day97-part3-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day96-part2","target":"post-day97-part3","type":"sequence","weight":1.3},{"id":"edge-post-day97-part3-post-day-98-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day97-part3","target":"post-day-98","type":"sequence","weight":1.3},{"id":"edge-post-day-98-post-day99-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day-98","target":"post-day99","type":"sequence","weight":1.3},{"id":"edge-post-day99-post-day100-capstone-sequence","label":"Day progression","reason":"Consecutive posts in the original 100DaysOfJava sequence.","source":"post-day99","target":"post-day100-capstone","type":"sequence","weight":1.3},{"id":"edge-post-day-1-comparing-checking-equality-against-multiple-strings-post-day-2-getting-the-last-element-of-a-stream-topic","label":"Shared topic","reason":"Both posts are classified under Language \u0026 APIs.","source":"post-day-1-comparing-checking-equality-against-multiple-strings","target":"post-day-2-getting-the-last-element-of-a-stream","type":"topic","weight":0.8},{"id":"edge-post-day-2-getting-the-last-element-of-a-stream-post-day-3-using-objects-requirenonnullelse-where-optional-not-being-able-to-be-used-topic","label":"Shared topic","reason":"Both posts are classified under Language \u0026 APIs.","source":"post-day-2-getting-the-last-element-of-a-stream","target":"post-day-3-using-objects-requirenonnullelse-where-optional-not-being-able-to-be-used","type":"topic","weight":0.8},{"id":"edge-post-day-3-using-objects-requirenonnullelse-where-optional-not-being-able-to-be-used-post-day-5-getting-stream-of-char-from-string-chars-topic","label":"Shared topic","reason":"Both posts are classified under Language \u0026 APIs.","source":"post-day-3-using-objects-requirenonnullelse-where-optional-not-being-able-to-be-used","target":"post-day-5-getting-stream-of-char-from-string-chars","type":"topic","weight":0.8},{"id":"edge-post-day-6-for-vs-foreach-performance-post-day-7-string-pool-and-intern-topic","label":"Shared topic","reason":"Both posts are classified under JVM \u0026 Performance.","source":"post-day-6-for-vs-foreach-performance","target":"post-day-7-string-pool-and-intern","type":"topic","weight":0.8},{"id":"edge-post-day-5-getting-stream-of-char-from-string-chars-post-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-topic","label":"Shared topic","reason":"Both posts are classified under Language \u0026 APIs.","source":"post-day-5-getting-stream-of-char-from-string-chars","target":"post-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","type":"topic","weight":0.8},{"id":"edge-post-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-post-day-9-functional-interface-topic","label":"Shared topic","reason":"Both posts are classified under Language \u0026 APIs.","source":"post-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","target":"post-day-9-functional-interface","type":"topic","weight":0.8},{"id":"edge-post-day-9-functional-interface-post-day-10-function-is-a-functional-interface-that-takes-an-input-and-gives-an-output-so-functions-can-be-chained-topic","label":"Shared topic","reason":"Both posts are classified under Language \u0026 APIs.","source":"post-day-9-functional-interface","target":"post-day-10-function-is-a-functional-interface-that-takes-an-input-and-gives-an-output-so-functions-can-be-chained","type":"topic","weight":0.8},{"id":"edge-post-day-4-try-with-resource-helps-to-close-open-resources-that-uses-close-method-to-close-post-day-11-supplier-consumer-functional-interface-and-httpclient-to-get-and-output-bitcoin-info-topic","label":"Shared topic","reason":"Both posts are classified under I/O \u0026 Networking.","source":"post-day-4-try-with-resource-helps-to-close-open-resources-that-uses-close-method-to-close","target":"post-day-11-supplier-consumer-functional-interface-and-httpclient-to-get-and-output-bitcoin-info","type":"topic","weight":0.8},{"id":"edge-post-day-11-supplier-consumer-functional-interface-and-httpclient-to-get-and-output-bitcoin-info-post-day-12-files-walk-and-functional-interface-to-remove-file-extension-from-filenames-topic","label":"Shared topic","reason":"Both posts are classified under I/O \u0026 Networking.","source":"post-day-11-supplier-consumer-functional-interface-and-httpclient-to-get-and-output-bitcoin-info","target":"post-day-12-files-walk-and-functional-interface-to-remove-file-extension-from-filenames","type":"topic","weight":0.8},{"id":"edge-post-day-10-function-is-a-functional-interface-that-takes-an-input-and-gives-an-output-so-functions-can-be-chained-post-day-13-using-collectors-groupingby-and-collectors-counting-to-get-numbers-of-file-present-of-a-particular-type-topic","label":"Shared topic","reason":"Both posts are classified under Language \u0026 APIs.","source":"post-day-10-function-is-a-functional-interface-that-takes-an-input-and-gives-an-output-so-functions-can-be-chained","target":"post-day-13-using-collectors-groupingby-and-collectors-counting-to-get-numbers-of-file-present-of-a-particular-type","type":"topic","weight":0.8},{"id":"edge-post-day-12-files-walk-and-functional-interface-to-remove-file-extension-from-filenames-post-day-15-batching-files-and-moving-them-using-intstream-topic","label":"Shared topic","reason":"Both posts are classified under I/O \u0026 Networking.","source":"post-day-12-files-walk-and-functional-interface-to-remove-file-extension-from-filenames","target":"post-day-15-batching-files-and-moving-them-using-intstream","type":"topic","weight":0.8},{"id":"edge-post-day-13-using-collectors-groupingby-and-collectors-counting-to-get-numbers-of-file-present-of-a-particular-type-post-day-16-two-interface-having-same-signature-default-method-causing-to-override-them-topic","label":"Shared topic","reason":"Both posts are classified under Language \u0026 APIs.","source":"post-day-13-using-collectors-groupingby-and-collectors-counting-to-get-numbers-of-file-present-of-a-particular-type","target":"post-day-16-two-interface-having-same-signature-default-method-causing-to-override-them","type":"topic","weight":0.8},{"id":"edge-post-day-16-two-interface-having-same-signature-default-method-causing-to-override-them-post-day-17-unicode-decoding-side-effect-application-throws-exception-when-a-comment-is-removed-topic","label":"Shared topic","reason":"Both posts are classified under Language \u0026 APIs.","source":"post-day-16-two-interface-having-same-signature-default-method-causing-to-override-them","target":"post-day-17-unicode-decoding-side-effect-application-throws-exception-when-a-comment-is-removed","type":"topic","weight":0.8},{"id":"edge-post-day-17-unicode-decoding-side-effect-application-throws-exception-when-a-comment-is-removed-post-day-18-using-scanner-findall-to-get-all-the-download-links-from-a-json-file-topic","label":"Shared topic","reason":"Both posts are classified under Language \u0026 APIs.","source":"post-day-17-unicode-decoding-side-effect-application-throws-exception-when-a-comment-is-removed","target":"post-day-18-using-scanner-findall-to-get-all-the-download-links-from-a-json-file","type":"topic","weight":0.8},{"id":"edge-post-day-18-using-scanner-findall-to-get-all-the-download-links-from-a-json-file-post-day-19-stream-peek-to-get-debug-information-and-log-it-topic","label":"Shared topic","reason":"Both posts are classified under Language \u0026 APIs.","source":"post-day-18-using-scanner-findall-to-get-all-the-download-links-from-a-json-file","target":"post-day-19-stream-peek-to-get-debug-information-and-log-it","type":"topic","weight":0.8},{"id":"edge-post-day-19-stream-peek-to-get-debug-information-and-log-it-post-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-topic","label":"Shared topic","reason":"Both posts are classified under Language \u0026 APIs.","source":"post-day-19-stream-peek-to-get-debug-information-and-log-it","target":"post-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","type":"topic","weight":0.8},{"id":"edge-post-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-post-day-21-optional-ifpresent-and-optional-filter-to-log-and-filter-the-scheduled-day-according-to-holiday-topic","label":"Shared topic","reason":"Both posts are classified under Language \u0026 APIs.","source":"post-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","target":"post-day-21-optional-ifpresent-and-optional-filter-to-log-and-filter-the-scheduled-day-according-to-holiday","type":"topic","weight":0.8},{"id":"edge-post-day-21-optional-ifpresent-and-optional-filter-to-log-and-filter-the-scheduled-day-according-to-holiday-post-day-22-using-stream-of-streams-and-flatmapping-it-to-concat-multiple-streams-topic","label":"Shared topic","reason":"Both posts are classified under Language \u0026 APIs.","source":"post-day-21-optional-ifpresent-and-optional-filter-to-log-and-filter-the-scheduled-day-according-to-holiday","target":"post-day-22-using-stream-of-streams-and-flatmapping-it-to-concat-multiple-streams","type":"topic","weight":0.8},{"id":"edge-post-day-22-using-stream-of-streams-and-flatmapping-it-to-concat-multiple-streams-post-day-23-temporaladjuster-ofdateadjuster-implementation-and-dayofweek-calculating-the-next-working-day-with-bangla-name-topic","label":"Shared topic","reason":"Both posts are classified under Language \u0026 APIs.","source":"post-day-22-using-stream-of-streams-and-flatmapping-it-to-concat-multiple-streams","target":"post-day-23-temporaladjuster-ofdateadjuster-implementation-and-dayofweek-calculating-the-next-working-day-with-bangla-name","type":"topic","weight":0.8},{"id":"edge-post-day-23-temporaladjuster-ofdateadjuster-implementation-and-dayofweek-calculating-the-next-working-day-with-bangla-name-post-day-24-removing-nulls-from-list-using-collections-singleton-and-objects-isnull-topic","label":"Shared topic","reason":"Both posts are classified under Language \u0026 APIs.","source":"post-day-23-temporaladjuster-ofdateadjuster-implementation-and-dayofweek-calculating-the-next-working-day-with-bangla-name","target":"post-day-24-removing-nulls-from-list-using-collections-singleton-and-objects-isnull","type":"topic","weight":0.8},{"id":"edge-post-day-14-using-stream-parallel-to-add-id-to-file-names-post-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-topic","label":"Shared topic","reason":"Both posts are classified under Concurrency.","source":"post-day-14-using-stream-parallel-to-add-id-to-file-names","target":"post-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","type":"topic","weight":0.8},{"id":"edge-post-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-post-day-26-using-timertask-s-schedule-and-scheduleatfixedrate-to-check-uptime-and-keep-alive-topic","label":"Shared topic","reason":"Both posts are classified under Concurrency.","source":"post-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","target":"post-day-26-using-timertask-s-schedule-and-scheduleatfixedrate-to-check-uptime-and-keep-alive","type":"topic","weight":0.8},{"id":"edge-post-day-24-removing-nulls-from-list-using-collections-singleton-and-objects-isnull-post-day-27-unix-pipe-with-function-composition-topic","label":"Shared topic","reason":"Both posts are classified under Language \u0026 APIs.","source":"post-day-24-removing-nulls-from-list-using-collections-singleton-and-objects-isnull","target":"post-day-27-unix-pipe-with-function-composition","type":"topic","weight":0.8},{"id":"edge-post-day-27-unix-pipe-with-function-composition-post-day-28-arrays-aslist-vs-arraylist-topic","label":"Shared topic","reason":"Both posts are classified under Language \u0026 APIs.","source":"post-day-27-unix-pipe-with-function-composition","target":"post-day-28-arrays-aslist-vs-arraylist","type":"topic","weight":0.8},{"id":"edge-post-day-28-arrays-aslist-vs-arraylist-post-day-30-generator-style-intstream-with-supplier-topic","label":"Shared topic","reason":"Both posts are classified under Language \u0026 APIs.","source":"post-day-28-arrays-aslist-vs-arraylist","target":"post-day-30-generator-style-intstream-with-supplier","type":"topic","weight":0.8},{"id":"edge-post-day-15-batching-files-and-moving-them-using-intstream-post-day-31-deflater-and-inflater-compression-topic","label":"Shared topic","reason":"Both posts are classified under I/O \u0026 Networking.","source":"post-day-15-batching-files-and-moving-them-using-intstream","target":"post-day-31-deflater-and-inflater-compression","type":"topic","weight":0.8},{"id":"edge-post-day-30-generator-style-intstream-with-supplier-post-day-32-objects-equals-to-avoid-nullpointerexception-topic","label":"Shared topic","reason":"Both posts are classified under Language \u0026 APIs.","source":"post-day-30-generator-style-intstream-with-supplier","target":"post-day-32-objects-equals-to-avoid-nullpointerexception","type":"topic","weight":0.8},{"id":"edge-post-day-26-using-timertask-s-schedule-and-scheduleatfixedrate-to-check-uptime-and-keep-alive-post-day-33-completablefuture-httpclient-and-jackson-joke-api-topic","label":"Shared topic","reason":"Both posts are classified under Concurrency.","source":"post-day-26-using-timertask-s-schedule-and-scheduleatfixedrate-to-check-uptime-and-keep-alive","target":"post-day-33-completablefuture-httpclient-and-jackson-joke-api","type":"topic","weight":0.8},{"id":"edge-post-day-7-string-pool-and-intern-post-day-34-runtime-jvm-memory-and-processor-count-topic","label":"Shared topic","reason":"Both posts are classified under JVM \u0026 Performance.","source":"post-day-7-string-pool-and-intern","target":"post-day-34-runtime-jvm-memory-and-processor-count","type":"topic","weight":0.8},{"id":"edge-post-day-32-objects-equals-to-avoid-nullpointerexception-post-day-35-emulating-pair-in-java-using-abstractmapsimpleentry-and-new-object-implementation-topic","label":"Shared topic","reason":"Both posts are classified under Language \u0026 APIs.","source":"post-day-32-objects-equals-to-avoid-nullpointerexception","target":"post-day-35-emulating-pair-in-java-using-abstractmapsimpleentry-and-new-object-implementation","type":"topic","weight":0.8},{"id":"edge-post-day-37-feature-toggle-to-enable-disable-features-for-paid-and-unpaid-user-post-day-38-one-of-the-case-to-use-check-and-unchecked-exceptions-topic","label":"Shared topic","reason":"Both posts are classified under Core Java.","source":"post-day-37-feature-toggle-to-enable-disable-features-for-paid-and-unpaid-user","target":"post-day-38-one-of-the-case-to-use-check-and-unchecked-exceptions","type":"topic","weight":0.8},{"id":"edge-post-day-35-emulating-pair-in-java-using-abstractmapsimpleentry-and-new-object-implementation-post-day-39-local-date-time-to-utc-date-time-and-vice-versa-with-respect-to-timezone-and-day-light-saving-topic","label":"Shared topic","reason":"Both posts are classified under Language \u0026 APIs.","source":"post-day-35-emulating-pair-in-java-using-abstractmapsimpleentry-and-new-object-implementation","target":"post-day-39-local-date-time-to-utc-date-time-and-vice-versa-with-respect-to-timezone-and-day-light-saving","type":"topic","weight":0.8},{"id":"edge-post-day-33-completablefuture-httpclient-and-jackson-joke-api-post-day-40-generator-implementation-using-custom-iterator-and-threads-topic","label":"Shared topic","reason":"Both posts are classified under Concurrency.","source":"post-day-33-completablefuture-httpclient-and-jackson-joke-api","target":"post-day-40-generator-implementation-using-custom-iterator-and-threads","type":"topic","weight":0.8},{"id":"edge-post-day-38-one-of-the-case-to-use-check-and-unchecked-exceptions-post-day-41-generating-unique-id-s-based-on-device-mac-address-and-epoch-time-topic","label":"Shared topic","reason":"Both posts are classified under Core Java.","source":"post-day-38-one-of-the-case-to-use-check-and-unchecked-exceptions","target":"post-day-41-generating-unique-id-s-based-on-device-mac-address-and-epoch-time","type":"topic","weight":0.8},{"id":"edge-post-day-29-parameterizedtest-and-methodsource-post-day-42-using-custom-annotations-and-check-if-its-a-class-level-or-field-level-annotation-topic","label":"Shared topic","reason":"Both posts are classified under Metaprogramming.","source":"post-day-29-parameterizedtest-and-methodsource","target":"post-day-42-using-custom-annotations-and-check-if-its-a-class-level-or-field-level-annotation","type":"topic","weight":0.8},{"id":"edge-post-day-34-runtime-jvm-memory-and-processor-count-post-day-43-learning-about-the-internals-of-jre-jvm-part-1-topic","label":"Shared topic","reason":"Both posts are classified under JVM \u0026 Performance.","source":"post-day-34-runtime-jvm-memory-and-processor-count","target":"post-day-43-learning-about-the-internals-of-jre-jvm-part-1","type":"topic","weight":0.8},{"id":"edge-post-day-43-learning-about-the-internals-of-jre-jvm-part-1-post-day-44-learning-about-the-internals-of-jre-and-jvm-part-2-topic","label":"Shared topic","reason":"Both posts are classified under JVM \u0026 Performance.","source":"post-day-43-learning-about-the-internals-of-jre-jvm-part-1","target":"post-day-44-learning-about-the-internals-of-jre-and-jvm-part-2","type":"topic","weight":0.8},{"id":"edge-post-day-44-learning-about-the-internals-of-jre-and-jvm-part-2-post-day-45-learning-about-the-internals-of-jvm-and-jre-part-3-topic","label":"Shared topic","reason":"Both posts are classified under JVM \u0026 Performance.","source":"post-day-44-learning-about-the-internals-of-jre-and-jvm-part-2","target":"post-day-45-learning-about-the-internals-of-jvm-and-jre-part-3","type":"topic","weight":0.8},{"id":"edge-post-day-41-generating-unique-id-s-based-on-device-mac-address-and-epoch-time-post-day-46-writing-a-generic-objectpool-to-enable-pooling-for-any-type-topic","label":"Shared topic","reason":"Both posts are classified under Core Java.","source":"post-day-41-generating-unique-id-s-based-on-device-mac-address-and-epoch-time","target":"post-day-46-writing-a-generic-objectpool-to-enable-pooling-for-any-type","type":"topic","weight":0.8},{"id":"edge-post-day-40-generator-implementation-using-custom-iterator-and-threads-post-day-47-threadmxbean-to-get-information-about-thread-s-status-deadlock-monitoring-and-cpu-time-that-the-thread-got-etc-topic","label":"Shared topic","reason":"Both posts are classified under Concurrency.","source":"post-day-40-generator-implementation-using-custom-iterator-and-threads","target":"post-day-47-threadmxbean-to-get-information-about-thread-s-status-deadlock-monitoring-and-cpu-time-that-the-thread-got-etc","type":"topic","weight":0.8},{"id":"edge-post-day-31-deflater-and-inflater-compression-post-day-48-a-utility-class-for-zip-and-unzip-files-using-java-zip-api-topic","label":"Shared topic","reason":"Both posts are classified under I/O \u0026 Networking.","source":"post-day-31-deflater-and-inflater-compression","target":"post-day-48-a-utility-class-for-zip-and-unzip-files-using-java-zip-api","type":"topic","weight":0.8},{"id":"edge-post-day-48-a-utility-class-for-zip-and-unzip-files-using-java-zip-api-post-day-49-zip-and-unzip-file-using-java-filesystem-api-topic","label":"Shared topic","reason":"Both posts are classified under I/O \u0026 Networking.","source":"post-day-48-a-utility-class-for-zip-and-unzip-files-using-java-zip-api","target":"post-day-49-zip-and-unzip-file-using-java-filesystem-api","type":"topic","weight":0.8},{"id":"edge-post-day-42-using-custom-annotations-and-check-if-its-a-class-level-or-field-level-annotation-post-day-50-marker-interface-and-it-s-uses-topic","label":"Shared topic","reason":"Both posts are classified under Metaprogramming.","source":"post-day-42-using-custom-annotations-and-check-if-its-a-class-level-or-field-level-annotation","target":"post-day-50-marker-interface-and-it-s-uses","type":"topic","weight":0.8},{"id":"edge-post-day-39-local-date-time-to-utc-date-time-and-vice-versa-with-respect-to-timezone-and-day-light-saving-post-day-51-creating-stream-using-streamsupport-api-from-iterator-and-splitting-by-group-and-partitioning-topic","label":"Shared topic","reason":"Both posts are classified under Language \u0026 APIs.","source":"post-day-39-local-date-time-to-utc-date-time-and-vice-versa-with-respect-to-timezone-and-day-light-saving","target":"post-day-51-creating-stream-using-streamsupport-api-from-iterator-and-splitting-by-group-and-partitioning","type":"topic","weight":0.8},{"id":"edge-post-day-47-threadmxbean-to-get-information-about-thread-s-status-deadlock-monitoring-and-cpu-time-that-the-thread-got-etc-post-day-52-async-processing-httprequest-s-using-executorcompletionservice-topic","label":"Shared topic","reason":"Both posts are classified under Concurrency.","source":"post-day-47-threadmxbean-to-get-information-about-thread-s-status-deadlock-monitoring-and-cpu-time-that-the-thread-got-etc","target":"post-day-52-async-processing-httprequest-s-using-executorcompletionservice","type":"topic","weight":0.8},{"id":"edge-post-day-52-async-processing-httprequest-s-using-executorcompletionservice-post-day-53-processing-http-request-asynchronously-using-completablefuture-topic","label":"Shared topic","reason":"Both posts are classified under Concurrency.","source":"post-day-52-async-processing-httprequest-s-using-executorcompletionservice","target":"post-day-53-processing-http-request-asynchronously-using-completablefuture","type":"topic","weight":0.8},{"id":"edge-post-day-53-processing-http-request-asynchronously-using-completablefuture-post-day-54-understanding-volatile-keyword-s-use-for-multi-threaded-program-topic","label":"Shared topic","reason":"Both posts are classified under Concurrency.","source":"post-day-53-processing-http-request-asynchronously-using-completablefuture","target":"post-day-54-understanding-volatile-keyword-s-use-for-multi-threaded-program","type":"topic","weight":0.8},{"id":"edge-post-day-46-writing-a-generic-objectpool-to-enable-pooling-for-any-type-post-day-55-understanding-static-and-instance-initializer-in-java-classes-and-topic","label":"Shared topic","reason":"Both posts are classified under Core Java.","source":"post-day-46-writing-a-generic-objectpool-to-enable-pooling-for-any-type","target":"post-day-55-understanding-static-and-instance-initializer-in-java-classes-and","type":"topic","weight":0.8},{"id":"edge-post-day-55-understanding-static-and-instance-initializer-in-java-classes-and-post-day-56-zero-length-array-and-its-use-topic","label":"Shared topic","reason":"Both posts are classified under Core Java.","source":"post-day-55-understanding-static-and-instance-initializer-in-java-classes-and","target":"post-day-56-zero-length-array-and-its-use","type":"topic","weight":0.8},{"id":"edge-post-day-51-creating-stream-using-streamsupport-api-from-iterator-and-splitting-by-group-and-partitioning-post-day-57-understand-and-compare-use-case-of-random-threadlocalrandom-and-securerandom-topic","label":"Shared topic","reason":"Both posts are classified under Language \u0026 APIs.","source":"post-day-51-creating-stream-using-streamsupport-api-from-iterator-and-splitting-by-group-and-partitioning","target":"post-day-57-understand-and-compare-use-case-of-random-threadlocalrandom-and-securerandom","type":"topic","weight":0.8},{"id":"edge-post-day-50-marker-interface-and-it-s-uses-post-day-58-mocking-void-methods-using-argumentcapture-and-answering-topic","label":"Shared topic","reason":"Both posts are classified under Metaprogramming.","source":"post-day-50-marker-interface-and-it-s-uses","target":"post-day-58-mocking-void-methods-using-argumentcapture-and-answering","type":"topic","weight":0.8},{"id":"edge-post-day-58-mocking-void-methods-using-argumentcapture-and-answering-post-day-59-understanding-proxy-and-dynamic-proxy-in-java-topic","label":"Shared topic","reason":"Both posts are classified under Metaprogramming.","source":"post-day-58-mocking-void-methods-using-argumentcapture-and-answering","target":"post-day-59-understanding-proxy-and-dynamic-proxy-in-java","type":"topic","weight":0.8},{"id":"edge-post-day-45-learning-about-the-internals-of-jvm-and-jre-part-3-post-day-60-generating-jvm-heap-dump-programmatically-topic","label":"Shared topic","reason":"Both posts are classified under JVM \u0026 Performance.","source":"post-day-45-learning-about-the-internals-of-jvm-and-jre-part-3","target":"post-day-60-generating-jvm-heap-dump-programmatically","type":"topic","weight":0.8},{"id":"edge-post-day-60-generating-jvm-heap-dump-programmatically-post-day-61-understanding-jmx-and-its-architecture-part-1-topic","label":"Shared topic","reason":"Both posts are classified under JVM \u0026 Performance.","source":"post-day-60-generating-jvm-heap-dump-programmatically","target":"post-day-61-understanding-jmx-and-its-architecture-part-1","type":"topic","weight":0.8},{"id":"edge-post-day-61-understanding-jmx-and-its-architecture-part-1-post-day-62-understanding-jmx-and-its-architecture-agent-level-topic","label":"Shared topic","reason":"Both posts are classified under JVM \u0026 Performance.","source":"post-day-61-understanding-jmx-and-its-architecture-part-1","target":"post-day-62-understanding-jmx-and-its-architecture-agent-level","type":"topic","weight":0.8},{"id":"edge-post-day-62-understanding-jmx-and-its-architecture-agent-level-post-day-63-alert-system-for-java-outofmemory-error-topic","label":"Shared topic","reason":"Both posts are classified under JVM \u0026 Performance.","source":"post-day-62-understanding-jmx-and-its-architecture-agent-level","target":"post-day-63-alert-system-for-java-outofmemory-error","type":"topic","weight":0.8},{"id":"edge-post-day-56-zero-length-array-and-its-use-post-day-52-implementing-a-basic-bloom-filter-using-java-bitset-api-topic","label":"Shared topic","reason":"Both posts are classified under Core Java.","source":"post-day-56-zero-length-array-and-its-use","target":"post-day-52-implementing-a-basic-bloom-filter-using-java-bitset-api","type":"topic","weight":0.8},{"id":"edge-post-day-49-zip-and-unzip-file-using-java-filesystem-api-post-day-65-a-tale-of-rmi-and-rpc-in-java-topic","label":"Shared topic","reason":"Both posts are classified under I/O \u0026 Networking.","source":"post-day-49-zip-and-unzip-file-using-java-filesystem-api","target":"post-day-65-a-tale-of-rmi-and-rpc-in-java","type":"topic","weight":0.8},{"id":"edge-post-day-63-alert-system-for-java-outofmemory-error-post-day-65-becoming-a-memory-plumber-a-tale-of-memory-leak-and-how-to-find-them-topic","label":"Shared topic","reason":"Both posts are classified under JVM \u0026 Performance.","source":"post-day-63-alert-system-for-java-outofmemory-error","target":"post-day-65-becoming-a-memory-plumber-a-tale-of-memory-leak-and-how-to-find-them","type":"topic","weight":0.8},{"id":"edge-post-day-65-becoming-a-memory-plumber-a-tale-of-memory-leak-and-how-to-find-them-post-day-67-becoming-a-memory-plumber-a-tale-of-memory-leak-and-how-to-find-them-part-1-topic","label":"Shared topic","reason":"Both posts are classified under JVM \u0026 Performance.","source":"post-day-65-becoming-a-memory-plumber-a-tale-of-memory-leak-and-how-to-find-them","target":"post-day-67-becoming-a-memory-plumber-a-tale-of-memory-leak-and-how-to-find-them-part-1","type":"topic","weight":0.8},{"id":"edge-post-day-67-becoming-a-memory-plumber-a-tale-of-memory-leak-and-how-to-find-them-part-1-post-day-68-becoming-a-memory-plumber-a-tale-of-memory-leak-and-how-to-find-them-part-3-topic","label":"Shared topic","reason":"Both posts are classified under JVM \u0026 Performance.","source":"post-day-67-becoming-a-memory-plumber-a-tale-of-memory-leak-and-how-to-find-them-part-1","target":"post-day-68-becoming-a-memory-plumber-a-tale-of-memory-leak-and-how-to-find-them-part-3","type":"topic","weight":0.8},{"id":"edge-post-day-68-becoming-a-memory-plumber-a-tale-of-memory-leak-and-how-to-find-them-part-3-post-day-69-unlocking-java-performance-secrets-harnessing-the-power-of-jmh-microbenchmarking-topic","label":"Shared topic","reason":"Both posts are classified under JVM \u0026 Performance.","source":"post-day-68-becoming-a-memory-plumber-a-tale-of-memory-leak-and-how-to-find-them-part-3","target":"post-day-69-unlocking-java-performance-secrets-harnessing-the-power-of-jmh-microbenchmarking","type":"topic","weight":0.8},{"id":"edge-post-day-69-unlocking-java-performance-secrets-harnessing-the-power-of-jmh-microbenchmarking-post-day-70-diving-deep-into-array-copy-measuring-array-copy-performance-in-java-with-jmh-a-comparative-analysis-of-methods-topic","label":"Shared topic","reason":"Both posts are classified under JVM \u0026 Performance.","source":"post-day-69-unlocking-java-performance-secrets-harnessing-the-power-of-jmh-microbenchmarking","target":"post-day-70-diving-deep-into-array-copy-measuring-array-copy-performance-in-java-with-jmh-a-comparative-analysis-of-methods","type":"topic","weight":0.8},{"id":"edge-post-day-57-understand-and-compare-use-case-of-random-threadlocalrandom-and-securerandom-post-day-71-what-is-heap-pollution-and-how-does-it-happen-in-java-topic","label":"Shared topic","reason":"Both posts are classified under Language \u0026 APIs.","source":"post-day-57-understand-and-compare-use-case-of-random-threadlocalrandom-and-securerandom","target":"post-day-71-what-is-heap-pollution-and-how-does-it-happen-in-java","type":"topic","weight":0.8},{"id":"edge-post-day-52-implementing-a-basic-bloom-filter-using-java-bitset-api-post-day-72-can-a-hashmap-take-null-or-empty-string-as-a-key-in-java-topic","label":"Shared topic","reason":"Both posts are classified under Core Java.","source":"post-day-52-implementing-a-basic-bloom-filter-using-java-bitset-api","target":"post-day-72-can-a-hashmap-take-null-or-empty-string-as-a-key-in-java","type":"topic","weight":0.8},{"id":"edge-post-day-36-learned-about-banned-dependencies-and-how-to-ban-transitive-dependency-in-a-maven-or-gradle-project-post-day-73-java-security-safeguarding-data-with-encryption-signatures-and-keys-topic","label":"Shared topic","reason":"Both posts are classified under Security \u0026 Crypto.","source":"post-day-36-learned-about-banned-dependencies-and-how-to-ban-transitive-dependency-in-a-maven-or-gradle-project","target":"post-day-73-java-security-safeguarding-data-with-encryption-signatures-and-keys","type":"topic","weight":0.8},{"id":"edge-post-day-73-java-security-safeguarding-data-with-encryption-signatures-and-keys-post-day-74-java-security-crafting-a-toy-tls-server-with-java-security-apis-topic","label":"Shared topic","reason":"Both posts are classified under Security \u0026 Crypto.","source":"post-day-73-java-security-safeguarding-data-with-encryption-signatures-and-keys","target":"post-day-74-java-security-crafting-a-toy-tls-server-with-java-security-apis","type":"topic","weight":0.8},{"id":"edge-post-day-65-a-tale-of-rmi-and-rpc-in-java-post-day-75-java-bufferedreader-do-we-know-why-we-need-to-close-it-topic","label":"Shared topic","reason":"Both posts are classified under I/O \u0026 Networking.","source":"post-day-65-a-tale-of-rmi-and-rpc-in-java","target":"post-day-75-java-bufferedreader-do-we-know-why-we-need-to-close-it","type":"topic","weight":0.8},{"id":"edge-post-day-59-understanding-proxy-and-dynamic-proxy-in-java-post-day-76-implementing-a-dummy-service-oriented-architecture-soa-service-to-understand-java-service-provider-interface-spi-topic","label":"Shared topic","reason":"Both posts are classified under Metaprogramming.","source":"post-day-59-understanding-proxy-and-dynamic-proxy-in-java","target":"post-day-76-implementing-a-dummy-service-oriented-architecture-soa-service-to-understand-java-service-provider-interface-spi","type":"topic","weight":0.8},{"id":"edge-post-day-70-diving-deep-into-array-copy-measuring-array-copy-performance-in-java-with-jmh-a-comparative-analysis-of-methods-post-day-77-explore-something-unsafe-crafting-a-memory-allocator-using-java-unsafe-api-topic","label":"Shared topic","reason":"Both posts are classified under JVM \u0026 Performance.","source":"post-day-70-diving-deep-into-array-copy-measuring-array-copy-performance-in-java-with-jmh-a-comparative-analysis-of-methods","target":"post-day-77-explore-something-unsafe-crafting-a-memory-allocator-using-java-unsafe-api","type":"topic","weight":0.8},{"id":"edge-post-day-77-explore-something-unsafe-crafting-a-memory-allocator-using-java-unsafe-api-post-day-78-memorysegment-api-alterative-approach-to-unsafe-api-java-22-topic","label":"Shared topic","reason":"Both posts are classified under JVM \u0026 Performance.","source":"post-day-77-explore-something-unsafe-crafting-a-memory-allocator-using-java-unsafe-api","target":"post-day-78-memorysegment-api-alterative-approach-to-unsafe-api-java-22","type":"topic","weight":0.8},{"id":"edge-post-day-78-memorysegment-api-alterative-approach-to-unsafe-api-java-22-post-day-79-did-you-know-too-much-print-statement-can-cost-you-money-topic","label":"Shared topic","reason":"Both posts are classified under JVM \u0026 Performance.","source":"post-day-78-memorysegment-api-alterative-approach-to-unsafe-api-java-22","target":"post-day-79-did-you-know-too-much-print-statement-can-cost-you-money","type":"topic","weight":0.8},{"id":"edge-post-day-72-can-a-hashmap-take-null-or-empty-string-as-a-key-in-java-post-day-80-consistent-hashing-in-java-using-treemap-and-hashfunction-topic","label":"Shared topic","reason":"Both posts are classified under Core Java.","source":"post-day-72-can-a-hashmap-take-null-or-empty-string-as-a-key-in-java","target":"post-day-80-consistent-hashing-in-java-using-treemap-and-hashfunction","type":"topic","weight":0.8},{"id":"edge-post-day-71-what-is-heap-pollution-and-how-does-it-happen-in-java-post-day-81-creating-custom-stream-operations--ex--slide-shift-zip-and-fold-using-spliterator-topic","label":"Shared topic","reason":"Both posts are classified under Language \u0026 APIs.","source":"post-day-71-what-is-heap-pollution-and-how-does-it-happen-in-java","target":"post-day-81-creating-custom-stream-operations--ex--slide-shift-zip-and-fold-using-spliterator","type":"topic","weight":0.8},{"id":"edge-post-day-76-implementing-a-dummy-service-oriented-architecture-soa-service-to-understand-java-service-provider-interface-spi-post-day-82-making-a-java-dependency-injection-container-using-reflection-and-custom-annotation-api-topic","label":"Shared topic","reason":"Both posts are classified under Metaprogramming.","source":"post-day-76-implementing-a-dummy-service-oriented-architecture-soa-service-to-understand-java-service-provider-interface-spi","target":"post-day-82-making-a-java-dependency-injection-container-using-reflection-and-custom-annotation-api","type":"topic","weight":0.8},{"id":"edge-post-day-80-consistent-hashing-in-java-using-treemap-and-hashfunction-post-day-83-understanding-shallow-vs-deep-copy-in-java-topic","label":"Shared topic","reason":"Both posts are classified under Core Java.","source":"post-day-80-consistent-hashing-in-java-using-treemap-and-hashfunction","target":"post-day-83-understanding-shallow-vs-deep-copy-in-java","type":"topic","weight":0.8},{"id":"edge-post-day-82-making-a-java-dependency-injection-container-using-reflection-and-custom-annotation-api-post-day-84-crafting-a-simple-hot-swapping-system-for-java-code-change-reload-topic","label":"Shared topic","reason":"Both posts are classified under Metaprogramming.","source":"post-day-82-making-a-java-dependency-injection-container-using-reflection-and-custom-annotation-api","target":"post-day-84-crafting-a-simple-hot-swapping-system-for-java-code-change-reload","type":"topic","weight":0.8},{"id":"edge-post-day-74-java-security-crafting-a-toy-tls-server-with-java-security-apis-post-day-86-building-a-secure-java-sandbox-with-custom-class-loaders-and-security-policies-topic","label":"Shared topic","reason":"Both posts are classified under Security \u0026 Crypto.","source":"post-day-74-java-security-crafting-a-toy-tls-server-with-java-security-apis","target":"post-day-86-building-a-secure-java-sandbox-with-custom-class-loaders-and-security-policies","type":"topic","weight":0.8},{"id":"edge-post-day-81-creating-custom-stream-operations--ex--slide-shift-zip-and-fold-using-spliterator-post-day-87-javas-environment-variable-paradox-easy-to-read-impossible-to-change-topic","label":"Shared topic","reason":"Both posts are classified under Language \u0026 APIs.","source":"post-day-81-creating-custom-stream-operations--ex--slide-shift-zip-and-fold-using-spliterator","target":"post-day-87-javas-environment-variable-paradox-easy-to-read-impossible-to-change","type":"topic","weight":0.8},{"id":"edge-post-day-85-idempotent-apis-java-concepts-implementation-strategies-spring-boot-file-upload-post-day88-topic","label":"Shared topic","reason":"Both posts are classified under AI, Spring \u0026 Cloud.","source":"post-day-85-idempotent-apis-java-concepts-implementation-strategies-spring-boot-file-upload","target":"post-day88","type":"topic","weight":0.8},{"id":"edge-post-day-54-understanding-volatile-keyword-s-use-for-multi-threaded-program-post-day89-topic","label":"Shared topic","reason":"Both posts are classified under Concurrency.","source":"post-day-54-understanding-volatile-keyword-s-use-for-multi-threaded-program","target":"post-day89","type":"topic","weight":0.8},{"id":"edge-post-day-84-crafting-a-simple-hot-swapping-system-for-java-code-change-reload-post-day90-topic","label":"Shared topic","reason":"Both posts are classified under Metaprogramming.","source":"post-day-84-crafting-a-simple-hot-swapping-system-for-java-code-change-reload","target":"post-day90","type":"topic","weight":0.8},{"id":"edge-post-day-75-java-bufferedreader-do-we-know-why-we-need-to-close-it-post-day91-java-memory-mapping-topic","label":"Shared topic","reason":"Both posts are classified under I/O \u0026 Networking.","source":"post-day-75-java-bufferedreader-do-we-know-why-we-need-to-close-it","target":"post-day91-java-memory-mapping","type":"topic","weight":0.8},{"id":"edge-post-day88-post-day-92-building-java-ai-agents-with-spring-ai-my-unicorn-rental-adventure-topic","label":"Shared topic","reason":"Both posts are classified under AI, Spring \u0026 Cloud.","source":"post-day88","target":"post-day-92-building-java-ai-agents-with-spring-ai-my-unicorn-rental-adventure","type":"topic","weight":0.8},{"id":"edge-post-day-86-building-a-secure-java-sandbox-with-custom-class-loaders-and-security-policies-post-day-93-topic","label":"Shared topic","reason":"Both posts are classified under Security \u0026 Crypto.","source":"post-day-86-building-a-secure-java-sandbox-with-custom-class-loaders-and-security-policies","target":"post-day-93","type":"topic","weight":0.8},{"id":"edge-post-day-79-did-you-know-too-much-print-statement-can-cost-you-money-post-day94-topic","label":"Shared topic","reason":"Both posts are classified under JVM \u0026 Performance.","source":"post-day-79-did-you-know-too-much-print-statement-can-cost-you-money","target":"post-day94","type":"topic","weight":0.8},{"id":"edge-post-day89-post-day95-part1-topic","label":"Shared topic","reason":"Both posts are classified under Concurrency.","source":"post-day89","target":"post-day95-part1","type":"topic","weight":0.8},{"id":"edge-post-day95-part1-post-day96-part2-topic","label":"Shared topic","reason":"Both posts are classified under Concurrency.","source":"post-day95-part1","target":"post-day96-part2","type":"topic","weight":0.8},{"id":"edge-post-day96-part2-post-day97-part3-topic","label":"Shared topic","reason":"Both posts are classified under Concurrency.","source":"post-day96-part2","target":"post-day97-part3","type":"topic","weight":0.8},{"id":"edge-post-day97-part3-post-day-98-topic","label":"Shared topic","reason":"Both posts are classified under Concurrency.","source":"post-day97-part3","target":"post-day-98","type":"topic","weight":0.8},{"id":"edge-post-day91-java-memory-mapping-post-day99-topic","label":"Shared topic","reason":"Both posts are classified under I/O \u0026 Networking.","source":"post-day91-java-memory-mapping","target":"post-day99","type":"topic","weight":0.8},{"id":"edge-post-day94-post-day100-capstone-topic","label":"Shared topic","reason":"Both posts are classified under JVM \u0026 Performance.","source":"post-day94","target":"post-day100-capstone","type":"topic","weight":0.8},{"id":"edge-post-day100-capstone-post-day100-spliterator-topic","label":"Shared topic","reason":"Both posts are classified under JVM \u0026 Performance.","source":"post-day100-capstone","target":"post-day100-spliterator","type":"topic","weight":0.8},{"id":"edge-post-day100-capstone-post-day94-reference","label":"References","reason":"The source post links to the target post in Markdown.","source":"post-day100-capstone","target":"post-day94","type":"reference","weight":1},{"id":"edge-post-day100-capstone-post-day-98-reference","label":"References","reason":"The source post links to the target post in Markdown.","source":"post-day100-capstone","target":"post-day-98","type":"reference","weight":1},{"id":"edge-post-day100-capstone-post-day99-reference","label":"References","reason":"The source post links to the target post in Markdown.","source":"post-day100-capstone","target":"post-day99","type":"reference","weight":1},{"id":"edge-post-day100-capstone-post-day-77-explore-something-unsafe-crafting-a-memory-allocator-using-java-unsafe-api-reference","label":"References","reason":"The source post links to the target post in Markdown.","source":"post-day100-capstone","target":"post-day-77-explore-something-unsafe-crafting-a-memory-allocator-using-java-unsafe-api","type":"reference","weight":1},{"id":"edge-post-day100-capstone-post-day91-java-memory-mapping-reference","label":"References","reason":"The source post links to the target post in Markdown.","source":"post-day100-capstone","target":"post-day91-java-memory-mapping","type":"reference","weight":1},{"id":"edge-post-day99-post-day-75-java-bufferedreader-do-we-know-why-we-need-to-close-it-reference","label":"References","reason":"The source post links to the target post in Markdown.","source":"post-day99","target":"post-day-75-java-bufferedreader-do-we-know-why-we-need-to-close-it","type":"reference","weight":1},{"id":"edge-post-day100-spliterator-post-day91-java-memory-mapping-reference","label":"References","reason":"The source post links to the target post in Markdown.","source":"post-day100-spliterator","target":"post-day91-java-memory-mapping","type":"reference","weight":1},{"id":"edge-post-day89-post-day-54-understanding-volatile-keyword-s-use-for-multi-threaded-program-reference","label":"References","reason":"The source post links to the target post in Markdown.","source":"post-day89","target":"post-day-54-understanding-volatile-keyword-s-use-for-multi-threaded-program","type":"reference","weight":1},{"id":"edge-post-day-6-for-vs-foreach-performance-post-day-69-unlocking-java-performance-secrets-harnessing-the-power-of-jmh-microbenchmarking-reference","label":"References","reason":"The source post links to the target post in Markdown.","source":"post-day-6-for-vs-foreach-performance","target":"post-day-69-unlocking-java-performance-secrets-harnessing-the-power-of-jmh-microbenchmarking","type":"reference","weight":1},{"id":"edge-post-day-69-unlocking-java-performance-secrets-harnessing-the-power-of-jmh-microbenchmarking-post-day-6-for-vs-foreach-performance-reference","label":"Benchmark correction","reason":"Day 69 explains JMH, which is the right tool for validating the Day 6 performance question.","source":"post-day-69-unlocking-java-performance-secrets-harnessing-the-power-of-jmh-microbenchmarking","target":"post-day-6-for-vs-foreach-performance","type":"reference","weight":1.4}],"meta":{"edgeCount":202,"generatedAt":"2026-10-23T18:24:50+06:00","nodeCount":101,"topicStats":{"AI, Spring \u0026 Cloud":3,"Concurrency":14,"Core Java":10,"I/O \u0026 Networking":11,"JVM \u0026 Performance":21,"Language \u0026 APIs":28,"Metaprogramming":9,"Security \u0026 Crypto":5},"version":"v1"},"nodes":[{"categories":["Java","100DaysOfJava"],"date":"2021-06-26","day":1,"id":"post-day-1-comparing-checking-equality-against-multiple-strings","importance":2,"summary":"A small Java example for checking whether a string matches one of several allowed values, with notes on List.of, Set.of, Apache Commons Lang, and streams.","title":"Day 1: Checking Whether a String Matches One of Several Values","topic":"Language \u0026 APIs","url":"/posts/java/100daysofjava/day1/"},{"categories":["Java","100DaysOfJava"],"date":"2021-06-27","day":2,"id":"post-day-2-getting-the-last-element-of-a-stream","importance":3,"summary":"Getting the last element of a Stream.","title":"Day 2: Getting the last element of a Stream.","topic":"Language \u0026 APIs","url":"/posts/java/100daysofjava/day2/"},{"categories":["Java","100DaysOfJava"],"date":"2021-06-28","day":3,"id":"post-day-3-using-objects-requirenonnullelse-where-optional-not-being-able-to-be-used","importance":3,"summary":"Using Objects.requireNonNullElse() where Optional not being able to be used.","title":"Day 3: Using Objects.requireNonNullElse() where Optional not being able to be used.","topic":"Language \u0026 APIs","url":"/posts/java/100daysofjava/day3/"},{"categories":["Java","100DaysOfJava"],"date":"2021-06-29","day":4,"id":"post-day-4-try-with-resource-helps-to-close-open-resources-that-uses-close-method-to-close","importance":2,"summary":"try with resource helps to close open resources that uses .close() method to close.","title":"Day 4: try with resource helps to close open resources that uses .close() method to close.","topic":"I/O \u0026 Networking","url":"/posts/java/100daysofjava/day4/"},{"categories":["Java","100DaysOfJava"],"date":"2021-06-30","day":5,"id":"post-day-5-getting-stream-of-char-from-string-chars","importance":3,"summary":"Getting stream of char from string.chars()","title":"Day 5: Getting stream of char from string.chars()","topic":"Language \u0026 APIs","url":"/posts/java/100daysofjava/day5/"},{"categories":["Java","100DaysOfJava"],"date":"2021-07-01","day":6,"id":"post-day-6-for-vs-foreach-performance","importance":3,"summary":"The original quick timing test was a learning snapshot, not evidence that for loops are faster than foreach loops. This update explains the benchmark flaws and points to JMH.","title":"Day 6: For Loop vs Foreach Loop Performance, and Why My First Benchmark Was Misleading","topic":"JVM \u0026 Performance","url":"/posts/java/100daysofjava/day6/"},{"categories":["Java","100DaysOfJava"],"date":"2021-07-02","day":7,"id":"post-day-7-string-pool-and-intern","importance":3,"summary":"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.","title":"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.","topic":"JVM \u0026 Performance","url":"/posts/java/100daysofjava/day7/"},{"categories":["Java","100DaysOfJava"],"date":"2021-07-03","day":8,"id":"post-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","importance":3,"summary":"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.","title":"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.","topic":"Language \u0026 APIs","url":"/posts/java/100daysofjava/day8/"},{"categories":["Java","100DaysOfJava"],"date":"2021-07-05","day":9,"id":"post-day-9-functional-interface","importance":3,"summary":"Functional interface","title":"Day 9: Functional interface","topic":"Language \u0026 APIs","url":"/posts/java/100daysofjava/day9/"},{"categories":["Java","100DaysOfJava"],"date":"2021-07-06","day":10,"id":"post-day-10-function-is-a-functional-interface-that-takes-an-input-and-gives-an-output-so-functions-can-be-chained","importance":3,"summary":"Function is a functional interface that takes an input and gives an output. so functions can be chained.","title":"Day 10: Function is a functional interface that takes an input and gives an output. so functions can be chained.","topic":"Language \u0026 APIs","url":"/posts/java/100daysofjava/day10/"},{"categories":["Java","100DaysOfJava"],"date":"2021-07-09","day":11,"id":"post-day-11-supplier-consumer-functional-interface-and-httpclient-to-get-and-output-bitcoin-info","importance":3,"summary":"Supplier, Consumer functional interface and httpclient to get and output Bitcoin info","title":"Day 11: Supplier, Consumer functional interface and httpclient to get and output Bitcoin info","topic":"I/O \u0026 Networking","url":"/posts/java/100daysofjava/day11/"},{"categories":["Java","100DaysOfJava"],"date":"2021-07-14","day":12,"id":"post-day-12-files-walk-and-functional-interface-to-remove-file-extension-from-filenames","importance":3,"summary":"Files.walk() and functional interface to remove file extension from fileNames","title":"Day 12: Files.walk() and functional interface to remove file extension from fileNames","topic":"I/O \u0026 Networking","url":"/posts/java/100daysofjava/day12/"},{"categories":["Java","100DaysOfJava"],"date":"2021-07-19","day":13,"id":"post-day-13-using-collectors-groupingby-and-collectors-counting-to-get-numbers-of-file-present-of-a-particular-type","importance":3,"summary":"Using Collectors.groupingBy and Collectors.counting to get numbers of file present of a particular type","title":"Day 13: Using Collectors.groupingBy and Collectors.counting to get numbers of file present of a particular type","topic":"Language \u0026 APIs","url":"/posts/java/100daysofjava/day13/"},{"categories":["Java","100DaysOfJava"],"date":"2021-07-23","day":14,"id":"post-day-14-using-stream-parallel-to-add-id-to-file-names","importance":2,"summary":"Using stream parallel to add id to file names.","title":"Day 14: Using stream parallel to add id to file names.","topic":"Concurrency","url":"/posts/java/100daysofjava/day14/"},{"categories":["Java","100DaysOfJava"],"date":"2021-07-27","day":15,"id":"post-day-15-batching-files-and-moving-them-using-intstream","importance":3,"summary":"Batching files and moving them using intStream","title":"Day 15: Batching files and moving them using intStream","topic":"I/O \u0026 Networking","url":"/posts/java/100daysofjava/day15/"},{"categories":["Java","100DaysOfJava"],"date":"2021-08-03","day":16,"id":"post-day-16-two-interface-having-same-signature-default-method-causing-to-override-them","importance":3,"summary":"Two interface having same signature default method causing to override them.","title":"Day 16: Two interface having same signature default method causing to override them.","topic":"Language \u0026 APIs","url":"/posts/java/100daysofjava/day16/"},{"categories":["Java","100DaysOfJava"],"date":"2021-08-06","day":17,"id":"post-day-17-unicode-decoding-side-effect-application-throws-exception-when-a-comment-is-removed","importance":3,"summary":"Unicode decoding side effect. Application throws exception when a comment is removed.","title":"Day 17: Unicode decoding side effect. Application throws exception when a comment is removed.","topic":"Language \u0026 APIs","url":"/posts/java/100daysofjava/day17/"},{"categories":["Java","100DaysOfJava"],"date":"2021-08-13","day":18,"id":"post-day-18-using-scanner-findall-to-get-all-the-download-links-from-a-json-file","importance":3,"summary":"using Scanner.findAll to get all the download links from a json file.","title":"Day 18: using Scanner.findAll to get all the download links from a json file.","topic":"Language \u0026 APIs","url":"/posts/java/100daysofjava/day18/"},{"categories":["Java","100DaysOfJava"],"date":"2021-08-17","day":19,"id":"post-day-19-stream-peek-to-get-debug-information-and-log-it","importance":3,"summary":"Stream.peek to get debug information and log it.","title":"Day 19: Stream.peek to get debug information and log it.","topic":"Language \u0026 APIs","url":"/posts/java/100daysofjava/day19/"},{"categories":["Java","100DaysOfJava"],"date":"2021-08-20","day":20,"id":"post-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","importance":3,"summary":"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":"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()","topic":"Language \u0026 APIs","url":"/posts/java/100daysofjava/day20/"},{"categories":["Java","100DaysOfJava"],"date":"2021-08-31","day":21,"id":"post-day-21-optional-ifpresent-and-optional-filter-to-log-and-filter-the-scheduled-day-according-to-holiday","importance":3,"summary":"Optional.ifPresent and Optional.filter to log and filter the Scheduled Day according to holiday","title":"Day 21: Optional.ifPresent and Optional.filter to log and filter the Scheduled Day according to holiday","topic":"Language \u0026 APIs","url":"/posts/java/100daysofjava/day21/"},{"categories":["Java","100DaysOfJava"],"date":"2021-09-06","day":22,"id":"post-day-22-using-stream-of-streams-and-flatmapping-it-to-concat-multiple-streams","importance":3,"summary":"Using stream of streams and flatmapping it to concat multiple streams","title":"Day 22: Using stream of streams and flatmapping it to concat multiple streams","topic":"Language \u0026 APIs","url":"/posts/java/100daysofjava/day22/"},{"categories":["Java","100DaysOfJava"],"date":"2021-09-08","day":23,"id":"post-day-23-temporaladjuster-ofdateadjuster-implementation-and-dayofweek-calculating-the-next-working-day-with-bangla-name","importance":3,"summary":"TemporalAdjuster ofDateAdjuster implementation and DayOfWeek calculating the next working day with Bangla name.","title":"Day 23: TemporalAdjuster ofDateAdjuster implementation and DayOfWeek calculating the next working day with Bangla name.","topic":"Language \u0026 APIs","url":"/posts/java/100daysofjava/day23/"},{"categories":["Java","100DaysOfJava"],"date":"2021-09-14","day":24,"id":"post-day-24-removing-nulls-from-list-using-collections-singleton-and-objects-isnull","importance":3,"summary":"Removing nulls from list using Collections.singleton and Objects.isNull","title":"Day 24: Removing nulls from list using Collections.singleton and Objects.isNull","topic":"Language \u0026 APIs","url":"/posts/java/100daysofjava/day24/"},{"categories":["Java","100DaysOfJava"],"date":"2021-09-21","day":25,"id":"post-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","importance":3,"summary":"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":"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.","topic":"Concurrency","url":"/posts/java/100daysofjava/day25/"},{"categories":[],"date":"2021-09-30","day":26,"id":"post-day-26-using-timertask-s-schedule-and-scheduleatfixedrate-to-check-uptime-and-keep-alive","importance":3,"summary":"Writing a method to retry another method execution, using TimerTask’s schedule() and scheduleAtFixedRate to check availability","title":"Day 26: Writing a method to retry another method execution","topic":"Concurrency","url":"/posts/java/100daysofjava/day26/"},{"categories":["Java","100DaysOfJava"],"date":"2021-10-14","day":27,"id":"post-day-27-unix-pipe-with-function-composition","importance":3,"summary":"Implementing a Unix pipe-like class in Java with Function composition.","title":"Day 27: Implementing a Unix pipe-like class in Java with Function composition","topic":"Language \u0026 APIs","url":"/posts/java/100daysofjava/day27/"},{"categories":["Java","100DaysOfJava"],"date":"2021-10-22","day":28,"id":"post-day-28-arrays-aslist-vs-arraylist","importance":3,"summary":"Arrays.asList() and new ArrayList\u003c\u003e() both return lists, but they do not behave the same way.","title":"Day 28: Arrays.asList() and new ArrayList\u003c\u003e() are not the same","topic":"Language \u0026 APIs","url":"/posts/java/100daysofjava/day28/"},{"categories":["Java","100DaysOfJava"],"date":"2021-10-28","day":29,"id":"post-day-29-parameterizedtest-and-methodsource","importance":2,"summary":"Using ParameterizedTest and MethodSource to run the same file-presence test with different inputs.","title":"Day 29: ParameterizedTest and MethodSource for repeated test inputs","topic":"Metaprogramming","url":"/posts/java/100daysofjava/day29/"},{"categories":["Java","100DaysOfJava"],"date":"2021-11-04","day":30,"id":"post-day-30-generator-style-intstream-with-supplier","importance":3,"summary":"Exploring a generator-style approach in Java with Supplier and IntStream.generate().","title":"Day 30: Exploring a generator-style approach in Java with Supplier and IntStream","topic":"Language \u0026 APIs","url":"/posts/java/100daysofjava/day30/"},{"categories":["Java","100DaysOfJava"],"date":"2021-11-10","day":31,"id":"post-day-31-deflater-and-inflater-compression","importance":3,"summary":"Compressing and decompressing text with Deflater and Inflater.","title":"Day 31: Compressing and decompressing text with Deflater and Inflater","topic":"I/O \u0026 Networking","url":"/posts/java/100daysofjava/day31/"},{"categories":["Java","100DaysOfJava"],"date":"2021-11-17","day":32,"id":"post-day-32-objects-equals-to-avoid-nullpointerexception","importance":3,"summary":"Using Objects.equals() when one of the values may be null.","title":"Day 32: Using Objects.equals() when values may be null","topic":"Language \u0026 APIs","url":"/posts/java/100daysofjava/day32/"},{"categories":["Java","100DaysOfJava"],"date":"2021-11-25","day":33,"id":"post-day-33-completablefuture-httpclient-and-jackson-joke-api","importance":3,"summary":"Getting a programmer joke asynchronously with CompletableFuture, HttpClient, and Jackson.","title":"Day 33: Getting a programmer joke asynchronously with CompletableFuture, HttpClient, and Jackson","topic":"Concurrency","url":"/posts/java/100daysofjava/day33/"},{"categories":["Java","100DaysOfJava"],"date":"2021-12-01","day":34,"id":"post-day-34-runtime-jvm-memory-and-processor-count","importance":3,"summary":"Inspecting JVM runtime memory and available processor count with Runtime.getRuntime().","title":"Day 34: Inspecting JVM runtime memory and processor count with Runtime","topic":"JVM \u0026 Performance","url":"/posts/java/100daysofjava/day34/"},{"categories":[],"date":"2021-12-06","day":35,"id":"post-day-35-emulating-pair-in-java-using-abstractmapsimpleentry-and-new-object-implementation","importance":3,"summary":"Pair behavior in java","title":"Day 35: Emulating Pair in java using AbstractMap.SimpleEntry\u003c\u003e() and new Object() {} implementation","topic":"Language \u0026 APIs","url":"/posts/java/100daysofjava/day35/"},{"categories":[],"date":"2021-12-14","day":36,"id":"post-day-36-learned-about-banned-dependencies-and-how-to-ban-transitive-dependency-in-a-maven-or-gradle-project","importance":2,"summary":"Many 3rd party libraries can have vulnerable dependency like recently reported Log4j 2. so to ban them from getting resolved in your maven or gradle project you can use maven-enforcer plugin.","title":"Day 36: Learned about banned dependencies and how to ban transitive dependency in a maven or gradle project","topic":"Security \u0026 Crypto","url":"/posts/java/100daysofjava/day36/"},{"categories":[],"date":"2022-01-05","day":37,"id":"post-day-37-feature-toggle-to-enable-disable-features-for-paid-and-unpaid-user","importance":2,"summary":"Feature toggle service to enable disable any feature for paid and unpaid users","title":"Day 37: Feature toggle to enable disable features for paid and unpaid user","topic":"Core Java","url":"/posts/java/100daysofjava/day37/"},{"categories":[],"date":"2022-01-05","day":38,"id":"post-day-38-one-of-the-case-to-use-check-and-unchecked-exceptions","importance":3,"summary":"One of the case where to use checked and another for unchecked exceptions","title":"Day 38: One of the cases to use check and unchecked exceptions","topic":"Core Java","url":"/posts/java/100daysofjava/day38/"},{"categories":[],"date":"2022-01-21","day":39,"id":"post-day-39-local-date-time-to-utc-date-time-and-vice-versa-with-respect-to-timezone-and-day-light-saving","importance":3,"summary":"Converting LocalDateTime to UTC and vice versa with respect to timezone and Day Light saving time.","title":"Day 39: Local date time to UTC date time and vice versa with respect to timezone and Day light saving","topic":"Language \u0026 APIs","url":"/posts/java/100daysofjava/day39/"},{"categories":[],"date":"2022-01-27","day":40,"id":"post-day-40-generator-implementation-using-custom-iterator-and-threads","importance":3,"summary":"A python like generator implementation using custom Iterator, Thread and ThreadGroup","title":"Day 40: Generator implementation using custom Iterator and Threads. ","topic":"Concurrency","url":"/posts/java/100daysofjava/day40/"},{"categories":[],"date":"2022-02-03","day":41,"id":"post-day-41-generating-unique-id-s-based-on-device-mac-address-and-epoch-time","importance":3,"summary":"Generating unique id’s based on device MAC address and epoch time","title":"Day 41: Generating unique id's based on device MAC address and epoch time","topic":"Core Java","url":"/posts/java/100daysofjava/day41/"},{"categories":[],"date":"2022-02-11","day":42,"id":"post-day-42-using-custom-annotations-and-check-if-its-a-class-level-or-field-level-annotation","importance":3,"summary":"implementing custom annotations and check if its a class level or field level annotation.","title":"Day 42: using custom annotations and check if its a class level or field level annotation","topic":"Metaprogramming","url":"/posts/java/100daysofjava/day42/"},{"categories":[],"date":"2022-02-14","day":43,"id":"post-day-43-learning-about-the-internals-of-jre-jvm-part-1","importance":3,"summary":"Understating the internals of jre and jvm how does they work to run a java program","title":"Day 43: learning about the internals of jre, jvm (Part 1)","topic":"JVM \u0026 Performance","url":"/posts/java/100daysofjava/day43/"},{"categories":[],"date":"2022-02-24","day":44,"id":"post-day-44-learning-about-the-internals-of-jre-and-jvm-part-2","importance":3,"summary":"learning about jvm  architecture","title":"Day 44: learning about the internals of JRE and JVM (Part 2)","topic":"JVM \u0026 Performance","url":"/posts/java/100daysofjava/day44/"},{"categories":["100 Days Of Java"],"date":"2022-03-01","day":45,"id":"post-day-45-learning-about-the-internals-of-jvm-and-jre-part-3","importance":3,"summary":"learning what is Runtime and Runtime environment and Java Runtime","title":"Day 45: learning about the internals of JVM and JRE (part 3)","topic":"JVM \u0026 Performance","url":"/posts/java/100daysofjava/day45/"},{"categories":[],"date":"2022-03-16","day":46,"id":"post-day-46-writing-a-generic-objectpool-to-enable-pooling-for-any-type","importance":3,"summary":"Implementing ObjectPool pattern to get any type object pooling","title":"Day 46: Writing a generic and thread safe ObjectPool to enable pooling for any type of class","topic":"Core Java","url":"/posts/java/100daysofjava/day46/"},{"categories":[],"date":"2022-03-28","day":47,"id":"post-day-47-threadmxbean-to-get-information-about-thread-s-status-deadlock-monitoring-and-cpu-time-that-the-thread-got-etc","importance":3,"summary":"Using ThreadMXBean get thread execution and monitoring related information for running threads in jvm","title":"Day 47: ThreadMXBean to get information about thread's status, deadlock monitoring and cpu time that the thread got etc.","topic":"Concurrency","url":"/posts/java/100daysofjava/day47/"},{"categories":[],"date":"2022-04-11","day":48,"id":"post-day-48-a-utility-class-for-zip-and-unzip-files-using-java-zip-api","importance":3,"summary":"A utility class to zip and unzip files and directories","title":"Day 48: A utility class for Zip and Unzip files using java Zip api (Part 1)","topic":"I/O \u0026 Networking","url":"/posts/java/100daysofjava/day48/"},{"categories":[],"date":"2022-05-06","day":49,"id":"post-day-49-zip-and-unzip-file-using-java-filesystem-api","importance":3,"summary":"Zip and Unzip file using Java FileSystem api","title":"Day 49: A utility class for Zip and Unzip files using java FileSystem api (Part 2)","topic":"I/O \u0026 Networking","url":"/posts/java/100daysofjava/day49/"},{"categories":[],"date":"2022-05-21","day":50,"id":"post-day-50-marker-interface-and-it-s-uses","importance":3,"summary":"Marker interface and it’s uses","title":"Day 50: Marker interface and it's uses","topic":"Metaprogramming","url":"/posts/java/100daysofjava/day50/"},{"categories":[],"date":"2022-05-28","day":51,"id":"post-day-51-creating-stream-using-streamsupport-api-from-iterator-and-splitting-by-group-and-partitioning","importance":3,"summary":"Creating Stream using StreamSupport and splitting it using partitioning and grouping","title":"Day 51: Creating Stream (using StreamSupport API)  from Spliterator by converting Iterator to Spliterator","topic":"Language \u0026 APIs","url":"/posts/java/100daysofjava/day51/"},{"categories":[],"date":"2022-07-26","day":52,"id":"post-day-52-async-processing-httprequest-s-using-executorcompletionservice","importance":3,"summary":"Async Processing HttpRequest’s using ExecutorCompletionService","title":"Day 52: Async Processing HttpRequest's using ExecutorCompletionService","topic":"Concurrency","url":"/posts/java/100daysofjava/day52/"},{"categories":[],"date":"2022-08-17","day":53,"id":"post-day-53-processing-http-request-asynchronously-using-completablefuture","importance":3,"summary":"Using CompletableFuture’s execution to process http request asynchronously","title":"Day 53: Processing Http Request Asynchronously using CompletableFutures","topic":"Concurrency","url":"/posts/java/100daysofjava/day53/"},{"categories":[],"date":"2022-09-01","day":54,"id":"post-day-54-understanding-volatile-keyword-s-use-for-multi-threaded-program","importance":3,"summary":"Understanding volatile keyword’s use in incrementing a double variable and see how it behaves in multi threaded env","title":"Day 54: Understanding volatile keyword's use for Multi Threaded program","topic":"Concurrency","url":"/posts/java/100daysofjava/day54/"},{"categories":[],"date":"2022-09-26","day":55,"id":"post-day-55-understanding-static-and-instance-initializer-in-java-classes-and","importance":3,"summary":"Understanding java classe’s static and instance initializer","title":"Day 55: Understanding static and instance initializer in java classes and","topic":"Core Java","url":"/posts/java/100daysofjava/day55/"},{"categories":[],"date":"2022-10-06","day":56,"id":"post-day-56-zero-length-array-and-its-use","importance":3,"summary":"What is zero length Array and why its in java and how its used","title":"Day 56: Zero length Array and Its use ","topic":"Core Java","url":"/posts/java/100daysofjava/day56/"},{"categories":[],"date":"2022-10-13","day":57,"id":"post-day-57-understand-and-compare-use-case-of-random-threadlocalrandom-and-securerandom","importance":3,"summary":"Understanding details and compare use cases  of Random, ThreadLocalRandom and SecureRandom","title":"Day 57: All about Random in Java ( Random, SecureRandom,ThreadLocalRandom and SplittableRandom)","topic":"Language \u0026 APIs","url":"/posts/java/100daysofjava/day57/"},{"categories":[],"date":"2022-10-23","day":58,"id":"post-day-58-mocking-void-methods-using-argumentcapture-and-answering","importance":3,"summary":"Mocking void methods using ArgumentCapture and Answering","title":"Day 58: Mocking void methods using ArgumentCapture and Answering","topic":"Metaprogramming","url":"/posts/java/100daysofjava/day58/"},{"categories":[],"date":"2022-11-04","day":59,"id":"post-day-59-understanding-proxy-and-dynamic-proxy-in-java","importance":3,"summary":"Understanding Proxy and Dynamic Proxy in Java","title":"Day 59: Understanding Proxy and Dynamic Proxy in Java","topic":"Metaprogramming","url":"/posts/java/100daysofjava/day59/"},{"categories":["100DaysOfJava"],"date":"2022-11-11","day":60,"id":"post-day-60-generating-jvm-heap-dump-programmatically","importance":3,"summary":"Generating JVM heap dump using PlatformMBeanServer","title":"Day 60: Generating JVM heap dump programmatically ","topic":"JVM \u0026 Performance","url":"/posts/java/100daysofjava/day60/"},{"categories":[],"date":"2022-11-15","day":61,"id":"post-day-61-understanding-jmx-and-its-architecture-part-1","importance":3,"summary":"Understanding JMX and its architecture","title":"Day 61: Understanding JMX and its architecture (Management Level) ","topic":"JVM \u0026 Performance","url":"/posts/java/100daysofjava/day61/"},{"categories":[],"date":"2022-11-29","day":62,"id":"post-day-62-understanding-jmx-and-its-architecture-agent-level","importance":3,"summary":"Understanding JMX and its architecture","title":"Day 62: Understanding JMX and its architecture ( Agent Level )","topic":"JVM \u0026 Performance","url":"/posts/java/100daysofjava/day62/"},{"categories":[],"date":"2022-12-14","day":63,"id":"post-day-63-alert-system-for-java-outofmemory-error","importance":3,"summary":"Using JMX to write an alert system for Java JVM OutOfMemory Error","title":"Day 63: Alert system for Java OutOfMemory Error ","topic":"JVM \u0026 Performance","url":"/posts/java/100daysofjava/day63/"},{"categories":[],"date":"2022-12-28","day":64,"id":"post-day-52-implementing-a-basic-bloom-filter-using-java-bitset-api","importance":3,"summary":"Implementing a basic bloom filter to understand its concepts and usages using Java BitSet api","title":"Day 64: Implementing a basic Bloom Filter Using Java BitSet api","topic":"Core Java","url":"/posts/java/100daysofjava/day64/"},{"categories":[],"date":"2023-01-12","day":65,"id":"post-day-65-a-tale-of-rmi-and-rpc-in-java","importance":3,"summary":"Understanding how RPC and RMI works in java","title":"Day 65: A tale of RMI (Remote Method Invocation)  in java","topic":"I/O \u0026 Networking","url":"/posts/java/100daysofjava/day65/"},{"categories":[],"date":"2023-01-20","day":66,"id":"post-day-65-becoming-a-memory-plumber-a-tale-of-memory-leak-and-how-to-find-them","importance":3,"summary":"How retained references create Java memory leaks, how heap tools expose them, and how cache bounds prevent one common failure mode.","title":"Finding a Java memory leak with heap dumps and JMX","topic":"JVM \u0026 Performance","url":"/posts/java/100daysofjava/day66/"},{"categories":["100DaysOfJava"],"date":"2023-01-21","day":67,"id":"post-day-67-becoming-a-memory-plumber-a-tale-of-memory-leak-and-how-to-find-them-part-1","importance":3,"summary":"Understanding and finding the causes and types of memory leaks and tools and suggestions to fix them","title":"Day 67: Becoming a memory plumber; A tale of Memory Leak and how to find them ( part 2)","topic":"JVM \u0026 Performance","url":"/posts/java/100daysofjava/day67/"},{"categories":[],"date":"2023-03-30","day":68,"id":"post-day-68-becoming-a-memory-plumber-a-tale-of-memory-leak-and-how-to-find-them-part-3","importance":3,"summary":"Understanding and finding the causes and types of memory leaks and tools and suggestions to fix them","title":"Day 68 : Becoming a memory plumber; A tale of Memory Leak and how to find them ( part 3)","topic":"JVM \u0026 Performance","url":"/posts/java/100daysofjava/day68/"},{"categories":["100DaysOfJava"],"date":"2023-04-05","day":69,"id":"post-day-69-unlocking-java-performance-secrets-harnessing-the-power-of-jmh-microbenchmarking","importance":4,"summary":"Exploring benchmarking harness in Java and how its use to understand performance","title":"Day 69 : Unlocking Java Performance Secrets: Harnessing the Power of JMH Microbenchmarking","topic":"JVM \u0026 Performance","url":"/posts/java/100daysofjava/day69/"},{"categories":[],"date":"2023-04-15","day":70,"id":"post-day-70-diving-deep-into-array-copy-measuring-array-copy-performance-in-java-with-jmh-a-comparative-analysis-of-methods","importance":3,"summary":"Measuring the performance of different array copying methods in Java using JMH","title":"Day 70:Diving deep into Array copy- Measuring Array Copy Performance in Java with JMH: A Comparative Analysis of Methods","topic":"JVM \u0026 Performance","url":"/posts/java/100daysofjava/day70/"},{"categories":[],"date":"2023-06-09","day":71,"id":"post-day-71-what-is-heap-pollution-and-how-does-it-happen-in-java","importance":3,"summary":"Understanding Heap poullion in java and its causes and how to prevent it","title":"Day 71: Understanding Heap poullion in java and its causes and how to prevent it","topic":"Language \u0026 APIs","url":"/posts/posts/java/100daysofjava/day71/"},{"categories":[],"date":"2023-07-26","day":72,"id":"post-day-72-can-a-hashmap-take-null-or-empty-string-as-a-key-in-java","importance":3,"summary":"Can a HashMap Take Null as a Key in Java?","title":"Day 72: Can a HashMap Take Null or Empty String as a Key in Java?","topic":"Core Java","url":"/posts/posts/java/100daysofjava/day72/"},{"categories":[],"date":"2023-09-11","day":73,"id":"post-day-73-java-security-safeguarding-data-with-encryption-signatures-and-keys","importance":3,"summary":"Understanding how Symmetric and Asymmetric encryption works using Java Cryptography Extension","title":"Day 73: Java Security: Safeguarding Data with Encryption and Keys","topic":"Security \u0026 Crypto","url":"/posts/posts/java/100daysofjava/day73/"},{"categories":[],"date":"2023-12-12","day":74,"id":"post-day-74-java-security-crafting-a-toy-tls-server-with-java-security-apis","importance":3,"summary":"Understanding how Symmetric and Asymmetric encryption works using Java Cryptography Extension","title":"Day 74: Java Security: Crafting a toy TLS Server with Java Security API","topic":"Security \u0026 Crypto","url":"/posts/posts/java/100daysofjava/day74/"},{"categories":[],"date":"2024-01-02","day":75,"id":"post-day-75-java-bufferedreader-do-we-know-why-we-need-to-close-it","importance":3,"summary":"Java Buffered Reader and why we need to close and what will happend if we dont","title":"Day 75: Java BufferedReader: Do We Know Why We Need To Close It?","topic":"I/O \u0026 Networking","url":"/posts/posts/java/100daysofjava/day75/"},{"categories":[],"date":"2024-01-26","day":76,"id":"post-day-76-implementing-a-dummy-service-oriented-architecture-soa-service-to-understand-java-service-provider-interface-spi","importance":3,"summary":"Implementing a dummy Service Oriented Architecture (SOA) service to Understand Java Service Provider Interface (SPI)","title":"Day 76: Implementing a dummy Service Oriented Architecture (SOA) service to Understand Java Service Provider Interface (SPI)","topic":"Metaprogramming","url":"/posts/posts/java/100daysofjava/day76/"},{"categories":[],"date":"2024-03-14","day":77,"id":"post-day-77-explore-something-unsafe-crafting-a-memory-allocator-using-java-unsafe-api","importance":3,"summary":"Explore Something Unsafe : Crafting a Memory allocator using Java Unsafe API","title":"Day 77: Explore Something Unsafe : Crafting a Memory allocator using Java Unsafe API","topic":"JVM \u0026 Performance","url":"/posts/posts/java/100daysofjava/day77/"},{"categories":[],"date":"2024-04-18","day":78,"id":"post-day-78-memorysegment-api-alterative-approach-to-unsafe-api-java-22","importance":3,"summary":"Day 78: Java 22 - Embracing Safe Memory Allocation Using FFM API - An alternative to Unsafe API","title":"Day 78: Java 22 - Embracing Safe Memory Allocation Using FFM API - An alternative to Unsafe API","topic":"JVM \u0026 Performance","url":"/posts/posts/java/100daysofjava/day78/"},{"categories":[],"date":"2024-05-03","day":79,"id":"post-day-79-did-you-know-too-much-print-statement-can-cost-you-money","importance":3,"summary":"Day 79: Like Python In java printing takes too much processing time which costs money","title":"Day 79: Did you know that too much print statement can cost you money","topic":"JVM \u0026 Performance","url":"/posts/posts/java/100daysofjava/day79/"},{"categories":[],"date":"2024-05-23","day":80,"id":"post-day-80-consistent-hashing-in-java-using-treemap-and-hashfunction","importance":3,"summary":"Implementing a Dummy Consistent Hashing in Java using TreeMap and Hash Function","title":"Day 80: From Concept to Code: Implementing a Dummy Consistent Hashing in Java using TreeMap","topic":"Core Java","url":"/posts/posts/java/100daysofjava/day80/"},{"categories":[],"date":"2024-07-04","day":81,"id":"post-day-81-creating-custom-stream-operations--ex--slide-shift-zip-and-fold-using-spliterator","importance":3,"summary":"Implementing Sliding, shifting, Zipping and Folding a Stream by creating it from a custom spliterator","title":"Day 81: Creating custom stream operations ex: Slide, Shift, Zip and Fold using Spliterator","topic":"Language \u0026 APIs","url":"/posts/posts/java/100daysofjava/day81/"},{"categories":[],"date":"2024-08-17","day":82,"id":"post-day-82-making-a-java-dependency-injection-container-using-reflection-and-custom-annotation-api","importance":3,"summary":"making a minimal spring like java dependency injection container using java reflection and annotation api","title":"Day 82: Reflection in Java: Building a Simple DI Container in 100 Lines of Code","topic":"Metaprogramming","url":"/posts/posts/java/100daysofjava/day82/"},{"categories":[],"date":"2024-09-14","day":83,"id":"post-day-83-understanding-shallow-vs-deep-copy-in-java","importance":2,"summary":"Exploring shallow and deep copying of object in java","title":"Day 83: Java Object Cloning: Exploring Shallow and Deep Copy Techniques","topic":"Core Java","url":"/posts/posts/java/100daysofjava/day83/"},{"categories":[],"date":"2024-10-04","day":84,"id":"post-day-84-crafting-a-simple-hot-swapping-system-for-java-code-change-reload","importance":3,"summary":"Implementing a hot class reload system (HMR for js) using WatchService and javax.tools api","title":"Day 84: Hot Class Reload in Java – A Webpack HMR-like Experience for Java Developers","topic":"Metaprogramming","url":"/posts/posts/java/100daysofjava/day84/"},{"categories":[],"date":"2025-01-02","day":85,"id":"post-day-85-idempotent-apis-java-concepts-implementation-strategies-spring-boot-file-upload","importance":2,"summary":"Idempotent APIs in Java: Concepts, Implementation Strategies, and a Spring Boot File Upload Implementation","title":"Day 85: Idempotent APIs in Java: Concepts, Implementation Strategies, and a Spring Boot File Upload Implementation","topic":"AI, Spring \u0026 Cloud","url":"/posts/posts/java/100daysofjava/day85/"},{"categories":[],"date":"2025-03-12","day":86,"id":"post-day-86-building-a-secure-java-sandbox-with-custom-class-loaders-and-security-policies","importance":3,"summary":"Implementing a sandbox application that can take JAR or java file and run it securely","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","topic":"Security \u0026 Crypto","url":"/posts/posts/java/100daysofjava/day86/"},{"categories":[],"date":"2025-03-26","day":87,"id":"post-day-87-javas-environment-variable-paradox-easy-to-read-impossible-to-change","importance":2,"summary":"Exploring how to read and delete environment variables in Java with practical examples","title":"Day 87: Java's Environment Variable Paradox: Easy to Read, Impossible to Change?","topic":"Language \u0026 APIs","url":"/posts/posts/java/100daysofjava/day87/"},{"categories":["Java","Spring Boot","AI","Google Cloud"],"date":"2025-04-29","day":88,"id":"post-day88","importance":3,"summary":"Architecture and implementation notes for multilingual audio transcription with Spring Boot, Google Cloud Storage, Vertex AI, confidence signals, and batch processing.","title":"Building production audio transcription with Gemini 1.5 and Spring Boot","topic":"AI, Spring \u0026 Cloud","url":"/posts/posts/java/100daysofjava/day88/"},{"categories":["Java","100DaysOfJava"],"date":"2025-06-26","day":89,"id":"post-day89","importance":3,"summary":"That perfect Singleton you wrote? It’s probably creating multiple instances in production—here’s why it happens and five bulletproof ways to fix it.","title":"Day 89: When Your Singleton Isn't Really a Singleton (And How to Fix It)","topic":"Concurrency","url":"/posts/posts/java/100daysofjava/day89/"},{"categories":["Java","100DaysOfJava"],"date":"2025-07-18","day":90,"id":"post-day90","importance":2,"summary":"The Spy Inside Your JVM - Creating Java Agents That Monitor your apps","title":"Day 90: How I Built a Secret Agent That Infiltrates Any Java Application","topic":"Metaprogramming","url":"/posts/posts/java/100daysofjava/day90/"},{"categories":["Java","100DaysOfJava"],"date":"2025-08-15","day":91,"id":"post-day91-java-memory-mapping","importance":4,"summary":"Processing giant files - Memory mapping Very Large Files in Java Without Breaking a Sweat","title":"Day 91: The Art of Reading Massive Files Without Breaking a Sweat - Memory Mapping in Java 21","topic":"I/O \u0026 Networking","url":"/posts/posts/java/100daysofjava/day91/"},{"categories":["Java","100DaysOfJava"],"date":"2025-09-10","day":92,"id":"post-day-92-building-java-ai-agents-with-spring-ai-my-unicorn-rental-adventure","importance":2,"summary":"Building Production-Ready AI Agents with Spring AI - From Chat Interfaces to Sophisticated RAG Systems","title":"Day 92: Building AI Agents with Java 21 and Spring AI - My Learning from the Workshop","topic":"AI, Spring \u0026 Cloud","url":"/posts/posts/java/100daysofjava/day92/"},{"categories":["Java","Security","Annotations"],"date":"2025-10-07","day":93,"id":"post-day-93","importance":2,"summary":"Learn how to create a custom @Sensitive annotation with annotation processing to automatically mask passwords and secrets in your Java applications","title":"Day 93: Stop Leaking Passwords - Building Java's Answer to PHP's #[SensitiveParameter]","topic":"Security \u0026 Crypto","url":"/posts/java/100daysofjava/day93/"},{"categories":["Java","100DaysOfJava","Perf","JVM","Optimization"],"date":"2025-10-30","day":94,"id":"post-day94","importance":3,"summary":"Your Java app takes so much time to start. You’ve tried everything, or have you? Here’s how I cut startup time using techniques you probably haven’t tried yet.","title":"Day 94: Nobody Told Me Java Application Could Start This Fast and The Rabbit hole I explored","topic":"JVM \u0026 Performance","url":"/posts/posts/java/100daysofjava/day94/"},{"categories":["Java","100DaysOfJava"],"date":"2025-11-21","day":95,"id":"post-day95-part1","importance":3,"summary":"Part 1: Foundation \u0026 Execution - Deep dive into 6 essential concurrency tools with real-world patterns, performance characteristics, and common pitfalls","title":"Day 95: Java Concurrency Toolkit Part 1 - Foundation \u0026 Execution Patterns","topic":"Concurrency","url":"/posts/posts/java/100daysofjava/day95/"},{"categories":["Java","100DaysOfJava"],"date":"2025-12-10","day":96,"id":"post-day96-part2","importance":3,"summary":"Part 2: Core Synchronization Patterns - Deep dive into 4 essential coordination tools with real-world patterns, performance characteristics, and common pitfalls","title":"Day 96: Java Concurrency Toolkit Part 2 - Core Synchronization Patterns","topic":"Concurrency","url":"/posts/posts/java/100daysofjava/day96/"},{"categories":["Java","100DaysOfJava"],"date":"2025-12-22","day":97,"id":"post-day97-part3","importance":3,"summary":"Part 3: Advanced Patterns \u0026 Production Readiness - Deep dive into 3 advanced tools plus debugging, monitoring, and going to production","title":"Day 97: Java Concurrency Toolkit Part 3 - Advanced Patterns \u0026 Production Readiness","topic":"Concurrency","url":"/posts/posts/java/100daysofjava/day97/"},{"categories":["Java","100DaysOfJava"],"date":"2025-12-23","day":98,"id":"post-day-98","importance":3,"summary":"I thought virtual threads were just green threads—turns out they’re continuations on the heap with sophisticated scheduling. Here’s what I got wrong and what actually happens under the hood.","title":"Day 98: I Thought Virtual Threads Were Just Green Threads They're Actually Continuations on the Heap","topic":"Concurrency","url":"/posts/posts/java/100daysofjava/day98/"},{"categories":["Java","100DaysOfJava"],"date":"2026-02-13","day":99,"id":"post-day99","importance":3,"summary":"A measured comparison of virtual threads and event loops, with a public benchmark suite and guidance for testing each model against a real workload.","title":"Virtual threads and event loops solve different problems","topic":"I/O \u0026 Networking","url":"/posts/posts/java/100daysofjava/day99/"},{"categories":["Java","100DaysOfJava"],"date":"2026-03-30","day":100,"id":"post-day100-capstone","importance":5,"summary":"This challenge started as a way to learn more Java. Over time, it became a way to follow confusion down to memory, coordination, performance, and failure modes.","title":"What 100DaysOfJava changed in how I investigate systems","topic":"JVM \u0026 Performance","url":"/posts/posts/java/100daysofjava/day100-capstone.md/"},{"categories":["Java","100DaysOfJava"],"date":"2025-12-24","day":100,"id":"post-day100-spliterator","importance":2,"summary":"Why one parallel file-processing run left CPU cores idle, how a fixed-batch Spliterator changed the result, and why the finding is tied to its runtime and workload.","title":"Why parallel file processing left CPU cores idle","topic":"JVM \u0026 Performance","url":"/posts/posts/java/100daysofjava/day100-spliterator/"}]}