首页 > 技术相关, 数据库 > Hash和Bloom Filter

Hash和Bloom Filter

2011年9月13日 发表评论 阅读评论

这几天的“科研”中涉及到了一个概念,Bloom Filter(有的中文翻译为布隆过滤器,不知道正确否),今天看了下相关的资料,发现这东西和Hash还挺有关系的,在这里一并讲下。

Hash(函数/表)

Hash (中译为哈希,或者散列)函数在计算机领域,尤其是数据快速查找领域,加密领域用的极广。其作用是将一个大的数据集映射到一个小的数据集上面(这些小的数据集叫做哈希值,或者散列值)。Hash table(散列表,也叫哈希表),是根据哈希值(Key value)而直接进行访问的数据结构。也就是说,它通过把哈希值映射到表中一个位置来访问记录,以加快查找的速度。下面是一个典型的hash函数/表示意图:

哈希函数有以下两个特点:

  • 如果两个散列值是不相同的(根据同一函数),那么这两个散列值的原始输入也是不相同的。
  • 散列函数的输入和输出不是唯一对应关系的,如果两个散列值相同,两个输入值很可能是相同的。但也可能不同,这种情况称为“散列碰撞”(或者“散列冲突”)。上图中,John Smith和Sandra Dee就存在hash冲突。

Hash一个应用就是对数据集分类,比如上图,Hash值为0的表示可能在A集合中,Hash值为2的表示B集合中,依次类推,值为15的表示F集合中。但Hash冲突会在这里会导致严重的问题,对于一个未知的新值,其可能不属于上面任何一个集合,但由于冲突,其Hash值和上面的某一个相同,导致误报(因为事先我们不可能做一个含有无限多项输入的完整的Hash表,也就是原来的Hash函数不可能是完美的)。并且,hash冲突也会导致查找效率低下。

Bloom Filter

Bloom Filter是1970年由Bloom提出的。它实际上是一个很长的二进制向量和一系列随机映射函数(Hash函数)。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。Bloom Filter广泛的应用于各种需要查询的场合中,如Orocle的数据库,Google的BitTable也用了此技术。

如果想判断一个元素是不是在一个集合里,一般想到的是将所有元素保存起来,然后通过比较确定。链表,树等等数据结构都是这种思路. 但是随着集合中元素的增加,我们需要的存储空间越来越大,检索速度也越来越慢(O(n),O(logn))。

这时候就可以利用哈希表这个数据结构(它可以通过一个Hash函数将一个元素映射成一个位阵列(Bit array)中的一个点)。这样一来,我们只要看看这个点是不是1就知道可以集合中有没有它了。这就是Bloom Filter的基本思想。

但这时,哈希冲突会是一个问题:假设Hash函数是良好的,如果我们的位阵列长度为m个点,那么如果我们想将冲突率降低到例如 1%, 这个散列表就只能容纳m/100个元素。显然这就不叫空间效率了(Space-efficient)了。解决方法也简单,就是使用多个Hash,如果它们有一个说元素不在集合中,那肯定就不在。如果它们都说在,虽然也有一定可能性它们都在说谎,不过直觉上判断这种事情的概率是比较低的。这种多个Hash组成的数据结构就叫Bloom Filter。

一个Bloom Filter是基于一个m位的位向量(b1,…bm),这些位向量的初始值为0。另外,还有一系列的hash函数(h1,…hk),这些hash函数的值域属于1~m。下图是一个bloom filter插入x,y,z并判断某个值w是否在该数据集的示意图:

 

上图中,m=18,k=3;插入x是,三个hash函数分别得到蓝线对应的三个值,并将对应的位向量改为1,插入y,z时,类似的,分别将红线,紫线对应的位向量改为1。查找时,当查找x时,三个hash值对应的位向量都为1,因此判断x在此数据集中。y,z也是如此。但是查找w时,w有个hash值对应的位向量为0,因此可以判断不在此集合中。但是,假如w的最后那个hash值比上图中的大1,这是就会认为w在此集合中,而事实上,w可能不在此集合中,因此可能出现误报。显然的,插入数据越多,1的位数越多,误报的概率越大。

Wiki的Bloom Filter词条有关于误报的概率的详细分析:Probability of false positives。从分析可以看出,当k比较大时,误报概率还是比较小的,因此这存储还是很空间有效滴。

Bloom Filter有以下几个特点:

  1. 不存在漏报(False Negative),即某个元素在某个集合中,肯定能报出来。
  2. 可能存在误报(False Positive),即某个元素不在某个集合中,可能也被爆出来。
  3. 确定某个元素是否在某个集合中的代价和总的元素数目无关。

优点:

相比于其它的数据结构,Bloom Filter在空间和时间方面都有巨大的优势。Bloom Filter存储空间和插入/查询时间都是常数。另外, Hash函数相互之间没有关系,方便由硬件并行实现。Bloom Filter不需要存储元素本身,在某些对保密要求非常严格的场合有优势。

缺点:

另外,一般情况下不能从Bloom Filter中删除元素. 我们很容易想到把位列阵变成整数数组,每插入一个元素相应的计数器加1, 这样删除元素时将计数器减掉就可以了。然而要保证安全的删除元素并非如此简单。首先我们必须保证删除的元素的确在Bloom Filter里面. 这一点单凭这个过滤器是无法保证的。另外计数器回绕也会造成问题。

参考资料:

  1. http://en.wikipedia.org/wiki/Hash_function
  2. http://en.wikipedia.org/wiki/Bloom_filter
  3. http://antognini.ch/papers/BloomFilters20080620.pdf


本文作者: Sigma    在新浪微博关注SigmaSigmaWeibo    RSS订阅本博客
本文链接: http://www.sigma.me/2011/09/13/hash-and-bloom-filter.html
本博客采用知识共享署名—非商业性-禁止演绎使用3.0协议进行许可,转载请保留作者和原文链接。

  1. 2011年9月14日04:47 | #1

    @Yan

    hash函数应该很好取吧,只需要得出的hash值够随机就可以了

    话说bloom filter主要应该是硬件好实现,n个hash一起算

    lsh是什么,没听过。。。

  2. 2011年9月14日15:03 | #2

    它的输入是一个高位向量,输出是一坨bit,因为涉及到单精度数的线性运算,从这个角度来说,实现不是那么简单。

    但它实际的算法很直观,全程只涉及线性运算比如切割超平面之类,如果你玩过水果忍者会有深刻的体会。所以如果你不怕浮点数的话,实现不会很困难。

    里面的数学是一堆科学家在那证误差的理论上限。不看也罢。

  3. 2011年9月14日14:05 | #3

    @sigma

    一般的Hash函数好取,想做到内容相关就不好取了。比如两篇文章讲的都是911,希望他们的Hash值相同,或者两个图像都含有树,希望他们Hash值相近等等。

  4. 2011年9月13日17:30 | #4

    靠,locality.

  5. 2011年9月14日14:45 | #5

    @grapeot

    看了下lsh,一看到表达式那么复杂,还有积分微分。。。

    就没仔细看下去,那你觉得这东西用硬件实现回非常复杂么

  6. 2011年9月13日17:29 | #6

    为毛突然对这个感兴趣了。。。这个的缺点是没有具体说哈希函数怎么取。无法实现基于内容的信息检索。还是lsh(locavity sensitive hashing)靠谱。

  7. 2011年9月15日07:07 | #7

    请教一下,什么是不带引号的科研,什么是带引号的科研

  8. 2011年9月20日13:16 | #8

    @sigma

    <<Currently, I’m a first year Ph.D. student<<

    我是Master Second Year…我应该叫师兄……

  9. 2011年9月20日13:22 | #9

    @赫

    。。。。

    其实我现在也还是master。。。刚second year

  10. 2011年9月20日12:48 | #10

    搜Cloudflare居然遇到了ICT的同门~

    哈希函数无论怎么取都避免不了冲突的吧,一般来说,取8倍于N,k=3时,False Positive概率可以控制到2%左右。

    欢迎围观我的BloomFilter的开源实现

    https://github.com/liheyuan/BloomFilter-For-KeSeek

  11. 2011年9月20日13:01 | #11

    @赫

    哈哈,世界真小~

    膜拜了下师兄的代码,大牛啊~

  12. 2019年1月9日18:32 | #12

    Thank you a lot for giving everyone an extremely remarkable possiblity to discover important secrets from this web site. It’s usually very pleasurable plus jam-packed with a great time for me and my office peers to visit your blog a minimum of 3 times per week to learn the latest tips you have got. And lastly, I’m actually contented with the powerful tricks you give. Selected two areas in this post are surely the most suitable we have ever had.

  13. 2019年1月10日14:09 | #13

    Thanks for all your valuable labor on this website. My niece really loves getting into investigations and it’s really simple to grasp why. My partner and i notice all about the lively method you deliver very important tricks through your website and welcome participation from website visitors on that matter so our own simple princess has always been being taught a lot of things. Take advantage of the remaining portion of the new year. Your conducting a tremendous job.

  14. 2019年1月11日09:11 | #14

    Thank you for your entire labor on this blog. Ellie takes pleasure in working on internet research and it’s obvious why. Most people know all of the compelling means you create rewarding tips by means of the web blog and as well invigorate contribution from some others on that point plus our simple princess is without question studying so much. Take pleasure in the rest of the year. Your doing a useful job.

  15. 2019年1月12日05:07 | #15

    Needed to put you a bit of remark in order to say thanks once again for your personal awesome suggestions you have contributed above. It has been quite shockingly generous of you to allow extensively exactly what a number of us would’ve sold for an ebook in order to make some profit for their own end, notably considering that you could have tried it if you ever decided. These tactics also worked to provide a easy way to recognize that other people online have the same keenness just as my very own to understand great deal more with regard to this matter. Certainly there are lots of more fun occasions up front for many who examine your blog.

  16. 2019年1月13日01:02 | #16

    I wish to point out my love for your kind-heartedness giving support to folks that must have help on in this area. Your very own commitment to passing the solution up and down ended up being surprisingly powerful and have surely permitted women just like me to arrive at their ambitions. Your amazing invaluable key points can mean so much a person like me and even further to my office colleagues. Thanks a lot; from everyone of us.

  17. 2019年1月13日18:17 | #17

    Thanks so much for providing individuals with an extraordinarily brilliant possiblity to read articles and blog posts from this web site. It is always so terrific and full of a great time for me and my office acquaintances to search your web site nearly 3 times every week to read the newest items you have. And definitely, I am just actually pleased with all the staggering creative ideas you give. Certain two facts in this article are without a doubt the very best I’ve had.

  18. 2019年1月14日07:42 | #18

    I and also my guys were analyzing the excellent information from your website and so unexpectedly I had an awful feeling I never expressed respect to the web site owner for those tips. These men are actually for that reason thrilled to read all of them and now have sincerely been loving those things. We appreciate you actually being considerably kind as well as for choosing these kinds of terrific topics millions of individuals are really desirous to know about. My sincere apologies for not expressing appreciation to you sooner.

  19. 2019年1月15日00:15 | #19

    Thank you for each of your efforts on this web site. My niece loves participating in research and it is simple to grasp why. My partner and i hear all relating to the lively way you convey informative suggestions via your blog and encourage participation from website visitors about this concern and our favorite daughter is without a doubt discovering so much. Take pleasure in the remaining portion of the year. You’re the one performing a useful job.

  20. 2019年1月15日08:10 | #20

    I am also writing to let you understand of the excellent experience my cousin’s child developed browsing your site. She mastered too many issues, not to mention how it is like to have a great helping mood to let other individuals clearly grasp various very confusing issues. You truly exceeded our own expected results. Thank you for supplying such essential, trusted, edifying not to mention unique thoughts on this topic to Ethel.

  21. 2019年1月15日16:51 | #21

    I am glad for writing to make you know what a fabulous encounter our daughter enjoyed studying your web page. She came to find numerous pieces, which include what it is like to possess an awesome coaching mindset to let many others without hassle learn a number of tortuous things. You really exceeded our own expectations. Thanks for offering those warm and friendly, trustworthy, explanatory and in addition unique guidance on the topic to Mary.

  22. 2019年1月16日02:36 | #22

    Thanks a lot for giving everyone an extraordinarily splendid possiblity to check tips from this website. It is usually very pleasant and full of a good time for me and my office mates to search your website more than three times weekly to read the newest items you have got. Of course, I’m just at all times motivated with all the fantastic tips and hints served by you. Selected 2 ideas in this article are honestly the most suitable I’ve had.

  23. 2019年1月16日10:08 | #23

    Thanks a lot for providing individuals with remarkably superb chance to read in detail from this blog. It is always so beneficial and also packed with a lot of fun for me personally and my office co-workers to search your site particularly three times weekly to study the new issues you have. And of course, I am certainly happy for the terrific tips you serve. Selected 2 points in this article are certainly the most effective we have ever had.

  24. 2019年1月16日19:24 | #24

    I am commenting to make you understand of the helpful discovery my daughter developed using your blog. She even learned several issues, which include what it is like to possess an ideal giving nature to make other folks clearly gain knowledge of various tortuous topics. You actually exceeded our desires. Thank you for delivering such practical, dependable, informative and in addition fun thoughts on this topic to Tanya.

  25. 2019年1月17日05:32 | #25

    I’m just commenting to make you be aware of of the outstanding discovery our child gained viewing your site. She figured out a good number of issues, not to mention what it’s like to have a very effective helping character to let certain people without hassle have an understanding of selected problematic topics. You actually surpassed our own expectations. Thanks for churning out the invaluable, trustworthy, explanatory and also cool guidance on the topic to Gloria.

  26. 2019年1月17日07:51 | #26

    Thanks so much for providing individuals with an extremely wonderful possiblity to read from this website. It can be very good plus packed with fun for me and my office acquaintances to search your site particularly three times in 7 days to see the fresh guidance you will have. And lastly, I am also usually fascinated for the stunning ideas you serve. Certain two ideas in this article are basically the most beneficial I’ve had.

  27. 2019年1月17日23:31 | #27

    Needed to send you the bit of note to finally say thank you the moment again over the remarkable tricks you’ve contributed on this website. It’s really shockingly open-handed of people like you to make easily exactly what a lot of folks might have marketed for an electronic book in order to make some cash for themselves, certainly seeing that you could possibly have tried it in the event you desired. These tips as well worked to become great way to fully grasp someone else have similar dream like my personal own to know lots more with regards to this problem. I believe there are several more enjoyable situations ahead for individuals that read your blog post.

  28. 2019年1月18日07:22 | #28

    My spouse and i have been really thankful that John could carry out his analysis out of the ideas he received from your very own web site. It’s not at all simplistic just to be offering helpful tips other folks could have been trying to sell. And we all fully grasp we have you to be grateful to for this. All of the explanations you’ve made, the easy site menu, the relationships you will give support to foster – it is mostly spectacular, and it’s letting our son in addition to us imagine that the topic is thrilling, and that’s tremendously vital. Many thanks for all!

  29. 2019年1月18日14:47 | #29

    I needed to create you that little bit of note so as to say thank you once again over the nice suggestions you have featured here. It has been so generous of people like you in giving without restraint all that numerous people would’ve offered for an e-book to end up making some profit for themselves, most importantly considering the fact that you might have done it in case you decided. The creative ideas also served as a great way to be aware that someone else have similar dreams like my personal own to know the truth somewhat more when it comes to this matter. I’m sure there are lots of more enjoyable times up front for people who looked at your site.

  30. 2019年1月19日00:25 | #30

    Thank you for all of your hard work on this web page. Betty enjoys working on internet research and it’s easy to understand why. A number of us know all about the powerful method you present powerful steps through this website and therefore increase contribution from the others on the article then our own child is undoubtedly studying a lot of things. Have fun with the rest of the year. You are doing a terrific job.

  31. 2019年1月19日15:14 | #31

    A lot of thanks for all of your work on this web site. Ellie really likes conducting research and it’s simple to grasp why. Most people notice all relating to the powerful manner you provide priceless tips and tricks through your blog and even invigorate contribution from website visitors on that issue plus our favorite simple princess is always understanding a great deal. Take advantage of the rest of the new year. You’re performing a wonderful job.

  32. 2019年1月20日01:26 | #32

    I needed to write you one very small remark to help say thanks once again for these spectacular solutions you’ve contributed in this case. This has been simply extremely open-handed of you to present unhampered all that a number of us could have offered as an electronic book to end up making some bucks for themselves, primarily since you might well have tried it in the event you wanted. These smart ideas as well worked like the good way to fully grasp many people have a similar dream just as my personal own to grasp good deal more concerning this condition. Certainly there are some more fun situations in the future for folks who read carefully your site.

  33. 2019年1月20日03:20 | #33

    I in addition to my buddies were found to be going through the best information and facts located on your website and suddenly I got an awful suspicion I never expressed respect to the website owner for those strategies. These women appeared to be excited to study all of them and have now simply been loving them. I appreciate you for actually being really kind and for deciding upon this kind of marvelous areas millions of individuals are really wanting to be aware of. Our honest apologies for not expressing gratitude to you sooner.

  34. 2019年1月20日08:12 | #34

    I wanted to create you the tiny observation just to say thanks a lot as before on the nice secrets you have featured on this site. It is so surprisingly open-handed of people like you to grant easily what most of us would’ve sold as an e book to earn some bucks on their own, most importantly seeing that you might well have done it if you desired. These concepts as well worked like a good way to be aware that some people have similar passion really like my personal own to realize whole lot more on the subject of this issue. I’m sure there are several more pleasant situations ahead for people who go through your blog.

  35. 2019年1月21日02:27 | #35

    Thank you for your own hard work on this site. Kim enjoys doing investigations and it’s really easy to see why. We hear all concerning the compelling tactic you give great items on this blog and as well invigorate contribution from website visitors on that theme so our own girl is without a doubt discovering a lot. Take advantage of the remaining portion of the year. You have been doing a useful job.

  36. 2019年1月21日08:59 | #36

    I needed to send you a tiny note to thank you so much yet again for these wonderful methods you’ve shown above. It’s quite particularly generous of people like you to allow publicly all that a few individuals could have made available for an e book to end up making some bucks for their own end, precisely considering the fact that you could have done it if you ever desired. The good tips likewise worked to become a good way to comprehend some people have similar interest just as mine to know the truth a little more regarding this condition. I am sure there are millions of more fun situations up front for folks who take a look at your blog.

  37. 2019年1月21日16:19 | #37

    My husband and i ended up being so thankful that Louis could conclude his homework because of the ideas he had from your web site. It’s not at all simplistic just to continually be making a gift of helpful hints which usually men and women could have been selling. And now we take into account we now have you to appreciate for this. All the illustrations you made, the simple website navigation, the relationships you can make it possible to promote – it’s mostly excellent, and it’s letting our son in addition to the family do think this situation is interesting, which is certainly pretty vital. Many thanks for the whole lot!

  38. 2019年1月22日02:36 | #38

    I must point out my gratitude for your kind-heartedness for people that require guidance on this particular idea. Your personal dedication to passing the message all-around was wonderfully practical and has all the time helped workers like me to reach their pursuits. The interesting hints and tips can mean much a person like me and still more to my colleagues. Thanks a ton; from all of us.

  39. 2019年1月22日18:53 | #39

    I simply needed to thank you so much again. I am not sure the things that I might have undertaken in the absence of the entire smart ideas documented by you over this field. Certainly was the fearsome crisis for me personally, however , seeing a new skilled fashion you processed that forced me to leap over delight. I am happier for the information and even sincerely hope you realize what an amazing job you’re providing educating most people using your site. More than likely you haven’t got to know any of us.

  40. 2019年1月22日23:08 | #40

    I would like to point out my passion for your generosity in support of those people who should have help with your concern. Your real commitment to getting the message all over had been really useful and has specifically made workers like me to achieve their dreams. Your new important guidelines implies much a person like me and extremely more to my colleagues. Thanks a ton; from everyone of us.

  41. 2019年1月23日01:49 | #41

    I am writing to let you understand of the great experience my wife’s child obtained viewing your site. She discovered some details, which included how it is like to possess an excellent coaching mood to let the others quite simply learn specified complex topics. You really did more than readers’ expected results. Thanks for showing these invaluable, safe, educational and unique tips on the topic to Tanya.

  42. 2019年1月23日04:11 | #42

    I would like to show thanks to this writer for bailing me out of this type of crisis. Just after surfing throughout the the net and meeting methods which were not pleasant, I was thinking my entire life was well over. Existing without the presence of strategies to the issues you have sorted out through the posting is a crucial case, and those which might have in a wrong way affected my career if I hadn’t encountered your web blog. Your actual natural talent and kindness in dealing with the whole thing was very useful. I am not sure what I would’ve done if I hadn’t discovered such a thing like this. I’m able to at this moment look forward to my future. Thanks for your time so much for the specialized and effective help. I will not hesitate to suggest your blog to any person who would need care on this issue.

  43. 2019年1月23日10:40 | #43

    I simply had to say thanks again. I’m not certain the things I would have implemented in the absence of the entire advice shown by you regarding this concern. It absolutely was an absolute horrifying issue in my position, however , seeing your skilled tactic you processed that forced me to weep for delight. I am just thankful for this guidance and thus believe you realize what an amazing job you have been undertaking training people today through your blog post. Most probably you’ve never encountered all of us.

  44. 2019年1月23日19:05 | #44

    I would like to show appreciation to the writer for rescuing me from this type of predicament. After scouting through the world wide web and seeing proposals which were not helpful, I believed my entire life was done. Existing minus the solutions to the problems you’ve solved through your main blog post is a crucial case, and the kind which may have adversely damaged my entire career if I hadn’t noticed the blog. The mastery and kindness in playing with a lot of things was very useful. I’m not sure what I would have done if I hadn’t encountered such a stuff like this. I am able to at this point relish my future. Thank you so much for your high quality and results-oriented help. I won’t hesitate to refer your web page to anybody who will need support about this subject matter.

  45. 2019年1月24日11:18 | #45

    I want to voice my passion for your kindness supporting folks who require help with your subject matter. Your personal commitment to getting the message all-around came to be incredibly insightful and has in every case encouraged girls just like me to attain their endeavors. Your own informative tutorial signifies a great deal to me and still more to my colleagues. With thanks; from each one of us.

  46. 2019年1月24日20:30 | #46

    Thanks for all of the hard work on this site. Kim takes pleasure in managing research and it is easy to see why. Most of us hear all relating to the powerful means you convey priceless tips and hints via the website and therefore welcome response from others about this situation and our own princess is truly studying a whole lot. Have fun with the remaining portion of the year. You have been conducting a fantastic job.

  47. 2019年1月25日05:08 | #47

    I not to mention my buddies ended up viewing the best hints on your web blog and quickly I had a terrible feeling I never thanked the site owner for them. The men are actually certainly thrilled to read them and have now in fact been loving these things. We appreciate you getting simply accommodating as well as for obtaining this kind of good subject areas most people are really eager to be informed on. Our own sincere regret for not expressing gratitude to earlier.

  48. 2019年1月25日11:40 | #48

    I want to show my thanks to you for bailing me out of this type of difficulty. Right after browsing throughout the world-wide-web and coming across proposals which were not helpful, I assumed my entire life was well over. Existing minus the strategies to the problems you have solved all through this posting is a crucial case, and the ones that might have in a wrong way damaged my entire career if I had not come across your site. The competence and kindness in handling all the details was priceless. I am not sure what I would have done if I hadn’t discovered such a thing like this. I’m able to at this moment look forward to my future. Thanks a lot very much for your professional and amazing guide. I will not think twice to endorse your web blog to any person who would like care on this issue.

  49. 2019年1月25日21:52 | #49

    I actually wanted to send a small comment to appreciate you for the unique advice you are showing at this site. My particularly long internet research has now been paid with really good details to write about with my friends. I ‘d assert that many of us readers actually are truly fortunate to dwell in a remarkable website with many outstanding individuals with great secrets. I feel quite grateful to have come across your entire web page and look forward to so many more entertaining moments reading here. Thanks a lot once again for a lot of things.

  50. 2019年1月26日13:53 | #50

    I together with my pals have already been checking out the best points from your web site and immediately I had a horrible suspicion I had not expressed respect to the blog owner for those strategies. All of the men happened to be consequently glad to learn them and already have simply been having fun with those things. Appreciation for indeed being considerably thoughtful and also for deciding upon varieties of quality useful guides millions of individuals are really desirous to learn about. My very own sincere apologies for not expressing appreciation to you earlier.

  51. 2019年1月27日00:52 | #51

    My wife and i were very delighted when Emmanuel could finish up his research while using the precious recommendations he came across in your site. It’s not at all simplistic just to always be making a gift of guidance that many some other people may have been selling. We really discover we have the website owner to thank for this. The main explanations you’ve made, the simple site navigation, the relationships you help to engender – it’s got mostly amazing, and it’s letting our son in addition to our family know that this content is awesome, which is certainly exceedingly indispensable. Many thanks for everything!

  52. 2019年1月27日07:38 | #52

    I wanted to post you one very little word to be able to thank you so much once again for the superb ideas you’ve provided in this article. This has been simply extremely generous with you to convey without restraint what most people could have made available as an electronic book in making some bucks for themselves, most notably given that you might well have done it if you wanted. These inspiring ideas as well worked to provide a great way to realize that most people have a similar eagerness much like my personal own to learn more and more when it comes to this matter. I know there are many more enjoyable times in the future for individuals who looked at your website.

  53. 2019年1月28日01:53 | #53

    Thank you so much for providing individuals with an exceptionally wonderful possiblity to read from this website. It is often so terrific plus jam-packed with a lot of fun for me and my office mates to visit your website at the very least 3 times every week to study the latest items you have. And indeed, I am usually pleased considering the breathtaking methods you serve. Selected 2 points in this post are unequivocally the most beneficial I’ve ever had.

  54. 2019年1月28日14:04 | #54

    I truly wanted to develop a simple word so as to thank you for these lovely strategies you are writing here. My prolonged internet lookup has now been recognized with really good facts and techniques to go over with my guests. I would assume that we site visitors are rather endowed to dwell in a superb website with very many marvellous professionals with very beneficial suggestions. I feel quite lucky to have encountered your entire site and look forward to some more thrilling moments reading here. Thanks a lot again for all the details.

  55. 2019年1月29日05:28 | #55

    Needed to compose you a very little observation just to say thanks a lot again for your extraordinary tips you have provided at this time. This is quite tremendously generous with people like you to present unreservedly all a number of people could possibly have distributed as an e book to help with making some bucks for their own end, principally considering that you might well have done it if you ever decided. These inspiring ideas likewise acted to become fantastic way to be certain that other people online have the identical interest just as my personal own to figure out somewhat more regarding this problem. I am sure there are some more pleasant opportunities ahead for individuals who read your blog.

  56. 2019年1月30日18:41 | #56

    I intended to compose you the little word in order to give many thanks yet again for those precious concepts you’ve documented on this website. This has been quite shockingly open-handed of people like you to offer unreservedly all that a few people could have offered for an ebook to generate some profit for themselves, mostly now that you might have done it if you considered necessary. These things also acted to become great way to be aware that other people online have similar keenness similar to my personal own to find out a good deal more when considering this problem. I’m sure there are thousands of more pleasant times in the future for individuals that take a look at your blog post.

  57. 2019年1月31日20:16 | #57

    I intended to send you the very small word to finally say thanks once again for your splendid secrets you have shown on this page. This is quite open-handed of people like you in giving easily just what a lot of people might have marketed for an electronic book to generate some bucks for themselves, particularly considering that you could possibly have done it if you ever considered necessary. The techniques also worked like a fantastic way to understand that some people have the same interest similar to mine to realize a great deal more related to this issue. I think there are millions of more fun sessions in the future for people who look over your site.

  58. 2019年2月1日08:16 | #58

    I am just writing to let you be aware of of the great encounter my wife’s daughter gained visiting your blog. She picked up so many issues, most notably how it is like to have an excellent giving mindset to make other individuals with no trouble know precisely chosen complicated things. You truly surpassed my desires. Thanks for churning out such powerful, healthy, edifying and even fun thoughts on your topic to Janet.

  59. 2019年2月1日20:14 | #59

    I together with my friends were looking at the great hints on the website and then immediately developed a horrible feeling I had not expressed respect to you for those techniques. The guys came so excited to read them and have in effect simply been enjoying these things. Appreciate your getting well helpful and also for picking out this form of superb issues millions of individuals are really wanting to be informed on. My honest regret for not saying thanks to you earlier.

  60. 2019年2月2日08:33 | #60

    I wish to convey my appreciation for your kind-heartedness supporting those people who require help on your study. Your special dedication to passing the message along was incredibly informative and have continuously permitted girls just like me to achieve their aims. Your new important help means this much a person like me and much more to my office workers. Thanks a ton; from everyone of us.

  61. 2019年2月2日21:45 | #61

    I simply needed to thank you very much yet again. I do not know the things I could possibly have gone through in the absence of the tactics shared by you relating to this problem. It was an absolute distressing issue in my position, however , taking note of the very specialized mode you treated the issue forced me to weep over joy. Now i am happier for the assistance and in addition have high hopes you really know what an amazing job you are always accomplishing training other individuals using your webpage. Most probably you haven’t met any of us.

  62. 2019年2月3日09:12 | #62

    Thank you for all of your work on this web site. Kate take interest in getting into research and it’s really obvious why. My spouse and i learn all of the powerful ways you present great solutions through this website and in addition improve contribution from visitors on the subject plus our girl is certainly becoming educated a whole lot. Take advantage of the remaining portion of the new year. You are always carrying out a fabulous job.

  63. 2019年2月3日21:15 | #63

    I really wanted to construct a simple comment so as to thank you for these precious tips you are writing on this website. My extensive internet look up has at the end been honored with sensible insight to talk about with my visitors. I ‘d mention that many of us readers actually are unequivocally lucky to dwell in a superb community with many perfect individuals with helpful ideas. I feel very blessed to have discovered your entire webpage and look forward to tons of more thrilling times reading here. Thanks once again for all the details.

  64. 2019年2月4日08:01 | #64

    I intended to put you that very little note just to give thanks again just for the superb advice you have contributed above. It has been certainly particularly generous of people like you to provide unreservedly exactly what a number of us would have advertised for an e-book to get some cash for their own end, most importantly considering that you could have done it if you ever desired. Those secrets as well acted to become good way to recognize that someone else have the same interest just like my own to realize a great deal more with regard to this condition. I believe there are millions of more enjoyable situations ahead for folks who looked over your site.

  65. 2019年2月4日19:40 | #65

    My husband and i have been relieved that Peter managed to carry out his inquiry because of the precious recommendations he acquired through the weblog. It’s not at all simplistic just to continually be giving freely helpful hints people today have been selling. And we all fully understand we’ve got the blog owner to thank for that. The explanations you’ve made, the easy web site menu, the relationships you can help to promote – it is many unbelievable, and it’s really leading our son and our family believe that this idea is amusing, and that’s especially fundamental. Thanks for everything!

  66. 2019年2月5日07:09 | #66

    A lot of thanks for your entire efforts on this blog. My aunt takes pleasure in engaging in investigations and it’s really simple to grasp why. We know all regarding the compelling ways you create helpful tips and hints on this web blog and even inspire participation from others on this article while our own princess is without a doubt becoming educated a great deal. Take pleasure in the rest of the year. Your carrying out a tremendous job.

  67. 2019年2月5日17:15 | #67

    I and also my guys were found to be looking at the great thoughts from your web page and so before long developed an awful suspicion I had not expressed respect to the website owner for those tips. Most of the young boys came for this reason thrilled to study all of them and have now in truth been making the most of those things. Appreciation for really being very kind as well as for picking variety of magnificent guides millions of individuals are really desperate to learn about. My sincere regret for not saying thanks to you earlier.

  68. 2019年2月6日14:02 | #68

    My wife and i have been quite thrilled that Emmanuel could finish off his homework from your precious recommendations he made using your web page. It’s not at all simplistic to just always be giving freely tips and tricks which usually the others could have been making money from. And we also realize we now have the website owner to give thanks to for this. The type of illustrations you have made, the simple website navigation, the friendships you will help engender – it is all awesome, and it is making our son in addition to us consider that the situation is cool, and that is unbelievably pressing. Thank you for the whole thing!

  69. 2019年2月7日11:48 | #69

    My husband and i ended up being now peaceful when Peter could carry out his investigation from your ideas he received through the web pages. It is now and again perplexing to just happen to be offering strategies which many people could have been selling. We really keep in mind we need you to give thanks to for this. The main illustrations you have made, the straightforward site navigation, the friendships your site make it possible to engender – it’s most astonishing, and it is making our son in addition to us do think that idea is entertaining, which is certainly extremely serious. Many thanks for the whole thing!

  70. 2019年2月8日01:08 | #70

    Thanks for all of your efforts on this site. My daughter loves doing investigations and it’s easy to understand why. A lot of people learn all concerning the lively mode you produce very useful guidance via the website and improve participation from website visitors about this idea while our own girl is learning a lot. Take pleasure in the rest of the new year. You’re conducting a pretty cool job.

  71. 2019年2月8日05:19 | #71

    I simply want to tell you that I am beginner to blogging and site-building and absolutely loved this website. Most likely I’m likely to bookmark your website . You definitely have great posts. Bless you for sharing with us your web page.

  72. 2019年2月9日02:20 | #72

    I’m also writing to let you understand what a outstanding encounter my princess encountered going through your web site. She even learned many things, not to mention how it is like to have a very effective coaching heart to get many others smoothly fully grasp certain problematic subject matter. You actually surpassed visitors’ expectations. Thank you for imparting the essential, trustworthy, informative and as well as unique tips about the topic to Sandra.

  73. 2019年2月9日11:41 | #73

    I just wanted to compose a simple message to appreciate you for the wonderful tactics you are writing at this site. My extended internet look up has finally been compensated with wonderful facts and strategies to share with my colleagues. I would assume that many of us website visitors are unquestionably lucky to be in a decent community with very many outstanding individuals with very beneficial pointers. I feel rather lucky to have come across your web site and look forward to many more fabulous minutes reading here. Thanks once again for a lot of things.

  74. 2019年2月10日11:44 | #74

    I simply wished to thank you so much once more. I do not know what I would have used without the type of points shared by you over my subject matter. It absolutely was the alarming situation in my circumstances, nevertheless taking note of the specialized way you managed the issue forced me to leap for contentment. Now i am grateful for your advice and then trust you comprehend what a powerful job you are putting in training others via your web blog. Most likely you’ve never come across any of us.

  75. 2019年2月11日01:54 | #75

    I simply wanted to appreciate you all over again. I’m not certain the things that I would’ve used without the entire tips shared by you directly on that situation. It has been a intimidating dilemma for me personally, but being able to see this expert approach you solved that made me to leap over contentment. I am grateful for the information as well as hope you are aware of a great job you have been doing training most people via your web page. I am certain you have never encountered any of us.

  76. 2019年2月11日23:24 | #76

    Jen connelly is the actress that i have a huge crush. here eyes are really very pretty..

  77. 2019年2月12日16:01 | #77

    Hiya! I simply wish to give an enormous thumbs up for the great data you will have right here on this post. I can be coming back to your blog for extra soon.

  78. 2019年2月12日17:20 | #78

    At the end of the day, Knight and Day did well to serve it’s purpose and managed to keep some of us entertained.

  79. 2019年2月16日12:05 | #79

    I believe one of your commercials caused my web browser to resize, you may well want to put that on your blacklist.

  80. 2019年2月16日16:45 | #80

    I want to be able to write entries and add pics. I do not mean something like myspace or facebook or anything like that. I mean an actual blog. .

  1. 2011年11月7日14:41 | #1
  2. 2018年5月11日00:13 | #2
  3. 2018年6月16日04:56 | #3

无觅相关文章插件,快速提升流量