Jump to content

zlib

zlib
Первоначальный выпуск 1 мая 1995 г. ( 1995-05-01 )
Стабильная версия
1.3.1 [1] / 22 января 2024 г .; 6 месяцев назад ( 22 января 2024 г. )
Репозиторий
Написано в С
Операционная система Кросс-платформенный
Тип Сжатие данных
Лицензия Лицензия zlib
Веб-сайт zlib .сеть

zlib ( / ˈ z l ɪ b / или " zeta -lib", / ˈ z t ə ˌ l ɪ b / ) [2] [3] — это программная библиотека, используемая для сжатия данных , а также формат данных. [4] zlib был написан Жаном-Лу Гайи и Марком Адлером и представляет собой абстракцию алгоритма сжатия DEFLATE, используемого в их программе сжатия файлов gzip . zlib также является важным компонентом многих программных платформ, включая Linux , macOS и iOS . Он также использовался в игровых консолях, таких как PlayStation 4 , PlayStation 3 , Wii U , Wii , Xbox One и Xbox 360 .

Первая общедоступная версия Zlib, 0.9, была выпущена 1 мая 1995 года и изначально предназначалась для использования с библиотекой изображений libpng . Это бесплатное программное обеспечение , распространяемое по лицензии zlib .

Возможности

[ редактировать ]

Инкапсуляция

[ редактировать ]

Необработанные сжатые данные DEFLATE (RFC 1951) [5] обычно записываются с помощью оболочки zlib или gzip, инкапсулирующей данные путем добавления верхнего и нижнего колонтитула. Это обеспечивает идентификацию потока и обнаружение ошибок, которые не предоставляются необработанными данными DEFLATE.

Оболочка zlib (RFC 1950) [4] меньше, чем оболочка gzip (RFC 1952), [6] поскольку последний хранит имя файла и другую информацию о файловой системе.

Алгоритм

[ редактировать ]

По состоянию на сентябрь 2018 г. , zlib поддерживает только один алгоритм, называемый DEFLATE , который использует комбинацию варианта LZ77 (Lempel-Ziv 1977) и кодирования Хаффмана . [7] Этот алгоритм обеспечивает хорошее сжатие самых разных данных при минимальном использовании системных ресурсов. Этот же алгоритм используется и в формате Zip-архива . В заголовке учитываются другие алгоритмы, но ни один из них в настоящее время не реализован.

Использование ресурсов

[ редактировать ]

zlib предоставляет средства для контроля использования процессора и памяти. Может быть предоставлено значение уровня сжатия, которое меняет скорость на сжатие. Существуют также средства для экономии памяти, полезные в средах с ограниченным объемом памяти, например в некоторых встроенных системах.

Стратегия

[ редактировать ]

Сжатие можно оптимизировать для конкретных типов данных. Если вы используете библиотеку для всегда сжатия определенных типов данных, то использование определенной стратегии может улучшить сжатие и производительность. Например, если данные содержат длинные повторяющиеся байты, стратегия кодирования длин серий (RLE) может дать хорошие результаты на более высокой скорости. Для общих данных предпочтительна стратегия по умолчанию.

Обработка ошибок

[ редактировать ]

Ошибки в сжатых данных могут быть обнаружены и пропущены. Кроме того, если в сжатый поток записываются точки «полной очистки», то поврежденные данные можно пропустить, и распаковка будет повторно синхронизирована в следующей точке очистки, хотя восстановление поврежденных данных при ошибках не предусмотрено. Точки полной очистки полезны для больших потоков данных по ненадежным каналам, где некоторая потеря данных не имеет значения, например, в некоторых мультимедийных приложениях. Однако создание множества точек смыва может повлиять как на скорость, так и на степень (коэффициент) сжатия.

Длина данных

[ редактировать ]

Нет ограничений на длину данных, которые можно сжимать или распаковывать. Повторные вызовы библиотеки позволяют обрабатывать неограниченное количество блоков данных. Некоторый вспомогательный код (счетчики) может страдать от переполнения при длинных потоках данных, но это не влияет на фактическое сжатие или распаковку.

При сжатии длинного (или бесконечного) потока данных желательно записывать регулярные точки полной очистки.

Приложения

[ редактировать ]

Сегодня zlib является чем-то вроде де-факто стандарта до такой степени, что zlib и DEFLATE часто используются как взаимозаменяемые в документах стандартов, причем тысячи приложений используют его для сжатия, прямо или косвенно. [8] К ним относятся:

zlib также используется во многих встроенных устройствах, таких как Apple iPhone и Sony PlayStation 3 , поскольку код является переносимым, свободно лицензируется и занимает относительно небольшой объем памяти.

Часто используемая библиотека, построенная на старой кодовой базе, zlib также часто разветвляется третьими сторонами, которые заявляют об улучшениях этой библиотеки:

См. также

[ редактировать ]
  1. ^ Адлер, Марк (22 января 2024 г.). «[Zlib-announce] выпущена zlib 1.3.1» . Проверено 23 января 2024 г.
  2. ^ Штутц, Майкл (22 октября 2004 г.). «Поваренная книга Linux», 2-е издание: советы и методы для повседневного использования . Нет крахмального пресса. ISBN  9781593270315 . Архивировано из оригинала 25 января 2023 года . Проверено 28 октября 2021 г. - через Google Книги.
  3. ^ Программное обеспечение Локи; Холл, Джон Р. (22 октября 2001 г.). Программирование игр для Linux . Нет крахмального пресса. ISBN  9781886411494 . Архивировано из оригинала 11 июля 2024 года . Проверено 28 октября 2021 г. - через Google Книги.
  4. ^ Jump up to: Перейти обратно: а б РФК 1950 . дои : 10.17487/RFC1950 .
  5. ^ РФК 1951 . дои : 10.17487/RFC1951 .
  6. ^ РФК 1952 . дои : 10.17487/RFC1952 .
  7. ^ РФК 1951 . дои : 10.17487/RFC1951 .
  8. ^ Гайи, Жан-Лу; Адлер, Марк (18 апреля 2002 г.), zlib Applications , заархивировано из оригинала 10 июня 2019 г. , получено 9 декабря 2007 г.
  9. ^ «С++ — Почему cURL использует zlib?» . Переполнение стека .
  10. ^ «ORCFile в HDP 2: лучшее сжатие, лучшая производительность» . 6 сентября 2013 года. Архивировано из оригинала 6 августа 2020 года . Проверено 16 мая 2020 г.
  11. ^ System.IO.Compression.DeflateStream. Архивировано 6 февраля 2016 г. на Wayback Machine . Библиотека MSDN.
  12. ^ zlib-flate(1) Debian по основным командам Руководство
  13. ^ "qpdf" . Архивировано из оригинала 11 июля 2024 г. Проверено 28 марта 2021 г.
  14. ^ «MySQL :: Справочное руководство MySQL 8.0 :: 15.9.1.5 Как работает сжатие таблиц InnoDB» . dev.mysql.com . Архивировано из оригинала 01 августа 2021 г. Проверено 14 июля 2021 г.
  15. ^ «GitHub Intel ZLIB» . гитхаб . 25 января 2024 года. Архивировано из оригинала 25 января 2024 года . Проверено 25 января 2024 г.
  16. ^ «Борьба с раком: неожиданная польза от открытого исходного кода нашего кода» . Блог Cloudflare . 8 июля 2015 г. Архивировано из оригинала 21 сентября 2019 г. Проверено 18 января 2020 г.
  17. ^ Росбах, Гонконг (24 февраля 2023 г.). «zlib-ng/zlib-ng: замена zlib с оптимизацией для систем «следующего поколения» . Гитхаб . zlib-ng. Архивировано из оригинала 20 апреля 2020 года . Проверено 18 января 2020 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 91c9fbe5a7f252826e3761fee25b3ef6__1720709760
URL1:https://arc.ask3.ru/arc/aa/91/f6/91c9fbe5a7f252826e3761fee25b3ef6.html
Заголовок, (Title) документа по адресу, URL1:
zlib - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)