Кіріспе

DEFLATE кодек кітапханасы

zlib (/'//z//i://l//I//b/ немесе "zeta lib", /'//z//i://t//@,//l//I//b/) – деректерді сығыстыру және деректер пішімі ретінде қолданылатын бағдарламалық кітапхана. Деректер әдетте zlib немесе gzip орамасымен жазылады, ол деректерге бас және аяқ жазуды қосып, ағынды идентификациясы мен DEFLATE деректерінде болмайтын қателерді анықтауды қамтамасыз етеді. zlib орамасы (RFC 1950) gzip орамасынан (RFC 1952) кішірек, себебі соңғысы файл атауын және басқа файлдық жүйе туралы ақпаратты сақтайды.

Алгоритм

2018 жылға қарай zlib тек бір ғана алгоритмді қолдайды, ол DEFLATE деп аталады және ол LZ77 (Lempel–Ziv 1977) нұсқасының және Хаффман кодтауының үйлесімін пайдаланады. Бұл алгоритм жүйе ресурстарын аз қолдана отырып, әртүрлі деректерді жақсы қысуға мүмкіндік береді. Бұл алгоритм Zip архив форматында да қолданылады. Зақымдану қағазы басқа алгоритмдерге мүмкіндік береді, бірақ қазірге ешқайсысы іске асырылмаған.

Ресурстарды пайдалану

zlib процессор мен жадты пайдалануды басқару мүмкіндіктерін ұсынады. Қысу жылдамдығы мен сапасын өзара алмастыратын қысу деңгейінің мәнін беруге болады. Сондай-ақ, жадты үнемдеуге арналған құралдар да бар, олар жады шектеулі орталарда, мысалы, кейбір кіріктірілген жүйелерде пайдалы.

Стратегия

Сығуды нақты дерек түрлеріне оңтайландыруға болады. Егер кітапхананы әрдайым белгілі бір деректерді сығыстыру үшін қолдансаңыз, онда нақты стратегияны қолдану сығылу мен өнімділікті жақсартуы мүмкін. Мысалы, егер деректерде ұзақ қайталанатын байттар болса, жүріс ұзындығын кодтау (RLE) стратегиясы жоғары жылдамдықпен жақсы нәтижелер беруі мүмкін. Жалпы деректер үшін әдепкі стратегия ұсынылады.

Қателерді өңдеу

Сығылған деректердегі қателер анықталып, елеусіз қалдырылуы мүмкін. Бұдан әрі, егер "толық тазалау" нүктелері сығылған ағынға жазылса, зақымдалған деректер жіберіліп тасталуы мүмкін, ал декомпрессия келесі тазалау нүктесінде қайта синхрондалады – бірақ зақымдалған деректерді қалпына келтіру көзделмейді. Толық тазалау нүктелері сенімсіз каналдар арқылы берілетін үлкен дерек ағындары үшін пайдалы, онда кейбір деректердің жоғалуы маңызды емес, мысалы, кейбір мультимедиа қолданбаларында. Дегенмен, көптеген тазалау нүктелерін жасау жылдамдыққа және сығылу деңгейіне (қатынасына) әсер етуі мүмкін.

Деректер ұзындығы

Сығылатын немесе сығылыстан шығарылатын деректердің ұзындығына шектеу жоқ. Кітапханаға қайта-қайта шақыру дерек блоктарының шексіз санын өңдеуге мүмкіндік береді. Ұзақ дерек ағыны үшін кейбір қосымша кодтар (сандар) ағып кетуі мүмкін, бірақ бұл нақты сығылуға немесе сығылыстан шығаруға әсер етпейді. Ұзақ (немесе шексіз) дерек ағынын сығылғанда, жүйелі түрде толық тазарту нүктелерін жазу ұсынылады.