自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 一文搞懂 Linux 网络基础:协议、分层、IP、MAC、端口号与 socket

本文围绕 Linux 网络基础展开,梳理计算机网络背景、协议分层、TCP/IP 模型、封装与解包、IP 与 MAC 区别、端口号、socket、网络字节序及常见 socket API,帮助从底层理解网络通信的完整流程。

2026-06-10 22:35:33 403 5

原创 一文搞懂 Linux 多线程互斥、同步、条件变量与信号量

本文围绕 Linux 多线程互斥与同步展开,从共享资源、临界区和互斥锁入手,分析 ticket-- 非原子导致的线程安全问题,并进一步讲解条件变量、生产者消费者模型、POSIX 信号量、环形队列、线程池、单例模式、可重入函数及 STL/智能指针线程安全等核心内容。

2026-06-06 16:16:06 340

原创 一文理解 Linux 线程:线程、进程、LWP 到底是什么关系?

学完线程这一部分之后,我最大的感受是:线程并不是孤立的一个 API 知识点,而是把进程地址空间、页表、调度、信号、栈、系统调用这些内容串在了一起。刚开始我只是觉得线程就是“多条执行路线”,会创建、会等待就差不多了。后来真正往底层看,才发现线程为什么轻量、为什么共享资源、为什么又有自己的栈,背后其实都和虚拟地址空间有关。尤其是pthread_t和LWP这一块,让我意识到 Linux 线程并不是单纯由一个库函数“变出来”的。

2026-06-01 20:20:07 377

原创 Linux 信号机制详解:从 Ctrl+C 到 SIGCHLD,一文理解进程信号

从 `Ctrl+C` 到 `SIGCHLD`,系统梳理 Linux 信号机制。结合大量代码与流程图,深入理解信号产生、未决、阻塞、递达、捕捉全过程,并详细分析 `signal`、`sigaction`、`alarm`、`waitpid`、Core Dump、硬件异常与进程控制等底层原理。

2026-05-28 10:02:05 469

原创 Linux IPC 详解:匿名管道、命名管道、共享内存与信号量

Linux IPC 不是简单的“进程之间传数据”,而是一套围绕内核对象、文件描述符、地址空间和同步互斥设计的通信机制。本文从管道、命名管道、共享内存、消息队列、信号量到 minishell 管道实现,系统梳理进程协作的底层原理与常见面试考点。

2026-05-24 15:05:26 420 2

原创 Linux 动静态库制作与原理:从 .a、.so 到 ELF 加载一次讲透

本文围绕 Linux 动静态库展开,梳理 .a、.so 的制作与使用,进一步理解 gcc 编译链接、ELF 文件结构、动态库查找路径、GOT/PLT 调用机制,以及程序从源码到进程地址空间的加载过程。

2026-05-22 21:25:34 429

原创 一篇文章搞懂 Ext2 文件系统:block、inode、目录、挂载全解析

本文从磁盘物理结构出发,梳理 CHS/LBA、分区格式化、Ext2 块组、inode、目录与路径解析,结合图解和代码理解 Linux 文件系统底层原理。

2026-05-13 14:34:27 431

原创 彻底搞懂 Linux 基础 IO:文件描述符、重定向、dup2、缓冲区一次讲透!

本文整理了我学习 Linux 基础 IO 时的理解,围绕 C 文件接口、系统调用、文件描述符 fd、重定向、dup2、缓冲区以及“一切皆文件”展开。通过代码示例、图解和生活类比,帮助理解 Linux 如何统一管理文件、设备、管道和 socket,并总结了相关高频面试题。

2026-05-07 23:26:09 465

原创 进程的一生:fork 创建、优雅终止、父子等待、程序替换与 Mini Shell 实战

本文详细讲解 Linux 进程控制全流程,包含 fork 创建、进程终止、等待、程序替换原理,详解各类系统调用,并手把手实现迷你 Shell,附完整代码与通俗原理解析。

2026-04-21 08:50:43 390

原创 学 Linux 内核?先把进程创建与终止这关啃下来

本文介绍了Linux系统中进程创建与终止的核心机制。进程创建通过fork函数实现,采用写时拷贝技术优化内存使用,父子进程通过不同返回值区分角色本文介绍了Linux系统中进程创建与终止的核心机制。进程创建通过fork函数实现,采用写时拷贝技术优化内存使用,父子进程通过不同返回值区分角色。进程终止分为正常退出(return/exit/_exit)和异常退出(信号终止),退出码(0表示成功,非0表示错误)用于反馈进程状态。掌握这些机制对开发多进程程序、理解操作系统资源管理至关重要,是Linux系统编程的基础技能。

2026-01-30 23:29:37 986

原创 Linux 进程概念与内存管理详解(含冯诺依曼体系结构、环境变量、调度算法)

本文聚焦Linux操作系统核心的进程与内存管理,系统拆解从冯诺依曼体系底层逻辑到虚拟地址空间的8大核心知识点。内容以“原理+实操+生活类比”为核心,涵盖操作系统管理本质、进程创建与状态流转、优先级调度、上下文切换、环境变量特性等关键内容,搭配可直接运行的C语言代码与Linux命令、清晰可视化图解,辅以快递驿站、外卖骑手等生活化案例帮助理解。文章纠正了新手常见认知误区,既适合初学者搭建体系化知识框架,也能为开发者提供实操参考,助力快速吃透进程与内存管理的底层逻辑。

2025-12-12 13:33:06 1066 15

原创 Linux基础开发工具(下):调试器gdb/cgdb的使用详解

本文聚焦Linux下gdb/cgdb调试工具,面向开发初学者与需复习工具用法的开发者。首先介绍程序Release与Debug两种发布模式,强调Debug模式需通过`-g`参数编译以保留调试信息。接着详细拆解gdb核心命令,涵盖启动退出、断点设置、单步执行、变量查看与修改等基础操作,以及监视变量、条件断点等高级技巧。随后讲解cgdb的安装、可视化优势与基础操作,通过实战案例演示如何定位并修复代码BUG。最后梳理程序崩溃、循环错误等常见场景的解决方案,助力开发者快速掌握调试技能,提升问题排查效率。

2025-12-08 20:30:40 918 14

原创 Linux基础开发工具(中):Git版本控制

本文围绕 Git 这一开发必备工具,从其诞生背景(Linus 为解决 Linux 内核协作难题开发)切入,解析核心概念与工作流程,梳理了 Linux 下的安装配置、本地仓库操作、远程仓库同步(Gitee/GitHub)的完整流程,还补充了版本回退、忽略文件、免密码提交等高频实用操作。Git 的核心价值在于通过分布式架构与多区域流转,自动追踪版本、简化协作,规避冲突与版本混乱。学习关键是理解 “工作区 - 暂存区 - 仓库” 逻辑,而非死记命令,掌握这些可满足 80% 日常开发需求。

2025-12-04 16:11:54 1025 8

原创 Linux基础开发工具(上):从包管理到“进度条”项目实战,掌握 yum/vim/gcc 核心工具

本文聚焦Linux开发基础核心链路,系统梳理了从软件安装到项目实战的关键工具与流程。先介绍yum/apt包管理器的查询、安装、卸载操作及国内镜像源配置,解决依赖与下载慢问题;再详解Vim编辑器的模式切换、常用命令与配置方法;随后拆解gcc/g++的四阶段编译流程及静动态链接差异,接着通过案例讲解Makefile自动化构建逻辑。最后以进度条项目实战整合所有工具,帮助Linux开发入门者快速掌握“软件安装→代码编辑→编译构建”核心技能,打通基础开发链路。

2025-12-03 22:07:15 1284 2

原创 Linux 入门宝典:初识系统 + 核心指令实操指南(小白必看)

本文是一份面向Linux初学者与复习者的实用指南,从系统认知、远程登录到核心指令、权限管理,层层拆解Linux基础核心知识。通过“代码示例+可视化图表”形式,详细讲解ls、cd、tar等常用指令的用法,深入解析权限逻辑与粘滞位等关键概念,覆盖服务器、云计算等多场景应用。内容兼顾易懂性与实操性,既梳理清晰知识框架,又提供可直接复用的实战技巧,助力读者快速入门Linux,巩固基础并逐步向精通进阶。

2025-12-01 23:44:42 638 5

原创 C++智能指针详解

本文围绕C++智能指针展开,详解其基于RAII的核心设计思想,梳理`unique_ptr`(单所有权)、`shared_ptr`(共享引用计数)、`weak_ptr`(解循环引用)等标准库实现的特性与适用场景。同时涵盖删除器定制、线程安全(`mutex`同步)、内存泄漏规避等关键问题,对比智能指针演进历程,结合代码示例拆解核心原理。旨在帮助开发者掌握智能指针的选型与实操,借助其自动资源管理能力,提升代码健壮性,告别手动`new/delete`的繁琐与风险。

2025-11-27 20:25:15 1276 5

原创 C++中的异常

本文聚焦C++异常处理核心知识点,从异常的概念、抛出与捕获机制入手,详解栈展开、类型匹配规则(含3种特殊转换)、异常重新抛出等关键逻辑。结合实际场景,分析异常安全问题与解决方案,介绍异常规范的用法,并对比标准库异常体系与自定义异常设计。通过清晰示例与实用技巧,展现异常处理如何摆脱错误码的冗余传递,实现错误检测与处理的分离,帮助开发者掌握这一构建稳健、可维护C++程序的核心工具。

2025-11-26 21:42:57 995 3

原创 C++11中的包装器

# 博客概述`std::function` 与 `std::bind` 是 C++11 核心特性,专为解决可调用对象类型混乱、接口适配繁琐的痛点而生。`std::function` 作为“万能容器”,统一普通函数、lambda、成员函数等各类可调用对象的类型,简化声明与传递;`std::bind` 作为“参数适配器”,可灵活固定参数、重排顺序,轻松适配不同接口。二者配合,在回调函数、命令映射、表达式求值等场景中优势显著,既能减少冗余代码,又能提升代码可读性与扩展性,是 C++ 高效编程的实用工具。

2025-11-25 23:51:58 754 4

原创 C++11中的lambda表达式详解

本文聚焦C++11核心特性Lambda表达式,解析其语法、机制与实用价值。Lambda为匿名函数对象,基础语法支持捕捉列表、参数列表等部分灵活简化,核心优势是无需定义独立函数或仿函数,可在局部直接封装逻辑,通过值捕捉、引用捕捉等复用上下文变量。文中结合代码示例,展示其在STL算法、变量交换等场景的应用,点明全局Lambda捕捉列表需为空等关键规则。其本质是编译器生成的匿名仿函数,兼具简洁性与灵活性,能降低开发冗余,提升代码可读性与效率,是C++多场景开发的实用工具。

2025-11-24 23:53:23 927 3

原创 C++11中新的类功能

聚焦C++11新增的四大类核心功能,包括默认移动构造/移动赋值、成员变量缺省值、default/delete关键字及final/override关键字。默认移动语义通过“窃取”右值资源优化深拷贝效率,编译器可自动生成或手动实现;成员变量缺省值集中管理默认值,简化构造函数设计;default/delete关键字精准控制默认函数生成,替代C++98隐晦写法;final/override规范继承体系,避免重写错误。这些特性解决了传统类设计的效率、冗余与安全问题,是编写高效、简洁、可维护的现代C++代码的核心基石。

2025-11-23 21:27:31 859 2

原创 C++11可变参数模板

本文聚焦 C++11 可变参数模板,先讲类模板和函数模板的基础声明,再解析编译期实例化与参数包递归扩展逻辑,结合模拟list::emplace_back、通用参数转发案例,展现其高效构造对象、简化泛型代码的价值,提及空包声明、完美转发等注意事项,助快速掌握这一泛型编程利器。

2025-11-19 19:29:18 898 4

原创 C++11中的右值引用和移动语义

本文摘要:文章详细介绍了C++中的左值和右值概念:左值表示持久数据对象(如变量、解引用指针),可寻址并出现在赋值号两侧;右值表示临时数据(如常量、表达式结果),仅出现在赋值号右侧且不可寻址。通过代码示例展示了左值引用和右值引用的用法及区别,并说明右值引用和const左值引用可延长临时对象生命周期。文章还探讨了参数匹配规则,以及移动构造和移动赋值的实现原理——通过"窃取"右值资源避免深拷贝,提升效率。最后通过自定义字符串类的实现,对比了深拷贝与移动语义的性能差异。

2025-11-18 21:21:12 887 4

原创 C++11中的{}与std::initializer_list

C++11引入了{}统一初始化语法,支持所有类型使用{}初始化,包括内置类型和自定义类型。相比C++98仅支持数组和结构体初始化,C++11的{}初始化更简洁,可省略=号,在多参数构造时尤为方便。标准库新增std::initializer_list容器,底层存储数组指针,支持迭代器遍历。STL容器都支持initializer_list构造函数,使容器初始化更加灵活,如vector<int> v = {1,2,3}。该特性简化了对象容器的初始化过程,提升了代码简洁性和可读性。

2025-11-17 22:14:12 531 4

原创 C++类和对象--构造函数和析构函数详解

C++中的构造函数与析构函数是类的重要成员函数,分别负责对象的初始化和资源释放。构造函数在对象创建时自动调用,具有与类同名、无返回值、可重载等特点,编译器会默认生成无参构造函数。析构函数在对象销毁时自动调用,用于资源清理,类名前加~,无参无返回值。当类中有动态资源申请时,必须显式定义析构函数以避免内存泄漏。编译器生成的默认析构函数会处理自定义类型成员的析构。多个局部对象按定义顺序逆序析构。

2025-09-10 08:52:02 468 3

原创 【数据结构】二叉树的链式结构--用C语言实现

本文介绍了二叉树的链式存储结构及其实现。相比顺序存储,链式结构通过左右指针连接节点,更灵活地表示非线性关系。主要内容包括:1)链式节点的定义,使用左右指针指向子节点;2)三种遍历方式(前序、中序、后序)的实现原理及示例;3)二叉树基本操作的递归实现,包括创建节点、销毁树、计算节点数、查找节点等。通过递归思想,可以简洁地实现二叉树的各种操作,如计算叶子节点数、特定层节点数等。链式结构为二叉树提供了高效的存储和操作方式。

2025-07-23 14:46:21 1144 3

原创 【数据结构】揭秘二叉树与堆--用C语言实现堆(二叉树的顺序结构)

摘要:本文系统介绍了树和二叉树的数据结构概念及实现。首先阐述了树的定义、层次结构和相关术语(如度、深度、祖先等),重点讲解了二叉树的特性和两种特殊类型(满二叉树和完全二叉树)。随后详细说明了堆的实现,包括大/小根堆的定义、向上/向下调整算法以及堆的插入、删除等操作。文章通过代码示例展示了堆的初始化、销毁、判空等基本功能实现,为理解树形结构和优先级队列提供了全面的技术参考。

2025-07-20 11:18:46 1070

原创 【数据结构】队列的深入解析--用C语言实现

本文介绍了队列的基本概念、实现方式及具体代码实现。队列是一种遵循先进先出原则的线性表,可以使用数组或链表实现。通过分析时间复杂度(链表实现入队O(1)、出队O(1)),得出链表实现更优的结论。文章详细展示了队列的结构定义、初始化、入队/出队操作、获取队头/队尾数据、计算队列大小及销毁队列等核心功能的C语言实现代码。最后提供了完整的Queue.h头文件和Queue.c源文件代码,包含所有队列操作的基本函数实现。

2025-07-18 12:07:56 770 2

原创 【数据结构】栈的深入解析--用C语言实现

本文介绍了栈的基本概念、实现原理及C语言代码实现。栈是一种遵循先进后出原则的线性表,只能在固定端(栈顶)进行插入和删除操作。文章通过比较数组和链表作为底层结构的优缺点,选择了数组实现栈,因其入栈出栈的时间复杂度均为O(1)。详细讲解了栈的结构定义、初始化、销毁、入栈、出栈、取栈顶元素和获取有效元素个数等核心功能的实现方法,并提供了完整的C语言代码示例,包括头文件、实现文件和测试文件。

2025-07-18 10:15:32 559

原创 【数据结构】双链表--从原理到(用C语言)实现全解析

本文介绍了双链表(带头双向循环链表)的基本概念和实现方法。双链表与单链表的区别在于:双链表每个节点包含prev和next指针,形成双向循环结构,头节点不存储有效数据。文章详细讲解了双链表的各种操作实现,包括初始化、销毁、判空、插入(头插/尾插/指定位置)、删除(头删/尾删/指定位置)和查找等。通过代码示例展示了双链表如何利用prev指针提高操作效率,如尾插/尾删操作时间复杂度从单链表的O(n)降至O(1)。文中还提供了完整的C语言实现代码,包含链表节点定义和所有操作的函数实现。

2025-07-16 11:33:12 936

原创 【数据结构】单链表详解-- C语言实现增删查改

摘要 本文介绍了链表的基本概念和C语言实现单链表的方法。链表是一种非连续存储的线性结构,由节点组成,每个节点包含数据和指向下一节点的指针。与顺序表相比,链表在插入/删除操作上效率更高。文章详细讲解了单链表的创建、打印以及增删操作的具体实现,包括头插尾插、指定位置插入、头删尾删等核心功能,并强调了对指针操作和内存管理的注意事项。所有操作均通过二级指针实现链表头节点的修改,确保操作的正确性。

2025-07-11 16:55:05 823

原创 【数据结构】顺序表详解--用C语言实现增删查改

用C语言实现顺序表的创建与销毁和数据的增删改查 讲解了线性表和顺序表的概念

2025-07-10 17:02:40 542

原创 C语言文件操作详解

讲解了C语言中的文件操作和相应的函数

2025-05-29 16:08:45 1059 4

原创 C语言中的结构体变量

详细讲解了C语言中结构体的有关知识,并介绍了位段在C语言中的实现

2025-05-22 17:27:58 1273 2

原创 整数与浮点数在内存中的存储(含大端存储模式和小端存储模式的讲解)

详细介绍了整数和浮点数在内存中存储的细节,讲解了小端存储规则和大端存储规则的相关知识

2025-05-20 15:48:51 931 1

原创 详细讲解C语言中的字符函数和字符串函数

介绍了C语言中相关的字符函数和字符串函数

2025-05-19 13:17:24 883 1

原创 C/C++深入理解指针

C语言中指针相关知识详细讲解

2025-05-15 00:09:52 1274 3

原创 如何用C语言制作一款扫雷游戏

用C语言制作扫雷游戏,大学期中期末大作业,简单详细,适合小白

2025-04-22 12:56:26 524 2

原创 【算法】高精度

高精度的运用及代码

2025-04-06 00:43:25 331

原创 【算法】双指针(尺取法)(滑动窗口)

双指针的运用

2025-02-04 10:35:48 175

原创 【算法】二分查找

二分查找的运用

2025-02-03 21:57:56 378

空空如也

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

TA关注的人

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