• 好好学习,天天向上~
  • 欢迎欢迎~

2019年01月的内容

单片机

单片机很好玩14,制作“人工向日葵”,自动寻光

上一节介绍了如何使用C语言编程单片机控制步进电机转动,在文章最后提到,只要再结合感光器件,我们就能够制作一个“人工向日葵”,如下图: 可以看出,单片机控制步进电机带着“箭头”始终指向光源,就好像向日葵一直跟着太阳一样。怎么做呢? 两项基本工作 这里仍然计划使用 51 单片机作为...

lcc 7个月前 (01-30) 208℃ 0评论 0

linux笔记

linux学习22,linux内核中的红黑树是怎样设计和使用C语言实现的?

上一节较为详细的讨论了普通二叉搜索树的局限性,在此基础上引出了红黑树的概念并介绍了其原理。在文章最后提到,为了维护一棵红黑树,在插入或者删除节点后,需要对二叉树做重着色和变换操作。那么,为什么要做重着色和变换操作呢?怎么做呢?本节将结合 linux 内核源代码讨论之。 为什么红...

lcc 7个月前 (01-30) 200℃ 0评论 0

linux笔记

linux学习21,自平衡二叉树和红黑树的原理和特点

二叉搜索树的局限性 上一节较为详细的介绍了C语言中的二叉搜索树,提到数据采取二叉搜索树的结构存储,可以获得不错的搜索性能。 二叉搜索树之所以有不错的搜索效率,是因为在往树中插入数值时,始终严格的遵守左子节点值比父节点值小,右子节点值比父节点大的准则。以搜索 12 为例: 从根节...

lcc 7个月前 (01-26) 321℃ 0评论 2

linux笔记

linux学习第20节,二叉树的特性和插入、查询、删除等基本操作

前面几节较为详细的讨论了 linux 内核常用的链表、队列、映射等几种数据结构,本节将介绍C语言中另一种重要的数据结构——二叉搜索树(通常简称为BST),并且将一行一行写出相关的C语言代码。 二叉树的概念 树结构是一个多层的特定数据结构,每个节点之间通过指针连接(这点有些像链表)...

lcc 7个月前 (01-24) 245℃ 0评论 0

单片机

单片机很好玩12,制作亮度随环境亮度变化的小灯

上一节,我们利用C语言编程单片机仿制了达文西的“古怪手电筒”,达成了“在有光的时候就会亮,在没有光的情况下绝对不会亮!”的目标。 其实在此基础上,C语言还能做些更好玩的东西。例如,制作一个小灯,这个小灯的亮度能够随着环境光线自我调整改变,如下图: 可以看出,当环境光线较强时,L...

lcc 7个月前 (01-23) 359℃ 0评论 0

linux笔记

linux学习20,内核中的映射IDR机制

前面几节较为详细的讨论了 linux 内核中的“链表”和“队列”数据类型,本节再来说说中的映射(idr)机制。 先来说说映射适合用于解决什么问题 linux 系统中的许多资源都用整数 ID 标识,例如进程 PID,文件描述符 ID 等等。使用一个整数标识资源的确非常简洁,但是一...

lcc 7个月前 (01-23) 496℃ 1评论 5

linux笔记

linux学习19,内核中的“队列”数据类型

前面两节较为详细的讨论了 linux 内核中链表的设计,以及相关的C语言代码实现。本节再来看看 linux 内核中另外一种常用的数据类型:队列。 “队列”数据结构适合处理“生产者”和“消费者”编程模型 事实上,不仅仅是 linux 内核,基本上稍微有些规模的编程项目都会用到“队列...

lcc 7个月前 (01-22) 263℃ 0评论 0

linux笔记

linux学习18,内核是如何操作链表的

上一节较为详细的介绍了 linux 内核中链表的设计与实现,能够看出,内核实际上是将链表“塞入”数据结构的。事实上,为了方便的操作这些链表,linux内核实现了一系列方法,本节将了解此。 链表的初始化 正如上一节介绍的,list_head 本身没有记录额外的信息,它仅仅起到连接...

lcc 7个月前 (01-21) 183℃ 0评论 0