- 博客(6)
- 收藏
- 关注
原创 《操作系统》_第一讲_什么是操作系统
屏幕上输出hello是如何实现的呢?首先假定我们计算机的内存地址300处保存着h的ascii码0x68,显存的地址是777。cup发送指令给内存,这条指令告诉内存,将数据发送到地址777处。接下来上电,执行这条指令,总线工作以及合作,就把0x68放到显示器了。其他字符依次执行。这样hello就出现在屏幕上了。操作系统如果执行所有的指令都直接在硬件上工作,那么麻烦程度可想而知,操作系统就是用来连接应用软件和计算机硬件的。应用软件通过操作系统来使用计算机硬件,输出hello时,操作系统会使用计算机硬件实
2020-11-08 10:24:04 225
原创 《算法:C语言实现》_第一部分_用快速合并算法实现解决连通性问题
上一篇文章讲到,快速查找算法只适合开销不大的连通性问题上,现在对此进行改进。每次合并遍历全部数组效率太低,能不能不要每次遍历数组全部值,优化为每次只遍历数组的部分值,复杂度因此就会降低。快速合并的补算法它与快速查找算法都基于同一个数据结构——通过对象名引用数组元素,但数组元素表达的含义不同,具有更复杂的抽象结构。这里运用到了树结构,在连通性的关系中,p->k & q->k = p->q可将k是为根节点,p和q是为子节点,p和q有共同的根结点k,故p和q连通。数据结构
2020-11-07 22:38:46 273
原创 《算法:C语言实现》_第一部分_连通性问题解决算法
解决连通问题算法快速-查找算法的一种简单实现。快速-查找算法结构该算法的基础是一个整型数组,当且仅当第p个元素和第q个相等时,p和q是连通的。初始时,数组中的第i个元素的值为i,0<=i<N。为实现p与q的合并操作,我们遍历数组,把所有名为p的元素值改为q(或者将名为q的元素改为p)。代码结构从标准输入读取小于N的非负整数对序列(对p-q表示“把对象p连接到q”),并且输出还未连通的输入对。数组id,每个元素表示一个对象,有以下性质,当且仅当p和q是连通的,id[p]和id[q]相
2020-11-05 22:52:41 226
原创 《算法:C语言实现》_第一部分 基础知识_引言
算法与数据结构大多数算法关注的是计算机中涉及的数据的组织方法。用这种方法建立的对象称为数据结构。它们都是计算机科学研究的核心。简单算法可以导致非常复杂的数据结构,反之,复杂算法可以利用简单数据结构以便理解算法。算法在大规模问题中更能凸显重要性对于大规模问题(或者需要求解大量小规模的问题的应用),我们的动机就是设计时间和空间都尽可能高效的方法。一个设计良好的算法会使程序快上数百万倍。学习算法目的学习求解重要任务的合理算法,仔细关注这些方法之间可比较的性能。不应该利用不清楚会消耗什么资源的算法,了
2020-11-04 23:32:28 179
原创 《Redis设计与实现》_第四章_重点回顾
重点回顾1.字典被广泛用于实现Redis的各种功能,其中包括数据库和哈希键。2.Redis中的字典使用哈希表作为底层实现,每个字典带有两个哈希表,另一个仅在rehash时使用。3.当字典被用作数据库的底层实现,或者哈希键的底层实现时,Redis使用Murmur Hash2算法来计算键的哈希值。4.在对哈希表进行扩展或者收缩时,程序将现有哈希表包含的所有键值对rehash到新哈希表里,并且这个rehash不是一次性完成的,而是渐进式地完成的。...
2020-11-04 22:32:19 111
原创 《Redis设计与实现》_第四章_渐进式rehash
渐进式rehash前面文章讲到,扩展或收缩哈希表需要将ht[0]里面的所有键值对rehash到ht[1]里面,但是,这个rehash动作并不是一次性、集中式完成的,而是分多次渐进式完成的。为什么要分多次渐进式完成?这就和哈希表里面保存的键值对的数量有关了,如果ht[0]里面只保存了4个键值对,那么,服务器可以瞬间将这些键值对rehash到ht[1]中;但是如果ht[0]中保存了四百万、四千万甚至四亿个键值对,一次性将这些键值对全部rehash到ht[1]中,很可能会导致服务器停止服务。因此为了避免r
2020-11-03 23:25:06 159
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人