总结

自己本身就不太喜欢写东西,以前自己定目标要每天写日记,可是就是坚持不下来。这段时间有了csdn的博客自己也就零零散散的写点东西,反正总的感觉就是写的不精,只能自己作为练手和记录学习过程的纪念,不过感觉也是蛮好的。想想这段时间的学习过程,自己觉得每天学的东西多,但是没有梳理,没有总结。总是不断的学习新的东西,没有花一定时间对已学过的知识的总结,这就造成了一种猴子搬包谷的现象,搬的包谷多,自己也很累,但是到最后在手上可以拿来“吃”的东西,真的很少。所以今天想来想去,还是决定每天写点东西吧,不知道能不能坚持下来,但是希望能够尽量多写,如果能有朋友督促的话就更好了,我也很希望能够跟大家分享自己的每一天。

     上午:学习算法导论部分的知识,主要涉及数据结构部分的 队列,栈,链表,二叉树。以及散列表的一部分。也算是温习了数据结构部分的知识吧。

                队列--先进先出的性质 算法导论里面用了数组来表示队列Array[1..n],其中通过head和tail.来分别表示队列的进出,如果有元素x要进入,则移动A[tail]=x,同时tail=tail+1。这里需要考虑队列头尾问题,因为用数组表示队列,它实质是一个循环数组,然后判断头尾的方法就是如果tail=head则队列为空,但需要保证tail中不存放元素,这样能够保证在循环数组满的时候可以和空的时候区分开。当元素出队列时,则移动head.

                栈---后进先出的性质。算法导论里面同样适用数组来表示栈。主要就是设置了一个top标志,它指着栈顶部的元素,如果元素x要进栈则需要先使得top=top+1然

Array[top]=x。当没有元素时,top则为-1。

             链表---就是一种特殊的结构体,里面包含了value存放的对象,以及指针域,一般包含next域,如果是双向链表的话,那么就还有prev指针域。链表需要包含一个Head指

针,用来指向表头。表头元素为空链表为空。插入则可以通过Head插入,删除时需要判断链表时候为空之类的。为了方便算法导论里面加入了一个Nil()结构,它是一个链表节点包含next域,和prev域,但是它不包含存放的对象的值。Nil->next == Nil->Prev 链表为空。插入元素比较简单直接,同时实现队列也比较简单,因为队列从tail部分插入元素,链表需要通过链尾来插入,双向链表是很好的选择,这是Nil->Prev指向链尾,这就可以直接向链尾插入元素,删除元素不用考虑链表头,因为Nil为一个链表节点,删除时候Prev已经指向

Nil这样就表示链表空了

              二叉树---它是一种特殊的结构,包含对象,Left域,Right域,其中Left指向左子树,right指向右子树。但是只能保证每个节点至多有两个儿女。如果采用left域表示孩子节

点,right域表示兄弟节点,则一个节点可以有多个儿女。

           散列表--就看了一点,就是一个集合中的一个关键字,映射到一个T[n]的数组中,然后T[n]的数组中对应着响应关键字对应的值,主要目的就是使得查找元素对应的值的时间

为O(1).

    中午:听了一会书虫里面的英语,主要讲Mary queen of scotland.将玛丽给她儿子jim的一份信,但是她在英格兰的监狱中,她想通过信给儿子解释自己没有杀害丈夫,希望儿子知道真相,最后自己被伊丽莎白女王处死。

     下午: 也不知道干些什么,上网看看这,看看那,听一会音乐,后面突然觉得还是看看存储吧,毕竟回学校还是要做这个的,就看了一个bloom filter。也巧这个也和hash相关。因为重复数据删除中,用来确实数据是否重复的指纹索引占的字节数比较大Md5 128bit sha1 160bit 还有一个块标示4bit.然后表示每一个数据块需要44字节的空间,这样在大数据量的情况下就不行了。于是采用bloom filter方法,通过一个bit数组,数组中的每一个对应着一个hash值,假设一个bit数组Array[8]={0,0,0,0,0,0,0,0}.有一个数据块X,经过hashA hashB hashC 计算的哈希值为{2,4,5}。一个数据块Y,经过hashA hashB hashC 计算的哈希值为{1,4,6}.那么通过bloom filter后数组中表示为 Array[8]={0,1,1,0,1,1,1,0}.然后以后判断数据块重复时,先通过bloom filter判断是否包含该数据块,不包含则一定不包含,但是如果包含该数据块,又不能真正确定包含,因为不同数据块可能产生相同hash值,则后面需要经过hash表查找,来判断是否重复,如果找到,还需要经过磁盘查找。如果没有则不用进行磁盘查找。多么巧妙的一个方法啊,这极大减少了访问磁盘的次数,提升了系统的效率。

   哇~写了将近一个小时了,以后要合理预算时间了,不能搞这么晚,总之坚持总结,坚持分享,坚持记录自己的每一天,不能学猴子搬包谷。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值