
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
思路:1.堆的底层结构是一个数组,为了避免静态数组的内存限制,在这里我们使用动态数组。2.为了实现之后对动态数组的插入和扩容等操作,我们定义了两个变量 size (记录动态数组存储的元素个数)和capacity(记录动态数组的总容量)。3.最后将三个变量封装为一个结构体,构成一个新的类型—堆。//堆结构的定义int size;}HP;对 int 类型进行重命名,这样我们在以后想利用堆存储其他类型的

C++11 特性摘要 Lambda表达式 语法:capture->ret{body},匿名函数对象 捕捉列表:支持值/引用捕捉(显式/隐式/混合捕捉) mutable:解除值捕捉的const限制(不影响外层变量) 原理:编译器生成匿名类,捕捉变量转为成员变量 包装器function 统一可调用对象类型(函数指针/lambda/仿函数等) 包装类成员函数时需指定类域(第一个参数隐含this指针

本文介绍了Linux系统中Ext文件系统相关的磁盘基础知识。主要内容包括:1)磁盘的物理结构,如盘片、磁头、主轴等部件;2)磁盘的存储结构,包括磁道、扇区、柱面等概念;3)磁盘的逻辑结构,重点讲解了CHS寻址方式和LBA线性地址;4)CHS地址与LBA地址之间的转换方法。文章通过生动的图示和比喻,帮助读者理解磁盘的工作原理和数据存储方式,为后续学习文件系统打下基础。

本文深入介绍了Linux系统中Ext2文件系统的核心原理与工作机制。文章首先阐述了"块"的概念及其在文件存取中的重要性,随后详细解析了磁盘分区与分组的组织结构。重点分析了块组内部6个关键区域的功能:数据区(Data Blocks和inode Table)负责存储文件内容与属性;管理区(Data Bitmap、inode Bitmap、GDT和Super Block)则负责资源管

本文介绍了Linux系统中库的制作与原理。主要内容包括:1. 库的分类(静态库.a和动态库.so)及其区别,动态链接节省空间但依赖外部库,静态链接体积大但独立运行;2. 库的本质是.o文件的集合,通过头文件提供函数声明;3. 静态库制作使用ar命令打包.o文件,动态库使用gcc的-fPIC和-shared选项;4. 使用库时需指定库名(-l)和路径(-L),动态库运行时还需解决查找问题,可通过拷贝

本文介绍了Linux系统中ELF文件格式及其关键组成部分,包括ELF头、程序头表、节头表和节,并解释了它们在程序编译、链接和加载过程中的作用。文章详细分析了ELF文件的加载和执行机制,以及动态库的共享内存映射原理,帮助读者理解二进制文件在Linux系统中的组织方式和运行机制。通过命令示例展示了如何查看ELF文件的结构信息,并阐述了虚拟地址空间的管理逻辑。全文以技术解析为主,适合对Linux系统底层

本文介绍了Linux系统中命名管道的概念及使用方法。命名管道主要用于无血缘关系进程间的通信,相比匿名管道,它以管道文件的形式存在于磁盘中。文章详细讲解了如何通过mkfifo命令或函数创建命名管道,并提供了C++代码示例实现客户端和服务端进程间的通信。关键点包括:管道文件的创建与删除、读写模式打开的阻塞特性、以及进程间通过共享文件实现通信的机制。代码示例展示了完整的命名管道通信流程,包括管道的创建、

本文介绍了Linux系统中共享内存(Shared Memory)的基本原理和使用方法。 共享内存原理: 在物理内存中开辟共享区域,挂载到各进程虚拟地址空间的共享区 多个进程通过映射同一物理内存块实现通信 操作系统通过"先描述再组织"管理多个共享内存 共享内存使用: 创建:使用shmget函数,需指定键值、大小和权限标志 查看:通过ipcs -m命令或shmctl函数获取状态信息

本文介绍了Linux系统中信号的概念、生命周期及产生方式。信号是一种异步事件通知机制,用于进程间通信,其处理方式包括默认、忽略和自定义三种。信号的生命周期分为产生、保存和处理三个阶段。文章详细讲解了如何通过系统命令、键盘输入、硬件异常等方式触发信号,并介绍了signal函数用于自定义信号处理方式。此外,还解释了硬件异常(如除0错误和野指针)如何通过内核转换为终止信号发送给进程。信号最终会被记录在进

本文摘要: 内核态与用户态:进程执行用户代码时处于用户态(CPL=3),进入系统调用/中断时切换为内核态(CPL=0)。所有进程共享内核空间映射,但拥有独立的用户空间页表。 sigaction接口:比signal更强大的信号处理接口,通过sa_mask可指定处理信号时额外阻塞的信号集合,防止信号处理函数被重入调用。 可重入函数:可安全重入的函数称为可重入函数,若函数涉及全局资源操作(如malloc








