自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(73)
  • 收藏
  • 关注

原创 【Linux网络】网络基础_协议、网络传输基本流程

本文系统介绍了网络通信基础,包括OSI七层模型与TCP/IP协议栈的对应关系,重点分析了局域网通信和跨网络传输的核心机制。通过对比MAC地址(物理寻址)和IP地址(逻辑寻址)的作用,解释了数据封装/解封装流程及路由器在跨网段传输中的关键角色。最后探讨了端口号定位进程的原理,以及网络字节序转换的必要性,并对TCP/UDP协议特性进行对比,为Socket编程奠定理论基础。全文通过生活化类比(如快递中转、教室点名)帮助理解复杂网络概念,突出协议分层解决特定问题的设计思想。

2026-06-04 21:04:50 191 1

原创 【Linux】线程同步与互斥_死锁

本文介绍了Linux系统中的线程安全与重入问题、死锁及其避免方法。线程安全指多线程并发执行时程序能正确运行,而重入问题涉及函数能否被多个执行流同时调用。可重入函数通常是线程安全的,但线程安全函数不一定是可重入的。死锁是多个线程因互相持有对方所需锁而无限阻塞的现象,其产生需满足互斥、请求与保持、不剥夺和循环等待四个条件。避免死锁可通过破坏任一条件实现,如固定锁申请顺序。STL容器和智能指针管理的对象本身不具备线程安全性,需加锁保护。

2026-04-20 21:20:26 372 2

原创 【Linux】线程同步与互斥_日志与线程池

本文介绍了日志系统在工程项目中的重要性,详细说明了日志格式规范及其实现方法。日志应包含时间、等级、进程ID、文件名、行号等信息,通过gettimeofday获取时间戳,使用localtime_r转换为可读格式。文章提供了C++实现方案,采用策略模式支持控制台和文件两种输出方式,包含线程安全的同步机制。FileLogStrategy类实现了日志文件的自动创建和管理功能,确保日志记录的完整性和可靠性。该日志系统设计可用于高效调试和问题排查。

2026-04-16 21:24:04 433 1

原创 【Linux】线程互斥与同步_同步(2)_环形队列

本文介绍了Linux系统中POSIX信号量的使用方法及其在线程同步中的应用。主要内容包括: POSIX信号量接口说明: sem_init/destroy用于初始化和销毁信号量 sem_wait实现P操作(信号量-1) sem_post实现V操作(信号量+1) 基于环形队列的生产者消费者模型实现: 使用两个信号量分别表示数据数量和空格数量 生产者通过P操作申请空格资源,V操作释放数据资源 消费者通过P操作申请数据资源,V操作释放空格资源 通过互斥锁保护临界区,实现线程安全 该模型利用信号量机制实现了线程间的高

2026-04-14 17:03:46 403 2

原创 【Linux】线程同步与互斥_同步(1)

本文介绍了Linux系统中线程同步的相关概念,重点讲解了生产者消费者模型(CP模型)及其实现机制。文章首先阐述了线程饥饿和线程同步的基本概念,通过超市购物的类比解释了CP模型的三个核心关系(生产者-生产者互斥、消费者-消费者互斥、生产者-消费者同步+互斥)及其解耦、并发和削峰填谷三大优势。 随后详细介绍了条件变量这一关键同步工具,解释了其"铃铛+等待队列"的工作机制如何解决线程忙等问题,并分析了pthread_cond_wait等接口的设计原理,包括为何需要传入互斥锁、为何使用while

2026-04-09 23:14:45 468 1

原创 【Linux】线程互斥与同步_线程互斥

本文主要讲解 Linux 下线程互斥核心知识点,围绕多线程并发访问共享资源引发的数据安全问题展开,介绍互斥锁(互斥量 mutex)的原理、接口使用、底层实现与规范封装:明确互斥、临界资源、临界区、原子性核心概念,通过多线程抢票代码示例,说明if(ticket>0)判断与ticket--操作因非原子性引发票数异常的根本原因。讲解 POSIX 互斥量的静态 / 动态初始化、加锁(lock/trylock)、解锁及销毁接口,说明锁的定义规范、锁粒度对效率的影响、锁操作的原子性与线程遵守规则。剖析互斥锁底层实

2026-04-07 19:14:33 472 1

原创 【Linux】线程概念与控制(4)_线程封装

文章摘要: 本文介绍了Linux线程编程的实现方法,重点讲解了基于pthread封装的C++线程类设计。主要内容包括:1)通过Thread类封装线程创建、运行状态管理及资源回收功能;2)使用静态成员函数解决线程入口函数与类成员函数的兼容性问题;3)采用模板技术实现线程参数传递。文中提供了完整的代码实现,展示了如何通过回调函数机制执行线程任务,并处理线程的joinable/detach状态转换。该封装方案简化了原生pthread接口的使用复杂度,为C++多线程开发提供了更便捷的编程范式。

2026-04-06 22:38:55 511 1

原创 【Linux】线程概念与控制(3)_地址空间布局

本文介绍了Linux系统中线程ID的本质和进程地址空间布局。主要内容包括:1)pthread_create返回的线程ID实际上是用户态虚拟地址,指向glibc内部的struct pthread结构体;2)该结构体包含线程运行所需的完整上下文信息,通过mmap分配在进程地址空间的mmap区域;3)线程栈位于mmap匿名区,与主线程栈独立;4)线程等待机制的必要性在于回收线程资源防止内存泄漏;5)线程属性封装在pthread_attr_t结构体中;6)C++11线程库跨平台实现原理。文章通过内存布局图和代码示例

2026-04-04 23:30:40 388 1

原创 【Linux】进程概念与控制(2)_进程控制

本文介绍了Linux系统中线程的基本概念与操作。主要内容包括:POSIX线程库的使用方法,线程创建函数pthread_create的参数说明及示例代码,线程资源共享导致的参数传递问题及其解决方案,以及线程终止的三种方法(正常return、pthread_exit、pthread_cancel)。文章通过具体代码示例演示了多线程编程中的常见问题,如线程间资源共享导致的数据覆盖问题,并提供了使用动态内存分配和容器保存线程ID的解决方案。最后简要说明了线程并发执行同一函数时的线程安全问题。

2026-04-02 21:32:44 431 1

原创 【Linux】线程概念与控制(1)_线程概念_分页式储存管理

本文主要介绍了Linux系统中的线程原理和分页式存储管理机制。在Linux中,线程被视为轻量级进程,由task_struct结构管理,CPU调度的基本单位是线程而非进程。文章通过代码示例展示了多线程的运行方式,并解释了线程与进程的关系。 在内存管理部分,详细阐述了物理内存被划分为4KB大小的页框,通过struct page结构进行管理。重点讲解了二级页表结构(页目录表和页表)的工作原理,以及虚拟地址到物理地址的转换过程。文章还介绍了MMU硬件单元的作用和TLB快表机制,解释了操作系统如何高效管理内存资源。

2026-04-01 21:36:58 453 1

原创 【Linux】进程信号(4)_信号捕捉_内核态与用户态

本文摘要: 内核态与用户态:进程执行用户代码时处于用户态(CPL=3),进入系统调用/中断时切换为内核态(CPL=0)。所有进程共享内核空间映射,但拥有独立的用户空间页表。 sigaction接口:比signal更强大的信号处理接口,通过sa_mask可指定处理信号时额外阻塞的信号集合,防止信号处理函数被重入调用。 可重入函数:可安全重入的函数称为可重入函数,若函数涉及全局资源操作(如malloc/标准I/O)则不可重入,重入可能导致数据错乱。 volatile关键字:强制CPU直接从内存读写变量,避免编译

2026-03-30 22:46:55 468 2

原创 【Linux】进程信号(3)_信号捕捉_中断

本文介绍了Linux系统中信号处理的相关知识。主要内容包括:1) 信号捕捉流程,当系统从内核态返回用户态时会检测和处理信号;2) 硬件中断机制,外设通过中断控制器向CPU发送中断请求;3) 时钟中断,操作系统通过周期性时钟中断实现时间管理;4) 操作系统本质是一个等待中断的死循环;5) 软中断机制,通过特殊汇编指令触发系统调用。文章通过图示详细说明了信号处理过程中用户态和内核态的切换流程,以及硬件中断和时钟中断的工作原理。

2026-03-26 23:01:59 423 1

原创 【Linux】进程信号(2)_信号保存

本文介绍了Linux系统中信号保存的相关概念和机制。主要内容包括: 信号处理的核心概念:信号递达、未决和阻塞状态的区别,以及它们在进程task_struct中的三张表(handler、pending和block表)的实现原理。 信号集的底层实现:pending表和block表都是使用sigset_t类型的位图结构,handler表是函数指针数组。 信号集操作函数:详细介绍了sigemptyset、sigfillset等5个基础信号集操作函数,以及sigprocmask和sigpending这两个系统调用接口

2026-03-25 20:22:38 363 1

原创 【Linux】进程信号(1)_信号产生

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

2026-03-24 17:04:18 1039 2

原创 【Linux】进程间通信(5)_消息队列与信号量

消息队列提供了从一个进程向另一个进程发送一块数据的方法,传输的是一整块数据,它面向的不是字节流,而是一条一条的消息(数据块),它是面向消息的,以数据块为单位传递数据。消息队列本质是内核维护的队列结构,内核会为每个消息队列维护一个队列头(核心元数据结构体),用来记录该队列的关键信息(如权限、消息数量、队列大小、最后操作时间等)。每个要传递的消息都会成为消息队列的一个节点,且每个节点都包含消息类型。

2026-03-23 11:36:30 413 1

原创 【Linux】进程间通信(4)_system V共享内存

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

2026-03-18 13:17:26 383

原创 【Linux】进程间通信(3)_命名管道

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

2026-03-16 21:47:37 370

原创 【Linux】进程间通信(2)_进程池

本文介绍了Linux进程池的实现原理与代码示例。进程池通过预先创建一组子进程并建立独立管道通信,实现任务的高效分发。父进程通过管道向指定子进程发送任务码,子进程阻塞读取管道并执行对应任务。代码展示了进程池的轮询调度模式,包含任务定义、管道通信、子进程管理等功能模块,支持动态任务分配和子进程回收。这种设计避免了频繁创建进程的开销,提高了系统资源利用率。

2026-03-16 00:24:12 368

原创 【Linux】进程间通信(1)_匿名管道

摘要:Linux进程间通信之匿名管道 本文介绍了Linux系统中进程间通信(IPC)的基本概念,重点讲解了匿名管道的实现原理和使用方法。主要内容包括: 进程通信概述:进程间通信是为了实现数据传输、资源共享等目的,本质是让不同进程访问同一块公共资源。 匿名管道原理: 基于文件系统机制实现,父子进程通过共享的内核缓冲区进行通信 管道是单向通信,数据只能从一端流向另一端 通过pipe系统调用创建,返回读端(fd[0])和写端(fd[1])两个文件描述符 管道使用示例: 父子进程分别关闭不需要的端口 子进程写入数据

2026-03-15 01:07:05 373 1

原创 【Linux】库制作与原理(3)_动静态库的链接过程

本文介绍了Linux系统中静态链接与动态链接的核心原理及实现过程。静态链接通过合并.o文件、重定位函数地址实现,将代码直接嵌入可执行文件;动态链接则采用运行时加载机制,通过全局偏移量表(GOT)实现函数地址的动态解析。文章详细阐述了两种链接方式的工作流程:静态链接完成地址重定位和段合并,动态链接通过"库基址+偏移量"计算函数地址,并利用GOT表实现代码区到共享区的跳转。特别强调了动态库的共享特性——同一份物理内存可映射到多个进程空间,以及动态链接的延迟绑定机制。通过反汇编分析直观展示了链

2026-03-11 20:51:46 422 1

原创 【Linux】库制作与原理(2)_ELF格式

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

2026-03-10 22:06:45 432 1

原创 【Linux】库制作与原理(1)_库

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

2026-03-09 21:35:47 469 2

原创 【Linux】Ext系列文件系统_文件系统

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

2026-03-09 11:26:53 402 1

原创 【Linux】Ext系列文件系统_磁盘介绍

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

2026-03-05 21:42:58 449 3

原创 【Linux】基础IO_缓冲区

本文介绍了Linux系统中关于基础I/O的知识点,重点探讨了缓冲区的概念和工作机制。文章首先解释了文件打开和读写的基本过程,指出CPU通过内核缓冲区访问文件内容。随后详细分析了内核文件缓冲区和语言级缓冲区的区别,强调语言级缓冲区通过减少系统调用次数来提高效率。文中通过代码示例展示了缓冲区刷新的不同情况,包括进程结束时自动刷新、显示器文件的行缓冲和普通文件的全缓冲。最后,作者简要说明了内核文件缓冲区的刷新机制取决于操作系统,并提到可以使用fsync()系统调用实现立即刷新。文章通过生动的比喻和代码示例,帮助读

2026-03-04 17:59:59 444 2

原创 【Linux】fd_重定向本质

本文介绍了Linux系统中基础IO的相关知识点。首先讲解了文件描述符的分配规则,通过实验验证了最小可用原则。然后深入探讨了重定向的本质,即通过替换标准输入输出流对应的文件描述符来实现对不同文件的IO操作。文章还介绍了dup2系统调用的使用方法,它可以更高效地实现文件描述符的覆盖。最后从操作系统角度阐述了"一切皆文件"的设计理念,解释了如何通过struct_file和operations模块实现对不同硬件设备的统一管理。这些内容为理解Linux系统IO机制提供了基础认知。

2026-02-11 21:25:02 634 2

原创 【Linux】基础IO(1)文件、fd

本文介绍了Linux系统中的基础IO知识,主要包括文件概念、访问方式和管理机制。文章首先解释了文件的本质是内容加属性,并说明访问文件需要路径或进程工作目录。重点讲解了文件描述符(fd)的概念,指出进程默认打开三个标准文件流(0-2),并通过代码示例演示了如何使用系统调用open/read/write操作文件。还详细对比了C语言fopen与系统open接口的区别,分析了不同文件打开模式的特点。最后从系统角度阐述了文件管理的"先描述再组织"原则,帮助读者深入理解Linux文件系统的底层机制。

2026-01-08 18:08:49 801 26

原创 【Linux】进程控制(4)自主shell命令行解释器

自主Shell简单功能的实现

2026-01-04 01:01:18 1083 30

原创 【Linux】进程控制(3)进程程序替换

本文介绍了Linux系统中的进程程序替换概念及exec系列函数的使用方法。文章首先解释了进程替换的原理:子进程通过exec系列接口替换程序后,其task_struct保持不变,但虚拟地址空间和页表会重置为新的程序。随后详细讲解了execl、execv、execlp、execvp等函数的参数传递方式和命名含义,并通过代码示例展示了如何实现程序替换。其中重点说明了这些函数的特点:成功替换时不返回,失败时返回-1;参数传递需包含程序名并以NULL结尾。最后指出execve是系统调用,其他exec函数都是基于它的封

2026-01-01 23:37:52 1177 5

原创 【Linux】进程控制(2)进程等待

本文主要介绍了Linux系统中进程控制的相关知识,重点讲解了进程等待的必要性及实现方法。文章指出进程等待的两个主要目的:回收僵尸进程和获取子进程退出信息。详细讲解了wait和waitpid两种系统调用,包括阻塞等待与非阻塞等待的区别,并通过代码示例演示了具体用法。最后阐述了如何通过status参数获取子进程退出状态信息,包括正常终止和被信号终止两种情况下的位图解析方法,以及相关宏的使用。这些内容为Linux进程管理提供了基础技术支撑。

2025-12-24 23:32:49 825 5

原创 【Linux】进程控制(1)进程创建、终止

本文介绍了Linux系统中进程创建与终止的相关知识。主要内容包括:1) fork函数创建子进程的执行顺序由调度器决定;2) 写时拷贝机制实现进程数据的独立性;3) 进程终止的三种情况及对应的退出码和信号;4) 使用strerror查看退出码含义和echo $?获取退出码;5) 进程退出的三种方法:exit()、_exit()和return的区别,其中exit会刷新缓冲区而_exit不会。文章通过代码示例详细说明了这些概念在实际中的应用。

2025-12-23 22:23:11 734 6

原创 【Linux】进程(6)虚拟地址空间

本文介绍了Linux系统中进程地址空间的相关知识。首先回顾了C语言中的程序地址空间分布图,包括栈区、堆区、未初始化数据区等,并通过代码验证了各区域的地址分布。然后重点讲解了进程/虚拟地址空间的概念,指出其并非真正的物理内存,而是操作系统为每个进程提供的虚拟内存视图。通过父子进程修改全局变量的实验,证明了虚拟地址与物理地址的不同。最后说明了进程地址空间通过页表与物理内存建立映射关系,内核空间用于存放PCB等系统数据。文章还补充了命令行参数和环境变量在地址空间中的位置。

2025-12-22 22:12:31 647 6

原创 【Linux】进程(5)初识命令行参数和环境变量

本文介绍了Linux系统中进程相关的两个重要概念:命令行参数和环境变量。命令行参数通过main函数的argc和argv参数实现,用于解析用户输入的不同选项执行不同功能(如ls -l)。环境变量是全局配置信息(如PATH、PWD等),存储系统路径等关键数据。文章详细讲解了PATH环境变量的作用机制,以及如何使用export修改环境变量,并通过代码示例演示了如何获取和利用命令行参数和环境变量。这些知识对于理解Linux系统运行机制和开发系统程序具有重要意义。

2025-12-19 20:57:58 1113 4

原创 【Linux】进程(4)进程优先级、切换和调度

摘要 本文主要讲解Linux系统中的进程优先级、调度机制及相关概念。首先介绍了进程优先级(PRI)和nice值(NI)的概念,解释了如何通过top命令修改进程优先级。接着讨论了进程间的竞争、独立性以及并行与并发的区别。重点分析了Linux的进程调度算法,包括通过双链表组织PCB、runqueue运行队列的设计原理,详细讲解了prio_array_t结构体中queue数组如何实现基于优先级的进程调度。文章还阐述了进程切换的本质是CPU上下文数据的切换,以及分时系统如何通过快速切换实现多任务并发执行的原理。

2025-12-15 21:05:14 1061 4

原创 【Linux】进程(3)状态

本文介绍了Linux系统中的进程状态及其转换关系。首先从理论上讲解了运行状态、阻塞状态和挂起状态的定义及转换条件,说明进程状态变化的本质是task_struct在不同队列中的移动。然后详细解读了Linux中定义的7种进程状态:运行(R)、休眠(S)、深度休眠(D)、暂停(T)、追踪暂停(t)、死亡(X)和僵尸(Z)。通过实例代码演示了如何查看进程状态,区分前后台进程,并分析了休眠状态S和深度休眠状态D的区别。最后解释了暂停状态T和t的产生条件及前后台进程的特性,指出前台进程可以从键盘读取数据而后台进程不能。

2025-12-11 21:41:13 870 6

原创 【Linux】进程(2)PCB、task_struct、fork初识

本文介绍了Linux系统中进程管理的基础知识。首先解释了进程的概念,即程序代码、数据与PCB(进程控制块)的组合,重点讲解了task_struct结构体的内容属性,包括标识符、状态、优先级等关键信息。文章详细说明了查看进程的两种方法:通过/proc系统文件夹和使用ps命令。通过实例演示了getpid和getppid函数的使用,展示了父子进程的关系。最后深入讲解了fork函数的工作原理,包括其双重返回值的特性及父子进程的代码共享机制,并通过代码示例展示了如何利用fork返回值区分父子进程的执行流程。这些内容为

2025-12-08 21:08:59 1033 4

原创 【Linux】进程(1)

本文介绍了Linux系统中的两个核心概念:冯·诺依曼体系结构和操作系统。首先阐述了冯·诺依曼体系结构的组成(输入设备、存储器、输出设备、CPU)及其工作原理,重点解释了存储器作为中间层提升计算机效率的关键作用。其次详细说明了操作系统的内核功能(进程管理、文件管理、存储管理、驱动管理)和管理机制,包括"先描述再组织"的管理理念以及通过系统调用实现安全交互的方式。最后简要提及进程的本质是"程序+内核数据结构对象",为后续进程管理内容做铺垫。全文通过生动的比喻(如银行窗口、

2025-12-04 16:33:24 998 6

原创 【Linux】权限

本文介绍了Linux系统中的权限管理机制。主要内容包括:权限的概念及其必要性,Linux用户角色(root和普通用户)及其切换方式(su、su-、sudo),文件权限属性(r、w、x)及其分类(owner、group、other),权限修改指令(chmod、chown、chgrp、umask),以及粘滞位的应用场景。文章通过具体指令示例,详细说明了如何查看和修改文件权限属性,并解释了权限掩码的计算方式。最后强调了粘滞位在共享目录中的保护作用,防止非所有者删除文件。

2025-11-21 22:23:36 700 1

原创 【c++】异常与智能指针

本文介绍了C++异常处理和智能指针的关键知识点。异常是处理错误的方式,通过throw抛出对象并由catch捕获处理。但异常可能导致内存泄漏,智能指针通过RAII设计思想解决这一问题。C++标准库提供了多种智能指针:auto_ptr(已弃用)、unique_ptr(独占所有权)、shared_ptr(共享所有权)和weak_ptr(解决循环引用)。文章详细讲解了它们的特性、使用场景及底层实现原理,包括引用计数机制和删除器功能。通过智能指针可以自动管理资源生命周期,避免内存泄漏,提高代码安全性。

2025-11-09 00:04:39 722 10

原创 【c++】C++11(三)lambda表达式、function、bind

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

2025-10-27 01:23:57 685 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除