- Эволюция1 мин
Эволюция JVM: от Java 1.0 до наших дней
Java Virtual Machine пережила за 30 лет несколько революций — и большинство из них остались за кадром, потому что «просто работает». Разбираем эволюцию по эпохам: ранний HotSpot и его последовательные GC; появление G1 и почему он стал дефолтом; эксперименты с модульностью (Project Jigsaw, Java 9) и как это изменило библиотеки; записи (records), switch expressions, pattern matching — как язык догонял современные тренды; low-latency GC — Shenandoah и ZGC с паузами меньше миллисекунды; и главное современное направление — GraalVM и нативные образы (native-image), которые переворачивают представление о том, что «Java тяжёлая». Что было маркетингом, а что реально изменило разработку.
- #java
- #jvm
- #history
- #gc
- #graalvm
- Карьера1 мин
Как расти в карьере разработчика
Что отличает middle от senior, а senior от staff — и почему дело не в количестве выученных фреймворков. Разбираем реальный рост: переход от «решил задачу» к «спроектировал систему»; как ответственность за решения и их последствия меняется с грейдом; soft skills, которые важнее новых технологий (коммуникация, код-ревью, менторство, умение спорить с аргументами); как выбирать проекты, которые растят, а не те, где ты просто закрываешь таски; синдромы самозванца и выгорание; когда стоит менять команду, а когда — учиться там, где есть. Без иллюзий про «выучил X — стал сеньором».
- #карьера
- #soft-skills
- #mentorship
- #senior
- Пайплайны1 мин
Как устроен CI/CD: от коммита до продакшена
Что на самом деле стоит за аббревиатурой CI/CD и почему это не про конкретный инструмент (GitHub Actions, GitLab CI, Jenkins), а про конвейер. Разбираем по шагам: что запускается на каждый коммит (lint, unit-тесты, сборка артефакта); стадии и когда что выполняется; изоляция через контейнеры и раннеры; тестовые окружения (staging, QA) и как код попадает из одного в другое; стратегии деплоя (rolling, blue-green, canary) и зачем они нужны; что такое артефакт и immutable deploy; как откатываться, когда что-то сломалось на проде. Практический разбор анатомии пайплайна.
- #ci-cd
- #devops
- #deploy
- #github-actions
- Системный дизайн1 мин
Подготовка к собеседованию по базам данных
Что реально спрашивают на собеседовании по базам данных — не теорию множеств, а прикладное: как работают транзакции и что такое ACID; B-tree и hash-индексы, когда индекс замедляет, а не ускоряет; уровни изоляции и блокировки (shared/exclusive, pessimistic/optimistic); мёртвые блокировки и как их находить; нормализация до 3НФ и когда осознанно денормализовать; виды JOIN и разница nested loop / hash / merge; чтение `EXPLAIN` и оптимизация медленных запросов. Шпаргалка по темам, которые стоит повторить перед собеседованием — структурированно, без воды.
- #sql
- #базы данных
- #индексы
- #транзакции
- #собеседование
- Языки5 мин
Java vs Node.js: кто сколько ест памяти
Запускаем одинаковый HTTP-сервис на Spring Boot и на Express — и видим разницу в RSS не на 10–20%, а в разы. Java спокойно держит 250–400 МБ сразу после старта, Node.js укладывается в 40–70 МБ. Разбираем, откуда берутся эти сотни мегабайт: метаспейс и JIT-кеш JVM, поколения объектов и `-Xmx`, поколенческий GC V8 и его лимиты. И главное — почему на холодном старте Node выигрывает, а под высоким RPS «дорогая» Java часто оказывается дешевле в пересчёте на запрос. Практические лимиты (`-Xmx`, `--max-old-space-size`), когда выбирать serverless, а когда — жирный долгоживущий инстанс.
- #java
- #nodejs
- #jvm
- #v8
- #memory
- #gc