Разбираем net/http на практике. Часть 2.1: POST, файлы и in-memory хранилище

Предыдущая статья: https://habr.com/ru/articles/981356/ Продолжаем создавать сервис анонимных "мертвых ящиков" DeadDrop на чистом Go. Во второй части (первый подвыпуск) закладываем фундамент: учимся принимать POST-запросы, загружать файлы с проверкой MIME-типа и размера, создаём in-memory хранилище с потокобезопасным доступом через RWMutex. Пишем утилиты для генерации криптостойких ID и паролей. Разбираемся с интерфейсами и готовим архитектуру к дальнейшему развитию. Без фреймворков, только net/http и стандартная библиотека.

https://habr.com/ru/articles/1011028/

#Go #Golang #безопасность #secret_storage #inmemory #генератор_паролей #rwmutex #вебразработка #бэкенд #бэкендразработка

Разбираем net/http на практике: пишем веб-сервис DeadDrop для безопасного обмена сообщениями

Дисклеймер ВАЖНО : Это учебная статья для начинающих Данный материал — первая часть цикла, где мы поэтапно изучаем net/http. Код в этой статье сознательно упрощён для ясности изложения и НЕ является...

Хабр

[Перевод] Атомарные операции против мьютексов в Go: когда скорость становится проблемой

Команда Go for Devs подготовила перевод статьи о том, действительно ли атомарные операции всегда быстрее и лучше мьютексов в конкурентном коде. Автор разбирает реальные сценарии, показывает бенчмарки и объясняет, почему рост производительности часто оборачивается ростом сложности и рисков для корректности.

https://habr.com/ru/articles/986732/

#concurrency #atomic #mutex #rwmutex #performance #goroutines #синхронизация

Атомарные операции против мьютексов в Go: когда скорость становится проблемой

Команда Go for Devs  подготовила перевод статьи о том, действительно ли атомарные операции всегда быстрее и лучше мьютексов в конкурентном коде. Автор разбирает реальные сценарии, показывает...

Хабр

Внутреннее устройство sync.Map, сравнение производительности с map + RWMutex

Привет, Хабр! Эта статья для тех, кто хочет понять, когда стоит использовать sync.Map, а когда достаточно обычной map с мьютексом. В Каруне этот вопрос иногда возникал на код ревью, поэтому такая статья мне показалась полезной. TLDR: sync.Map лучше работает на задачах, где много операций чтения, и ключи достаточно стабильны. Внутреннее устройство sync.Map sync.Map — это потокобезопасная реализация мапы в Go, оптимизированная для определенных сценариев использования. Основная структура sync.Map выглядит примерно так: type Map struct {
mu Mutex
read atomic.Value // readOnly
dirty map[interface{}]*entry
misses int
}

type readOnly struct {
m map[interface{}]*entry
amended bool
}

type entry struct {
p unsafe.Pointer // *interface{}
} Здесь мы видим несколько ключевых полей:

https://habr.com/ru/companies/karuna/articles/834400/

#syncMap #map #mutex #rwmutex

Внутреннее устройство sync.Map, сравнение производительности с map + RWMutex

Привет, Хабр! Эта статья для тех, кто хочет понять, когда стоит использовать sync.Map, а когда достаточно обычной map с мьютексом. В Каруне этот вопрос иногда возникал на код ревью, поэтому такая...

Хабр