Linux 目录流
# 文件系统编程概述
# 三种类型的函数对比
ISO C 标准库函数:
这些函数是由 ISO(国际标准化组织)提供的,具有最好的通用性和跨平台性。在所有遵循 ISO 标准的现代 C 编译平台上,这些函数的行为都是一致的。
这些函数提供了一些通用的功能实现,例如: printf 、 scanf 、 fopen 、 malloc 等。
它们在 man 手册的第 3 部分(3 号手册)中有所描述。
POSIX 标准库函数:
POSIX-C 标准旨在为不同的类 Unix 操作系统提供一致的编程接口,以实现应用程序的跨平台移植。
这些函数同样是库函数,也在 man 手册的第 3
more...Linux 杂项
# Linux 系统层次结构
# 内核交互
内核交互的定义: 内核交互是指用户空间程序请求操作系统内核执行某些操作的过程。由于内核控制着计算机的所有硬件资源,因此任何需要访问或控制这些资源的操作都需要通过内核来完成。
内核的作用: 内核负责管理计算机的硬件资源,包括但不限于:
CPU 调度
内存管理
外部设备(如键盘、鼠标、显示器等)
进程和线程的创建、调度和管理
网络通信
何时需要与内核交互: 当程序需要执行以下操作时,通常需要与内核交互:
文件系统访问和管理
外部设备的输入 / 输出操作
动态内存分配(如使用 malloc 或 free )
进程间通信或网络通信
more...Linux C 基础
# C 语言标准
ISO C 标准(International Standardization Organization C)是一套确保 C 语言函数在不同平台上具有一致行为的标准。这些标准定义了语言的语法、库函数以及它们的行为,从而为开发者提供了跨平台开发的便利。
例如,一些常见的 C 语言函数如 printf 、 scanf 、 malloc 和 fopen 等,都遵循 ISO C 标准,这意味着在兼容 ISO C 标准的编译平台上,它们的行为是一致的。
POSIX 标准(Portable Operating System Interface)是一套更为广泛的标准,它不仅包括语言规
more...C 语言排序
# 算法性能分析
时间复杂度描述了算法执行所需指令数量随着输入数据规模增长的变化趋势。它是一个理论概念,用于预测算法在不同规模输入下的性能表现,更好的时间复杂度通常意味着在相同条件下,算法的运行时间更短。
空间复杂度描述了算法执行过程中所需额外内存空间随着输入数据规模增长的变化趋势。它同样是一个理论概念,用于评估算法的内存使用效率,更好的空间复杂度意味着在相同条件下,算法占用的空间更少。
大 O 表示法是一种用来描述算法性能的数学符号,它提供了算法时间或空间需求的上界估计。通过忽略算法复杂度表达式中的低阶项和常数因子,大 O 表示法简化了对算法性能的分析,这种简化使得算法的渐进行为(随着输入规
more...C 语言数据结构——二叉搜索树
# 二叉搜索树的定义
二叉树的定义: 二叉树是一种分层的数据结构,其中每个节点最多有两个子节点。这种结构允许每个节点有两个分支,分别指向其左子树和右子树。
二叉树的特殊形态:
完全二叉树(Complete Binary Tree):如果二叉树的高度为 h,除了第 h 层之外,所有层的节点数都达到最大,且第 h 层的节点从左到右连续排列,这样的树被称为完全二叉树。
满二叉树(Full Binary Tree):如果二叉树的每一层的节点数都达到最大,包括最底层,这样的树被称为满二叉树。
二叉搜索树(Binary Search Tree, BST): 二叉搜索树是一种特殊的二叉树,具有以下性质:
more...C 语言数据结构——哈希表
# 哈希的相关概念
哈希(Hash)是一个数学概念,而哈希表(Hash Table)是一种基于哈希的数据结构。 这两个概念虽然密切相关,但它们在本质上是不同的。哈希表是哈希概念的一种应用,但不应将两者混淆。
哈希映射 是一种特殊的转换过程,它将任意大小的输入(定义域)转换成固定长度的输出(值域)。这个过程的本质是将无限的输入空间映射到有限的输出空间。
定义域:是无限的,可以是任何大小的数据。
值域:是固定长度的,通常表现为整数或字符串。
哈希值 是通过哈希过程得到的固定长度的输出,它是哈希表中存储数据的关键。
哈希函数,也称为哈希算法或哈希方法,是实现哈希映射的核心,它定义了如何将无限的输
more...C 语言数据结构——队列
# 队列的定义及其基本操作
队列是一种遵循先进先出(FIFO, First In First Out)原则的线性数据结构,广泛应用于计算机科学和日常生活中。以下是对队列及其基本操作的详细描述:
入队(Enqueue):在队列的末端(队尾)添加一个新元素。这个操作总是将新元素放在队列的最后。
出队(Dequeue):在队列的前端(队头)删除一个元素。执行出队操作后,原本位于队头之后的元素将成为新的队头。
访问队头元素(Peek):访问但不删除队列的第一个元素,允许用户查看队列的前端元素而不影响队列本身。
判空(IsEmpty):检查队列是否为空,即队列中是否没有任何元素。
判满(IsFull)
more...C 语言数据结构——栈
# 栈的定义
栈是一种操作受限的线性数据结构,它遵循后进先出(LIFO, Last In First Out)的原则。在栈中,所有新增、删除和访问操作都仅限于栈的一端,称为栈顶(Top)。
栈的基本操作:
入栈 / 压栈(Push):在栈顶添加一个新元素。新元素成为新的栈顶元素,而原有的栈顶元素及其下面的元素被 “压入” 栈底。
出栈(Pop):从栈顶删除一个元素。删除操作后,原来的次栈顶元素成为新的栈顶元素。
访问栈顶元素(Peek/Top):返回栈顶元素的值,但不从栈中移除它。
判空(IsEmpty):判断栈是否为空,即栈顶是否有元素。
判满(IsFull):判断栈是
more...