Zlib - Zlib
![]() | |
První vydání | 1. května 1995 |
---|---|
Stabilní uvolnění | 1.2.11 / 15. ledna 2017 |
Úložiště | ![]() |
Napsáno | C |
Operační systém | Cross-platform |
Typ | Komprese dat |
Licence | licence zlib |
webová stránka | zlib |
zlib je softwarová knihovna používá komprese dat. zlib napsal Jean-loup Gailly a Mark Adler a je abstrakce z DEFLATE kompresní algoritmus použitý v jejich gzip program pro kompresi souborů. zlib je také klíčovou součástí mnoha softwarových platforem, včetně Linux, Operační Systém Mac, a iOS. Používá se také na herních konzolách, jako je PlayStation 4, PlayStation 3, Wii U, Wii, Xbox One a Xbox 360.
První veřejná verze zlib, 0.9, byla vydána 1. května 1995 a původně byla určena pro použití s libpng knihovna obrázků. to je svobodný software, distribuováno pod licence zlib.
Schopnosti
Zapouzdření
komprimovaná data zlib se obvykle zapisují pomocí obálky gzip nebo zlib. Obal zapouzdřuje surový DEFLATE data přidáním záhlaví a upoutávky. To poskytuje identifikaci streamu a detekci chyb, které nejsou poskytovány nezpracovanými daty DEFLATE.
Hlavička gzip, používaná všudypřítomně gzip formát souboru, je větší než záhlaví zlib, protože ukládá název souboru a další informace o systému souborů.
Algoritmus
Od září 2018[Aktualizace], zlib podporuje pouze jeden algoritmus s názvem DEFLATE, který používá kombinaci varianty LZ77 (Lempel – Ziv 1977) a Huffmanovo kódování[1]. Tento algoritmus poskytuje dobrou kompresi na širokou škálu dat s minimálním využitím systémových prostředků. Toto je také algoritmus používaný v Formát archivu ZIP. Záhlaví umožňuje další algoritmy, ale žádný z nich není aktuálně implementován.
Využití zdrojů
zlib poskytuje zařízení pro řízení využití procesoru a paměti. Může být zadána hodnota úrovně komprese, která vyměňuje rychlost za kompresi. K dispozici jsou také zařízení pro zachování paměti, užitečné v prostředích s omezenou pamětí, jako jsou některé vestavěné systémy.
Strategie
Kompresi lze optimalizovat pro konkrétní typy dat. Pokud někdo používá knihovnu ke komprimaci konkrétních typů dat, pak může použití konkrétní strategie zlepšit kompresi a výkon. Například pokud data obsahují dlouhé délky opakovaných bajtů, kódování délky běhu Strategie (RLE) může poskytnout dobré výsledky při vyšší rychlosti. U obecných dat je upřednostňována výchozí strategie.
Vypořádání se s chybou
Mohou být detekovány a přeskočeny chyby v komprimovaných datech. Dále, pokud se do komprimovaného streamu zapisují body „úplného vyprázdnění“, lze přeskočit poškozená data a dekomprese se znovu synchronizuje v příštím vyprázdňovacím bodě - ačkoli není k dispozici zotavení po chybě poškozených dat. Body s úplným vyprázdněním jsou užitečné pro velké datové toky na nespolehlivých kanálech, kde je ztráta dat nedůležitá, například v některých multimediálních aplikacích. Vytvoření mnoha proplachovacích bodů však může ovlivnit rychlost i velikost (poměr) komprese.
Délka dat
Délka dat, která lze komprimovat nebo dekomprimovat, není nijak omezena. Opakovaná volání do knihovny umožňují zpracování neomezeného počtu bloků dat. Některé doplňkové kódy (čítače) mohou trpět přetečením u dlouhých datových toků, ale to neovlivní skutečnou kompresi nebo dekompresi.
Při komprimaci dlouhého (nebo nekonečného) datového proudu je vhodné psát pravidelné body s úplným vyprázdněním.
Aplikace
Dnes je zlib něco jako de facto Standard, do té míry, že zlib a DEFLATE se v dokumentech standardů často používají zaměnitelně, přičemž tisíce aplikací se na něj spoléhají při kompresi, ať už přímo nebo nepřímo.[2] Tyto zahrnují:
- The Linuxové jádro, kde se zlib používá k implementaci komprimovaných síťových protokolů, komprimované souborové systémy a dekomprimovat obraz jádra při spuštění.
- GNU Binutils a GNU Debugger (GDB)
- libpng, referenční implementace pro PNG formát obrázku, který určuje DEFLATE jako kompresi streamu pro svůj bitmapa data.
- libwww, API pro webové aplikace jako internetové prohlížeče.
- The Apache HTTP Server, který používá k implementaci zlib HTTP / 1.1.
- Podobně kučera knihovna používá zlib k dekompresi odpovědí HTTP.[3]
- The OpenSSH klient a server, kteří se spoléhají na zlib, aby provedli volitelnou kompresi nabízenou Zabezpečte Shell protokol.
- The OpenSSL a GnuTLS bezpečnostní knihovny, které lze volitelně použít ke kompresi zlib TLS připojení.
- The FFmpeg multimediální knihovna, která používá zlib ke čtení a zápisu DEFLATE komprimovaných částí formáty streamu, jako Matroska.
- The rsync vzdálený synchronizátor souborů, který používá zlib k implementaci volitelné komprese protokolu.
- The dpkg a RPM správci balíčků, které používají zlib k rozbalení souborů z komprimovaných softwarových balíčků.
- The Apache Subversion a CVS ovládání verze systémy, které používají zlib ke kompresi provozu do a ze vzdálených úložišť.
- The Apache ORC sloupcový formát úložiště dat používá jako výchozí metodu komprese ZLib.[4]
- The Git ovládání verze systém používá zlib k ukládání obsahu svých datových objektů (objekty BLOB, stromy, revize a značky).
- The PostgreSQL RDBMS používá pro zálohování databáze zlib s vlastním formátem výpisu (pg_dump -Fc).
- Třída System.IO.Compression.DeflateStream společnosti Microsoft .NET Framework 2,0 a vyšší.[5]
- Nástroj "vyfouknout" v TORNADU jako součást VxWorks Operační systém od Wind River Systems používá zlib ke kompresi bootovacích ROM obrazů.
zlib se také používá v mnoha vestavěných zařízeních, jako je Apple iPhone a Sony PlayStation 3, protože kód je přenosný, svobodně licencovaný a má relativně malou paměťovou stopu.
Vidlice
Běžně používaná knihovna postavená na staré kódové základně, zlib, je také často rozeklaný třetími stranami, které požadují vylepšení této knihovny:
- Intel má vysoce výkonnou vidlici zlib.[6]
- CloudFlare udržuje vysoce výkonnou vidlici s „masivním“ vylepšením.[7]
Viz také
Reference
- ^ https://tools.ietf.org/html/rfc1951
- ^ Gailly, Jean-loup; Adler, Mark (18.04.2002), aplikace zlib
- ^ https://stackoverflow.com/questions/26244134/why-does-curl-use-zlib
- ^ https://blog.cloudera.com/orcfile-in-hdp-2-better-compression-better-performance/ uvést
orc.compress = Zlib
jako výchozí. - ^ System.IO.Compression.DeflateStream. Knihovna MSDN.
- ^ „Funkce kódování Intel® IPP ZLIB“. Software Intel. 31. července 2019. Citováno 18. ledna 2020.
- ^ „Boj proti rakovině: neočekávaná výhoda otevřeného získávání našeho kódu“. Blog Cloudflare. 8. července 2015.