摘要:
在 Linux 中,一切(或几乎一切)都是文件,因此,文件操作在 Linux 中是十分重要的,为此,Linux 系统直接提供了一些函数用于对文件和设备进行访问和控制,这些函数被称为系统调用(syscall),它们也是通向操作系统本身的接口。 一、系统调用 系统调用就是 Linux 内核提供的一组用户 阅读全文
摘要:
算法是为求解一个问题所需要遵循的、被清楚地指定的简单指令的集合。对于一个问题,一旦给定某种算法并且确定其实正确的,那么重要的一步就是确定该算法将需要多少诸如时间或空间等资源量的问题,这就是时间复杂度和空间复杂度存在的意义。常用时间复杂度和空间复杂度来衡量不同算法的优劣。 一、从数学的角度理解 O(n 阅读全文
摘要:
栈是一种后进先出的线性表,是最基本的一种数据结构,在许多地方都有应用。 一、什么是栈 栈是限制插入和删除只能在一个位置上进行的线性表。其中,允许插入和删除的一端位于表的末端,叫做栈顶(top),不允许插入和删除的另一端叫做栈底(bottom)。对栈的基本操作有 PUSH(压栈)和 POP (出栈), 阅读全文
摘要:
在 shell 编程中,常需要处理文本,这里介绍几个文本处理命令。 一、grep 命令 grep 命令由来已久,用 grep 命令来查找 文本十分方便。在 POSIX 系统上,grep 可以在两种正则表达式风格中选择一种(BRE 和 ERE),或是执行简单的字符串匹配。传统上,有三种程序可以用来查找 阅读全文
摘要:
正则表达式(Regular Expression,通常简称为 regex 或 RE)是一种表达方式,可以用它来查找匹配特定准则的文本。在许多编程语言中都有用到正则表达式,常用它来实现一些复杂的匹配。这里简单介绍一下 shell 中常用到的一些正则表达式。 一、什么是正则表达式 正则表达式是对字符串进 阅读全文
摘要:
本文介绍一下 shell 的语法。 一、变量 在 shell 里,使用变量之前通常并不需要事先为他们做出声明,需要使用的时候直接创建就行了。默认情况下,所有变量都被看做字符串并以字符串来存储,即使它们被赋值为数值时也是如此。shell 和一些工具会在需要时把数值型字符串转换成对应的数值以对它们进行操 阅读全文
摘要:
一、线性表 通俗的讲,表就是按顺序排好的元素集合。形如:A1,A2,A3,...,An 这样的有限元素序列,就是一个线性表,这个线性表的大小是 n。称大小为 0 的表为空表。 对于除空表外的任何表,除表头元素和表尾元素外,其他元素都有一个前驱元(排在该元素前面)和一个后继元(排在该元素后面),如: 阅读全文
摘要:
shell 英文含义是“壳”,这是相对于内核来说的,shell 也确实就像是内核的壳,通常来说,所有对内核的访问都要经由 shell 。同时,shell 还是一门功能强大的编程语言。shell 是 Linux 学习中必然要经过的一环。实际上,Linux 系统在启动完成,登录成功后运行的第一个程序就是 阅读全文
摘要:
这段时间在看 Linux 内核,深觉 C 语言功底不扎实,很多代码都看不太懂,深入学习巩固 C 语言的知识很有必要。先从指针开始。 一、什么是指针 C语言里,变量存放在内存中,而内存其实就是一组有序字节组成的数组,每个字节有唯一的内存地址。CPU 通过内存寻址对存储在内存中的某个指定数据对象的地址进 阅读全文
摘要:
一、完全公平调度算法 完全公平调度 CFS 的出发点基于一个简单的理念:进程调度的效果应该如同系统具备一个理想中的完美多任务处理器。在这种系统中,每个进程能够获得 1/n 的处理器时间(n 为可运行进程数)。同时,我们可以调度给它们无限小的时间周期,所以,在任何可测量周期内,我们给予 n 个进程中每 阅读全文