自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(95)
  • 资源 (1)
  • 收藏
  • 关注

原创 16-2.【Linux系统编程】线程控制(POSIX线程库、线程创建、等待、终止、分离线程,多线程创建;线程ID及进程地址空间布局;线程的局部存储)

本文介绍了Linux线程的基本概念和实现方法。主要内容包括:1)通过pthread库创建线程,演示线程ID(tid)和轻量级进程ID(LWP)的区别;2)线程共享进程资源的特点,包括全局变量和函数;3)线程调度机制和崩溃影响;4)C++11线程库在Linux下的pthread封装实现。代码示例展示了线程创建、运行和回收(pthread_join)的基本操作,并解释了线程ID的本质是pthread库维护的进程内唯一标识。

2025-12-22 15:17:44 1245

原创 16-1.【Linux系统编程】线程概念(线程优缺点、异常、用途;进程和线程之间的联系)

文章摘要 本文系统介绍了Linux线程的核心概念,从感性认知到理性分析层层深入。首先从教材定义出发,解释线程作为进程内部执行分支的特性,对比进程与线程的资源分配差异。重点分析了Linux线程的轻量级进程实现方式,以及不同操作系统对线程管理的差异。随后深入探讨了虚拟内存和分页机制的原理,包括物理内存管理中的页框划分、struct page结构体设计等底层实现细节。文章通过图解方式清晰展示了虚拟地址到物理地址的映射过程,以及页表在内存管理中的关键作用,为理解Linux线程机制提供了全面的理论基础。

2025-12-22 15:16:13 1255

原创 15-3.【Linux系统编程】进程信号 - 信号捕捉(信号捕捉流程、操作系统运行方式及流程、内核态和用户态、可重入函数、volatile防止优化)

本文介绍了Linux系统中进程信号的信号捕捉的流程和操作系统运行机制。信号处理不是立即执行,而是在进程从内核态返回用户态时进行检查处理。信号捕捉过程涉及用户态和内核态切换,当信号递达时会调用用户自定义处理函数。操作系统通过硬件中断和时钟中断驱动运行,时钟中断定期触发进程调度。操作系统本质上是一个基于中断的死循环,通过中断向量表响应各种事件。

2025-12-16 10:51:25 846

原创 15-2.【Linux系统编程】进程信号 - 信号保存(信号处理流程的三种状态:未决、阻塞、递达,信号保存由未决表完成、sigset_t信号集类型及相关函数)

本文介绍了Linux系统中进程信号的信号的三种状态及保存方。内核通过未决信号集(pending)为每个进程存储已产生但未处理的信号。信号处理流程包含三种状态:信号递达(Delivery)、信号未决(Pending)和信号阻塞(Block)。内核使用三张表管理信号:pending表记录未决信号,block表记录阻塞状态,handler表存储信号处理函数指针。信号集操作函数包括sigemptyset、sigfillset等,可以读取或修改信号屏蔽字(sigprocmask)和未决信号集(sigpending)。

2025-12-16 10:50:08 1100

原创 15-1.【Linux系统编程】进程信号 - 信号的产生(信号概念、自定义信号捕捉singal函数、前台/后台进程、系统调用kill发送信号)

本文介绍了Linux系统中进程信号的信号产生方式及流程。信号是进程间异步事件通知的一种方式,通过中断当前操作来实现。文章通过快递的类比解释了信号的产生、识别、处理时机和方式等核心概念。主要内容包括:1) 信号与信号量的区别;2) 信号的产生方式,特别是通过键盘发送信号(如Ctrl+C);3) 使用signal()函数自定义信号处理;4) 前台进程和后台进程的区别,以及它们对信号的不同响应方式。文章还提供了相关代码示例和命令操作说明,帮助理解信号处理的实际应用场景。

2025-12-16 10:48:14 1111

原创 14.【Linux系统编程】进程间通信详解(管道通信、System V共享内存、消息队列、信号量)

本文介绍了进程间通信(IPC)的基本概念和实现方式,重点讲解了匿名管道的原理和使用。主要内容包括:1) IPC的目的包括数据传输、资源共享、事件通知和进程控制;2) IPC的本质是让不同进程访问同一份内存资源;3) IPC主要分为管道、System V IPC和POSIX IPC三类;4) 详细阐述了匿名管道的创建、管理和访问机制,通过pipe系统调用创建读写文件描述符;5) 结合代码示例展示了父子进程通过管道通信的过程,子进程写入数据,父进程读取数据;6) 从文件描述符和内核角度分析了管道的实现原理。

2025-12-04 20:08:35 1784 1

原创 开发神器进阶:VSCode 远程连接云服务器 / 电脑,随时随地写代码

本文详细介绍了如何使用VSCode的Remote-SSH插件实现远程开发。通过10个步骤的图文教程,从安装插件到连接远程服务器,帮助开发者直接在本地VSCode中编辑和运行远程文件。该方法解决了环境配置不一致、文件传输繁琐等问题,使开发者能享受本地化的流畅体验。文章还建议后续可配置SSH免密登录等优化,并欢迎读者交流遇到的问题。该教程适合新手快速上手远程开发,提升跨设备工作效率。

2025-11-29 16:01:07 2142

原创 13.【Linux系统编程】从ELF格式深入理解动静态库

本文聚焦 ELF(Linux/Unix 统一二进制文件格式),解析其编译链接核心作用。通过实例说明编译生成 ELF 目标文件(.o),拆解 ELF 头、程序头表、节头表及各类节的核心结构,梳理 “节合并为可执行文件、加载时转段” 的完整流程。借助 readelf 工具,明确程序头表(指导加载)与节头表(静态链接分析)的功能差异,最后点明节转段的核心价值 —— 减少内存碎片,提升 4KB 页面使用效率。

2025-11-16 19:43:12 906 26

原创 12.【Linux系统编程】动静态库制作与使用

本文介绍了库的基本概念和两种类型(静态库和动态库)的生成与使用方法。静态库在编译时链接到可执行文件中,而动态库在程序运行时加载。文章详细说明了两种库的生成流程:静态库通过ar命令打包.o文件,动态库通过gcc命令生成位置无关码。同时介绍了三种不同路径下库的使用方法,包括指定头文件和库文件路径的方式。最后指出了动态库运行时搜索路径的问题及其解决方法。通过具体示例和Makefile脚本,完整展示了库的开发和使用流程。

2025-11-11 11:32:11 637 6

原创 谁还在默认路径装 VSCode 插件?软链接修改路径,C 盘直接 “呼吸自由”

本文介绍了如何通过软链接方法将VSCode插件目录迁移至其他磁盘,以释放C盘空间。具体步骤包括:定位并移动默认插件文件夹到新位置,以管理员身份运行CMD执行mklink命令创建软链接,并验证操作结果。文章还解答了软链接创建后的常见疑问,提供了检查链接是否成功的两种方法。该方法安全便捷,能有效解决插件占用C盘空间的问题,同时不影响VSCode的正常使用。

2025-11-06 14:23:03 1453 3

原创 11.【Linux系统编程】文件系统详解——从磁盘硬件到文件系统

本文介绍了磁盘的物理结构、文件系统及软硬件链接。主要内容包括:1. 磁盘的物理结构。2.ext2文件系统,从磁盘→分区→分组,并对分组内的各个成员进行详解。3.介绍了目录与文件的联系,路径解析和路径缓存,挂载分区等文件相关内容。4.对软硬件连接进行解释:软连接即快捷方式,硬链接即文件备份。

2025-10-31 20:43:22 1975 39

原创 10.【Linux系统编程】缓冲区详解——库缓冲区 VS 内核缓冲区

本文探讨了C语言中缓冲区的机制及其对I/O操作的影响。通过两个实验案例对比了使用close前后printf和write函数的输出差异,揭示了标准库缓冲区的工作机制。文章详细介绍了缓冲区的概念、引入原因、工作流程及三种刷新方式(全缓冲、行缓冲、无缓冲),并分析了库函数IO与系统调用IO的本质区别。关键发现:1)关闭文件描述符后,printf输出失效是因缓冲区未刷新;2)write始终有效因直接系统调用;3)通过fflush或使用无缓冲的stderr可强制刷新缓冲区。这些机制直接影响程序I/O效率与行为。

2025-10-12 20:29:46 1207 46

原创 09.【Linux系统编程】“文件”读写操作,Linux下一切皆文件!

本文系统介绍了文件操作的核心概念与实践方法。首先从狭义和广义两个角度定义文件,指出Linux下一切皆文件的理念,并强调文件操作本质是进程对文件属性和内容的操作。接着详细讲解了C语言文件接口的使用,包括文件创建路径定位、读写实现、标准输入输出流以及不同打开模式的区别。最后引入系统级文件I/O接口,重点解析open函数的标志位参数分类和使用方法。文章覆盖了从语言层到系统层的文件操作知识体系,为开发者提供了全面的文件操作指导。

2025-09-28 10:18:17 1380 27

原创 08.【Linux系统编程】面试官:自己实现过 Shell 吗?我当场把代码甩给他,第二天收到 Offer

本文介绍了一个简易shell的实现原理和流程。主要内容包括:1)shell的基本功能要求,包括处理普通命令和内建命令,理解相关概念和工作原理;2)实现原理分析,通过fork-exec-wait循环建立子进程执行命令;3)详细实现流程,从环境变量初始化、命令行提示符打印,到命令获取、解析和执行;4)关键代码实现,展示了环境变量获取、目录显示优化等核心功能。该shell模拟了bash的基本交互过程,帮助理解shell的工作原理。

2025-09-25 10:21:06 5535 38

原创 07.【Linux系统编程】进程控制(进程创建fork、进程终止exit等、进程等待wait&waitpid、进程替换execl等)

本文主要介绍了Linux进程控制的:进程创建、进程终止、进程等待和进程替换。在进程创建部分,详细讲解了fork函数的工作原理、写时拷贝技术以及fork的常见用法和失败原因。进程终止部分阐述了进程退出的三种场景,比较了return、exit和_exit三种退出方式的区别,并解释了退出码与错误码的区别。进程等待部分,强调了父进程回收子进程的必要性,以避免僵尸进程导致的内存泄漏问题。进程替换使用exec的几个函数实现,重点只替换代码和数据,PCB不变。清晰地展示了Linux进程管理的关键技术原理。

2025-09-23 19:09:22 1231 33

原创 06.【Linux系统编程】命令行参数(给main传参)、环境变量(概念+使用)、进程的虚拟地址空间(用户实际访问的空间)

本文主要介绍了Linux系统中的命令行参数、环境变量和进程虚拟地址空间三大核心概念。命令行参数通过main函数的argc和argv实现程序功能选项;环境变量PATH等帮助系统定位程序,具有全局属性,可通过export/unset管理。虚拟地址空间通过页表映射物理内存,实现内存保护和写时拷贝机制,其区域划分由mm_struct管理。三者共同构成了Linux进程运行的基础:命令行参数提供功能选项,环境变量支持系统配置,虚拟地址空间保障内存安全性和进程独立性。

2025-09-21 12:25:02 1747 48

原创 05.【Linux系统编程】进程(冯诺依曼体系结构、进程概念、进程状态(注意僵尸和孤儿)、进程优先级、进程切换和调度)

本文系统介绍了冯诺依曼体系结构和操作系统进程管理的核心概念。冯诺依曼体系结构包含五大部件(运算器、控制器、存储器、输入/输出设备),采用存储程序和顺序执行两大原则,实现了计算机的通用性,但存在外设速度制约CPU性能的木桶效应。操作系统通过进程管理实现软硬件资源调度,进程由PCB(进程控制块)和程序代码数据组成,具有多种状态(运行、就绪、阻塞等),重点解释了僵尸进程和孤儿进程的产生与危害。详细阐述了进程的优先级、进程切换(上下文切换机制)、进程调度问题。

2025-09-14 14:46:36 1181 28

原创 04.【Linux系统编程】基础开发工具2(makefile、进度条程序实现、版本控制器Git、调试器gdb/cgdb的使用)

本文介绍了Linux系统下的开发工具和调试技术,包括Make自动化构建工具、Git版本控制器以及gdb/cgdb调试器的使用。 在Makefile部分,详细讲解了其基本语法(依赖关系、依赖方法、伪目标)、执行流程和变量定义等核心概念,强调了Makefile对大型工程管理的重要性。Git部分介绍了"三板斧"操作(add/commit/push)和版本控制基础。调试技术方面,重点讲解了gdb/cgdb的常用命令(断点设置、单步执行、变量监控等)和调试技巧,并说明了debug模式的编译要求。

2025-09-13 19:15:09 854 11

原创 03.【Linux系统编程】基础开发工具1(yum软件安装、vim编辑器、编译器gcc/g++)

本文主要介绍了Linux系统下的开发工具链,包括软件包管理器、文本编辑器、编译器、构建工具、调试器等核心内容。在软件包管理方面,详细讲解了yum/apt的使用方法、软件生态和依赖关系;编辑器部分重点介绍了vim的三种模式及常用命令;编译环节阐述了gcc的编译流程和动静态链接原理。

2025-09-13 19:14:30 1143 6

原创 02.【Linux系统编程】Linux权限(root超级用户和普通用户、创建普通用户、sudo短暂提权、权限概念、权限修改、粘滞位)

本文主要介绍了Linux系统中的用户管理和权限机制。系统包含root超级用户(拥有所有权限)和普通用户(权限受限),通过adduser/passwd/su命令管理用户。权限系统由角色(拥有者、所属组、other)和目标属性(rwx权限位)组成,通过chmod修改权限属性(字符或八进制表示)。重点讲解了文件/目录权限差异、umask缺省权限设置、粘滞位(防止共享目录误删)以及chown/chgrp修改角色归属。root用户不受权限限制,普通用户只能修改自有文件权限,目录需要x权限才能进入。

2025-09-12 13:39:20 1320 19

原创 01.【Linux系统编程】Linux初识(Linux内核版本、基础指令、理论知识、shell命令及运行原理)

本文是Linux系统入门指南,主要分为四个部分:1)Linux初识介绍开源特性和内核版本;2)基础指令部分详细讲解28个常用命令,包括文件操作(ls、cd、mkdir等)、文本处理(cat、grep等)、压缩传输(zip、tar等)以及系统管理(shutdown、date等);3)理论知识重点阐述Linux"一切皆文件"的设计理念、目录结构、路径概念及重定向与管道操作;4)Shell运行原理,解释其作为用户与内核中介的角色。文档通过大量实例演示命令用法,是Linux初学者的实用操作手册。

2025-09-12 13:33:59 1613 22

原创 24.【C++进阶】智能指针(RAII思想、shared_ptr、unique_ptr、weak_ptr、auto_ptr)

本文介绍了C++智能指针的设计原理与使用方法。首先通过内存泄漏案例展示了智能指针的实用价值,分析了RAII思想在资源管理中的重要性。随后详细讲解了四种标准智能指针:auto_ptr(已弃用)、unique_ptr(独占所有权)、shared_ptr(共享所有权)和weak_ptr(解决循环引用问题),包括其拷贝语义、删除器定制等特性。文章深入剖析了智能指针的底层实现,特别是shared_ptr的引用计数机制,并演示了如何用weak_ptr解决循环引用问题。最后讨论了智能指针的线程安全性和内存泄漏相关问题。

2025-09-09 08:44:13 729 15

原创 23.【C++进阶】异常(try、catch、throw)

本文介绍了C++异常处理机制的核心概念和使用方法。异常处理通过throw抛出异常对象和catch捕获异常,将错误检测与处理分离,使程序结构更清晰。文章详细讲解了异常抛出后的栈展开过程、异常匹配规则(包括继承体系中的基类捕获)、异常重新抛出、异常安全问题(资源泄漏风险)以及C++11的noexcept规范。同时介绍了标准库异常继承体系,建议通过捕获基类exception处理异常。文中通过多个代码示例演示了异常处理的实际应用场景,包括SQL操作、缓存处理和HTTP请求等模块化设计。

2025-09-05 11:27:51 831 23

原创 22.【C++11】可变参数模板、类新功能、STL新增、lambda表达式、包装器、const和constexpr、类型处理(auto、decltype、using代替typedef)

本文系统介绍了C++11的核心新特性,主要包括可变参数模板、新类功能、STL改进、lambda表达式、包装器、const限定符处理等。可变参数模板通过参数包实现类型和数量的泛化,结合包扩展技术实现递归展开;类功能新增默认移动构造/赋值,支持声明时赋缺省值;lambda表达式作为匿名函数对象简化了可调用对象定义;function包装器统一了函数指针、仿函数等类型;constexpr支持编译期常量和函数;auto/decltype增强类型推导能力。这些特性显著提升了C++的泛型编程能力、代码简洁性和运行效率。

2025-09-05 11:25:43 1099 25

原创 01.【数据结构-C语言】数据结构概念&算法效率(时间复杂度和空间复杂度)

本文介绍了数据结构和算法的基础知识。数据结构是计算机存储和组织数据的方式,包含数组、链表等结构,用于高效管理数据。算法是将输入转为输出的计算步骤,其效率通过时间复杂度和空间复杂度衡量。时间复杂度使用大O表示法描述算法执行时间随数据规模增长的变化趋势,常见有O(1)、O(n)、O(n²)等。空间复杂度则衡量算法运行所需的额外存储空间。文章通过多个代码示例讲解了如何计算不同算法的时间复杂度,包括循环、递归等典型场景,并指出实际应用中更关注最坏情况下的性能表现。

2025-08-16 12:14:01 1111 8

原创 08.【数据结构-C语言】二叉树-链式结构(二叉树前序、中序、后续遍历,计算节点个数及高度,层序遍历,二叉树的创建和销毁)

本文介绍了链式二叉树的基本概念、结构及常见操作。主要内容包括:1.二叉树定义:递归式的数据结构,由根节点及其左右子树组成;2.二叉树遍历:详细讲解了前序、中序、后序三种递归遍历方式及其实现代码;3.二叉树基本操作:包括计算节点总数、叶子节点数、树高度,以及层序遍历的实现;4.二叉树构建与销毁:通过输入字符串构建二叉树的方法及内存释放过程。文中提供了完整的C语言实现代码,并针对常见错误进行了分析说明。

2025-08-13 14:38:45 1020 7

原创 07.【数据结构-C语言】二叉树-堆-顺序结构(树、二叉树、堆的概念,堆实现,向上调整&向下调整,建堆时间复杂度,堆的应用:堆排序、TOP-K问题)

本文系统介绍了树和二叉树数据结构及堆的实现与应用。主要内容包括:1)树的基本概念、术语(如度、深度、祖先等)和存储表示方法;2)二叉树的定义、特性(度≤2、有序性)和性质(如节点数公式n0=n2+1);3)堆的实现与应用,重点讲解了堆的向上/向下调整算法、插入删除操作及时间复杂度分析;4)堆在排序(堆排序)和TOP-K问题中的实际应用,提供了完整的代码实现。文章通过数学证明和示例代码,详细阐述了这些重要数据结构的概念原理和具体实现方法。

2025-08-13 14:33:30 994 4

原创 06.【数据结构-C语言】队列(先进先出,队列实现:入队列、出队列、获取队头or队尾元素,队列实现代码,队列相关题目)

本文介绍了队列的概念及其C语言实现。队列是一种先进先出(FIFO)的线性表,支持在队尾插入(入队)和在队头删除(出队)操作。文章详细讲解了使用链表实现队列的方法,包括队列结构体设计、初始化、销毁、入队、出队等基本操作。相比数组实现,链表实现能避免数组头出数据时的效率问题。实现要点包括:处理队列空/非空时的指针修改、维护队列大小、异常处理等。文末提供了完整代码下载链接,并列举了队列相关的典型题目,如用队列实现栈、循环队列等。该实现通过新增队列结构体简化了操作,避免了二级指针的使用。

2025-08-09 14:21:56 707

原创 05.【数据结构-C语言】栈(先进后出,栈的实现:进栈、出栈、获取栈顶元素,栈实现代码,括号匹配问题)

本文介绍了栈的概念及其数组实现方式。栈是一种遵循后进先出(LIFO)原则的线性表,只能在固定端(栈顶)进行插入(压栈)和删除(出栈)操作。相比链表,数组实现更优,因为尾部操作效率高。文中详细展示了栈的结构体定义(包含数组指针、栈顶位置和容量)以及核心操作:初始化/销毁、压栈(动态扩容)、出栈、获取栈顶元素、判空和元素计数。重点说明了数组实现时栈顶位置的处理方式(top指向实际栈顶的下一个位置),并提供了完整的C语言实现代码。

2025-08-09 14:21:18 1026

原创 04.【数据结构-C语言】贪吃蛇项目实现(控制台显示、Win32 API、游戏设计与分析、核心逻辑分析及代码实现)

摘要 本文详细介绍了使用C语言在Windows控制台环境下实现经典贪吃蛇游戏的全过程。项目通过Win32 API控制台操作、宽字符处理和链表数据结构等技术,实现了贪吃蛇的基本功能:方向控制、食物生成、蛇身增长、碰撞检测、得分计算等。文章分为游戏设计、技术实现和代码分析三部分,重点讲解了控制台坐标处理、宽字符显示、蛇身链表管理、游戏状态机等核心模块的实现方法,并提供了完整的代码示例。该项目可作为C语言学习者的综合编程实践案例,涵盖了函数、结构体、指针、内存管理等多项基础知识的应用。

2025-08-06 20:52:22 1657 4

原创 03.【数据结构-C语言】链表(链表概念;链表分类: 单链表、双向链表;单链表实现;带头循环双向链表实现;链表常见题目解析)

数据结构-C语言链表。主要内容包括:1)链表的概念和结构特点,物理非连续但逻辑连续;2)单链表和双向循环链表的实现方法,包括节点结构、插入删除操作和指针使用;3)链表与顺序表的优缺点比较,链表在插入删除效率上有优势;4)链表相关算法题目解析,涉及反转、合并、分割等操作。文章通过代码示例详细说明了链表的实现原理和操作方法,为数据结构学习提供了实用参考。

2025-08-06 20:50:51 1014 5

原创 02.【数据结构-C语言】顺序表(线性表概念、顺序表实现:增删查、前向声明、顺序表实现通讯录项目:增删改查、通讯录数据导入及保存到本地文件)

数据结构-C语言顺序表实现,通讯录项目实现:线性表概念;顺序表概念及分类,顺序表实现;使用顺序表实现通讯录项目:前向声明的概念及使用规则,通讯录的增删改查、通讯录数据的保存到本地文件、本地文件数据导入到通讯录中。

2025-08-06 18:40:54 1013

原创 19.【C语言学习笔记】预处理详解(#define宏定义、#和##运算符、#undef移除宏定义、条件编译、头文件包含“”和<>、避免重复包含头文件#ifndef)

C语言与定义符号;#define定义常量、#define定义宏;带有副作用的宏参数;宏替换规则;宏和函数的对比;#和##运算符;宏定义的命名约定;#undef移除一个宏定义;命令行定义;条件编译;头文件包含用“”还是<>,避免重复包含#ifndef

2025-07-30 11:44:42 1112

原创 18.【C语言学习笔记】编译和链接(翻译环境(源代码转换为机器指令);编译:预处理(预编译),编译,汇编;链接;运行环境(实际执行代码))

C语言翻译环境和运行环境介绍;编译分解:预处理(预编译)(生成.i后缀文件)-> 编译(生成.s后缀文件) -> 汇编(生成.o后缀文件);链接生成.exe后缀文件(可执行文件)。

2025-07-28 20:06:11 939

原创 17.【C语言学习笔记】文件操作(文件的打开和关闭、流和标准流、顺序读写、随机读写、判断读取结束的原因、文件缓冲区)

C语言文件操作:文件的类别(程序文件、数据文件);二进制文件和文本文件;流和标准流;文件的打开和关闭;文件的顺序读写;文件的随机读写;文件读取结束的的判定(已经读取结束,判断结束的原因);文件缓冲区

2025-07-28 20:02:21 1130

原创 16.【C语言学习笔记】动态内存管理(malloc、free、calloc、realloc、柔性数组)

C语言动态内存管理:malloc动态内存开辟;free动态内存释放;calloc动态内存开辟并初始化;realloc动态内存调整;动态内存常见的错误;柔性数组的概念及使用、优势;C/C++中程序内存区域划分。

2025-07-27 19:14:58 892

原创 15.【C语言学习笔记】联合体&枚举(联合体声明、特点、使用;枚举类型声明、优点、使用)

C语言联合体类型介绍:成员变量共用一块内存空间,所以也叫共用体,特点是可以节省空间;枚举类型的介绍,声明、优点、使用。

2025-07-26 14:10:20 921

原创 13.【C语言学习笔记】内存函数(memcpy内存拷贝、memcmp内存比较等)和数据在内存中的存储(整数,浮点数在内存中的存储,大小端字节序)

C语言内存函数的使用及模拟实现,memcpy、memmove、memset、memcmp,可以处理非字符串类型的数据,头文件string.h;整数在内存中的存储,大小端字节序(有练习进行解析);浮点数在内存中的存储,存过程,取过程,存储方法,主要是S、M、E三个数据。

2025-07-26 14:09:41 714

原创 12.【C语言学习笔记】字符函数和字符串函数(strlen获取字符串长度、strcpy拷贝、strcat拼接、strcmp比较、strstr查找、strtok分割、strerror、perror)

C语言字符函数(字符分类、字符转换)的使用;字符串函数:strlen(获取长度);strcpy(拷贝);strcat(拼接);strcmp(比较);strncpy(指定个数拷贝);strncat;strncmp;strstr(字符串查找);strtok(指定字符分割);strerror(错误信息获取);perror(错误信息打印)

2025-07-24 14:18:14 917

原创 11.【C语言学习笔记】指针(三)(回调函数、qsort排序函数、sizeof关键字和strlen函数)

C语言回调函数简介;qsort函数的使用;冒泡实现qsort函数;sizeof和strlen解释使用及对比;数组和指针笔试题解析

2025-07-22 17:04:02 806

Linux系统-线程池-线程池的实现:包括互斥锁、条件变量、单线程、日志打印、线程池的实现

该代码实现了基于C++模板的单例模式线程池(header only),默认创建5个工作线程,通过互斥锁和条件变量保障并发安全;线程池初始化后工作线程阻塞等待任务,外部可通过Enqueue接口提交可调用类型任务(如Download),提交时唤醒休眠线程处理,Stop接口可优雅停止线程池(执行完剩余任务后退出),Join接口用于主线程回收线程资源,有效避免线程频繁创建销毁的开销,高效处理批量异步任务。

2025-12-23

POSIX信号量实现多线程代码

POSIX信号量实现多线程代码

2025-12-22

Linux操作系统-进程池-匿名管道进程池实现

Linux操作系统-进程池-匿名管道进程池实现

2025-11-17

linux系统-缓冲区-mystdio的实现

linux系统-缓冲区-mystdio的实现

2025-10-12

手搓shell进程,带有详细文章讲解

手动实现shell进程,带有详细文章讲解!

2025-09-23

Linux系统小程序-进度条实现

Linux系统小程序-进度条实现

2025-09-11

C++用哈希表封装unordered-map和unordered-set

C++用哈希表封装unordered_map和unordered_set

2025-05-27

C++封装红黑树实现map和set

C++封装红黑树实现mymap和myset

2025-05-26

C++-红黑树的实现完整代码

C++-红黑树的实现完整代码

2025-05-23

堆-二叉树的顺序结构-C语言实现

C语言堆结构体声明、初始化&销毁、向上调整、向下调整、插入、删除、取堆顶&判空。

2025-08-13

队列-C语言实现完整版代码

队列-C语言实现完整版代码:包括队列的结构、入队列、出队列、队列的初始化和销毁、取队头、取队尾、判空、获取队列的元素个数。

2025-08-08

栈-C语言实现完整版代码

栈-C语言实现完整版代码:包括栈的结构、入栈、出栈、栈的初始化和销毁、取栈顶、判空、获取栈的元素个数。

2025-08-08

贪吃蛇项目-C语言实现代码

本文详细介绍了使用C语言在Windows控制台环境下实现经典贪吃蛇游戏的全过程。项目通过Win32 API控制台操作、宽字符处理和链表数据结构等技术,实现了贪吃蛇的基本功能:方向控制、食物生成、蛇身增长、碰撞检测、得分计算等。文章分为游戏设计、技术实现和代码分析三部分,重点讲解了控制台坐标处理、宽字符显示、蛇身链表管理、游戏状态机等核心模块的实现方法,并提供了完整的代码示例。该项目可作为C语言学习者的综合编程实践案例,涵盖了函数、结构体、指针、内存管理等多项基础知识的应用。

2025-08-04

双向链表-C语言实现代码

C语言实现带头循环双向链表,包括增(头插、尾插、指定位置之后插入)删(头删、尾删、指定位置删除)查(查找对应节点的地址)、链表的初始化和销毁、以及测试用例。

2025-08-03

单链表-C语言实现代码

C语言实现单链表,包括增(头插、尾插、指定位置之前插入、指定位置之后插入)删(头删、尾删、指定位置删除、指定位置之后删除)查(查找对应节点的地址)、链表的销毁、以及测试用例。

2025-08-02

通讯录程序实现-C语言顺序表实现

用C语言顺序表实现通讯录功能,包括通讯录的增删查改操作,以及通讯录数据保存到本地文件,本地文件数据导入到通讯录。

2025-07-31

顺序表-C语言实现代码

C语言实现顺序表,包括增(头插、尾插、指定位置之前插入)删(头删、尾删、指定位置删除)查(查找对应元素的下标)函数。

2025-07-31

C++-AVL树的实现

C++-AVL树的实现

2025-05-23

内核空间 MPU6050 体感鼠标驱动程序

内核空间 MPU6050 体感鼠标驱动程序

2025-05-21

混杂设备驱动led流水灯实现

混杂设备驱动led流水灯实现,该驱动控制 3 个 LED,通过写入/读出 3 个字节来设定、读入 3 个引脚电平。每个字节代表一个引脚。

2025-05-21

用户空间 MPU6050 体感虚拟鼠标驱动程序

用户空间 MPU6050 体感虚拟鼠标驱动程序

2025-05-21

linux嵌入式系统内核实现mpu6050体感鼠标移动功能(无按键)

linux嵌入式系统内核实现mpu6050体感鼠标移动功能(无按键)

2025-05-16

linux嵌入式开发板用户驱动体感光标实现

linux嵌入式开发板用户驱动体感光标实现

2025-05-08

C++二叉搜索树key-value的实现

C++二叉搜索树key_value的实现

2025-04-11

C++二叉搜索树的实现代码

C++二叉搜索树的实现代码

2025-04-11

C++stack(栈)、queue(队列)、priority-queue(堆)的模拟实现

用C++的vector、list和deque实现C++stack(栈)、queue(队列)、priority_queue(堆)

2025-03-03

C++list的模拟实现

C++list的模拟实现,构造,拷贝构造,析构函数;“=”," * ","->"运算符重载;begin(),end()函数;空间容量:size,empty等;增删查改:push_back,push_front,pop_back,pop_front,insert,erase。迭代器和const迭代器实现,用模板复用迭代器类,erase函数调用时iterator迭代器失效等。代码及测试

2025-02-27

C++日期类的实现,包括日期+,+=,-,-=和&gt;,&lt;,&gt;=,&lt;=,==,!= ;日期 - 日期 得天数 ;流提取&gt;&gt;,流插入&lt;&lt; 运算符重载等

C++日期类的实现,包括日期+,+=,-,-=和>,<,>=,<=,==,!= ;日期 - 日期 得天数 ;流提取>>,流插入<< 运算符重载等

2025-02-15

C++vector的模拟实现

C++vector的模拟实现,构造,拷贝构造,析构函数;“=”,“[ ]”运算符重载;begin(),end(),函数;空间容量:size,capacity,empty等;增删查改:push_back,pop_back,insert,erase,resize,reserve。代码及测试

2025-02-25

C++string类的模拟实现

C++string类的模拟实现。包括默认构造,拷贝构造,析构函数;运算符重载:=、[ ]、==、!=、<、<=、>、>=;输入输出运算符重载<<、>>;转C字符串c_str()、清空数据clear()、获取字符个数size、提前开空间reserve、尾插字符push_back、尾插字符串append、+=运算符重载、插入insert、删除erase、查找find、复制拷贝substr、输入一行gerline的实现。

2025-02-21

巡迹小车 - 副本 (2).zip

七路寻迹小车代码

2021-07-26

空空如也

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

TA关注的人

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