Golang:
Compiler, Build и Tooling в Go и Java: как устроены сборка, инициализация, анализ и диагностика в двух экосистемах
Эта статья посвящена общему обзору того, как в Go устроены compiler, build и tooling-практики, и как их удобнее понимать через сравнение с Java. Мы не будем уходить в узкоспециализированные детали каждой отдельной команды или внутренней реализации компилятора, а сосредоточимся на главном: как в двух…
Compiler, Build, and Tooling in Go and Java: how assembly, initialization, analysis, and diagnostics are organized in two ecosystems
This article is dedicated to a general overview of how the compiler, build, and tooling practices are arranged in Go, and how to better understand them through comparison with Java. We will not delve into the specialized details of each individual command or the internal workings of the compiler, bu…
Низкоуровневые механизмы - часть 2 | Go ↔ Java
В этой статье мы собрали ключевые low-level механизмы Go, которые чаще всего вызывают вопросы у разработчиков, приходящих из Java. Мы рассмотрим: unsafe.Pointer, выравнивание структур, арифметику указателей, zero-copy, iota, внутренности интерфейсов, runtime.SetFinalizer и runtime.KeepAlive. Мы ра…
Low-level mechanisms - part 2 | Go ↔ Java
In this article, we gathered the key low-level mechanisms of Go that most often raise questions for developers coming from Java. We will consider: unsafe.Pointer, struct alignment, pointer arithmetic, zero-copy, iota, the internals of interfaces, runtime.SetFinalizer, and runtime.KeepAlive. We wil…
Go ↔ Java: Complete Guide to Runtime, Memory, and Allocator - Part 3
This article is a comprehensive guide to the key aspects of memory and runtime work in Go and Java. We will discuss fundamental concepts: execution scheduler, memory barriers, memory alignment, stack growth, fragmentation, allocation hot spots, and the internal architecture of the Go allocator. Th…
Go ↔ Java: Полное руководство по Runtime, памяти и аллокатору - часть 3
Эта статья — комплексное руководство по ключевым аспектам работы памяти и рантайма в Go и Java. Мы разберем фундаментальные концепции: планировщик выполнения, memory barriers, выравнивание памяти, рост стека, фрагментацию, горячие точки аллокации и внутреннюю архитектуру аллокатора Go. Главная цел…
Низкоуровневые механизмы | Go ↔ Java
В этой статье мы разберем ключевые низкоуровневые механизмы Go, сравнивая их с аналогичными инструментами в Java. Статья предназначена для Java-разработчиков, которые хотят глубже понять Go, а также для Go-разработчиков, желающих увидеть, как их привычные механизмы устроены в Java. Мы рассмотрим ато…
Low-level mechanisms | Go ↔ Java
In this article, we will examine the key low-level mechanisms of Go, comparing them to similar tools in Java. The article is intended for Java developers who want to gain a deeper understanding of Go, as well as for Go developers, who wish to see how their familiar mechanisms are structured in Java.…
Scheduler internals в Go ↔ Java: как на самом деле исполняется твой код
Когда ты пишешь go func() или создаёшь Thread в Java, кажется, что ты управляешь параллельностью. Но на самом деле ты даёшь задачу планировщику — scheduler у. И вот тут начинается настоящее шоу. Go и Java используют принципиально разные модели: Go — M:N scheduler (много goroutine на меньшее число …
Scheduler internals in Go ↔ Java: how your code is actually executed
When you write go func() or create a Thread in Java, it seems like you are managing concurrency. But in reality, you are passing the task to the scheduler. And this is where the real show begins. Go and Java use fundamentally different models: Go — M:N scheduler (many goroutines on fewer threads),…
Slice internals in Go ↔ Java: from header to hidden allocations
Slice in Go is one of those structures that looks simple, but under the hood behaves like a little clever beast. If you are a Java developer, you might think: "well, this is just an ArrayList." And this is where the magic begins — it’s not quite so. In this article, we will discuss: how the slice …
Slice internals в Go ↔ Java: от заголовка до скрытых аллокаций
Slice в Go — это одна из тех структур, которая выглядит простой, но под капотом ведёт себя как маленький хитрый зверь. Если ты Java-разработчик, ты можешь думать: «ну это же просто ArrayList». И вот здесь начинается магия — это не совсем так. В этой статье мы разберём: как работает slice header, п…
Полезные статьи:
Переменные в Java — понятие, типы, область видимости и константы Всем привет! С вами Виталий Лесных. В этом уроке разберём, что такое переменные в Java, зачем они нужны, какие бывают типы, как объявля…
Побитовые операторы в Java В языке программирования Java определено несколько побитовых операторов. Эти операторы применяются к целочисленным типам данных, таким как byte, short, int, long и char. Спи…
Рассуждение о том, почему полнота знаний недостижима и как выстроить личную архитектуру профессионального роста. Каждый разработчик хотя бы раз думал: «Как всё успеть?» Технологии растут быстрее,…
Новые статьи:
Конкурентность — это не про «запустить много потоков». Это про договорённости между ними. Представь кухню ресторана: — повара (потоки / горутины) — заказы (задачи) — и главный вопрос: как они коорди…
История начинается не с академической теории, а с типичной production-проблемы. Представьте сервис: 48 CPU 300+ потоков нагрузка 200k операций в секунду много shared state Команда использует обы…
Представьте обычный продакшн-сервис. 32 CPU сотни потоков кэш конфигурации / сессий / rate limits десятки тысяч операций в секунду И где-то внутри — обычный Map. Сначала всё выглядит безобидно. Map&…