home.social

#rwmutex — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #rwmutex, aggregated by home.social.

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

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

    habr.com/ru/articles/1011028/

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

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

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

    habr.com/ru/articles/1011028/

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

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

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

    habr.com/ru/articles/1011028/

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

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

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

    habr.com/ru/articles/1011028/

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

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

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

    habr.com/ru/articles/986732/

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

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

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

    habr.com/ru/articles/986732/

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

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

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

    habr.com/ru/articles/986732/

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

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

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

    habr.com/ru/articles/986732/

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

  9. Внутреннее устройство 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{}
    } Здесь мы видим несколько ключевых полей:

    habr.com/ru/companies/karuna/a

    #syncMap #map #mutex #rwmutex