Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
877b66c
Not updated section. Update you and contribute to this section.
Someshdiwan Sep 25, 2025
b611e53
Not updated section. Update you and contribute to this section.
Someshdiwan Sep 25, 2025
a94a6a5
Updated Readme
Someshdiwan Sep 28, 2025
e3ee9b1
README.md
Someshdiwan Sep 28, 2025
bc2b4d8
feat: Add ArrayListDemo7 to explore constructors
Someshdiwan Sep 29, 2025
75149b0
feat: Added How Java Works
Someshdiwan Sep 30, 2025
d68186c
docs(core-concepts): add overview of Streams, Collections Framework, …
Someshdiwan Sep 30, 2025
cc58f23
"chore: add robust .gitattributes + .editorconfig (cross-platform)".
Someshdiwan Sep 30, 2025
96b5b4b
docs(paradigms): add detailed explanation of Declarative Programming …
Someshdiwan Sep 30, 2025
3d35915
docs(streams): add detailed explanation of Primitive Streams (IntStre…
Someshdiwan Sep 30, 2025
9a2f1a3
How Data Is Stored Internally In HashMap
Someshdiwan Sep 30, 2025
33f9f6e
feat: Difference Between this and super in
Someshdiwan Sep 30, 2025
2d5f57b
Explain use of this keyword.txt
Someshdiwan Sep 30, 2025
20f574e
Difference Between This and Super in Java.md
Someshdiwan Sep 30, 2025
9aceaeb
Real-World Analogy for this vs super.md
Someshdiwan Sep 30, 2025
b1792e1
Disadvantages of Synchronized in Java
Someshdiwan Sep 30, 2025
ddd2e38
Understanding Executors Cached Thread Pool.txt
Someshdiwan Sep 30, 2025
32b0e8f
Thread Pooling
Someshdiwan Sep 30, 2025
a8f3c86
Differences Between TreeMap and HashMap Detailed.txt
Someshdiwan Sep 30, 2025
50363c8
TreeMap Insertion Red-Black Balancing.txt
Someshdiwan Sep 30, 2025
995b1b4
Red Black Balancing Tree
Someshdiwan Sep 30, 2025
e04b16f
Plain BST vs Tree Map.md
Someshdiwan Sep 30, 2025
5953fb6
This vs Super
Someshdiwan Sep 30, 2025
5f1a83c
feat: Updated normalize text files and keep
Someshdiwan Sep 30, 2025
ce3d26f
feat: Updated workflow
Someshdiwan Sep 30, 2025
d3d2e7a
feat: testing workflows
Someshdiwan Sep 30, 2025
ff13d41
feat: testing workflows for telegram-notify.yml
Someshdiwan Sep 30, 2025
ecea250
feat: testing workflows for telegram-notify.yml
Someshdiwan Sep 30, 2025
e26cc83
feat: testing workflows for telegram
Someshdiwan Sep 30, 2025
d424ae5
feat: testing workflows for telegram commits
Someshdiwan Sep 30, 2025
5df32ac
feat: testing workflows for telegram commits
Someshdiwan Sep 30, 2025
0723b92
feat: testing workflows for telegram notify
Someshdiwan Sep 30, 2025
040939c
feat: testing workflows for telegram commits
Someshdiwan Sep 30, 2025
3b9202e
feat: testing workflows for telegram commits
Someshdiwan Sep 30, 2025
f749951
feat: testing workflows
Someshdiwan Sep 30, 2025
47aa4ad
feat: testing workflows
Someshdiwan Sep 30, 2025
f476e32
feat: testing workflows for telegram commits
Someshdiwan Sep 30, 2025
3cdfc2a
feat: testing workflows for telegram commits
Someshdiwan Sep 30, 2025
f9e059d
feat: testing workflows for telegram commits
Someshdiwan Sep 30, 2025
bf02025
feat: testing workflows for telegram commits
Someshdiwan Sep 30, 2025
b05100a
feat: testing workflows for telegram commits
Someshdiwan Sep 30, 2025
d3d274f
feat: testing workflows for telegram commits
Someshdiwan Sep 30, 2025
fa931e7
feat: testing workflows for telegram commits
Someshdiwan Sep 30, 2025
ae938a3
feat: testing workflows for telegram commits
Someshdiwan Sep 30, 2025
124732d
feat: testing workflows for telegram commits
Someshdiwan Sep 30, 2025
b89a514
feat: Done
Someshdiwan Sep 30, 2025
03302b0
feat: Done
Someshdiwan Sep 30, 2025
2491ece
feat: Done
Someshdiwan Sep 30, 2025
880d08b
feat: Updated Done Final
Someshdiwan Sep 30, 2025
6bf4c40
feat: Updated Done Final
Someshdiwan Sep 30, 2025
6d0234c
feat: Updated Animation
Someshdiwan Sep 30, 2025
0c45bf2
feat: Updated Animation File
Someshdiwan Sep 30, 2025
2f32c32
feat: Updated Animation File
Someshdiwan Sep 30, 2025
9d92dc8
Update Telegram updates
Someshdiwan Sep 30, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 65 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# Top-level EditorConfig
root = true

# ----------------------------------------------------------------------
# Defaults for all files
# ----------------------------------------------------------------------
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true

# Keep Markdown trailing spaces (they may mean line breaks)
[*.md]
trim_trailing_whitespace = false

# Java / Kotlin / Gradle (4 spaces)
[*.{java,kt,gradle}]
indent_style = space
indent_size = 4

# Python (4 spaces)
[*.py]
indent_style = space
indent_size = 4

# JavaScript / TypeScript / JSX / TSX (2 spaces)
[*.{js,jsx,ts,tsx}]
indent_style = space
indent_size = 2

# JSON (2 spaces)
[*.json]
indent_style = space
indent_size = 2

# YAML (2 spaces)
[*.{yml,yaml}]
indent_style = space
indent_size = 2

# XML (2 spaces)
[*.xml]
indent_style = space
indent_size = 2

# Shell scripts (2 spaces)
[*.{sh,bash}]
indent_style = space
indent_size = 2

# Windows scripts
[*.{cmd,bat,ps1}]
indent_style = space
indent_size = 2

# Properties files (2 spaces; avoid tabs)
[*.properties]
indent_style = space
indent_size = 2

# Makefiles must use tabs
[Makefile]
indent_style = tab
tab_width = 4
136 changes: 136 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
# ------------------------------------------------------------------------------
# Core: normalize text files and keep LF in repo
# ------------------------------------------------------------------------------
* text=auto eol=lf

# ------------------------------------------------------------------------------
# Source code (force LF)
# ------------------------------------------------------------------------------
*.java text eol=lf
*.kt text eol=lf
*.py text eol=lf
*.js text eol=lf
*.jsx text eol=lf
*.ts text eol=lf
*.tsx text eol=lf
*.html text eol=lf
*.css text eol=lf
*.scss text eol=lf
*.md text eol=lf
*.txt text eol=lf
*.xml text eol=lf
*.json text eol=lf
*.yml text eol=lf
*.yaml text eol=lf
*.sh text eol=lf
*.bash text eol=lf
*.gradle text eol=lf
*.properties text eol=lf
*.sql text eol=lf
*.c text eol=lf
*.cpp text eol=lf
*.h text eol=lf

# ------------------------------------------------------------------------------
# Binary files (never touch line endings / no diffs)
# ------------------------------------------------------------------------------
*.png binary
*.jpg binary
*.jpeg binary
*.gif binary
*.ico binary
*.svg binary
*.webp binary
*.pdf binary
*.jar binary
*.war binary
*.class binary
*.dll binary
*.exe binary
*.so binary
*.dylib binary
*.db binary
*.sqlite binary
*.zip binary
*.tar binary
*.tar.gz binary
*.tgz binary
*.7z binary
*.gz binary
*.xz binary
*.bz2 binary

# ------------------------------------------------------------------------------
# Diff & merge hygiene
# ------------------------------------------------------------------------------
# Treat as text (better diffs)
*.md text
*.json text
*.xml text
*.yml text
*.yaml text
*.sql text

# Lockfiles rarely need diffs
package-lock.json -diff
yarn.lock -diff
pnpm-lock.yaml -diff
*.lock -diff

# Force binary merges
*.jar merge=binary
*.class merge=binary
*.dll merge=binary
*.exe merge=binary
*.so merge=binary
*.dylib merge=binary
*.db merge=binary
*.sqlite merge=binary
*.pdf merge=binary
*.png merge=binary
*.jpg merge=binary
*.jpeg merge=binary
*.gif merge=binary
*.ico merge=binary
*.svg merge=binary
*.webp merge=binary
*.zip merge=binary
*.tar merge=binary
*.tar.gz merge=binary
*.tgz merge=binary
*.7z merge=binary
*.gz merge=binary
*.xz merge=binary
*.bz2 merge=binary

# Lock files: prefer ours
*.lock merge=ours

# ------------------------------------------------------------------------------
# GitHub Linguist overrides (make languages visible in stats)
# ------------------------------------------------------------------------------
*.yml linguist-detectable=true
*.yaml linguist-detectable=true
*.xml linguist-detectable=true
*.json linguist-detectable=true
*.md linguist-detectable=true
*.sql linguist-detectable=true
*.md linguist-detectable=true linguist-language=Markdown
*.txt linguist-detectable=true

# Force correct language classification
*.xml linguist-language=XML
*.json linguist-language=JSON
*.yml linguist-language=YAML
*.yaml linguist-language=YAML
*.sql linguist-language=SQL
*.md linguist-detectable=true linguist-language=Markdown
*.txt linguist-detectable=true

# ------------------------------------------------------------------------------
# Export settings (exclude from `git archive`)
# ------------------------------------------------------------------------------
.gitattributes export-ignore
.gitignore export-ignore
.github/ export-ignore
tools/ export-ignore
3 changes: 3 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Require Someshdiwan to approve any changes to workflow files
/.github/workflows/ @Someshdiwan
/.github/workflows/** @Someshdiwan
93 changes: 44 additions & 49 deletions .github/workflows/jekyll-gh-pages.yml
Original file line number Diff line number Diff line change
@@ -1,106 +1,97 @@
name: "Deploy Jekyll with GitHub Pages (robust)"
# .github/workflows/jekyll-pages.yml
name: Deploy Jekyll with GitHub Pages (robust)

on:
push:
branches:
- main
- master
branches: [ main, master ]
workflow_dispatch: {}
schedule:
# Run daily at 3:00 AM IST (21:30 UTC previous day)
- cron: '30 21 * * *'
# Daily at 3:00 AM IST (21:30 UTC previous day)
- cron: "30 21 * * *"

# Least privilege for Pages
permissions:
contents: read
pages: write
id-token: write

# Prevent overlapping deploys per ref
concurrency:
group: "pages-${{ github.ref }}"
group: pages-${{ github.ref }}
cancel-in-progress: false

jobs:
build:
# 🚫 Never run from forks / external PRs
if: >
github.repository == 'Someshdiwan/JavaEvolution-Learning-Growing-Mastering' &&
(github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false)
name: Build site (Jekyll)
runs-on: ubuntu-latest
timeout-minutes: 30

steps:
- name: Checkout repository
- name: Checkout
uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 0

- name: Setup Pages (configure Pages environment)
- name: Configure Pages
uses: actions/configure-pages@v5

- name: Detect Gemfile location
id: detect_gemfile
id: detect
shell: bash
run: |
if [ -f "site/Gemfile" ]; then
echo "gem_dir=site" >> $GITHUB_OUTPUT
echo "gem_dir=site" >> "$GITHUB_OUTPUT"
echo "Found Gemfile in site/"
elif [ -f "Gemfile" ]; then
echo "gem_dir=." >> $GITHUB_OUTPUT
echo "gem_dir=." >> "$GITHUB_OUTPUT"
echo "Found Gemfile in repo root"
else
echo "gem_dir=NONE" >> $GITHUB_OUTPUT
echo "No Gemfile found in site/ or repo root — will use Jekyll builder action fallback."
echo "gem_dir=NONE" >> "$GITHUB_OUTPUT"
echo "No Gemfile found; will use jekyll-build-pages fallback."
fi

# If Gemfile exists, set up Ruby + Bundler and build with bundle exec
- name: Set up Ruby (only when Gemfile present)
if: ${{ steps.detect_gemfile.outputs.gem_dir != 'NONE' }}
# Fast path: use the repo's Gemfile (caches automatically)
- name: Setup Ruby (bundler cache)
if: ${{ steps.detect.outputs.gem_dir != 'NONE' }}
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.2'
bundler-cache: false

- name: Cache bundler gems (only when Gemfile present)
if: ${{ steps.detect_gemfile.outputs.gem_dir != 'NONE' }}
uses: actions/cache@v4
id: cache-bundler
with:
path: vendor/bundle
key: ${{ runner.os }}-gems-${{ steps.detect_gemfile.outputs.gem_dir }}-${{ hashFiles(format('{0}/Gemfile.lock', steps.detect_gemfile.outputs.gem_dir)) }}
restore-keys: |
${{ runner.os }}-gems-${{ steps.detect_gemfile.outputs.gem_dir }}-

- name: Install Ruby gems with Bundler (only when Gemfile present)
if: ${{ steps.detect_gemfile.outputs.gem_dir != 'NONE' }}
run: |
echo "Using Gemfile from: ${{ steps.detect_gemfile.outputs.gem_dir }}"
cd ${{ steps.detect_gemfile.outputs.gem_dir }}
bundle config set --local path 'vendor/bundle'
# retry logic to cope with transient network errors
bundle install --jobs 4 --retry 3
shell: bash
bundler-cache: true
# cache & install are scoped to where the Gemfile lives
working-directory: ${{ steps.detect.outputs.gem_dir }}

- name: Build site with Bundler (only when Gemfile present)
if: ${{ steps.detect_gemfile.outputs.gem_dir != 'NONE' }}
run: |
cd ${{ steps.detect_gemfile.outputs.gem_dir }}
echo "Building Jekyll with bundle exec..."
bundle exec jekyll build --source . --destination ../_site
- name: Build with bundle exec
if: ${{ steps.detect.outputs.gem_dir != 'NONE' }}
working-directory: ${{ steps.detect.outputs.gem_dir }}
env:
JEKYLL_ENV: production
shell: bash
run: |
echo "Building Jekyll from $(pwd)…"
bundle exec jekyll build --source . --destination "${GITHUB_WORKSPACE}/_site"

# Fallback: if there's no Gemfile, use the jekyll-build-pages action (best-effort)
# Fallback: no Gemfile; use the official builder (looks in ./site by default)
- name: Build with actions/jekyll-build-pages (fallback)
if: ${{ steps.detect_gemfile.outputs.gem_dir == 'NONE' }}
if: ${{ steps.detect.outputs.gem_dir == 'NONE' }}
uses: actions/jekyll-build-pages@v1
with:
source: ./site
destination: ./_site

- name: Validate _site exists
shell: bash
run: |
if [ ! -d "_site" ]; then
echo "_site wasn't generated — failing the job."
echo "::error::_site was not generated."
ls -la
exit 1
fi
echo "✅ _site generated."

- name: Upload Pages artifact
uses: actions/upload-pages-artifact@v3
Expand All @@ -109,17 +100,21 @@ jobs:
name: java-evolution-pages

deploy:
# 🚫 Never run from forks / external PRs
if: >
github.repository == 'Someshdiwan/JavaEvolution-Learning-Growing-Mastering' &&
(github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false)
name: Deploy to GitHub Pages
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
steps:
- name: Deploy to GitHub Pages
- name: Deploy
id: deployment
uses: actions/deploy-pages@v4
with:
artifact_name: java-evolution-pages

- name: Output deploy URL
- name: Show URL
run: echo "Deployed to ${{ steps.deployment.outputs.page_url }}"
Loading