Аккаунт Войти / Регистрация
Тема
Размер текста

Java:

« 1 2 3 4 »
1 / 4 · 41
🧩 Coordination: how to synchronize chaos — Java Blocking vs Reactor vs Go Concurrency is not about “starting many threads”. It’s about agreements between them. Imagine a restaurant kitchen: — cooks (threads / goroutines) — orders (tasks) — and the main question: how do they coordinate? Today you will see 3 worlds: 🟨 Blocking Java — “everyone waits” 🟣 Reactor (Reacti…
🧩 Coordination: как синхронизировать хаос — Java Blocking vs Reactor vs Go Конкурентность — это не про «запустить много потоков». Это про договорённости между ними. Представь кухню ресторана: — повара (потоки / горутины) — заказы (задачи) — и главный вопрос: как они координируются? Сегодня ты увидишь 3 мира: 🟨 Blocking Java — «каждый ждёт» 🟣 Reactor (Reactive Streams…
Когда lock становится бутылочным горлышком: инженерная история AbstractQueuedSynchronizer (AQS) История начинается не с академической теории, а с типичной production-проблемы. Представьте сервис: 48 CPU 300+ потоков нагрузка 200k операций в секунду много shared state Команда использует обычные Java locks: ReentrantLock lock = new ReentrantLock(); lock.lock(); try { updateState(); } fina…
Когда HashMap начинает убивать продакшн: инженерная история ConcurrentHashMap Представьте обычный продакшн-сервис. 32 CPU сотни потоков кэш конфигурации / сессий / rate limits десятки тысяч операций в секунду И где-то внутри — обычный Map. Сначала всё выглядит безобидно. Map<String, Session> sessions = new HashMap<>(); Потом появляется пара потоков. Потом десятк…
When HashMap starts killing production: the engineering story of ConcurrentHashMap Imagine a typical production service. 32 CPU hundreds of threads configuration / session / rate limits cache tens of thousands of operations per second And somewhere inside — a regular Map. At first, everything looks harmless. Map<String, Session> sessions = new HashMap<>(); Then a cou…
Zero Allocation в Java: что это и почему это важно Zero Allocation — это подход к написанию кода, при котором во время выполнения (runtime) не создаются лишние объекты в heap памяти. Главная идея: меньше объектов → меньше GC → выше стабильность и производительность. ⚡ 1. Простое объяснение Каждый раз, когда в Java создаётся объект: выделяется па…
Zero Allocation in Java: what it is and why it matters Zero Allocation — is an approach to writing code in which no unnecessary objects are created in heap memory during runtime. The main idea: fewer objects → less GC → higher stability and performance. ⚡ 1. Simple explanation Every time an object is created in Java: memory is allocated in the heap …
Stream vs For in Java: how to write the fastest code possible In Java, performance is often determined not by the "beauty of the code," but by how it interacts with memory, the JIT compiler, and CPU cache. Let s analyze why the usual for is often faster than Stream, and how to write truly fast code. 1. Basic truth: Stream vs For — this is not an equal battle …
Stream vs For в Java: как писать максимально быстрый код В Java производительность часто определяется не «красотой кода», а тем, как именно он взаимодействует с памятью, JIT-компилятором и CPU cache. Разберём, почему обычный for часто быстрее Stream, и как писать действительно быстрый код. 1. Базовая правда: Stream vs For — это не равная битва Сравнивая …
Java под микроскопом: стек, куча и GC на примере кода Схема - Java Memory Model - Heap / Non-Heap / Stack Heap (память для объектов) Создаёт объекты через new. Young Generation: Eden + Survivor. Old Generation: объекты, пережившие несколько сборок GC. Размер Heap обычно больше Non-Heap. Young Generation Eden Survivor Old Generation Non…
Java under the Microscope: Stack, Heap, and GC using Code Examples Diagram - Java Memory Model - Heap / Non-Heap / Stack Heap (memory for objects) Creates objects via new. Young Generation: Eden + Survivor. Old Generation: objects that have survived several GC collections. Heap size is usually larger than Non-Heap. Young Generation Eden Survivor Old G…
Asynchrony and Reactivity in Java: CompletableFuture, Flow, and Virtual Threads In modern Java development, there are three main approaches to asynchrony and concurrency: CompletableFuture — for single asynchronous tasks. Flow / Reactive Streams — for data flows with backpressure. Virtual Threads / Loom — for scalable, lock-free concurrency. Figurative Understanding Flow i…
« 1 2 3 4 »
1 / 4 · 41
Отправляя email, вы принимаете условия политики конфиденциальности

Полезные статьи:

Дата вступления в силу: 23 октября 2025 г. Настоящая Политика конфиденциальности (далее — «Политика») описывает, как сайт Lesnih.com (далее — «Сайт», «Сервис», «Мы») собирает, использует, хранит и защ…
Условные операторы в Java
Java — Условные операторы Наглядная статья с примерами: if / else / логика / тернарный оператор / switch Кратко — условные операторы позволяют программе принимать решения: выполнить один кусок кода …
Понимаем многопоточность в Java через коллекции и атомики
1️⃣ HashMap / TreeMap / TreeSet (не потокобезопасные) HashMap: Структура: массив бакетов + связные списки / деревья (для коллизий). Под капотом: при put/remove происходит модификация массива бакетов …

Новые статьи:

Конкурентность — это не про «запустить много потоков». Это про договорённости между ними. Представь кухню ресторана: — повара (потоки / горутины) — заказы (задачи) — и главный вопрос: как они коорди…
История начинается не с академической теории, а с типичной production-проблемы. Представьте сервис: 48 CPU 300+ потоков нагрузка 200k операций в секунду много shared state Команда использует обы…
Когда HashMap начинает убивать продакшн: инженерная история ConcurrentHashMap
Представьте обычный продакшн-сервис. 32 CPU сотни потоков кэш конфигурации / сессий / rate limits десятки тысяч операций в секунду И где-то внутри — обычный Map. Сначала всё выглядит безобидно. Map&…