No description
  • Dockerfile 100%
Find a file
gerasimenkov.g 2307ffa962
All checks were successful
CI / deploy (push) Successful in 2m8s
docs(concurrency): write Java Concurrency section from JLS/JVMS specs
Add comprehensive deep-dive articles for the entire concurrency section:
- synchronized: JLS 17.1 monitors, JVMS monitorenter/monitorexit, ObjectMonitor
- volatile: JMM, memory barriers, StoreLoad fence
- happens-before: 8 JMM rules, reordering, data race
- lifecycle: Thread.State, jstack diagnostics
- locks: AQS, ReentrantLock, Condition, StampedLock
- atomic: CAS, ABA, LongAdder striping, VarHandle
- collections: ConcurrentHashMap Java 8+, BlockingQueue
- thread-pools: ThreadPoolExecutor, rejection policies
- future: CompletableFuture internals
- fork-join: work-stealing algorithm
- problems: deadlock, livelock, race condition, starvation
- virtual-threads: JEP 444, pinning, structured concurrency

All sources are JLS, JVMS, JEP, OpenJDK source, javadoc.
No blog rehashes.
2026-05-29 16:31:03 +03:00
.forgejo Fixed grep exit code in image cleanup step 2026-04-15 17:06:41 +03:00
.idea fixed healtcheck 2026-04-07 12:20:59 +03:00
src docs(concurrency): write Java Concurrency section from JLS/JVMS specs 2026-05-29 16:31:03 +03:00
.DS_Store Initial commit 2026-01-19 11:44:46 +03:00
.gitignore docs(concurrency): write Java Concurrency section from JLS/JVMS specs 2026-05-29 16:31:03 +03:00
book.toml Initial commit 2026-01-19 11:44:46 +03:00
README.md Reworked CI/CD: build & deploy on same machine via Docker 2026-04-07 11:26:54 +03:00

Java Backend Handbook

Практическое руководство по Java Backend разработке, собранное в формате mdBook.

Содержание

Часть Темы
I. Основы Java Синтаксис, ООП, Collections, Generics, Stream API, JVM, Concurrency
II. Алгоритмы и паттерны Big O, структуры данных, сортировки, GoF паттерны, SOLID
III. Spring Ecosystem Spring Core, Spring Boot, Security, Cloud, WebFlux
IV. Данные и интеграции SQL, PostgreSQL, Hibernate, Redis, Kafka, RabbitMQ
V. Инструменты и DevOps Maven, Gradle, Docker, SSH, CI/CD
VI. Дополнительно Kotlin, Agile, Scrum

Требования

cargo install mdbook

Локальный запуск

# Клонировать репозиторий
git clone https://git.j1337.pw/muukaramiskarhu/java-handbook.git
cd java-handbook

# Собрать книгу
mdbook build

# Запустить dev-сервер с hot-reload на http://localhost:3000
mdbook serve

Собранная книга появится в директории book/.

Деплой

Вариант 1: Статический хостинг (GitHub/GitLab Pages, Nginx)

mdbook build

Содержимое директории book/ — готовый статический сайт. Разместите его на любом веб-сервере или статическом хостинге.

Пример для Nginx:

server {
    listen 80;
    server_name handbook.example.com;
    root /var/www/java-handbook/book;
    index index.html;
}

Вариант 2: Docker

FROM rust:alpine AS builder
RUN cargo install mdbook
COPY . /book
WORKDIR /book
RUN mdbook build

FROM nginx:alpine
COPY --from=builder /book/book /usr/share/nginx/html
EXPOSE 80
docker build -t java-handbook .
docker run -p 8080:80 java-handbook

Вариант 3: CI/CD (Forgejo Actions)

В репозитории настроен workflow (.forgejo/workflows/deploy.yml), который при пуше в master:

  1. Собирает книгу (mdBook из pre-built бинарника)
  2. Билдит Docker-образ (nginx + статика)
  3. Пушит образ в Forgejo Container Registry
  4. Останавливает старый контейнер и запускает новый

Необходимый секрет в настройках репозитория (Settings > Actions > Secrets):

Секрет Описание
REGISTRY_TOKEN Токен для Forgejo Container Registry

На PR — только сборка (проверка что книга билдится).

Внесение изменений через Pull Request

1. Создайте ветку

git checkout -b feature/my-changes

2. Внесите изменения

Все материалы находятся в директории src/. Структура описана в src/SUMMARY.md.

  • Для редактирования существующей темы — измените соответствующий .md файл
  • Для добавления новой темы — создайте .md файл и добавьте ссылку в src/SUMMARY.md

3. Проверьте локально

mdbook serve
# Откройте http://localhost:3000 и убедитесь, что всё корректно

4. Запушьте и создайте PR

git add .
git commit -m "Описание изменений"
git push origin feature/my-changes

Затем откройте Pull Request в Forgejo: Repository > New Pull Request, выберите вашу ветку → master.

Правила оформления

  • Язык материалов — русский, технические термины остаются на английском
  • Каждая тема содержит теоретическое описание, ссылки на документацию и видеоматериалы
  • Следуйте существующей структуре файлов и именованию

Структура проекта

java-handbook/
├── book.toml          # Конфигурация mdBook
├── src/
│   ├── SUMMARY.md     # Оглавление (структура книги)
│   ├── introduction.md
│   ├── part-1-java-basics/
│   ├── part-2-algorithms-patterns/
│   ├── part-3-spring/
│   ├── part-4-data/
│   ├── part-5-devops/
│   ├── part-6-extra/
│   └── appendix/
└── book/              # Собранный сайт (в .gitignore)

Лицензия

Автор: muukaramiskarhu