Skip to content

Repository files navigation

go-ioutils

go-ioutils — это высокопроизводительная, комплексная библиотека утилит для Go, предоставляющая набор оптимизированных функций для работы с вводом/выводом (I/O), файловой системой, сериализацией данных, управлением ресурсами и взаимодействием с внешними процессами.

Библиотека разработана с акцентом на производительность, минимальную аллокацию и максимальную переиспользуемость кода.

🚀 Ключевые возможности

go-ioutils решает множество распространенных задач, связанных с обработкой потоков данных и системным взаимодействием, в одном месте:

  • Эффективный I/O: Утилиты для безопасного копирования файлов, чтения всего содержимого потока и реализации механизмов "пайпинга" (piping).
  • Сериализация и Кодирование: Комплексный набор кодеков для кодирования и декодирования данных в различных форматах, включая поддержку файлов и блобов.
  • Управление Памятью (Pooling): Пакет pool предоставляет механизмы пулинга (например, для срезов), значительно снижая нагрузку на сборщик мусора (GC) в высоконагруженных сценариях.
  • Интеграция с Shell: Модуль shell позволяет надежно и идиоматично взаимодействовать с внешними командными оболочками.
  • Системные Утилиты: Функции для работы с хешированием файлов (fs) и базовые вспомогательные структуры данных.

🏗️ Архитектура и модули

Библиотека разделена на следующие функциональные модули:

📁 copy, read_all, pipe

  • Назначение: Работа с потоками данных.
  • Функционал: Обеспечивают эффективные и безотказные механизмы копирования данных между потоками, чтения всего содержимого в память и соединения потоков (piping).

📁 codec

  • Назначение: Сериализация и десериализация.
  • Функционал: Предоставляет кодеки для различных типов данных, включая работу с файлами (encdec_file) и абстрактными блобами (encdec_blob).

📁 pool

  • Назначение: Оптимизация потребления памяти.
  • Функционал: Реализация пулов ресурсов (например, *[]byte), что критически важно для повышения пропускной способности в приложениях, выполняющих миллионы операций.

📁 shell

  • Назначение: Выполнение внешних команд.
  • Функционал: Позволяет запускать и управлять системными процессами, обрабатывая stdin, stdout и stderr надежно.

📁 cache

  • Назначение: Управление кэшированными данными.
  • Функционал: Предоставляет структуры для реализации кэширующих механизмов с различными стратегиями очистки.

⚙️ Установка и Использование

Установите библиотеку как зависимость вашего проекта:

go get -u go.osspkg.com/ioutils@latest

В большинстве случаев вам потребуется импортировать конкретный пакет, который содержит необходимую функциональность.

Пример (Пайпинг):

import "go.osspkg.com/ioutils"

func processStream(src io.Reader, dst io.Writer) error {
    // Используйте ioutils.Pipe для оптимизированного копирования
    _, err := ioutils.Pipe(src, dst, 512)
    return err
}

Настоятельно рекомендуется ознакомиться с документацией каждого подпакета для выбора наиболее оптимального и производительного метода.

About

No description or website provided.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages