FUSE + Go: ковка собственной виртуальной файловой системы на блочном устройстве
В этой статье подробно разбирается создание пользовательской файловой системы с помощью FUSE и языка Go. На реальном примере мы пройдём путь от установки окружения до реализации чтения, записи, метаданных и параллельного доступа. В процессе встретятся живые комментарии, личные наблюдения и советы, которые помогут избежать распространённых подводных камней.
Введение
Давно хотел понять, как сделать “файловую систему в файле” или на блочном устройстве, чтобы потом подключить её к любому Linux-серверу. Оказалось, что комбинация FUSE и Go — отличный вариант для быстрой прототипировки без костылей на C. В этой статье я расскажу о своём опыте, забавных факапах и главных открытиях на пути к рабочей системе.
https://habr.com/ru/articles/933658/
👉 @golang_lib
В этой статье подробно разбирается создание пользовательской файловой системы с помощью FUSE и языка Go. На реальном примере мы пройдём путь от установки окружения до реализации чтения, записи, метаданных и параллельного доступа. В процессе встретятся живые комментарии, личные наблюдения и советы, которые помогут избежать распространённых подводных камней.
Введение
Давно хотел понять, как сделать “файловую систему в файле” или на блочном устройстве, чтобы потом подключить её к любому Linux-серверу. Оказалось, что комбинация FUSE и Go — отличный вариант для быстрой прототипировки без костылей на C. В этой статье я расскажу о своём опыте, забавных факапах и главных открытиях на пути к рабочей системе.
https://habr.com/ru/articles/933658/
👉 @golang_lib
👍2
Go: жарим общие данные. Атомно, быстро и без мьютексов
Как правило, в Go для безопасного доступа к общим данным используются мьютексы. Да, каналы тоже можно приспособить для изменения общих данных, так как они потокобезопасны, но это усложняет и замедляет логику.
Но в этой статье мы поговорим о другом. Современные процессоры имеют поддержку атомарных операций, что позволяет на основе них организовывать работу с общими данными до нескольких раз быстрее, чем с помощью общепринятых вариантов. Так как мьютексы реализованы на основе ОС, каналы сделаны на основе внутреннего кода Go с использованием тех же мьютексов из ОС под капотом, а атомарные операции делает сам процессор аппаратно за существенно меньшее количество тактов.
https://habr.com/ru/companies/ruvds/articles/833264/
👉 @golang_lib
Как правило, в Go для безопасного доступа к общим данным используются мьютексы. Да, каналы тоже можно приспособить для изменения общих данных, так как они потокобезопасны, но это усложняет и замедляет логику.
Но в этой статье мы поговорим о другом. Современные процессоры имеют поддержку атомарных операций, что позволяет на основе них организовывать работу с общими данными до нескольких раз быстрее, чем с помощью общепринятых вариантов. Так как мьютексы реализованы на основе ОС, каналы сделаны на основе внутреннего кода Go с использованием тех же мьютексов из ОС под капотом, а атомарные операции делает сам процессор аппаратно за существенно меньшее количество тактов.
https://habr.com/ru/companies/ruvds/articles/833264/
👉 @golang_lib
👍1
🚀 Хотите ускорить обработку во Flutter-приложениях, вынеся тяжёлые задачи на C, Rust или Go?
Приходите на открытый вебинар «Запускаем код C, Rust или Go через FFI» 6 августа в 20:00 МСК. На уроке мы покажем:
- Как написать простую функцию на C, Rust и Go и вызвать её из консольного Dart-приложения.
- Как интегрировать эту же функцию во Flutter-приложение.
- Работу со сторонними библиотеками и нюансы FFI-плагина.
- Примеры Makefile для автоматизации сборки под разные архитектуры.
❗️ Вы научитесь компилировать C/Rust/Go-бинарники, вызывать их из Flutter и создавать скрипты сборки. Всё это — надёжный способ оптимизировать обработку изображений, криптографию и другие ресурсоёмкие операции.
Этот урок проходит в преддверии старта курса «Flutter Mobile Developer» от OTUS. 🔥 Все участники получат записи трех прошлых уроков!
👉 Регистрация открыта: https://vk.cc/cOhkoz
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Приходите на открытый вебинар «Запускаем код C, Rust или Go через FFI» 6 августа в 20:00 МСК. На уроке мы покажем:
- Как написать простую функцию на C, Rust и Go и вызвать её из консольного Dart-приложения.
- Как интегрировать эту же функцию во Flutter-приложение.
- Работу со сторонними библиотеками и нюансы FFI-плагина.
- Примеры Makefile для автоматизации сборки под разные архитектуры.
❗️ Вы научитесь компилировать C/Rust/Go-бинарники, вызывать их из Flutter и создавать скрипты сборки. Всё это — надёжный способ оптимизировать обработку изображений, криптографию и другие ресурсоёмкие операции.
Этот урок проходит в преддверии старта курса «Flutter Mobile Developer» от OTUS. 🔥 Все участники получат записи трех прошлых уроков!
👉 Регистрация открыта: https://vk.cc/cOhkoz
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru