
Linux
文章平均质量分 94
从基础开始讲解Linux知识点
pupu周子晗
路虽远,行则将至|既来之,则安之
展开
-
【Linux】利用多路转接epoll机制、ET模式,基于Reactor设计模式实现
摘要:本文详细探讨如何利用Reactor模式构建低耦合、高并发的网络服务器。通过封装Connection类管理套接字及缓冲区,结合epoll多路复用技术实现事件驱动模型,核心模块包括Listener(处理新连接)、HandlerConnection(处理IO事件)和Reactor(事件派发)。文章深入解析非阻塞IO与边缘触发(ET)模式的高效实现,并通过线程池优化业务处理逻辑,解决多线程环境下的竞争条件与数据一致性问题。此外,引入eventfd实现线程间唤醒机制,验证errno的线程安全性。最终通过模块化设原创 2025-05-18 14:52:14 · 1451 阅读 · 0 评论 -
【Linux】多路转接epoll、Linux高并发I/O多路复用
摘要:本文全面剖析Linux中epoll机制的原理与实现,详解其核心接口(epoll_create、epoll_ctl、epoll_wait)及底层数据结构(红黑树与就绪队列),对比水平触发(LT)与边缘触发(ET)模式的工作机制与适用场景。通过编写基于epoll的服务器实例,演示如何高效管理连接与数据读写,并深入探讨ET模式下非阻塞文件描述符的必要性。文章还对比select、poll与epoll的性能差异,强调epoll在高并发场景中的优势(无数量限制、事件回调机制、低内存拷贝开销)。最后,指出epoll原创 2025-05-14 17:24:01 · 966 阅读 · 0 评论 -
【计算机网络】TCP(传输控制协议)套接字,多线程远程执行命令编程
本文深入解析TCP套接字编程的核心接口(socket、bind、listen、accept、connect),逐步实现单线程Echo服务器,并通过多进程、多线程及线程池版本优化并发能力。结合代码示例,探讨了父子进程资源管理、线程分离、任务队列等关键技术。进一步扩展服务器功能,通过白名单机制实现安全的远程命令执行(如ls、pwd),并分析recv/send与popen的用法。最后预告应用层协议设计,解决TCP粘包与全双工通信问题,为构建高可靠网络服务提供完整实践指南。原创 2025-04-30 10:56:29 · 968 阅读 · 0 评论 -
【计算机网络-应用层】序列化、反序列化——构建网络版计算器
本文深入探讨应用层协议的设计与实践,以构建一个网络版计算器为例,详细解析如何通过自定义协议实现客户端与服务端的高效通信。文章重点讲解协议的核心作用,通过序列化(JSONcpp库)与反序列化技术将结构化数据转化为字符串传输,并设计报文头(如“len\r\n{json}\r\n”)确保数据完整性。结合Socket编程,演示TCP全双工通信的实现,以及如何通过多线程处理并发请求。代码层面分层设计会话层(TcpServer)、表示层(协议解析)和应用层(业务逻辑),最终实现支持加减乘除运算的网络服务。本文通过完整项原创 2025-05-03 11:36:10 · 1465 阅读 · 0 评论 -
【计算机网络】Linux网络的几个常用命令
本文主要讲解计算机网络的几个命令原创 2025-04-27 09:26:04 · 569 阅读 · 0 评论 -
【Linux】五种 IO 模型与阻塞 IO、多路转接 select、poll
摘要:本文系统讲解Linux中的五种I/O模型(阻塞、非阻塞、信号驱动、多路复用、异步I/O),通过钓鱼的比喻生动阐释其核心原理与效率差异,重点剖析多路复用技术select与poll的实现机制。文章结合代码实例,详解select如何通过位图监控文件描述符、poll如何优化事件管理,对比二者优缺点及适用场景(如高并发与跨平台需求)。此外,深入探讨线程同步与异步I/O的差异,并提供服务器开发中的实践案例,帮助读者理解如何高效管理I/O事件并优化资源利用率。原创 2025-05-14 10:20:03 · 1047 阅读 · 0 评论 -
【计算机网络-应用层】HTTP服务器原理理解以及C++编写
摘要:本文深入解析HTTP协议核心原理,涵盖请求/响应格式、URL编码、状态码等关键概念,并基于C++手把手实现轻量级HTTP服务器。通过反序列化请求、构建响应报文、处理资源路径及文件类型(如HTML、图片),演示如何解析GET请求、管理Content-Type与Content-Length头部字段,并适配状态码(如200、404)。文章结合Fiddler抓包工具分析通信流程,探讨Host、User-Agent等头部字段作用,最终实现静态资源托管与动态响应生成,为网络编程与协议开发提供实践指南。原创 2025-05-06 13:00:12 · 1163 阅读 · 0 评论 -
【计算机网路-应用层】HTTP协议重定向、请求方法与会话管理C++实现
摘要:本文系统解析HTTP协议核心机制,聚焦3XX重定向状态码(301/302)的应用场景与代码实现,对比GET/POST方法的参数传递差异及安全性问题。通过C++实战演示如何构建HTTP服务器,处理URL解析、动态资源响应及表单数据交互,结合Postman工具验证请求流程。文章详解Cookie在会话管理中的作用,探讨如何通过报头维持用户状态,并延伸C++与脚本语言(Python/PHP)协作的业务处理模式。内容涵盖协议原理、服务端开发及调试技巧,为网络编程提供从理论到落地的完整指南。原创 2025-05-06 14:28:46 · 970 阅读 · 0 评论 -
【计算机网络】NAT技术、内网穿透与代理服务器全解析:原理、应用及实践
摘要:本文深入探讨NAT技术如何通过私有IP与全局IP的转换解决IPv4地址不足问题,并详解NAPT通过IP+端口映射实现多主机外网通信的原理。进一步解析内网穿透技术,借助云服务器(如frp工具)建立公网与内网端口映射,实现跨内网设备直接通信,并分析内网打洞在P2P通信、联机游戏等场景中的应用。对比正向代理与反向代理的核心差异,前者隐藏客户端并实现访问控制,后者负载均衡、缓存加速并保护后端服务。通过代购实例形象阐述代理概念,总结NAT与代理在网络架构中的协同与分工,为实际应用提供技术参考。原创 2025-05-11 10:36:44 · 799 阅读 · 0 评论 -
【Linux】POSIX信号量、基于环形队列的生产消费模型、线程池的编写
本文深入探讨POSIX信号量在多线程编程中的应用,对比其与System V信号量的差异,分析命名与未命名信号量的使用场景及核心接口。通过环形队列的生产者消费者模型,详细解析如何利用信号量实现线程间同步与资源管理,并提供单生产/消费、多生产/消费场景下的代码实现及测试结果。进一步结合线程池设计,阐述任务队列的封装、多线程调度优化策略及条件变量的使用,解决高并发场景下的资源竞争问题。文章包含完整代码示例、运行现象分析及实际应用场景,为开发者提供高效的多线程同步与任务处理方案。原创 2025-04-20 09:30:00 · 1465 阅读 · 0 评论 -
【Linux】条件变量、基于阻塞队列的生产者消费者模型
本文系统解析Linux多线程编程中条件变量(Condition Variables)的核心机制,结合冰淇淋店补货的示例,阐述条件变量与互斥锁的协作逻辑,包括初始化、等待、唤醒等接口的原子操作与防虚假唤醒策略。通过C++实现多版本生产者-消费者模型(基础数据、任务类、函数对象),深入探讨阻塞队列(Blocking Queue)的设计原理与代码实践,分析解耦、并发支持及同步关系的实现。文章还对比信号量与互斥锁的差异,预告POSIX信号量扩展内容,为多线程同步与资源管理提供完整解决方案。原创 2025-04-19 09:57:15 · 904 阅读 · 0 评论 -
【Linux】线程ID、线程管理、与线程互斥
本文系统剖析Linux多线程编程的核心原理与实战技巧。从线程ID的虚拟地址本质出发,详解线程控制块(TCB)的创建与管理、动态库加载机制,以及线程栈的独立空间特性。通过封装线程类与RAII锁机制,演示如何高效实现多线程的启动、停止与同步。结合抢票系统案例,深入探讨共享资源竞争、互斥锁的应用及死锁避免策略,揭示线程安全与可重入性的关键区别。最后,通过动态库与内核LWP的协同机制,阐明多线程在Linux中的底层实现逻辑,为开发者提供从理论到实践的完整技术闭环。原创 2025-04-19 09:56:00 · 1181 阅读 · 0 评论 -
【Linux】深入解析Linux命名管道(FIFO):原理、实现与实战应用
本文深入解析Linux命名管道(FIFO),阐述其作为特殊文件实现无亲缘关系进程通信的核心概念,数据仅在内核缓冲区传输。详细说明读写阻塞规则及信号处理机制。通过C++封装类实现服务端与客户端设计,展示创建、读写、同步及异常处理等关键代码逻辑,结合实际运行效果与终端截图验证通信行为。内容融合理论与实战,强调技术深度与实用性,吸引系统编程开发者,提升搜索引擎可见性。原创 2025-03-27 09:22:58 · 1102 阅读 · 0 评论 -
【Linux】线程:从原理到编写,学习多线程编程
本文深入剖析Linux多线程核心机制,详解pthread库的线程创建、参数传递(推荐堆内存避免竞争)、同步控制(互斥锁/条件变量)及线程终止(join/detach)。通过实战代码演示多线程批量化创建、返回值处理及资源管理,揭示C++11标准线程库的类型安全与RAII优势。⚠️ 重点警示:野指针崩溃、内存泄漏等陷阱,强调线程分离与异常处理的重要性。附赠调试技巧(valgrind/gdb)及跨平台开发指南,助你写出高效稳健的多线程程序!🚀原创 2025-04-01 09:09:41 · 684 阅读 · 0 评论 -
【Linux】线程的概念、虚拟地址最终理解(这一篇足够)
本文深入解析操作系统的内存管理机制,探讨了物理内存以 4KB 为单位管理的原理,以及虚拟地址如何通过页表转换为物理地址。文章详细介绍了进程和线程的概念,分析了它们的优缺点及应用场景。通过代码示例,展示了线程的创建与运行过程,并通过对比表格总结了进程与线程的特点。文章还探讨了线程共享资源的机制及其对编程的影响,帮助读者全面理解操作系统的核心原理,提升编程实践能力。原创 2025-03-30 15:45:09 · 1383 阅读 · 0 评论 -
【Linux】一篇搞定内核态进程信号
Linux进程信号是系统编程中不可或缺的核心机制,用于实现进程间异步通信与事件响应。本文从基础概念切入,详解标准信号(如SIGINT、SIGKILL)与实时信号的区别,剖析信号产生方式(终端操作、系统调用)及处理逻辑(自定义函数、sigaction高级控制)。深入探讨SIGCHLD资源回收、段错误调试(核心转储分析)与不可重入函数风险,结合volatile关键字优化变量可见性。实战部分涵盖定时器管理(alarm与最小堆算法)、多线程安全与性能调优技巧,助开发者高效处理信号冲突、规避僵尸进程,全面提升系统稳定原创 2025-03-30 15:45:01 · 853 阅读 · 0 评论 -
【Linux】System V共享内存:零拷贝加速进程通信!
本文深入探讨System V IPC中的共享内存技术,介绍其原理、操作步骤及实现细节。通过让多个进程共享同一物理内存区域,共享内存实现了高效的数据传输。文章详细讲解了获取key值、创建共享内存段、映射共享内存、使用共享内存、解除映射与删除等操作步骤,并通过创建Shm类封装代码,方便服务端和客户端使用。此外,还介绍了如何利用管道等机制保护共享内存,解决数据一致性问题,以及共享内存的大小设置、属性获取等其他相关内容。原创 2025-03-28 09:52:21 · 916 阅读 · 0 评论 -
【Linux】System V信号量与IPC资源管理简易讲解
以上内容涵盖了System V信号量的概念、操作函数、优缺点、最佳实践,以及Linux系统中用于管理信号量的IPC指令,同时还深入探讨了操作系统如何统一管理共享内存、消息队列和信号量的机制。原创 2025-03-28 09:51:27 · 639 阅读 · 0 评论 -
【Linux】深度解析Linux进程间通信:匿名管道原理、实战进程池与高频问题排查。
本文深入探讨Linux进程间通信(IPC),以匿名管道为核心,详细阐述其通信目的、实现前提及机制。涵盖数据传输、资源共享等核心目的,说明共享OS资源与系统调用支持的实现前提。重点解析匿名管道和命名管道的机制、特征,包括内核缓冲区管理、文件描述符作用及进程通信的四种关键情况和五大特征。实战应用部分展示进程池、命令行管道的实现及代码示例,同时剖析关键技术细节与常见问题解决方案,为开发者提供全面的技术指导。原创 2025-03-27 09:20:32 · 826 阅读 · 0 评论 -
【Linux】文件查找、软硬链接、动静态库
本博客深入探讨了Linux文件系统、IO操作、软硬链接、动态库与静态库等内容。从文件查找机制到软硬链接的特征与应用,再到动态库与静态库的制作、使用及区别,均有详细讲解。通过实例展示了如何创建和使用软硬链接,以及如何将代码编译成.o文件,再进一步打包成静态库或动态库,还介绍了链接时的注意事项和库的加载机制。内容丰富实用,适合Linux学习者和开发者参考,能帮助读者更好地理解和运用Linux系统底层知识。原创 2025-03-20 15:02:23 · 687 阅读 · 0 评论 -
【Linux】深入理解Linux文件系统:从磁盘结构到inode与挂载
本文从磁盘的物理结构出发,解析机械硬盘(HDD)的组成(盘片、磁头、磁道、扇区)与工作原理,对比企业级磁盘与SSD的差异。通过CHS定址法和LBA逻辑块地址,揭示操作系统如何将磁盘抽象为线性数组,以块(如4KB)为单位管理数据。进一步深入Linux的ext2文件系统:分区格式化写入超级块、inode表、块位图等元数据;文件存储依赖inode(唯一编号)记录属性,通过直接/间接寻址映射数据块;目录本质是特殊文件,保存文件名与inode的映射关系。最后结合实战,演示如何用dd命令创建虚拟磁盘原创 2025-03-18 21:13:04 · 1041 阅读 · 0 评论 -
【Linux】从文件操作到重定向与缓冲区的底层实现与实战
Linux系统调用中的核心函数read()和stat(),详细讲解其参数、返回值及常见错误,并通过代码示例演示从标准输入和文件读取数据的实现。深入剖析文件描述符的分配规则与重定向机制,结合dup2()系统调用实现输出重定向到文件的功能。同时探讨缓冲区的意义与分类(行缓冲、全缓冲),揭示C语言标准I/O库高效性的底层逻辑。最后通过实战案例,手把手实现简易版Shell的重定向功能及封装用户级I/O库,解释stderr与stdout的区别及分离日志的应用场景。内容涵盖理论解析、代码实现与调试技巧,适合Linux开原创 2025-03-18 11:31:36 · 642 阅读 · 0 评论 -
【Linux】基础IO之操作与文件描述符fd全解析:从C语言到系统调用底层实现
本文剖析Linux文件操作与系统调用原理,从C语言文件打开模式(如w清空、a追加)及重定向机制切入,详解open()的标志位(O_CREAT/O_EXCL等)、权限设置与原子性操作。核心揭示文件描述符(fd)本质:内核文件指针数组下标,通过struct file管理文件属性及缓冲区。结合“一切皆文件”设计,阐明设备通过函数指针表抽象为文件接口,并验证C语言FILE对fd的封装,最终呈现用户态到内核态的文件操作链路。原创 2025-03-15 21:34:00 · 783 阅读 · 0 评论 -
《从零手写Linux Shell:详解进程控制、环境变量与内建命令实现 --- 持续更新》
覆盖进程控制、环境变量、内建命令三大核心模块原创 2025-03-15 12:28:56 · 1375 阅读 · 0 评论 -
【Linux】进程的创建、终止、等待与程序替换函数 保姆级讲解
进程的创建(fork机制与写时拷贝)、终止(退出码、信号及资源回收)、等待(wait与waitpid避免僵尸进程)以及程序替换(exec系列函数与环境变量管理)。原创 2025-03-14 16:03:08 · 1493 阅读 · 0 评论 -
【Linux】ubuntu 使用时一些小问题整理 --- 持续更新
通过以上步骤,可以解决pupu用户提示符显示不完整和快捷键无法正常使用的问题。如果还有其他问题,可以进一步检查用户的shell配置文件和环境变量设置。原创 2025-03-12 17:31:57 · 1019 阅读 · 0 评论 -
【Linux】操作系统内存管理:地址空间、页表、写时拷贝与进程调度原理
本文系统阐述了操作系统内存管理核心机制。地址空间作为进程独立虚拟内存视图,通过struct结构体划分代码区、数据区等逻辑区域,配合页表实现虚拟到物理地址的映射。每个进程拥有独立地址空间,操作系统通过页表管理实现内存隔离与共享。地址空间使无序物理内存有序化,为进程提供统一视角,同时解耦进程管理与内存管理模块,支持延迟物理内存分配。页表机制配合写时拷贝技术,在fork时共享父进程内存,仅在实际写入时复制物理页,有效提升内存利用率。虚拟地址本质是地址空间内的逻辑地址,通过多级页表转换访问物理内存。原创 2025-03-12 17:32:12 · 993 阅读 · 0 评论 -
【Linux】调试器-gdb使用 结合 vs2022学会代码调试
本文主要讲解gdb调试代码,并且结合vs2022、vs2019进行讲解,能很好地学会gdb调试指令,以及如何调试代码找到问题,也能学会vs中该如何调试原创 2024-11-24 10:45:00 · 1515 阅读 · 0 评论 -
学习 git 命令行的简单操作, 能够将代码上传到 Gitee 上
这篇文章主要讲述,如何将 git 命令行的简单操作, 能够将代码上传到 Gitee 上原创 2024-09-22 12:42:35 · 309 阅读 · 0 评论 -
【Linux基础】Makefile的编写、以及编写第一个Linux程序:进度条(模拟在 方便下载的同时,更新图形化界面)
本篇文章主要讲解makefile的使用,以及进度条的编写,在未来方便下载的同时,更新图形化界面。原创 2024-09-14 13:20:34 · 1086 阅读 · 0 评论 -
【Linux基础】链接 -- 动静态链接 --特点、区别、静态库安装下载
主要讲解链接,动静态链接的特点与区别原创 2024-08-26 23:08:53 · 393 阅读 · 0 评论 -
【Linux基础】 - yum、rzsz、vim 使用与配置、gcc/g++的详细解说以及预处理、编译、汇编、链接的详细步骤ESc 、iso
1. 学习yum工具,进行软件安装2. 掌握vim编辑器使用,学会vim的简单配置3. 掌握gcc/g++编译器的使用,并了解其过程,原理原创 2024-08-26 22:22:42 · 1418 阅读 · 0 评论 -
【Linux】权限概念与思想,能深度理解“权限”,看这一篇就够啦
本文主要讲解Linux的权限,讲解十分细致原创 2024-08-24 00:39:32 · 834 阅读 · 0 评论 -
【Linux】基本指令与用法02(超详细!!)
本文章继续讲解Linux基本指令,超详细。原创 2024-07-26 18:25:08 · 984 阅读 · 0 评论 -
【Linux】基本指令与用法01(包含一些常用快捷键)
本文章是Linux系列的开篇作,接下来还会持续更新,主要讲解 ls,pwd,cd ,touch,mkdir,cp,mv,man,cat等部分基础指令原创 2024-07-26 12:43:17 · 673 阅读 · 0 评论