💻 Карта сайта
-
Build Tags • Dead Code Elimination (Удаление неиспользуемого кода) • Package Init Order (Порядок инициализации пакетов) • Linker Behavior • Go Vet • Go Test -bench • Go Tool PProf • Go Tool Trace • Escape Analysis Flags • Общая логика сравнения: как думать про Go ↔ Java • Общая таблица сравнения терминов • Общие схемы и ментальные модели • Практический итог
-
unsafe.Pointer • Struct field alignment (выравнивание полей) • Pointer arithmetic (арифметика указателей) • Zero-copy techniques • iota • Interface internals (itab, dynamic dispatch) • runtime.SetFinalizer • runtime.KeepAlive • Обзор тем • Ключевые различия философии Go ↔ Java • Сравнительная таблица всех терминов • Как выбирать подход (Go vs Java) • Итог
-
Object Allocation — Выделение объектов • Stack — Стек вызовов и локальные переменные • Heap — Куча • Allocation Patterns (Шаблоны выделения памяти) • Object Lifetime Optimization (Оптимизация времени жизни объектов) • Cache Locality (Локальность кэша) • CPU Cache Line • False Sharing • Backpressure через Channels • Вывод
-
atomic.CompareAndSwap • stack vs heap escape • sync.Pool • goroutine stack splitting • memory consistency model • scheduler preemption • unsafe basics • cache locality • allocation cost optimization • runtime.Gosched • runtime.LockOSThread • runtime.GC • High-Concurrency Patterns • GMP Scheduler Model • Вывод / Итог
-
Runtime Scheduler (Планировщик выполнения) • Memory Barriers (Барьеры памяти) • Memory Alignment (Выравнивание памяти) • Stack Growth / Shrinkage (Рост и уменьшение стека) • Memory Fragmentation (Фрагментация памяти) • Allocation Hotspot (Горячие точки аллокации) • mcache / mcentral / mheap (Архитектура аллокатора Go) • Stack Overflow Handling (Обработка переполнения стека) • Span (mspan в Go allocator) • Page (Страница памяти) • Итог
-
1. Goroutine vs Thread • 2. Channels — безопасный обмен данными • 3. Unbuffered vs Buffered Channels • 4. Select — ожидание нескольких каналов • 5. Timeout / Deadline • Сравнение Go и Java по основам параллельности • Контекст для отмены и таймаутов: `context.Context` vs Java • Пример на Go • Как это решается в Java • Советы и нюансы • Сложные кейсы повышенной сложности • 1. Worker Pool (пул воркеров) • 2. Fan-In / Fan-Out • 3. Timeout / Отмена цепочки задач • Итог
-
Введение • 1. Эволюция архитектур • 2. CQRS и Event Sourcing • 3. DDD — проектирование через смысл • 4. Реактивные архитектуры • 5. Как выбрать подход • Подводные камни • Event Sourcing — взрывает сложность при миграциях • DDD — требует дисциплины в названии сущностей (и не только) • Микросервисы — увеличивают инфраструктурные расходы • Заключение • Тест — уровень архитектурного мышления Java-разработчика
-
1️⃣ HashMap / TreeMap / TreeSet (не потокобезопасные) • 2️⃣ SynchronizedMap / SynchronizedSortedMap / SynchronizedSortedSet • 3️⃣ ConcurrentHashMap • 4️⃣ ConcurrentSkipListMap / ConcurrentSkipListSet • 5️⃣ AtomicInteger / AtomicReference / AtomicLong • Таблиц для сравнения: один элемент, два потока • Таблица: один элемент редактируется двумя потоками + новый ключ добавляется • Сравнение потокобезопасных отсортированных коллекций • 🔹 Выводы • 🔹 Практическое правило
-
1) Простой if / else • 2) else if — цепочка проверок • 3) Операторы сравнения и отрицание • 4) Логические операторы: && (И) и || (ИЛИ) • 5) Тернарный оператор — компактно, но осторожно • 6) switch — когда много дискретных вариантов • 7) Небольшая шпаргалка для отладки • Тест — Насколько ты понял урок?
-
Признаки легаси-проекта: как распознать старый корабль • 1. Вернуть наблюдаемость: включить свет в машинном отсеке • 2. Стабилизировать очаги хаоса: потушить чёрные дыры • 3. Построить тестовую страховку: закрепить борта • 4. Обновить фундамент: заменить сгнившие доски • 5. Снять связанность: вернуть стройность корпуса • 6. Вернуть знания команде: убрать культ «единственного жреца» • 7. Модернизировать постепенно: без революций • 8. Обновить инфраструктуру: дать кораблю мотор нового поколения • 9. Постоянная выплата долга: маленькие шаги дают долгую жизнь • Итог: старые корабли ходят долго, если о них заботятся • Быстрая диагностика вашего легаси-проекта • Тест — Насколько ваш проект стал легаси
-
2. Virtual Threads — миллионы лёгких потоков • ✅ Плюсы Virtual Threads • ❌ Минусы Virtual Threads • 3. GraalVM — универсальный ускоритель • ✅ Плюсы GraalVM • ❌ Минусы GraalVM • 4. Quarkus — Java для облаков и ИИ • ✅ Плюсы Quarkus • ❌ Минусы Quarkus • 5. Почему это не замена, а зрелость • 6. Общее направление
-
Предисловие • Сравнение подходов к параллелизму в Java • 1️⃣ Fork/Join Framework • Ключевые элементы: • Пример: • 2️⃣ CompletableFuture — асинхронность с функциональным стилем • Основные возможности: • Пример цепочки CompletableFuture: • 3️⃣ Виртуальные потоки (Project Loom) • Преимущества: • Пример виртуальных потоков: • 4️⃣ Как выбрать подходящий инструмент • Переход от потоков к современным инструментам • На основе чего CompletableFuture принимает решения • Виртуальные потоки (Project Loom) — будущее многопоточности в Java • Коротко о сути • Пример: обычные потоки vs виртуальные • Ключевые преимущества • Когда использовать • Ограничения и подводные камни • Практическая миграция • Краткий вывод • Виртуальные потоки Loom как метавселенная • Сравнение подходов к параллелизму в Java и предпосылки для выбора • Итог
-
Что такое переменная • Синтаксис объявления переменной • Правила именования переменных • Примеры корректных имён • Основные типы данных (кратко) • Код — примеры типов • Объявление vs Инициализация • Динамическая инициализация • Область видимости (scope) и время жизни • Пример: вложенные области • Инициализация внутри блока • Ограничение: нельзя объявлять одинаковые имена во вложенных областях • Константы • Рекомендации • Домашнее задание • Тест — Насколько ты понял урок?
Полезные статьи:
Серия: Go для Java-разработчиков — разбираем struct, interface, receiver types и type embedding В этой статье мы разберем, как в Go строится архитектура типов. Для Java-разработчика это особенно важн...
В этой статье мы подробно разберём работу сборщика мусора (Garbage Collector, GC) в Go и Java, рассмотрим ключевые внутренние механизмы: concurrent mark & sweep, mutator vs collector, tricolor mar...
← Часть 1 — Основы параллельности в Go для Java-разработчиков Во второй части мы углубимся в синхронизацию и безопасность параллельного кода в Go. Для Java-разработчика полезно видеть аналоги: ...
Новые статьи:
Эта статья посвящена общему обзору того, как в Go устроены compiler, build и tooling-практики, и как их удобнее понимать через сравнение с Java. Мы не будем уходить в узкоспециализированные детали каж...
В этой статье мы собрали ключевые low-level механизмы Go, которые чаще всего вызывают вопросы у разработчиков, приходящих из Java. Мы рассмотрим: unsafe.Pointer, выравнивание структур, арифметику указ...
Эта статья — комплексное руководство по ключевым аспектам работы памяти и рантайма в Go и Java. Мы разберем фундаментальные концепции: планировщик выполнения, memory barriers, выравнивание памяти, рос...