亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? algorithm.txt

?? tightvnc源碼
?? TXT
字號:
1. Compression algorithm (deflate)The deflation algorithm used by gzip (also zip and zlib) is a variation ofLZ77 (Lempel-Ziv 1977, see reference below). It finds duplicated strings inthe input data.  The second occurrence of a string is replaced by apointer to the previous string, in the form of a pair (distance,length).  Distances are limited to 32K bytes, and lengths are limitedto 258 bytes. When a string does not occur anywhere in the previous32K bytes, it is emitted as a sequence of literal bytes.  (In thisdescription, `string' must be taken as an arbitrary sequence of bytes,and is not restricted to printable characters.)Literals or match lengths are compressed with one Huffman tree, andmatch distances are compressed with another tree. The trees are storedin a compact form at the start of each block. The blocks can have anysize (except that the compressed data for one block must fit inavailable memory). A block is terminated when deflate() determines thatit would be useful to start another block with fresh trees. (This issomewhat similar to the behavior of LZW-based _compress_.)Duplicated strings are found using a hash table. All input strings oflength 3 are inserted in the hash table. A hash index is computed forthe next 3 bytes. If the hash chain for this index is not empty, allstrings in the chain are compared with the current input string, andthe longest match is selected.The hash chains are searched starting with the most recent strings, tofavor small distances and thus take advantage of the Huffman encoding.The hash chains are singly linked. There are no deletions from thehash chains, the algorithm simply discards matches that are too old.To avoid a worst-case situation, very long hash chains are arbitrarilytruncated at a certain length, determined by a runtime option (levelparameter of deflateInit). So deflate() does not always find the longestpossible match but generally finds a match which is long enough.deflate() also defers the selection of matches with a lazy evaluationmechanism. After a match of length N has been found, deflate() searches fora longer match at the next input byte. If a longer match is found, theprevious match is truncated to a length of one (thus producing a singleliteral byte) and the process of lazy evaluation begins again. Otherwise,the original match is kept, and the next match search is attempted only Nsteps later.The lazy match evaluation is also subject to a runtime parameter. Ifthe current match is long enough, deflate() reduces the search for a longermatch, thus speeding up the whole process. If compression ratio is moreimportant than speed, deflate() attempts a complete second search even ifthe first match is already long enough.The lazy match evaluation is not performed for the fastest compressionmodes (level parameter 1 to 3). For these fast modes, new stringsare inserted in the hash table only when no match was found, orwhen the match is not too long. This degrades the compression ratiobut saves time since there are both fewer insertions and fewer searches.2. Decompression algorithm (inflate)2.1 IntroductionThe real question is, given a Huffman tree, how to decode fast.  The mostimportant realization is that shorter codes are much more common thanlonger codes, so pay attention to decoding the short codes fast, and letthe long codes take longer to decode.inflate() sets up a first level table that covers some number of bits ofinput less than the length of longest code.  It gets that many bits from thestream, and looks it up in the table.  The table will tell if the nextcode is that many bits or less and how many, and if it is, it will tellthe value, else it will point to the next level table for which inflate()grabs more bits and tries to decode a longer code.How many bits to make the first lookup is a tradeoff between the time ittakes to decode and the time it takes to build the table.  If building thetable took no time (and if you had infinite memory), then there would onlybe a first level table to cover all the way to the longest code.  However,building the table ends up taking a lot longer for more bits since shortcodes are replicated many times in such a table.  What inflate() does issimply to make the number of bits in the first table a variable, and set itfor the maximum speed.inflate() sends new trees relatively often, so it is possibly set for asmaller first level table than an application that has only one tree forall the data.  For inflate, which has 286 possible codes for theliteral/length tree, the size of the first table is nine bits.  Also thedistance trees have 30 possible values, and the size of the first table issix bits.  Note that for each of those cases, the table ended up one bitlonger than the ``average'' code length, i.e. the code length of anapproximately flat code which would be a little more than eight bits for286 symbols and a little less than five bits for 30 symbols.  It would beinteresting to see if optimizing the first level table for otherapplications gave values within a bit or two of the flat code size.2.2 More details on the inflate table lookupOk, you want to know what this cleverly obfuscated inflate tree actually  looks like.  You are correct that it's not a Huffman tree.  It is simply a  lookup table for the first, let's say, nine bits of a Huffman symbol.  The  symbol could be as short as one bit or as long as 15 bits.  If a particular  symbol is shorter than nine bits, then that symbol's translation is duplicatedin all those entries that start with that symbol's bits.  For example, if the  symbol is four bits, then it's duplicated 32 times in a nine-bit table.  If a  symbol is nine bits long, it appears in the table once.If the symbol is longer than nine bits, then that entry in the table points  to another similar table for the remaining bits.  Again, there are duplicated  entries as needed.  The idea is that most of the time the symbol will be shortand there will only be one table look up.  (That's whole idea behind data  compression in the first place.)  For the less frequent long symbols, there  will be two lookups.  If you had a compression method with really long  symbols, you could have as many levels of lookups as is efficient.  For  inflate, two is enough.So a table entry either points to another table (in which case nine bits in  the above example are gobbled), or it contains the translation for the symbol  and the number of bits to gobble.  Then you start again with the next  ungobbled bit.You may wonder: why not just have one lookup table for how ever many bits the  longest symbol is?  The reason is that if you do that, you end up spending  more time filling in duplicate symbol entries than you do actually decoding.   At least for deflate's output that generates new trees every several 10's of  kbytes.  You can imagine that filling in a 2^15 entry table for a 15-bit code  would take too long if you're only decoding several thousand symbols.  At the  other extreme, you could make a new table for every bit in the code.  In fact,that's essentially a Huffman tree.  But then you spend two much time  traversing the tree while decoding, even for short symbols.So the number of bits for the first lookup table is a trade of the time to  fill out the table vs. the time spent looking at the second level and above ofthe table.Here is an example, scaled down:The code being decoded, with 10 symbols, from 1 to 6 bits long:A: 0B: 10C: 1100D: 11010E: 11011F: 11100G: 11101H: 11110I: 111110J: 111111Let's make the first table three bits long (eight entries):000: A,1001: A,1010: A,1011: A,1100: B,2101: B,2110: -> table X (gobble 3 bits)111: -> table Y (gobble 3 bits)Each entry is what the bits decode to and how many bits that is, i.e. how  many bits to gobble.  Or the entry points to another table, with the number ofbits to gobble implicit in the size of the table.Table X is two bits long since the longest code starting with 110 is five bitslong:00: C,101: C,110: D,211: E,2Table Y is three bits long since the longest code starting with 111 is six  bits long:000: F,2001: F,2010: G,2011: G,2100: H,2101: H,2110: I,3111: J,3So what we have here are three tables with a total of 20 entries that had to  be constructed.  That's compared to 64 entries for a single table.  Or  compared to 16 entries for a Huffman tree (six two entry tables and one four  entry table).  Assuming that the code ideally represents the probability of  the symbols, it takes on the average 1.25 lookups per symbol.  That's comparedto one lookup for the single table, or 1.66 lookups per symbol for the  Huffman tree.There, I think that gives you a picture of what's going on.  For inflate, the  meaning of a particular symbol is often more than just a letter.  It can be a  byte (a "literal"), or it can be either a length or a distance which  indicates a base value and a number of bits to fetch after the code that is  added to the base value.  Or it might be the special end-of-block code.  The  data structures created in inftrees.c try to encode all that information  compactly in the tables.Jean-loup Gailly        Mark Adlerjloup@gzip.org          madler@alumni.caltech.eduReferences:[LZ77] Ziv J., Lempel A., ``A Universal Algorithm for Sequential DataCompression,'' IEEE Transactions on Information Theory, Vol. 23, No. 3,pp. 337-343.``DEFLATE Compressed Data Format Specification'' available inftp://ds.internic.net/rfc/rfc1951.txt

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲美腿欧美偷拍| 成人黄色在线看| 欧美日韩免费在线视频| 亚洲摸摸操操av| 99re热这里只有精品免费视频| 亚洲国产精品av| 成人一区二区三区中文字幕| 久久久99精品免费观看| 粉嫩绯色av一区二区在线观看| 国产亚洲一区二区三区在线观看 | 欧洲一区在线观看| 天天综合色天天综合| 欧美日韩mp4| 韩国视频一区二区| 亚洲特级片在线| 91精品婷婷国产综合久久竹菊| 奇米四色…亚洲| 久久日韩精品一区二区五区| 精品亚洲国产成人av制服丝袜| 精品电影一区二区三区| 99久久久精品免费观看国产蜜| 一卡二卡欧美日韩| 欧美二区三区的天堂| 国产精品综合一区二区| 亚洲欧洲国产专区| 日韩免费观看高清完整版| 久久国产精品99久久人人澡| 欧美激情艳妇裸体舞| 日本道精品一区二区三区| 久久精品国产精品亚洲红杏| 亚洲色图欧美在线| 国产日本欧美一区二区| 欧美日韩免费观看一区三区| 国产91对白在线观看九色| 亚洲二区在线观看| 中文字幕免费不卡在线| 日韩一区二区三区四区五区六区| 欧美精品精品一区| 一区二区三区成人在线视频| 精品久久人人做人人爰| 欧美一区欧美二区| 9191久久久久久久久久久| 波多野结衣中文字幕一区| 国产一区二区精品久久91| 免费三级欧美电影| 久久国产尿小便嘘嘘尿| 久久精品国产免费看久久精品| 日韩精品欧美精品| 麻豆一区二区99久久久久| 日本怡春院一区二区| 秋霞午夜鲁丝一区二区老狼| 午夜精彩视频在线观看不卡| 亚洲成在线观看| 久久国产精品99久久久久久老狼| 久久国产尿小便嘘嘘| 国产精品亚洲第一| 日本道精品一区二区三区| 欧美怡红院视频| 欧美成人a视频| 国产精品视频一二| 亚洲一级在线观看| 黄色资源网久久资源365| www.日韩精品| 91 com成人网| 国产精品欧美综合在线| 午夜欧美电影在线观看| 国产黄色91视频| 欧美在线|欧美| 久久久亚洲国产美女国产盗摄| 国产精品欧美精品| 蜜臀av一区二区在线免费观看| 99视频在线精品| 精品美女一区二区| 亚洲在线免费播放| www.亚洲在线| 欧美精品一区二区三区在线播放| 亚洲视频 欧洲视频| 国产精品一区久久久久| 国产aⅴ精品一区二区三区色成熟| 国产jizzjizz一区二区| 日韩欧美在线123| 日韩精品国产欧美| 欧美体内she精视频| 亚洲欧美日韩国产成人精品影院 | 精品久久久影院| 天堂蜜桃91精品| 欧美日韩在线免费视频| 一区二区视频在线| 成人丝袜高跟foot| 国产日产精品一区| 成人白浆超碰人人人人| 国产婷婷一区二区| 国产91丝袜在线播放九色| 精品国产免费人成在线观看| 蜜臀a∨国产成人精品| 欧美一区二区三区色| 久久精品国产亚洲5555| 精品久久久久久最新网址| 国产乱理伦片在线观看夜一区| 欧美一级高清片在线观看| 日韩在线a电影| 2017欧美狠狠色| 丁香六月久久综合狠狠色| 国产精品妹子av| 欧美亚洲动漫制服丝袜| 蜜桃91丨九色丨蝌蚪91桃色| 精品国产亚洲一区二区三区在线观看 | 久久久久国产精品麻豆ai换脸| 国产麻豆精品久久一二三| 国产无遮挡一区二区三区毛片日本| 国产一区二区看久久| 国产亚洲精品精华液| 99re这里只有精品首页| 亚洲一区二区三区视频在线播放| 在线精品视频小说1| 久久国产精品区| 亚洲精品福利视频网站| 日韩欧美成人午夜| 国产一区二区精品久久91| 日本一区二区免费在线| 欧美视频在线观看一区| 国产美女一区二区| 亚洲一区二区精品视频| 国产三级欧美三级| 欧美成人精品高清在线播放| 在线观看一区二区视频| 国产一区二区美女诱惑| 亚洲成a人片综合在线| 亚洲国产激情av| 精品av综合导航| 欧美精品tushy高清| 日本韩国欧美三级| 成人黄色软件下载| 国产91丝袜在线观看| 国产99精品在线观看| 国产一区高清在线| 久久激情五月激情| 日本aⅴ精品一区二区三区| 亚洲激情图片小说视频| 国产精品国模大尺度视频| 国产亚洲欧洲997久久综合| 日韩午夜激情av| 精品少妇一区二区三区免费观看 | 欧美午夜精品免费| 色噜噜夜夜夜综合网| 91精品1区2区| 欧美日本视频在线| 欧美日韩国产欧美日美国产精品| 欧美性受xxxx| 欧美四级电影网| 欧美一区二区啪啪| 26uuu久久天堂性欧美| 久久综合中文字幕| 国产精品国产三级国产aⅴ无密码| 日本一区二区三区电影| 一区二区三区波多野结衣在线观看| 一区二区免费看| 亚洲成人久久影院| 激情深爱一区二区| 色天使色偷偷av一区二区| 欧美一a一片一级一片| 91精品国产综合久久小美女| 久久综合久久鬼色| 国产三区在线成人av| 国产精品国产成人国产三级| 亚洲一区二区三区激情| 久久精品国产亚洲高清剧情介绍| 亚洲精品免费在线| 久久99精品久久只有精品| 99久久国产综合精品麻豆| 91精品国产手机| 亚洲精品大片www| 盗摄精品av一区二区三区| 制服丝袜成人动漫| 亚洲精品免费电影| 成人激情开心网| 日韩一级免费观看| 亚洲成人av免费| 成人a免费在线看| 久久久久久久久久久电影| 偷窥少妇高潮呻吟av久久免费| 色综合天天在线| 国产精品美女久久久久久| 激情小说欧美图片| 欧美成人精品3d动漫h| 日本亚洲三级在线| 欧美日韩亚洲综合一区二区三区| 亚洲精选视频免费看| jiyouzz国产精品久久| 国产精品午夜电影| 国产一区二区三区精品欧美日韩一区二区三区 | 国产成人8x视频一区二区 | 国产香蕉久久精品综合网| 国产在线不卡视频| 久久精品网站免费观看| 欧美精品乱码久久久久久按摩| 久久久蜜臀国产一区二区| 久久99久久久久| 精品国产1区2区3区| 国产91色综合久久免费分享|