<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Zlib</id>
	<title>Zlib - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Zlib"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Zlib&amp;action=history"/>
	<updated>2026-07-04T05:00:23Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=Zlib&amp;diff=307907&amp;oldid=prev</id>
		<title>imported&gt;AromaTake：​調整內部連結</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Zlib&amp;diff=307907&amp;oldid=prev"/>
		<updated>2025-05-21T03:42:19Z</updated>

		<summary type="html">&lt;p&gt;調整內部連結&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{lowercase}}&lt;br /&gt;
{{not|Z-Library|zlib许可证{{!}}-{zh-cn:zlib许可证;zh-tw:zlib授權條款}-}}&lt;br /&gt;
{{Rough translation|time=2021-01-29T08:56:50+00:00}}&lt;br /&gt;
{{lowercase}}&lt;br /&gt;
{{NoteTA|G1=IT|G2=FL}}&lt;br /&gt;
{{infobox software&lt;br /&gt;
| name = zlib&lt;br /&gt;
| logo = [[File:Zlib 3D green.png|48px|zlib logo]]&lt;br /&gt;
| released = 0.9（{{Start date and age|1995|05|01}}）&lt;br /&gt;
| latest_release_version = 1.3.1&lt;br /&gt;
| latest_release_date = {{Start date and age|2024|01|22}}&lt;br /&gt;
| programming language = [[C语言|C]]&lt;br /&gt;
| operating_system = [[跨平台]]&lt;br /&gt;
| genre = [[数据压缩]]&lt;br /&gt;
| license = [[zlib授权]]&lt;br /&gt;
| website = {{URL|zlib.net}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;zlib&amp;#039;&amp;#039;&amp;#039;是一个用于[[資料壓縮]]的[[函式庫]]，由Jean-loup Gailly與Mark Adler開發，初版0.9版发布于1995年5月1日。zlib使用[[抽象化 (计算机科学)|抽象化]]的[[DEFLATE]][[演算法]]，最初是為[[libpng]]函式庫所设计，後來逐渐被許多其他軟體使用。此函式庫為[[自由軟體]]，使用zlib授權许可。&lt;br /&gt;
&lt;br /&gt;
截至2007年3月，zlib是包含在[[Coverity]]、由[[美国国土安全部]]赞助者选择继续审查的开源项目&amp;lt;ref&amp;gt;{{citation|title = Press release: Critical Open Source Software Projects Receive 6,000 Bug Fixes in First Year of Coverity Scan Site|url = http://www.coverity.com/html/press_story35_03_27_07.html|date = 2007-03-27|accessdate = 2007-12-10|publisher = [[Coverity]]|deadurl = yes|archiveurl = https://web.archive.org/web/20071212094641/http://www.coverity.com/html/press_story35_03_27_07.html|archivedate = 2007-12-12}}.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
== 功能 ==&lt;br /&gt;
&lt;br /&gt;
=== 数据头 ===&lt;br /&gt;
zlib在压缩数据时支持使用gzip数据头（header）、zlib数据头或者不使用数据头。通常情况下，数据压缩使用zlib数据头，因为它提供了错误数据检测的功能。当数据不使用数据头写入时，由于没有任何错误检测的原始[[DEFLATE]]数据，那么解压缩的软件将无法得知压缩数据在什么地方结束。&lt;br /&gt;
&lt;br /&gt;
gzip数据头比zlib数据头要大，因为它保存了文件名和其他文件系统信息——事实上，这等同于广泛使用的[[gzip]]文件的数据头格式。注意zlib函式库本身并不能创建一个gzip文件，但是它可以将压缩数据写入到一个现成的、具有gzip文件头的文件中。&lt;br /&gt;
&lt;br /&gt;
=== 演算法 ===&lt;br /&gt;
截至2018年9月，zlib仅支持一个[[LZ77]]的变种算法，即[[DEFLATE]]的算法。&lt;br /&gt;
&lt;br /&gt;
这个算法使用的系统资源很少，并且对各种数据都能提供很好的压缩效果。这种算法也由[[ZIP (文件格式)|ZIP檔案]]所使用。（尽管zip文件格式也支持几种其他的算法）。&lt;br /&gt;
&lt;br /&gt;
zlib的数据头理论上允许使用其他算法，但目前为止仍然只有这一种算法被使用。&lt;br /&gt;
&lt;br /&gt;
=== 使用资源 ===&lt;br /&gt;
zlib提供了帮助控制CPU和内存资源使用的方法。通过设置不同的压缩级别数值，即可改变压缩率和压缩速度。&lt;br /&gt;
&lt;br /&gt;
除此之外，zlib还提供了内存管理的功能，以便于在诸如嵌入式系统等资源较为受限的环境中使用。&lt;br /&gt;
&lt;br /&gt;
=== 策略 ===&lt;br /&gt;
zlib的压缩算法可以针对特定类型的数据进行优化。&lt;br /&gt;
&lt;br /&gt;
若使用者总是使用zlib压缩特定类型的数据，则可以选择有针对性的策略来提高压缩效率和性能。例如，如果使用者的数据包含很长的重复数据，那么可以用[[游程编码|RLE]]（运行长度编码）策略进行优化。&lt;br /&gt;
&lt;br /&gt;
对于一般的数据，默认策略往往是最佳的。&lt;br /&gt;
&lt;br /&gt;
=== 错误处理 ===&lt;br /&gt;
当采用zlib或gzip数据头时，zlib可以检测并跳过压缩文件数据中的错误。&lt;br /&gt;
&lt;br /&gt;
此外，如果全刷新点（full-flush points）被写入到压缩后的数据流中，那么zlib可以跳过损坏的数据并继续解压缩，并重新同步到下个全刷新点。（尽管zlib并不能纠正错误并修复损坏的数据）。全刷新点技术对于在不可靠的传输途径上的大数据流是很有用的，因为这种场景下丢失一些过去的数据很可能并没有太大影响（比如一些多媒体应用场景）。然而，建立太多的全刷新点会极大地影响速度和压缩率。&lt;br /&gt;
&lt;br /&gt;
=== 数据长度 ===&lt;br /&gt;
zlib并没有对于压缩和解压缩数据长度的限制，通过重复调用库函数可以处理无限多的数据块。一些辅助代码（计数变量）可能会因此溢出，但是不影响实际的压缩和解压缩。当压缩一个较长或是无限长数据流时，最好写入全刷新点。&lt;br /&gt;
&lt;br /&gt;
== 使用zlib的軟體 ==&lt;br /&gt;
zlib已经成为了一种事实上的[[业界标准]]，以至于在标准文档中，zlib和[[DEFLATE]]常常被互换使用。数以千计的应用程序直接或间接依靠zlib压缩函式库&amp;lt;ref&amp;gt;{{citation|title = zlib Applications|url = http://zlib.net/apps.html|date = 2002-04-18|first1 = Jean-loup|last1 = Gailly|first2 = Mark|last2 = Adler|accessdate = 2009-01-18|archive-date = 2019-06-10|archive-url = https://web.archive.org/web/20190610212240/http://zlib.net/apps.html|dead-url = no}}.&amp;lt;/ref&amp;gt;，包括：&lt;br /&gt;
*[[Linux核心]]：使用zlib以實作網路協定的壓縮、[[檔案系統]]的壓縮以及開機時解壓縮自身的核心。&lt;br /&gt;
* [[libpng]]，用于[[PNG]]图形格式的一个实现，对[[位图 (数据结构)|位图]]数据规定了DEFLATE作为流压缩方法。&lt;br /&gt;
*[[Apache HTTP Server|Apache]]：使用zlib實作[[超文本传输协议|http 1.1]]。&lt;br /&gt;
*[[OpenSSH]]、[[OpenSSL]]：以zlib達到最佳化加密網路傳輸。&lt;br /&gt;
*[[FFmpeg]]：以zlib讀寫[[Matroska]]等以DEFLATE演算法壓縮的[[多媒體]][[视频文件格式|串流格式]]。&lt;br /&gt;
*[[rsync]]：以zlib最佳化遠端同步時的傳輸。&lt;br /&gt;
* [[Subversion]]、[[Git]]和[[協作版本系統|CVS]]等[[版本控制|版本控制系统]]，使用zlib来压缩和远端仓库的通讯流量。&lt;br /&gt;
*[[dpkg]]和[[RPM套件管理員|RPM]]等包管理软件：以zlib解壓縮RPM或者其他封包。&lt;br /&gt;
&lt;br /&gt;
因为其代码的可移植性、宽松的授權许可以及较小的内存占用，zlib在许多嵌入式设备中也有应用。&lt;br /&gt;
&lt;br /&gt;
== 参见 ==&lt;br /&gt;
{{portalpar|自由軟體}}&lt;br /&gt;
* [[gzip]]&lt;br /&gt;
* [[DEFLATE]]&lt;br /&gt;
* RFC 1950, RFC 1951, RFC 1952&lt;br /&gt;
* [[LZ77]]&lt;br /&gt;
* [[ZIP (文件格式)]]&lt;br /&gt;
&lt;br /&gt;
== 参考资料 ==&lt;br /&gt;
*[https://web.archive.org/web/20190218131020/https://www.openfoundry.org/index.php?Itemid=192&amp;amp;id=36&amp;amp;option=com_content&amp;amp;task=view 自由軟體鑄造場]&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
== 外部連結 ==&lt;br /&gt;
*[http://zlib.net/ zlib官方網站] {{Wayback|url=http://zlib.net/ |date=20200612084417 }}&lt;br /&gt;
*[https://archive.today/20130424170957/http://www.leapsoul.cn/?tag=php-zlib%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95 php-zlib使用方法]&lt;br /&gt;
&lt;br /&gt;
[[Category:自由發展元件與函式庫]]&lt;br /&gt;
[[Category:自由軟體]]&lt;br /&gt;
[[Category:数据压缩]]&lt;br /&gt;
[[Category:C函式库]]&lt;/div&gt;</summary>
		<author><name>imported&gt;AromaTake</name></author>
	</entry>
</feed>