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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? algorithm.txt

?? tightvnc 1.3.9 的源代碼
?? 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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区电影在线观看| 国产99一区视频免费| 天堂久久久久va久久久久| 日韩av在线免费观看不卡| 日本欧美久久久久免费播放网| 日本美女视频一区二区| 奇米影视7777精品一区二区| 全部av―极品视觉盛宴亚洲| 精品无人码麻豆乱码1区2区| 国产精品18久久久久久久久 | 色综合久久久久综合99| 91国产精品成人| wwwwww.欧美系列| 亚洲精品国产一区二区三区四区在线| 亚洲福利一二三区| 国产久卡久卡久卡久卡视频精品| 91亚洲大成网污www| 日韩视频免费观看高清完整版在线观看 | 亚洲欧美日韩国产综合| 国产网站一区二区| 亚洲六月丁香色婷婷综合久久 | 亚洲bt欧美bt精品| 成人亚洲一区二区一| 欧美日韩国产精品成人| 中文字幕亚洲在| 韩国一区二区视频| 欧美人牲a欧美精品| 亚洲欧美另类在线| 国内精品不卡在线| 日韩一级二级三级| 亚洲一区二区三区四区不卡| 成人教育av在线| 亚洲精品一区二区三区福利 | 91免费在线播放| 成人午夜又粗又硬又大| 3d成人h动漫网站入口| 欧美国产日韩一二三区| 五月激情综合网| 欧美日韩另类一区| 久久精品一二三| 一区二区三区久久| 成人免费视频免费观看| 国产亚洲短视频| 美女一区二区久久| 欧美老女人第四色| 亚洲免费视频成人| aaa欧美大片| 中文字幕欧美激情| 日韩成人免费电影| 欧美老女人第四色| 国产精品免费久久| 不卡免费追剧大全电视剧网站| 不卡一区中文字幕| 欧美va日韩va| 蜜臀av一区二区三区| 色综合久久99| 亚洲一二三区在线观看| 欧美色综合网站| 日本在线不卡一区| 日韩三级高清在线| 久久激五月天综合精品| 26uuu精品一区二区在线观看| 蜜臀av性久久久久蜜臀aⅴ四虎 | 国产乱码字幕精品高清av| 日韩一区精品字幕| 91福利国产成人精品照片| 国产日韩欧美亚洲| 成人精品视频一区二区三区| 欧美国产精品久久| 色婷婷亚洲一区二区三区| 亚洲gay无套男同| 久久人人97超碰com| 菠萝蜜视频在线观看一区| 一区二区激情小说| 日韩三级精品电影久久久| www.成人在线| 蜜臀99久久精品久久久久久软件| 国产亚洲精品超碰| 欧美色区777第一页| 国产·精品毛片| 午夜精品123| 欧美国产日韩精品免费观看| 欧美日韩免费在线视频| 国产91在线观看| 国模娜娜一区二区三区| 亚洲午夜精品17c| 国产午夜久久久久| 日韩三级在线观看| 欧美日韩一级黄| 成人黄页毛片网站| 国产综合久久久久影院| 天天亚洲美女在线视频| 亚洲男同1069视频| 中文字幕在线不卡一区二区三区| 在线免费观看日本一区| 韩国女主播一区| 久久99久久久欧美国产| 国产aⅴ综合色| 午夜不卡av在线| 午夜日韩在线电影| 一区二区高清免费观看影视大全| 中文字幕在线不卡一区| 亚洲国产成人自拍| 日韩女优av电影| 精品成人在线观看| 欧美mv和日韩mv国产网站| 精品区一区二区| 精品入口麻豆88视频| 亚洲精品一线二线三线| 久久九九国产精品| 国产欧美日韩三级| 中文字幕佐山爱一区二区免费| 国产精品天干天干在观线| 亚洲精品中文在线影院| 国产精品久久看| 欧美日韩国产一级| 欧美日韩极品在线观看一区| 色哟哟国产精品| 在线成人av网站| 久久久久久影视| 亚洲欧美日韩国产手机在线 | 欧美人狂配大交3d怪物一区 | 久久精品一区二区三区四区| 精品国产123| 17c精品麻豆一区二区免费| 亚洲成精国产精品女| 99re66热这里只有精品3直播 | 日本三级亚洲精品| 国产在线精品国自产拍免费| 国产91在线观看丝袜| 欧美日韩精品三区| 精品欧美乱码久久久久久| 日本一区二区不卡视频| 久久久亚洲综合| 亚洲第一主播视频| 日韩一级免费观看| 亚洲一区在线看| 久久草av在线| 欧美日韩黄色影视| 久久精品视频一区二区三区| 亚洲国产欧美另类丝袜| 国产成人av电影在线| 日韩丝袜情趣美女图片| 综合激情网...| 成人中文字幕在线| 欧美电视剧免费观看| 综合久久综合久久| 久久国产精品色| 欧美日韩精品一区二区在线播放| 国产精品国产精品国产专区不蜜 | 全部av―极品视觉盛宴亚洲| 欧美在线影院一区二区| 亚洲欧洲中文日韩久久av乱码| 成人一区二区三区中文字幕| 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲123区在线观看| av激情综合网| ...av二区三区久久精品| jlzzjlzz亚洲日本少妇| 亚洲人成精品久久久久| av电影在线观看一区| 亚洲欧美色综合| 91国产福利在线| 裸体歌舞表演一区二区| 国产女人水真多18毛片18精品视频| 成人av综合在线| 视频在线观看91| 欧美高清在线精品一区| 欧美日韩精品一区二区三区蜜桃| 韩国一区二区视频| 亚洲视频免费看| 日韩欧美一区电影| 波波电影院一区二区三区| 视频在线观看91| 中文字幕亚洲不卡| 日韩一区二区在线观看| 91一区二区三区在线观看| 视频一区二区不卡| 国产精品久久久久久久久果冻传媒 | www.亚洲色图| 精品一区二区三区影院在线午夜| 亚洲男人天堂av| 国产精品污网站| 日韩精品一区二区在线观看| 色综合咪咪久久| 99精品视频在线观看免费| 久久99热狠狠色一区二区| 亚洲线精品一区二区三区八戒| 国产视频亚洲色图| 日韩欧美国产精品| 精品视频色一区| 欧美性猛交xxxx黑人交| 99久久夜色精品国产网站| 久久99精品国产麻豆婷婷| 亚洲mv在线观看| 亚洲欧美日韩综合aⅴ视频| 国产精品久久久久久久久晋中| 国产欧美精品一区二区色综合朱莉| 欧美mv和日韩mv的网站| 欧美一二三区在线|