那么今天我们就要讲解我们之前很熟悉但是又没有弄明白的知识点:缓冲区!!!
而在讲解之前我先帮大家回忆一下我们在哪些地方讲到了缓冲区这样的概念:
我们分别在初识struct file中和在进程终结的章节中提到了缓冲区的概念,我们从上面的两幅图可以看到,在struct file中的缓冲区前面有内核二字,而下面exit中我只写了缓冲区,说明这二者是有区别的,那么区别是什么呢?
那么要解决这个问题,等我们讲完了这篇的知识,相信大家心中就有了答案。
一.什么是缓冲区?
我们前面只提了缓冲区的字眼,但是我们还并不知道这缓冲区到底是何方神圣,下面我来解释一下:
缓冲区是内存空间的⼀部分。也就是说,在内存空间中预留了⼀定的存储空间,这些存储空间⽤来缓冲输⼊或输出的数据,这部分预留的空间就叫做缓冲区。缓冲区根据其对应的是输⼊设备还是输出设备,分为输⼊缓冲区和输出缓冲区。
直接说缓冲区的概念比较晦涩,不太好理解,下面我们从另一个角度来理解缓冲区。
二.为什么要有缓冲区?
2.1缓冲区存在的意义
要探讨缓冲区存在的意义,下面我用一个示例来帮助大家更好地理解:
张三和李四两个人是好朋友,过段时间呢,李四就要生日了,作为好朋友的张三想送给李四一个生日礼物:一把机械键盘,那么我问大家一个问题:张三会自己从云南一路跑到到北京将礼物给李四吗?
答案并不会,我们在日常生活中也知道,给别人送个礼物不会每次都自己亲自去送,尤其是从云南到北京这么远的距离,这会耗费张三大量的时间,那么我们会怎么送呢?
张三的做法应该是将包裹交给楼下的菜鸟驿站,让它负责将礼物送到李四楼下的菜鸟驿站对吧。
而张三在把包裹交给菜鸟驿站后,回到宿舍后室友问他:你的礼物去哪儿了?张三说:“ 送给我朋友李四了 ”。
但是礼物真的已经送到了李四的手中了吗?
很明显并没有,它是被存在了菜鸟驿站中,那么在这个过程中菜鸟驿站就扮演着缓存的角色,而张三的键盘礼物就是数据,而将键盘礼物给菜鸟驿站,不就是我们之前讲的write函数将其拷贝到了菜鸟驿站中吗?
那么我想用上面的例子来说明什么问题呢?
我们可以比较两种送礼物的方式,对于第一种而言,张三亲自去送,但是会耗费大量的时间;而对于第二种,张三只需要下个楼,将包裹交给菜鸟驿站即可,然后他就可以回去接着忙自己的事情了。
那么缓冲区的第一个意义已经呼之欲出了:就是提高使用缓存的进程的效率!!!
大家可以想一想是不是这个理,我们创建一个进程,将某些数据写到某个文件中,有了缓存的存在,进程直接将数据放在缓存中就行,接着返回去做其他的事情,也就是在单位时间内可以做更多的事情,这不就提高了进程的效率了吗?
当然,送礼物的过程还得有人去做,但是我们关心吗?
我们不关心,我进程将数据交给缓存,你缓存找人把数据给我传过去就行,而菜鸟驿站将礼物送到李四手中的过程就是我们常说的刷新缓冲区!!!
那么这里又有一个问题:张三每次将包裹交给菜鸟驿站,菜鸟驿站就会立即将包裹发出去吗?
答案是不会的,菜鸟驿站要真这么做,那站长干一段时间就干不下去了,因为你送过来一个包裹,我直接就给你发过去,你又送过来,我又给你发出去,每次都要掏路费啊。
正常的做法应该是你送过来,我先放着,等我这个站点包裹满了,我一次性给你全发出去,这才是正确的做法,大家可以比较一下两种方式,明显第二种方式更为合理,效率也更高。
所以缓冲区的第二个意义也就揭晓了:缓冲区允许数据在它里面积压,然后一次性刷新多次数据,通过这种方式就可以变相的减少I/O次数,节省时间,提高效率!!!
我们之前也说过,I/O操作是要消耗时间的,频繁的进行I/O操作,势必会耗费大量的时间,而通过积压的方式,一次性刷新多次数据,就可以大大减少I/O操作的次数,也就会节省很多时间,进而提高效率。
2.2缓冲区的刷新策略
那么菜鸟驿站什么时候发快递呢?或者说缓冲区决定使用什么样的刷新策略?
虽然上面我们说要等缓冲区满了才发快递,但那是我是站在缓冲区允许数据积压的角度去阐述的,但其实缓冲区有着不同的刷新策略:
其中第一条的无缓冲,立即刷新用的很少,我们知道有这种刷新策略即可。
而对于第二种我们其实也不陌生,我们在日常使用printf,fprintf等函数时,它们就是行刷新,行刷新的条件是当使用前面的函数时,最后有" \n "的字符,没有" \n "也是不会刷新的。
第三种也就是我们上面所说的写满再刷新,在普通文件很常用。
而刷新策略呢又分为两种情况:
对于第一种就是我们平常写的main函数在return 0后进程就会结束,但同时也会自动刷新缓冲区。
而对于第二种方式相比我们都不陌生,这是上一篇我们遗留的问题之一,到了这里我们就对于为什么fflush后我们cat log.txt文件中的内容能显示出来有了一个简单的认识,因为它刷新了缓冲区,但是这个问题并没有完全解决,因为我们还没有见过缓冲区长什么样子。
三.语言级别的缓冲区(FILE缓冲区)
3.1初识缓冲区
我们用一个例子来引出这个深藏不露的缓冲区:
这里写了一个简单的例子,大家都能看懂,当我们执行后,printf中的内容立即就出现在显示器上面了,然后等待了三秒后,进程结束,这是完整的过程,那我们下面再看:
而当我把printf后面的" \n "给去掉后,我们执行后会发现,没有打印出任何东西,而是直接就执行了sleep语句。
但是我们都知道,程序是按顺序执行的,所以肯定是先执行了printf语句再执行sleep语句,那我们printf中的数据在呢?
在语言级别的缓冲区中!!!,那缓冲区在哪儿呢?
我们之前在将文件标识符的时候讲了C语言中FILE结构体,当时我们只说了这个结构体中封装了文件标识符fd,,又因为我们C语言访问文件,都是通过FILE访问的,所以现在我告诉你这个结构体中为我们维护了:语言级别的缓冲区!!!
在这个结构体中分别有两个指针分别指向了输入缓冲区和输出缓冲区,也就是内存中的两块空间,不过这两块空间不是你启动进程就立刻给你分配的,而是你打开输入输出文件时才会在内存中开辟相应的空间。
map.bwtfedc.cn/Blog/1197159.shtml
map.bwtfedc.cn/Blog/0828028.shtml
map.bwtfedc.cn/Blog/8220442.shtml
map.bwtfedc.cn/Blog/2462004.shtml
map.bwtfedc.cn/Blog/2208082.shtml
map.bwtfedc.cn/Blog/1957117.shtml
map.bwtfedc.cn/Blog/5315959.shtml
map.bwtfedc.cn/Blog/4442208.shtml
map.bwtfedc.cn/Blog/0808080.shtml
map.bwtfedc.cn/Blog/0420644.shtml
map.bwtfedc.cn/Blog/8022426.shtml
map.bwtfedc.cn/Blog/2468242.shtml
map.bwtfedc.cn/Blog/1755755.shtml
map.bwtfedc.cn/Blog/0828600.shtml
map.bwtfedc.cn/Blog/4664200.shtml
map.bwtfedc.cn/Blog/2446444.shtml
map.bwtfedc.cn/Blog/0866680.shtml
map.bwtfedc.cn/Blog/7197155.shtml
map.bwtfedc.cn/Blog/2668424.shtml
map.bwtfedc.cn/Blog/8284406.shtml
map.bwtfedc.cn/Blog/6824820.shtml
map.bwtfedc.cn/Blog/8208668.shtml
map.bwtfedc.cn/Blog/4820084.shtml
map.bwtfedc.cn/Blog/9559913.shtml
map.bwtfedc.cn/Blog/2624422.shtml
map.bwtfedc.cn/Blog/3375313.shtml
map.bwtfedc.cn/Blog/3171137.shtml
map.bwtfedc.cn/Blog/9311179.shtml
map.bwtfedc.cn/Blog/2884006.shtml
map.bwtfedc.cn/Blog/8884026.shtml
map.bwtfedc.cn/Blog/7575375.shtml
map.bwtfedc.cn/Blog/2044282.shtml
map.bwtfedc.cn/Blog/4622000.shtml
map.bwtfedc.cn/Blog/7137153.shtml
map.bwtfedc.cn/Blog/6220064.shtml
map.bwtfedc.cn/Blog/4280644.shtml
map.bwtfedc.cn/Blog/6446486.shtml
map.bwtfedc.cn/Blog/0220006.shtml
map.bwtfedc.cn/Blog/6062686.shtml
map.bwtfedc.cn/Blog/5661875.shtml
map.bwtfedc.cn/Blog/2026240.shtml
map.bwtfedc.cn/Blog/5973557.shtml
map.bwtfedc.cn/Blog/8662808.shtml
map.bwtfedc.cn/Blog/6424628.shtml
map.bwtfedc.cn/Blog/0240886.shtml
map.bwtfedc.cn/Blog/1371157.shtml
map.bwtfedc.cn/Blog/2066400.shtml
map.bwtfedc.cn/Blog/8800204.shtml
map.bwtfedc.cn/Blog/3395315.shtml
map.bwtfedc.cn/Blog/4868226.shtml
map.bwtfedc.cn/Blog/0482208.shtml
map.bwtfedc.cn/Blog/4264464.shtml
map.bwtfedc.cn/Blog/4064268.shtml
map.bwtfedc.cn/Blog/7177595.shtml
map.bwtfedc.cn/Blog/4844226.shtml
map.bwtfedc.cn/Blog/5173199.shtml
map.bwtfedc.cn/Blog/6004666.shtml
map.bwtfedc.cn/Blog/5553733.shtml
map.bwtfedc.cn/Blog/4646244.shtml
map.bwtfedc.cn/Blog/8644428.shtml
map.bwtfedc.cn/Blog/0402684.shtml
map.bwtfedc.cn/Blog/8286042.shtml
map.bwtfedc.cn/Blog/4646222.shtml
map.bwtfedc.cn/Blog/9339155.shtml
map.bwtfedc.cn/Blog/6028022.shtml
map.bwtfedc.cn/Blog/5115119.shtml
map.bwtfedc.cn/Blog/2206280.shtml
map.bwtfedc.cn/Blog/4002840.shtml
map.bwtfedc.cn/Blog/3359971.shtml
map.bwtfedc.cn/Blog/6660282.shtml
map.bwtfedc.cn/Blog/5757971.shtml
map.bwtfedc.cn/Blog/4006640.shtml
map.bwtfedc.cn/Blog/8060646.shtml
map.bwtfedc.cn/Blog/0606826.shtml
map.bwtfedc.cn/Blog/1135793.shtml
map.bwtfedc.cn/Blog/7577195.shtml
map.bwtfedc.cn/Blog/3713131.shtml
map.bwtfedc.cn/Blog/9935111.shtml
map.bwtfedc.cn/Blog/7177115.shtml
map.bwtfedc.cn/Blog/3573397.shtml
map.bwtfedc.cn/Blog/9313377.shtml
map.bwtfedc.cn/Blog/7155755.shtml
map.bwtfedc.cn/Blog/1791735.shtml
map.bwtfedc.cn/Blog/9919513.shtml
map.bwtfedc.cn/Blog/2424422.shtml
map.bwtfedc.cn/Blog/4086442.shtml
map.bwtfedc.cn/Blog/1575779.shtml
map.bwtfedc.cn/Blog/3353953.shtml
map.bwtfedc.cn/Blog/9719357.shtml
map.bwtfedc.cn/Blog/4600022.shtml
map.bwtfedc.cn/Blog/8242464.shtml
map.bwtfedc.cn/Blog/1577177.shtml
map.bwtfedc.cn/Blog/4662642.shtml
map.bwtfedc.cn/Blog/6684004.shtml
map.bwtfedc.cn/Blog/3577531.shtml
map.bwtfedc.cn/Blog/9973911.shtml
map.bwtfedc.cn/Blog/1139191.shtml
map.bwtfedc.cn/Blog/9517137.shtml
map.bwtfedc.cn/Blog/1733731.shtml
map.bwtfedc.cn/Blog/1955937.shtml
map.bwtfedc.cn/Blog/8820204.shtml
map.bwtfedc.cn/Blog/1939755.shtml
map.bwtfedc.cn/Blog/3597979.shtml
map.bwtfedc.cn/Blog/3559791.shtml
map.bwtfedc.cn/Blog/4864620.shtml
map.bwtfedc.cn/Blog/6486240.shtml
map.bwtfedc.cn/Blog/7537737.shtml
map.bwtfedc.cn/Blog/7373355.shtml
map.bwtfedc.cn/Blog/9393157.shtml
map.bwtfedc.cn/Blog/1511395.shtml
map.bwtfedc.cn/Blog/3533737.shtml
map.bwtfedc.cn/Blog/5931171.shtml
map.bwtfedc.cn/Blog/0820084.shtml
map.bwtfedc.cn/Blog/2806006.shtml
map.bwtfedc.cn/Blog/4684282.shtml
map.bwtfedc.cn/Blog/4828664.shtml
map.bwtfedc.cn/Blog/5953779.shtml
map.bwtfedc.cn/Blog/1913919.shtml
map.bwtfedc.cn/Blog/3935573.shtml
map.bwtfedc.cn/Blog/8288668.shtml
map.bwtfedc.cn/Blog/9153719.shtml
map.bwtfedc.cn/Blog/1911375.shtml
map.bwtfedc.cn/Blog/4006088.shtml
map.bwtfedc.cn/Blog/9751913.shtml
map.bwtfedc.cn/Blog/6808228.shtml
map.bwtfedc.cn/Blog/0468040.shtml
map.bwtfedc.cn/Blog/9511975.shtml
map.bwtfedc.cn/Blog/7175511.shtml
map.bwtfedc.cn/Blog/5533937.shtml
map.bwtfedc.cn/Blog/7993791.shtml
map.bwtfedc.cn/Blog/8608266.shtml
map.bwtfedc.cn/Blog/1599331.shtml
map.bwtfedc.cn/Blog/5333517.shtml
map.bwtfedc.cn/Blog/6200244.shtml
map.bwtfedc.cn/Blog/4806860.shtml
map.bwtfedc.cn/Blog/1193997.shtml
map.bwtfedc.cn/Blog/9775313.shtml
map.bwtfedc.cn/Blog/9919575.shtml
map.bwtfedc.cn/Blog/3319311.shtml
map.bwtfedc.cn/Blog/9157191.shtml
map.bwtfedc.cn/Blog/8028220.shtml
map.bwtfedc.cn/Blog/8026008.shtml
map.bwtfedc.cn/Blog/3979993.shtml
map.bwtfedc.cn/Blog/5735315.shtml
map.bwtfedc.cn/Blog/7991313.shtml
map.bwtfedc.cn/Blog/3979779.shtml
map.bwtfedc.cn/Blog/1599357.shtml
map.bwtfedc.cn/Blog/5757153.shtml
map.bwtfedc.cn/Blog/3571311.shtml
map.bwtfedc.cn/Blog/0248662.shtml
map.bwtfedc.cn/Blog/9113399.shtml
map.bwtfedc.cn/Blog/3339713.shtml
map.bwtfedc.cn/Blog/6020004.shtml
map.bwtfedc.cn/Blog/0040466.shtml
map.bwtfedc.cn/Blog/2282222.shtml
map.bwtfedc.cn/Blog/6660860.shtml
map.bwtfedc.cn/Blog/5511555.shtml
map.bwtfedc.cn/Blog/5731979.shtml
map.bwtfedc.cn/Blog/6806844.shtml
map.bwtfedc.cn/Blog/3579317.shtml
map.bwtfedc.cn/Blog/6622424.shtml
map.bwtfedc.cn/Blog/6602280.shtml
map.bwtfedc.cn/Blog/9355793.shtml
map.bwtfedc.cn/Blog/0068804.shtml
map.bwtfedc.cn/Blog/8868004.shtml
map.bwtfedc.cn/Blog/4864426.shtml
map.bwtfedc.cn/Blog/3999513.shtml
map.bwtfedc.cn/Blog/7159119.shtml
map.bwtfedc.cn/Blog/9131337.shtml
map.bwtfedc.cn/Blog/4042044.shtml
map.bwtfedc.cn/Blog/6022282.shtml
map.bwtfedc.cn/Blog/8464808.shtml
map.bwtfedc.cn/Blog/2244660.shtml
map.bwtfedc.cn/Blog/2488064.shtml
map.bwtfedc.cn/Blog/0420682.shtml
map.bwtfedc.cn/Blog/2086666.shtml
map.bwtfedc.cn/Blog/6662662.shtml
map.bwtfedc.cn/Blog/2288260.shtml
map.bwtfedc.cn/Blog/6604024.shtml
map.bwtfedc.cn/Blog/8242846.shtml
map.bwtfedc.cn/Blog/8684024.shtml
map.bwtfedc.cn/Blog/8228888.shtml
map.bwtfedc.cn/Blog/4860280.shtml
map.bwtfedc.cn/Blog/4244886.shtml
map.bwtfedc.cn/Blog/5919133.shtml
map.bwtfedc.cn/Blog/1999535.shtml
map.bwtfedc.cn/Blog/6228686.shtml
map.bwtfedc.cn/Blog/4000240.shtml
map.bwtfedc.cn/Blog/3935993.shtml
map.bwtfedc.cn/Blog/6046202.shtml
map.bwtfedc.cn/Blog/5777359.shtml
map.bwtfedc.cn/Blog/0404246.shtml
map.bwtfedc.cn/Blog/3133757.shtml
map.bwtfedc.cn/Blog/8453517.shtml
map.bwtfedc.cn/Blog/7137139.shtml
map.bwtfedc.cn/Blog/4286402.shtml
map.bwtfedc.cn/Blog/1191933.shtml
map.bwtfedc.cn/Blog/0208022.shtml
map.bwtfedc.cn/Blog/9395751.shtml
map.vpxyqey.cn/Blog/8028042.shtml
map.vpxyqey.cn/Blog/1135339.shtml
map.vpxyqey.cn/Blog/1971377.shtml
map.vpxyqey.cn/Blog/2644284.shtml
map.vpxyqey.cn/Blog/4460628.shtml
map.vpxyqey.cn/Blog/1137953.shtml
map.vpxyqey.cn/Blog/9397193.shtml
map.vpxyqey.cn/Blog/0022228.shtml
map.vpxyqey.cn/Blog/8200462.shtml
map.vpxyqey.cn/Blog/9191175.shtml
map.vpxyqey.cn/Blog/2462240.shtml
map.vpxyqey.cn/Blog/9733777.shtml
map.vpxyqey.cn/Blog/3797715.shtml
map.vpxyqey.cn/Blog/2868262.shtml
map.vpxyqey.cn/Blog/6822262.shtml
map.vpxyqey.cn/Blog/3311715.shtml
map.vpxyqey.cn/Blog/0468464.shtml
map.vpxyqey.cn/Blog/8826862.shtml
map.vpxyqey.cn/Blog/6440046.shtml
map.vpxyqey.cn/Blog/2680882.shtml
map.vpxyqey.cn/Blog/3953333.shtml
map.vpxyqey.cn/Blog/2868402.shtml
map.vpxyqey.cn/Blog/8686202.shtml
map.vpxyqey.cn/Blog/5713177.shtml
map.vpxyqey.cn/Blog/1777937.shtml
map.vpxyqey.cn/Blog/3957977.shtml
map.vpxyqey.cn/Blog/6884220.shtml
map.vpxyqey.cn/Blog/0204600.shtml
map.vpxyqey.cn/Blog/0086248.shtml
map.vpxyqey.cn/Blog/1711731.shtml
map.vpxyqey.cn/Blog/0208246.shtml
map.vpxyqey.cn/Blog/2626426.shtml
map.vpxyqey.cn/Blog/2040020.shtml
map.vpxyqey.cn/Blog/9357977.shtml
map.vpxyqey.cn/Blog/8400824.shtml
map.vpxyqey.cn/Blog/5511157.shtml
map.vpxyqey.cn/Blog/9351775.shtml
map.vpxyqey.cn/Blog/0828024.shtml
map.vpxyqey.cn/Blog/9177911.shtml
map.vpxyqey.cn/Blog/1133177.shtml
map.vpxyqey.cn/Blog/2208440.shtml
map.vpxyqey.cn/Blog/2040222.shtml
map.vpxyqey.cn/Blog/6684466.shtml
map.vpxyqey.cn/Blog/6424202.shtml
map.vpxyqey.cn/Blog/0446088.shtml
map.vpxyqey.cn/Blog/8080484.shtml
map.vpxyqey.cn/Blog/1593135.shtml
map.vpxyqey.cn/Blog/2204266.shtml
map.vpxyqey.cn/Blog/8026668.shtml
map.vpxyqey.cn/Blog/4448022.shtml
map.vpxyqey.cn/Blog/5133977.shtml
map.vpxyqey.cn/Blog/2022040.shtml
map.vpxyqey.cn/Blog/7397735.shtml
map.vpxyqey.cn/Blog/9733355.shtml
map.vpxyqey.cn/Blog/1717175.shtml
map.vpxyqey.cn/Blog/4060066.shtml
map.vpxyqey.cn/Blog/5315159.shtml
map.vpxyqey.cn/Blog/7313531.shtml
map.vpxyqey.cn/Blog/2442262.shtml
map.vpxyqey.cn/Blog/3395917.shtml
map.vpxyqey.cn/Blog/6224264.shtml
map.vpxyqey.cn/Blog/6028660.shtml
map.vpxyqey.cn/Blog/8282622.shtml
map.vpxyqey.cn/Blog/4062442.shtml
map.vpxyqey.cn/Blog/4286064.shtml
map.vpxyqey.cn/Blog/0446808.shtml
map.vpxyqey.cn/Blog/5199139.shtml
map.vpxyqey.cn/Blog/3313351.shtml
map.vpxyqey.cn/Blog/8808028.shtml
map.vpxyqey.cn/Blog/8260684.shtml
map.vpxyqey.cn/Blog/6260802.shtml
map.vpxyqey.cn/Blog/1797759.shtml
map.vpxyqey.cn/Blog/4080820.shtml
map.vpxyqey.cn/Blog/6268820.shtml
map.vpxyqey.cn/Blog/6608266.shtml
map.vpxyqey.cn/Blog/8022806.shtml
map.vpxyqey.cn/Blog/4248402.shtml
map.vpxyqey.cn/Blog/6066004.shtml
map.vpxyqey.cn/Blog/6646602.shtml
map.vpxyqey.cn/Blog/4420062.shtml
map.vpxyqey.cn/Blog/4884244.shtml
map.vpxyqey.cn/Blog/2028444.shtml
map.vpxyqey.cn/Blog/9951571.shtml
map.vpxyqey.cn/Blog/7951155.shtml
map.vpxyqey.cn/Blog/4686882.shtml
map.vpxyqey.cn/Blog/2844228.shtml
map.vpxyqey.cn/Blog/6600066.shtml
map.vpxyqey.cn/Blog/6820606.shtml
map.vpxyqey.cn/Blog/3799377.shtml
map.vpxyqey.cn/Blog/4482624.shtml
map.vpxyqey.cn/Blog/0486600.shtml
map.vpxyqey.cn/Blog/8400080.shtml
map.vpxyqey.cn/Blog/2264644.shtml
map.vpxyqey.cn/Blog/4404602.shtml
map.vpxyqey.cn/Blog/4642046.shtml
map.vpxyqey.cn/Blog/5913111.shtml
map.vpxyqey.cn/Blog/1199179.shtml
map.vpxyqey.cn/Blog/8806648.shtml
map.vpxyqey.cn/Blog/4262824.shtml
map.vpxyqey.cn/Blog/6820884.shtml
map.vpxyqey.cn/Blog/7351311.shtml
map.vpxyqey.cn/Blog/8068888.shtml
map.vpxyqey.cn/Blog/2424220.shtml
map.vpxyqey.cn/Blog/0400624.shtml
map.vpxyqey.cn/Blog/6444882.shtml
map.vpxyqey.cn/Blog/0226640.shtml
map.vpxyqey.cn/Blog/7353119.shtml
map.vpxyqey.cn/Blog/8282206.shtml
map.vpxyqey.cn/Blog/3595571.shtml
map.vpxyqey.cn/Blog/1911771.shtml
map.vpxyqey.cn/Blog/0220620.shtml
map.vpxyqey.cn/Blog/4484044.shtml
map.vpxyqey.cn/Blog/5551399.shtml
map.vpxyqey.cn/Blog/1517339.shtml
map.vpxyqey.cn/Blog/4620208.shtml
map.vpxyqey.cn/Blog/2064840.shtml
map.vpxyqey.cn/Blog/0602040.shtml
map.vpxyqey.cn/Blog/2206264.shtml
map.vpxyqey.cn/Blog/0842464.shtml
map.vpxyqey.cn/Blog/8080824.shtml
map.vpxyqey.cn/Blog/8064086.shtml
map.vpxyqey.cn/Blog/0440484.shtml
map.vpxyqey.cn/Blog/0440608.shtml
map.vpxyqey.cn/Blog/8060426.shtml
map.vpxyqey.cn/Blog/2446642.shtml
map.vpxyqey.cn/Blog/0066244.shtml
map.vpxyqey.cn/Blog/2602086.shtml
map.vpxyqey.cn/Blog/6260024.shtml
map.vpxyqey.cn/Blog/4062062.shtml
map.vpxyqey.cn/Blog/8600460.shtml
map.vpxyqey.cn/Blog/0628040.shtml
map.vpxyqey.cn/Blog/8004282.shtml
map.vpxyqey.cn/Blog/4288062.shtml
map.vpxyqey.cn/Blog/4628882.shtml
map.vpxyqey.cn/Blog/4646620.shtml
map.vpxyqey.cn/Blog/1159773.shtml
map.vpxyqey.cn/Blog/1559777.shtml
map.vpxyqey.cn/Blog/4220484.shtml
map.vpxyqey.cn/Blog/4682802.shtml
map.vpxyqey.cn/Blog/0820082.shtml
map.vpxyqey.cn/Blog/7535991.shtml
map.vpxyqey.cn/Blog/7531579.shtml
map.vpxyqey.cn/Blog/4206462.shtml
map.vpxyqey.cn/Blog/8888022.shtml
map.vpxyqey.cn/Blog/0060042.shtml
map.vpxyqey.cn/Blog/9775735.shtml
map.vpxyqey.cn/Blog/3951111.shtml
map.vpxyqey.cn/Blog/3917353.shtml
map.vpxyqey.cn/Blog/3159577.shtml
map.vpxyqey.cn/Blog/5933375.shtml
map.vpxyqey.cn/Blog/6446266.shtml
map.vpxyqey.cn/Blog/6264862.shtml
map.vpxyqey.cn/Blog/2260246.shtml
map.vpxyqey.cn/Blog/2286844.shtml
map.vpxyqey.cn/Blog/6006662.shtml
map.vpxyqey.cn/Blog/6808848.shtml
map.vpxyqey.cn/Blog/2262228.shtml
map.vpxyqey.cn/Blog/1757379.shtml
map.vpxyqey.cn/Blog/6006262.shtml
map.vpxyqey.cn/Blog/2688880.shtml
map.vpxyqey.cn/Blog/4608268.shtml
map.vpxyqey.cn/Blog/9797115.shtml
map.vpxyqey.cn/Blog/8866484.shtml
map.vpxyqey.cn/Blog/1153533.shtml
map.vpxyqey.cn/Blog/5319713.shtml
map.vpxyqey.cn/Blog/6446606.shtml
map.vpxyqey.cn/Blog/2646606.shtml
map.vpxyqey.cn/Blog/9777579.shtml
map.vpxyqey.cn/Blog/7711573.shtml
map.vpxyqey.cn/Blog/4046086.shtml
map.vpxyqey.cn/Blog/0828688.shtml
map.vpxyqey.cn/Blog/1155751.shtml
map.vpxyqey.cn/Blog/6448084.shtml
map.vpxyqey.cn/Blog/1137735.shtml
map.vpxyqey.cn/Blog/9935391.shtml
map.vpxyqey.cn/Blog/7979313.shtml
map.vpxyqey.cn/Blog/3997193.shtml
map.vpxyqey.cn/Blog/6664486.shtml
map.vpxyqey.cn/Blog/9731737.shtml
map.vpxyqey.cn/Blog/0420282.shtml
map.vpxyqey.cn/Blog/2668220.shtml
map.vpxyqey.cn/Blog/7997139.shtml
map.vpxyqey.cn/Blog/4060440.shtml
map.vpxyqey.cn/Blog/0286806.shtml
map.vpxyqey.cn/Blog/4662226.shtml
map.vpxyqey.cn/Blog/2204848.shtml
map.vpxyqey.cn/Blog/4806264.shtml
map.vpxyqey.cn/Blog/3517195.shtml
map.vpxyqey.cn/Blog/7379731.shtml
map.vpxyqey.cn/Blog/8800680.shtml
map.vpxyqey.cn/Blog/1735737.shtml
map.vpxyqey.cn/Blog/8464622.shtml
map.vpxyqey.cn/Blog/0606402.shtml
map.vpxyqey.cn/Blog/2024886.shtml
map.vpxyqey.cn/Blog/8402888.shtml
map.vpxyqey.cn/Blog/1357713.shtml
map.vpxyqey.cn/Blog/1575773.shtml
map.vpxyqey.cn/Blog/6244020.shtml
map.vpxyqey.cn/Blog/1797351.shtml
map.ftsbhlq.cn/Blog/9715773.shtml
map.ftsbhlq.cn/Blog/8286008.shtml
map.ftsbhlq.cn/Blog/8046008.shtml
map.ftsbhlq.cn/Blog/3379951.shtml
map.ftsbhlq.cn/Blog/1557513.shtml
map.ftsbhlq.cn/Blog/6264622.shtml
map.ftsbhlq.cn/Blog/9515715.shtml
map.ftsbhlq.cn/Blog/9935393.shtml
map.ftsbhlq.cn/Blog/9935777.shtml
map.ftsbhlq.cn/Blog/2402648.shtml
map.ftsbhlq.cn/Blog/7311711.shtml
map.ftsbhlq.cn/Blog/2628462.shtml
map.ftsbhlq.cn/Blog/1537539.shtml
map.ftsbhlq.cn/Blog/8408204.shtml
map.ftsbhlq.cn/Blog/0404606.shtml
map.ftsbhlq.cn/Blog/2068242.shtml
map.ftsbhlq.cn/Blog/2840082.shtml
map.ftsbhlq.cn/Blog/7173173.shtml
map.ftsbhlq.cn/Blog/0222626.shtml
map.ftsbhlq.cn/Blog/2004220.shtml
map.ftsbhlq.cn/Blog/7991931.shtml
map.ftsbhlq.cn/Blog/1339757.shtml
map.ftsbhlq.cn/Blog/4488686.shtml
map.ftsbhlq.cn/Blog/8684860.shtml
map.ftsbhlq.cn/Blog/6024066.shtml
map.ftsbhlq.cn/Blog/6004864.shtml
map.ftsbhlq.cn/Blog/4468640.shtml
map.ftsbhlq.cn/Blog/7737177.shtml
map.ftsbhlq.cn/Blog/8882602.shtml
map.ftsbhlq.cn/Blog/7315197.shtml
map.ftsbhlq.cn/Blog/9173119.shtml
map.ftsbhlq.cn/Blog/6262062.shtml
map.ftsbhlq.cn/Blog/6622268.shtml
map.ftsbhlq.cn/Blog/2284026.shtml
map.ftsbhlq.cn/Blog/5331195.shtml
map.ftsbhlq.cn/Blog/6040628.shtml
map.ftsbhlq.cn/Blog/6848642.shtml
map.ftsbhlq.cn/Blog/8264666.shtml
map.ftsbhlq.cn/Blog/8228644.shtml
map.ftsbhlq.cn/Blog/6604882.shtml
map.ftsbhlq.cn/Blog/8280060.shtml
map.ftsbhlq.cn/Blog/3517577.shtml
map.ftsbhlq.cn/Blog/1896272.shtml
map.ftsbhlq.cn/Blog/0642224.shtml
map.ftsbhlq.cn/Blog/2482864.shtml
map.ftsbhlq.cn/Blog/4262484.shtml
map.ftsbhlq.cn/Blog/0662268.shtml
map.ftsbhlq.cn/Blog/4684824.shtml
map.ftsbhlq.cn/Blog/4204440.shtml
map.ftsbhlq.cn/Blog/2668662.shtml
map.ftsbhlq.cn/Blog/4622844.shtml
map.ftsbhlq.cn/Blog/9191159.shtml
map.ftsbhlq.cn/Blog/1919973.shtml
map.ftsbhlq.cn/Blog/8604626.shtml
map.ftsbhlq.cn/Blog/0006060.shtml
map.ftsbhlq.cn/Blog/7777353.shtml
map.ftsbhlq.cn/Blog/1117191.shtml
map.ftsbhlq.cn/Blog/0280208.shtml
map.ftsbhlq.cn/Blog/7553575.shtml
map.ftsbhlq.cn/Blog/9137773.shtml
map.ftsbhlq.cn/Blog/6868828.shtml
map.ftsbhlq.cn/Blog/6022820.shtml
map.ftsbhlq.cn/Blog/1997539.shtml
map.ftsbhlq.cn/Blog/6486662.shtml
map.ftsbhlq.cn/Blog/1957795.shtml
map.ftsbhlq.cn/Blog/9593997.shtml
map.ftsbhlq.cn/Blog/4886660.shtml
map.ftsbhlq.cn/Blog/7359199.shtml
map.ftsbhlq.cn/Blog/7177139.shtml
map.ftsbhlq.cn/Blog/0408022.shtml
map.ftsbhlq.cn/Blog/3731393.shtml
map.ftsbhlq.cn/Blog/9557177.shtml
map.ftsbhlq.cn/Blog/6600262.shtml
map.ftsbhlq.cn/Blog/5953791.shtml
map.ftsbhlq.cn/Blog/9399159.shtml
map.ftsbhlq.cn/Blog/0286006.shtml
map.ftsbhlq.cn/Blog/1351797.shtml
map.ftsbhlq.cn/Blog/9731717.shtml
map.ftsbhlq.cn/Blog/8228488.shtml
map.ftsbhlq.cn/Blog/7551957.shtml
map.ftsbhlq.cn/Blog/1551595.shtml
map.ftsbhlq.cn/Blog/3577179.shtml
map.ftsbhlq.cn/Blog/5731515.shtml
map.ftsbhlq.cn/Blog/9593773.shtml
map.ftsbhlq.cn/Blog/2884460.shtml
map.ftsbhlq.cn/Blog/7397555.shtml
map.ftsbhlq.cn/Blog/0802882.shtml
map.ftsbhlq.cn/Blog/0086200.shtml
map.ftsbhlq.cn/Blog/8000628.shtml
map.ftsbhlq.cn/Blog/0222668.shtml
map.ftsbhlq.cn/Blog/0486800.shtml
map.ftsbhlq.cn/Blog/8244080.shtml
map.ftsbhlq.cn/Blog/7939193.shtml
map.ftsbhlq.cn/Blog/2260066.shtml
map.ftsbhlq.cn/Blog/0444888.shtml
map.ftsbhlq.cn/Blog/2086680.shtml
map.ftsbhlq.cn/Blog/5317339.shtml
map.ftsbhlq.cn/Blog/6682848.shtml
map.ftsbhlq.cn/Blog/4622886.shtml
map.ftsbhlq.cn/Blog/5935737.shtml
map.ftsbhlq.cn/Blog/4620822.shtml
map.ftsbhlq.cn/Blog/0024848.shtml
map.ftsbhlq.cn/Blog/0646402.shtml
map.ftsbhlq.cn/Blog/5937779.shtml
map.ftsbhlq.cn/Blog/2822688.shtml
map.ftsbhlq.cn/Blog/2868800.shtml
map.ftsbhlq.cn/Blog/3931573.shtml
map.ftsbhlq.cn/Blog/2228402.shtml
map.ftsbhlq.cn/Blog/1531719.shtml
map.ftsbhlq.cn/Blog/6882606.shtml
map.ftsbhlq.cn/Blog/9759775.shtml
map.ftsbhlq.cn/Blog/2448440.shtml
map.ftsbhlq.cn/Blog/1313153.shtml
map.ftsbhlq.cn/Blog/2200242.shtml
map.ftsbhlq.cn/Blog/9151393.shtml
map.ftsbhlq.cn/Blog/4466644.shtml
map.ftsbhlq.cn/Blog/0624448.shtml
map.ftsbhlq.cn/Blog/6284440.shtml
map.ftsbhlq.cn/Blog/3519593.shtml
map.ftsbhlq.cn/Blog/4082828.shtml
map.ftsbhlq.cn/Blog/0448468.shtml
map.ftsbhlq.cn/Blog/0866086.shtml
map.ftsbhlq.cn/Blog/1933177.shtml
map.ftsbhlq.cn/Blog/0602668.shtml
map.ftsbhlq.cn/Blog/4066848.shtml
map.ftsbhlq.cn/Blog/4006808.shtml
map.ftsbhlq.cn/Blog/6248486.shtml
map.ftsbhlq.cn/Blog/6648602.shtml
map.ftsbhlq.cn/Blog/2620280.shtml
map.ftsbhlq.cn/Blog/2284428.shtml
map.ftsbhlq.cn/Blog/5339353.shtml
map.ftsbhlq.cn/Blog/9331155.shtml
map.ftsbhlq.cn/Blog/7531517.shtml
map.ftsbhlq.cn/Blog/6660042.shtml
map.ftsbhlq.cn/Blog/0028224.shtml
map.ftsbhlq.cn/Blog/4864664.shtml
map.ftsbhlq.cn/Blog/6682228.shtml
map.ftsbhlq.cn/Blog/4082088.shtml
map.ftsbhlq.cn/Blog/2600080.shtml
map.ftsbhlq.cn/Blog/6228440.shtml
map.ftsbhlq.cn/Blog/4662688.shtml
map.ftsbhlq.cn/Blog/4648466.shtml
map.ftsbhlq.cn/Blog/9535713.shtml
map.ftsbhlq.cn/Blog/9795157.shtml
map.ftsbhlq.cn/Blog/2686488.shtml
map.ftsbhlq.cn/Blog/7313557.shtml
map.ftsbhlq.cn/Blog/9115355.shtml
map.ftsbhlq.cn/Blog/4260208.shtml
map.ftsbhlq.cn/Blog/2488088.shtml
map.ftsbhlq.cn/Blog/3399333.shtml
map.ftsbhlq.cn/Blog/3751737.shtml
map.ftsbhlq.cn/Blog/4248282.shtml
map.ftsbhlq.cn/Blog/1395319.shtml
map.ftsbhlq.cn/Blog/5191553.shtml
map.ftsbhlq.cn/Blog/0820804.shtml
map.ftsbhlq.cn/Blog/8426460.shtml
map.ftsbhlq.cn/Blog/0266422.shtml
map.ftsbhlq.cn/Blog/6202422.shtml
map.ftsbhlq.cn/Blog/8020060.shtml
map.ftsbhlq.cn/Blog/4428686.shtml
map.ftsbhlq.cn/Blog/1395959.shtml
map.ftsbhlq.cn/Blog/2408080.shtml
map.ftsbhlq.cn/Blog/0646880.shtml
map.ftsbhlq.cn/Blog/8424606.shtml
map.ftsbhlq.cn/Blog/5957771.shtml
map.ftsbhlq.cn/Blog/4062828.shtml
map.ftsbhlq.cn/Blog/6864820.shtml
map.ftsbhlq.cn/Blog/2208800.shtml
map.ftsbhlq.cn/Blog/6608042.shtml
map.ftsbhlq.cn/Blog/2622688.shtml
map.ftsbhlq.cn/Blog/2202608.shtml
map.ftsbhlq.cn/Blog/4624422.shtml
map.ftsbhlq.cn/Blog/5597913.shtml
map.ftsbhlq.cn/Blog/8466440.shtml
map.ftsbhlq.cn/Blog/0082800.shtml
map.ftsbhlq.cn/Blog/6404442.shtml
map.ftsbhlq.cn/Blog/8408208.shtml
map.ftsbhlq.cn/Blog/2246462.shtml
map.ftsbhlq.cn/Blog/6002846.shtml
map.ftsbhlq.cn/Blog/5159957.shtml
map.ftsbhlq.cn/Blog/9337713.shtml
map.ftsbhlq.cn/Blog/1555757.shtml
map.ftsbhlq.cn/Blog/3955195.shtml
map.ftsbhlq.cn/Blog/0862068.shtml
map.ftsbhlq.cn/Blog/2626022.shtml
map.ftsbhlq.cn/Blog/5935771.shtml
map.ftsbhlq.cn/Blog/4600620.shtml
map.ftsbhlq.cn/Blog/0848442.shtml
map.ftsbhlq.cn/Blog/0444648.shtml
map.ftsbhlq.cn/Blog/0084848.shtml
map.ftsbhlq.cn/Blog/0644662.shtml
map.ftsbhlq.cn/Blog/6446648.shtml
map.ftsbhlq.cn/Blog/8460640.shtml
map.ftsbhlq.cn/Blog/2044886.shtml
map.ftsbhlq.cn/Blog/1135991.shtml
map.ftsbhlq.cn/Blog/4246806.shtml
map.ftsbhlq.cn/Blog/8024402.shtml
map.ftsbhlq.cn/Blog/6206406.shtml
map.ftsbhlq.cn/Blog/6840262.shtml