问题描述
DEFLATE 算法的许多实现允许基于流的输入。一个例子是 Java 的 // Between 10:00:00 and 11:59:59
db.collection.aggregate([
{ $set: { parts: { $datetoParts: { date: "$delivery_slot_date" } } } },{ $match: { "parts.hour": { $gte: 10,$lt: 12 } } },])
// Between 10:10:00 and 10:29:59
db.collection.aggregate([
{ $set: { parts: { $datetoParts: { date: "$delivery_slot_date" } } } },{ $match: { "parts.hour": 10,"parts.minute": { $gte: 10,$lt: 30 } } }
])
。据我所知,DEFLATE 在压缩之前构建了一个霍夫曼树,并在 .zip 文件的开始处写入这棵树。
然而,为了构建霍夫曼树,程序需要最常出现的字符的计数,只有在读取文件后才能获得。如果流太大以至于无法一次放入内存,那么如何构建霍夫曼树?
解决方法
DEFLATE 以块为单位压缩数据。每个块都包含自己的树/计数,未压缩通常约为 16KB。
格式在RFC 1951
中指定