Работа с HTTP в Go resp.Body представляет собой поток тела ответа Необходимо обязательно вызвать defer resp.Body.Close() В противном случае возникает утечка ресурсов, включая TCP-соединения TCP-соединения не…
Различия Kafka и RabbitMQ в гарантированной доставке сообщений Kafka представляет собой распределённый commit log, в котором сообщения хранятся постоянно Данные попадают в топики, разделённые на partitions, благодаря…
Как Redis выполняет INCR и за счёт чего операция остаётся атомарной? Команды в Redis обрабатываются однопоточным Event Loop INCR увеличивает значение заданного ключа на единицу Вся операция выполняется как одна…
Как StateFlow работает с несколькими подписчиками? Kotlin Flow для реактивного состояния StateFlow — горячий поток, который постоянно хранит последнее значение При подписке каждый подписчик сразу получает актуальное…
Как ThreadLocal передаёт параметры, связанные с конкретным потоком? хранит данные отдельно для каждого потока гарантирует, что каждый поток получает собственное независимое значение позволяет обращаться к данным…
Как volatile обеспечивает видимость изменений в многопоточной программе? многопоточность, память и оптимизации указывает, что переменная не должна кешироваться потоками не допускает инструкции reordering со стороны…
Почему асинхронность повышает число запросов, обрабатываемых одним потоком? Асинхронность — это модель выполнения, при которой операции могут идти без блокировки потока Пока I/O-операция не завершена, поток не…
Контекст: Java, коллекции и итерация ConcurrentModificationException появляется, если структурно изменить коллекцию не через используемый итератор Для удаления во время обхода применяйте Iterator.remove() Ещё один…
многозадачность Go поток блокируется корутиной, если она не передаёт управление через yield (например, отсутствует усыпление C) бесконечный цикл без операций ввода-вывода или вызова runtime.Gosched() полностью…
Как быстро отправить 10 000 запросов: подходы и оптимизация параллельная отправка запросов с помощью многопоточности или асинхронности применение пулов соединений (connection pooling) для повторного использования TCP…
Как устроен preemption в Go runtime? механизм принудительного вытеснения горутин является частью Go scheduler (планировщика) останавливает горутину, не позволяя ей монополизировать CPU применяется при длительных…
Как в Go выполнять HTTP-запросы асинхронно? тема: конкурентность, net/http, goroutines параллельный запуск запросов выполняется через goroutines каждый HTTP-запрос помещается в отдельную goroutine (go func()) для…