Linux内核(源代码的链接在github)

1.链表、双向链表、无锁链表

2.B+ 树,这是一些你无法在教科书上找到的说明。

一个相对简单的B+树的实现。我把它作为一个学习练习来帮助理解B+树是如何工作的。这同样也被证明是有用的。

...

一个在教科书中并不常见的技巧。最小的值在右侧而不是在左侧。所有在一个节点里用到的槽都在左侧,所有没有用到的槽包含了空值(NUL)。大多数操作只简单地遍历所有的槽一次并在第一个空值时(NUL)终止。

3.优先排序列表 用于 互斥量、驱动等等。

4.红黑树用于调度、虚拟内存管理、追踪文件描述符和目录项等。

5.区间树

6.根树用于内存管理,NFS相关查询和网络相关功能。

根树的一个通用的用处是存储指针到结构页中。

7.优先级堆,如其名称的教科书实现,用于cgroup。

8.哈希函数,参考了Knuth和一篇论文。

Knuth建议,用乘法哈希的机器字来表示接近黄金比例的素数的最大整数。Chuck Lever验证了该技术的有效性:

http://www.citi.umich.edu/techreports/reports/citi-tr-00-1.pdf

这些素数的选择是位稀疏的,他们可以通过移位和加法操作,而不必使用乘法器,乘法器是很慢的。

9.有的代码,比如lov_pool这个驱动,实现了他们自己的哈希函数。

使用了一种旋转哈希算法的哈希函数

Knuth, D. 《计算机程序设计艺术, 卷 3: 排序与搜索》, 第6、7章. Addison Wesley, 1973

10.哈希表用于实现inode、文件系统完整性检测等等。

11.位数组用于处理标志位、中断等等。并在Knuth那本书的卷4中阐述。

12.信号量和自旋锁

13.二分查找用于中断处理,寄存器缓存查询等等。

14.B树的二分查找。

15.深度优先搜索被广泛地用于目录配置中。

执行一个修改过的命名空间树的深度优先遍历,以指定的start_handle节点开始(及结束)。回调函数会在任何一个参数匹配的节点被发现时被调用。如果回调函数返回了一个非0值,搜索将会立即终止并且将其返回给调用者。

16.广度优先搜索用于检测运行时锁定的正确性。

17.链表中的归并排序用于垃圾收集、文件系统管理等等。

18.冒泡排序在一个驱动库中也有一个令人惊讶的实现。

19.Knuth-Morris-Pratt 字符串匹配,

根据Knuth、Morris和Pratt[1]实现了一个线性时间的字符串匹配算法。他们的算法避免了转换函数的显式地计算DELTA。对于长度为n的文本,其匹配时间是O(n),对于长度为m的模式(pattern),仅使用一个辅助函数PI[1 . .m],预先计算模式的时间为O(m)。数组PI允许转换函数DELTA被实时有效地计算。粗略地说,对于任何状态"q"= 0,1,…、m和在SIGMA中的任何字符"a

linux 内核 md5 算法_Linux内核中的数据结构和算法相关推荐

  1. iOS标准库中常用数据结构和算法之内存池

    上一篇:iOS标准库中常用数据结构和算法之位串 ⛲️内存池 内存池提供了内存的复用和持久的存储功能.设想一个场景,当你分配了一块大内存并且填写了内容,但是你又不是经常去访问这块内存.这样的内存利用率将 ...

  2. 在Object-C中学习数据结构与算法之排序算法

    笔者在学习数据结构与算法时,尝试着将排序算法以动画的形式呈现出来更加方便理解记忆,本文配合Demo 在Object-C中学习数据结构与算法之排序算法阅读更佳. 目录 选择排序 冒泡排序 插入排序 快速 ...

  3. iOS标准库中常用数据结构和算法之二叉排序树

    上一篇:iOS标准库中常用数据结构和算法之排序 ?二叉排序树 功能:二叉排序树的标准实现是一颗平衡二叉树.二叉排序树主要用来解决高效插入和高效检索以及进行排序的问题.系统分别提供了二叉排序树节点的查找 ...

  4. 【离散数学中的数据结构与算法】六 排列与组合二

    接着上一篇学习:[离散数学中的数据结构与算法]五 排列与组合一 上一篇文章主要学习了可重复选取的可重排列和不可重复选取的排列.他们都是在n个不同的对象中选取. 今天我们俩学习的是,当这个n个对象中有相 ...

  5. JavaScript中有关数据结构和算法的最佳书籍

    If you're trying to learn about data structures or algorithms, you're in luck - there are a lot of r ...

  6. JavaScript中的数据结构和算法

    JavaScript不仅是一门用于网页交互的脚本语言,还可以用于编写高效的数据结构和算法.在本文中,我们将介绍JavaScript中可用的数据结构和常见的算法,并说明它们在实际应用中的用途和性能. 数 ...

  7. 搜索中常见数据结构与算法探究(二)

    本文介绍了几个常见的匹配算法,通过算法过程和算法分析介绍了各个算法的优缺点和使用场景,并为后续的搜索文章做个铺垫:读者可以通过比较几种算法的差异,进一步了解匹配算法演进过程以及解决问题的场景:KMP算 ...

  8. c语言消消看算法,论消去游戏中的数据结构与算法.doc

    论消去游戏中的数据结构与算法 PAGE PAGE PAGE 32 摘要: 近年来,随着经济的日益发展,人们的生活水平不断提高,生活质量也在渐渐的改善.适当的游戏对人们的业余生活是不可必缺的.说到游戏, ...

  9. Python数据结构与算法(1.1)——数据结构与算法导论

    Python数据结构与算法(1.1)--数据结构与算法导论 0. 学习目标 1. 数据结构概述 1.1 什么是数据结构 1.2 逻辑结构和物理结构 1.3 抽象数据类型 1.4 数据结构学习的必要性 ...

  10. 【数据结构与算法】如何高效学习数据结构与算法

    前言 本文是个人基于覃超老师的<算法训练营>的学习笔记,此笔记的内容都是学习后的个人记录.个人总结.理解和思想.仅供参考学习. 很多同学在大学的时候会觉得数据结构与算法很枯燥,很多小伙伴都 ...

最新文章

  1. WCF for .NET CF的一个应用及两个困惑的问题
  2. LeetCode Non-overlapping Intervals(dp,greedy)
  3. 005 Ceph配置文件及用户管理
  4. SQLITE_ERROR - table sap_capire_bookshop_books has no column named currency
  5. AJAX实践DWR篇(转载)
  6. Hadoop入门(十五)Mapreduce的数据排序程序
  7. 如何通过属性给实体赋值
  8. oracle统计学生成绩c,Oracle11g学生成绩管理系统.docx
  9. 滴滴司机被醉酒乘客殴打 官方回应来了...
  10. 程门立雪的故事,成语程门立雪的主人公是谁?
  11. sql server insert 锁表_SQL Server的insert执行的秘密(下) 带外键的insert分析
  12. 数值分析方阵的QR分解
  13. 贺利坚老师汇编课程61笔记:操作显存数据即在屏幕上显示
  14. hdoj1159:Common Subsequence(dp基础题-最长公共子序列LCS)
  15. python之手机号码的验证查询
  16. 时间管理工具推荐,助你实现高效能,慢生活
  17. 好用的手机识别文字软件推荐,你都知道几个呢?
  18. python基础之列表函数(10)
  19. 写好一份数据分析报告需要注意的13个要点
  20. mysql 按首字母进行检索数据

热门文章

  1. 跨浏览器检测某个节点是不是另一个节点的后代
  2. C#预处理器指令 用法
  3. Silverlight 2 控件 SDK 源代码
  4. Mr.J-- jQuery学习笔记(十二)--移入移出事件电影排行榜小demo
  5. 关系型数据库设计范式
  6. CF#574E. OpenStreetMap 题解
  7. bzoj4593: [Shoi2015]聚变反应炉
  8. 回忆Java基础中Map的遍历方法
  9. Python3 使用requests请求,解码时出错:'utf8' codec can't decode byte 0x8b in position 1: invalid start byte...
  10. CF #371 (Div. 2) C、map标记