- 博客(96)
- 收藏
- 关注
原创 C/C++动态内存管理,malloc,calloc,realloc的区别,动态内存中的错误汇总
摘要 本文详细介绍了C/C++中动态内存管理的核心函数malloc、calloc和realloc的区别与使用场景。通过代码示例对比了三者在内存分配、初始化和扩容方面的不同特性,并总结了它们的核心差异:是否清零内存、参数形式、地址变化行为和失败语义。文章还指出了C++中更安全的内存管理替代方案(如vector、string和智能指针),列举了动态内存使用的6种常见错误(如空指针解引用、内存泄漏等),并通过代码演示了这些错误场景。最后讲解了柔性数组的概念与应用场景,以及C/C++程序中的内存区域划分(栈、堆、静
2026-04-07 17:42:57
406
1
原创 C++技术岗面试经验总结
`shared_ptr` 采用引用计数管理对象生命周期,如果两个对象互相持有 `shared_ptr`,就会形成循环引用,导致引用计数永远无法降为 0,从而对象无法释放,产生内存泄漏。
2026-04-05 17:19:56
549
1
原创 总结面试经验TCP和UDP的区别,TCP慢启动机制,拥塞控制,Linux指令,DNS的理解,TLS握手流程
摘要:本文主要介绍了计算机网络和Linux系统的核心知识点。首先对比了TCP和UDP在连接方式、可靠性、传输方式等方面的区别,并详细解析了TCP的慢启动机制和拥塞控制算法。其次讲解了Linux常用的磁盘和内存查看命令(df/du/free/top)。然后分析了HTTP中GET和POST请求的差异,包括参数位置、安全性和缓存机制等。最后概述了DNS查询流程和HTTPS的TLS握手过程,包括密钥交换和证书验证机制。文章内容涵盖网络协议、系统命令和Web安全等实用技术点,适合开发人员参考学习。
2026-04-05 16:51:29
441
1
原创 【HTTPS协议原理】CA证书+签名,HTTPS全流程,TLS怎么让HTTPS优于HTTP通信
摘要:文章探讨了HTTPS通信中CA证书如何解决中间人攻击问题。服务器将公钥、域名等信息提交CA机构,CA审核后颁发包含数字签名的证书。客户端通过验证CA签名确保公钥合法性,防止中间人篡改。该机制通过非对称加密(私钥签名+公钥验证)保障通信安全,最终实现可信身份认证和安全会话密钥协商。关键点包括:1)CA机构作为可信第三方;2)数字签名防伪特性;3)客户端完整验证流程(签名/域名/有效期等)。
2026-03-07 23:57:46
379
原创 [MySQL数据库操作]表的增删查改(1)
MySQL数据库操作摘要 本文介绍了MySQL数据库的基本操作,主要包括表的创建、数据插入和查询操作。 创建表:演示了创建学生表(students)和考试成绩表(exam_result)的语法,包含字段定义、主键设置、自增属性等。 数据插入: 单行插入:展示了完整字段插入和部分字段插入两种方式 多行插入:使用一条语句插入多条记录 指定列插入:可以只插入特定列的数据 数据查询: 全列查询和指定列查询 表达式查询:可以在查询中使用数学表达式 结果别名:为查询结果指定自定义名称 结果去重:使用DISTINCT关键
2026-03-07 17:40:33
261
原创 epoll原理,epoll优点,ET,LT两种工作模式,为什么ET模式必须在非阻塞状态下(面试题插入)
本文介绍了Linux中的epoll机制,它是一种高效的多路I/O就绪通知方法。epoll通过红黑树管理监控的文件描述符(fd),利用回调机制将就绪事件放入双向链表,实现O(1)时间复杂度的事件检测。其核心接口包括epoll_create创建监控模型、epoll_ctl管理fd事件、epoll_wait获取就绪事件。相比select/poll,epoll具有更高的性能,特别适合处理大量并发连接。文章还详细分析了epoll内部的红黑树和就绪队列工作原理,以及用户态与内核态的交互过程。
2026-03-04 10:14:55
677
1
原创 TCP协议:bind error原因及解决(端口复用)理解TIME_WAIT,CLOSE_WAIT,滑动窗口,快重传和超时重传机制区分联系
客户端给服务器发送数据,一个报文在传输的过程中没有丢失,可能在路由器的哪个地方卡住了,此时服务器端没有收到对应的报文,就会触发超时重传机制,重传一次收到了,继续通信,结束通信,结束了四次挥手,甚至都关闭了链接。但是这个报文还是在路由器中卡着,在网络中依旧存活。此时我们要是再次建立好链接,刚进行三次握手,客户端。
2026-03-03 14:41:50
889
原创 TCP协议:流量控制,拥塞控制,延迟应答,捎带应答,TCP小结,TCP异常情况
TCP流量控制与拥塞机制解析 本文详细讲解了TCP协议的流量控制和拥塞控制机制。流量控制通过动态调整窗口大小实现,接收端根据缓冲区剩余空间通知发送端调整发送速率,避免丢包。拥塞控制采用慢启动算法,初期指数增长探测网络状态,后期线性增长稳定传输。文章还介绍了延迟应答、捎带应答等性能优化策略,分析了TCP粘包问题的解决方案,并探讨了TCP在异常情况下的处理方式。最后对比了TCP与UDP的可靠性差异,指出UDP实现可靠传输需要额外机制。
2026-03-03 14:38:22
1536
原创 UDP协议,TCP协议的特点及报文具体解析,三次握手和四次挥手
本文主要介绍了UDP和TCP协议的核心要点。UDP采用8字节定长报头,具有无连接、不可靠和面向数据报的特点,其接收缓冲区无法保证报文顺序。TCP通过确认应答、序号排序和超时重传机制确保可靠性,并利用16位窗口大小进行流量控制。TCP连接管理涉及状态转换(如SYN_SENT、ESTABLISHED),通过三次握手建立连接。两种协议在报头结构、数据传输方式和可靠性机制上存在显著差异,适用于不同网络通信场景。
2026-03-02 23:50:39
1010
原创 HTTPS协议原理:臭名昭著的运营商劫持,3种加密方式以及探究加密方式可靠性,模拟中间人攻击
HTTPS安全通信机制解析 HTTPS通过加密技术保障数据传输安全,主要采用非对称加密+对称加密结合方案。工作流程为: 服务端公开非对称公钥S 客户端生成对称密钥C并用S加密传输 服务端用私钥S'解密获取C 后续通信使用C进行高效对称加密 同时引入数字摘要技术验证数据完整性,通过哈希算法生成唯一指纹,防止中间人篡改。相比纯HTTP协议,HTTPS通过加密层有效解决了明文传输的安全隐患,但需注意首次密钥分发时的中间人攻击风险。实际应用中还需配合数字证书等机制确保公钥真实性。
2026-03-01 23:47:27
800
原创 【计算机网络】多路转接select,poll,select与poll的优缺点
摘要 本文介绍了select多路转接机制的核心功能与实现细节。select通过等待多个文件描述符(fd)的就绪事件实现高效IO管理,其核心参数fd_set采用位图结构标记待监控的fd。文章详细解析了select函数的参数与返回值逻辑,并探讨了三种典型场景下的传参方式:同时监控读写、分阶段监控读写以及监控异常事件。通过代码示例展示了如何基于select实现非阻塞TCP服务器,重点说明了如何将监听套接字加入select的读事件监控集,从而避免阻塞式accept。最后指出select的局限性在于其固定大小的位图结
2026-03-01 11:17:53
739
原创 网络计算器(3)增加守护进程开发
摘要: 本文探讨在网络计算器项目中引入守护进程的必要性与实现方法。核心目的是解决服务端进程因终端关闭或用户注销而中断的问题,确保计算服务持续稳定运行。通过调用setsid创建独立会话,并结合fork避免进程组冲突,使服务端脱离终端控制。同时重定向标准I/O至/dev/null以消除终端干扰,最终实现符合Linux规范的后台服务。文中详细解析了前台/后台/守护进程的区别,并给出具体代码实现方案(完整代码见Gitee仓库),使网络计算器具备抗信号干扰、长期运行的能力。(150字)
2026-02-09 14:57:08
984
5
原创 网络计算器(2)增加客户端运行+接口总结
文章摘要: 本文介绍了网络计算器项目中如何通过协议层解决数据序列化/反序列化和粘包问题。核心方案是定义jsonstring格式(长度报头+有效载荷),使用Encode()函数封装报文,Decode()函数解析完整性。具体实现包括: 序列化:将数据转为JSON格式并附加长度信息; 反序列化:校验报文完整性后提取有效数据; 粘包处理:通过分隔符和长度字段切割数据流。 最终通过GetRequest()完成请求解析,为业务逻辑提供结构化输入。代码示例见Gitee仓库。
2026-02-09 14:16:59
1221
3
原创 应用层自定义协议与序列化 网络计算器的实现(1)
摘要: 本文探讨了网络计算器的实现逻辑,重点解析了应用层协议设计、TCP/UDP通信差异及Socket封装技术。应用层协议通过序列化/反序列化实现结构化数据传输,确保报文完整性。TCP基于字节流通信,需处理数据分片问题,而UDP是无连接的独立数据报传输。通过封装Socket类抽象底层系统调用,简化TCP/UDP的创建、绑定和监听流程,提升代码复用性。文中还对比了TCP的面向连接特性(需listen/accept)与UDP的无状态通信模式,并给出C++实现示例,强调错误处理与日志记录的重要性。 关键词: 网络
2026-02-08 16:32:28
593
2
原创 网络基础:初识TCP/IP协议
网络协议分层与通信原理摘要 本文系统介绍了网络协议的分层架构与通信机制。协议本质是计算机间的约定,通过分层(如OSI/TCP/IP模型)实现解耦,每层协议如同结构体,确保同层通信。TCP/IP协议作为网络长距离通信的解决方案,其分层设计基于问题可分层性,与操作系统深度集成。 局域网通信通过MAC地址标识主机,数据以广播形式传输,需避免碰撞(以太网为临界资源)。IP地址管理全局主机唯一性,与MAC地址协同完成路由(IP不变,MAC逐跳变化)。数据包封装与分用过程类似栈操作,底层协议通过报头分离有效载荷并向上交
2026-02-04 10:23:35
1512
1
原创 算法日记:穷举vs暴搜vs深搜vs回溯vs剪枝--全排列
文章摘要: 本文探讨了全排列问题的两种解法,分别针对无重复元素(LeetCode 46)和有重复元素(LeetCode 47)的数组。通过决策树分析,采用深度优先搜索(DFS)实现穷举,利用path数组记录路径,check数组剪枝避免重复使用元素。对于有重复元素的场景,需先排序数组,并通过条件check[i] == false && (i==0 || nums[i]!=nums[i-1] || check[i-1]==true)确保合法分支进入递归,避免重复排列。代码展示了回溯时恢复现场的关
2026-02-04 09:48:53
427
原创 进程间通信:system V消息队列 信号量 互斥同步初识(2)
本文介绍了System V IPC机制中的共享内存、消息队列和信号量。共享内存是最快的进程通信方式,通过shmget创建、shmat连接、shmdt分离和shmctl控制。消息队列通过msgget等接口实现类型化数据传输。信号量用于保护共享资源,通过互斥和同步机制确保临界区安全访问,避免数据不一致。所有机制都使用key标识资源,生命周期随进程。
2026-01-12 21:53:05
658
16
原创 进程间的通信(1)(理解管道特性,匿名命名管道,进程池,system V共享内存是什么及优势)重点理解代码!
摘要: 本文探讨了进程间通信(IPC)的必要性及其实现方式,重点介绍了管道(匿名管道和命名管道)的原理与应用。匿名管道用于父子进程通信,通过文件描述符继承实现数据共享,具有同步机制和单向通信特性。命名管道则允许无关进程通过同一文件路径访问共享资源。文中提供了代码示例,展示父子进程如何通过管道进行读写操作,并讨论了管道特性、四种通信情况以及进程池负载均衡的实现。最后,通过服务器端代码示例说明了命名管道的创建与文件操作流程。 关键词: 进程间通信、匿名管道、命名管道、进程池、文件共享
2026-01-11 15:59:06
1116
11
原创 算法日记分治:用归并排序解决逆序对问题
文章摘要: 本文介绍了利用归并排序解决数组中逆序对问题的两种策略。策略一通过升序数组统计当前数之前比它大的数的个数,策略二通过降序数组统计当前数之后比它小的数的个数。两种方法均通过分治思想实现,时间复杂度为O(nlogn)。代码示例分别展示了升序和降序归并排序的实现,核心步骤包括递归划分、合并有序子数组及逆序对统计。适用于算法学习及面试准备场景。 关键词:逆序对、归并排序、分治算法、升序/降序统计、时间复杂度优化
2026-01-06 23:38:39
486
13
原创 库的原理和制作 动态库如何和可执行程序相关联,为什么程序入口点不是main函数,GOT表,PIC地址无关代码(2)
摘要: 本文探讨ELF程序的加载机制与进程地址空间管理。ELF文件在磁盘上已通过虚拟地址统一编址,程序入口地址记录在ELF header的Entry字段。进程创建时,操作系统初始化PCB和页表,建立虚拟地址到文件的映射。CPU通过虚拟地址访问指令,触发缺页异常后加载物理内存并更新页表。动态库通过共享区映射实现多进程共享,节省内存和磁盘空间,其只读代码段可被映射到同一物理页。 关键词: ELF加载、虚拟地址、页表、动态库共享、缺页异常
2026-01-06 21:02:02
1564
15
原创 深入理解库、静态库、动态库与ELF文件格式,CPU执行流程(1)
文章摘要 本文详细介绍了Linux系统中库的概念、分类及使用方法。静态库(.a/.lib)在编译链接时嵌入可执行文件,具有独立性强但体积大的特点;动态库(.so/.dll)在运行时加载,支持多进程共享且更新方便。文章通过具体命令演示了静态库的制作(ar -rc)和使用(gcc -L -l),以及动态库的生成(gcc -shared)和路径配置方法(LD_LIBRARY_PATH)。同时指出gcc默认使用动态库,静态链接需加-static选项,并强调Linux系统通常优先安装动态库。最后总结了库与应用程序的依
2026-01-05 21:51:00
1909
47
原创 算法日记:分治-快排(颜色分类,排序数组,数组中的第k个最大元素 面试题17.14.最小k个数)
本文介绍了三种经典排序算法及其应用: 颜色分类:使用三指针法将数组划分为0、1、2三个区域,通过交换元素实现排序。 快速排序:通过随机选取基准值划分数组,递归处理子区间,时间复杂度平均为O(nlogn)。 归并排序:分治思想,合并有序子数组,稳定排序,适合链表等结构。 第K大元素:结合快速选择算法,通过三路划分快速定位目标元素,优化搜索效率。 代码示例展示了算法实现,适用于LeetCode等编程题解。
2026-01-05 16:40:59
936
6
原创 算法日记:模拟(提莫攻击,替换所有的问号,Z字形变换,外观数列,数青蛙)
算法专栏摘要 胖咕噜的稞达鸭开设了《数据结构》《C++初阶高阶》《Linux系统学习》《算法日记》等专栏,专注于技术分享。近期更新内容包括: 字符串处理:通过遍历和条件判断替换字符串中的问号,确保无连续重复字符(LeetCode 1576)。 时间区间计算:模拟提莫攻击的中毒状态,统计总中毒时长,注意重叠区间的处理(LeetCode 495)。 规律模拟:Z字形变换通过数学规律直接定位字符位置,避免矩阵填充(LeetCode 6)。 双指针应用:外观数列问题使用双指针统计连续字符个数并生成新字符串(Leet
2026-01-03 17:11:30
643
18
原创 Linux系统编程:文件系统(CHS LBA地址,Block Group 软硬连接,手搓简化版本的FILE结构体)
摘要 本文实现了一个简化版FILE结构体,模拟C标准库的文件操作功能。核心内容包括: 缓冲策略: 无缓冲(NONE_FLUSH):数据直接写入文件 行缓冲(LINE_FLUSH):遇换行符时刷新 全缓冲(FULL_FLUSH):缓冲区满时刷新 关键实现: 使用MyFile结构体封装文件描述符、缓冲区和刷新策略 提供MyFopen/MyFclose等基础文件操作接口 通过write和fsync系统调用实现数据持久化 设计要点: 缓冲区减少系统调用次数 支持多种文件打开模式(w/a/r) 行缓冲模式模拟终端输出
2026-01-03 17:07:52
1711
33
原创 【Linux系统编程】解密环境变量与进程地址空间
本文深入探讨了Linux程序的运行环境和内存管理机制。首先解析了命令行参数和环境变量的作用,通过代码示例展示了如何利用环境变量限制程序运行权限。随后揭示了进程地址空间的奥秘,指出程序访问的是虚拟地址而非物理地址,并通过写时拷贝机制实现进程独立性。最后阐述了虚拟地址的三大优势:保障内存安全、解耦进程与内存管理、提供标准化地址空间。文章指出,理解虚拟地址和页表机制是掌握Linux系统编程的关键,这些底层设计既保证了进程隔离又高效利用内存资源。
2025-12-24 21:46:43
1116
11
原创 【C语言进阶】死磕指针:从内存原理到指针数组的深度解析
摘要: 本文系统梳理C语言指针的核心概念与难点,涵盖内存与指针基础、指针运算、const修饰、指针与数组关系等内容。重点解析指针类型的底层意义(步长与解引用权限)、野指针成因与规避、数组名本质及传参退化问题。同时提供9个高频面试考点,包括指针大小、const修饰差异、二级指针等关键细节,帮助开发者深入理解指针机制并规避常见错误。
2025-12-24 21:45:54
1032
5
原创 算法日记专题:位运算II( 只出现一次的数字I II III 面试题:消失的两个数字 比特位计数)
力扣链接将数组中所有元素都异或在一起,除了某个元素只出现一次以外,其余每个元素均出现两次。最终异或的结果就是所求。
2025-12-20 11:09:24
714
2
原创 算法日记专题:位运算I(汉明距离I II 面试题:判断是不是唯一的字符 丢失的数字 两个整数相加)
汉明距离力扣链接题解:这两个数字对应二进制位不同的位置的数目。解题思路:先异或,求出异或和,异或(相同为0,相异为1)。所以汉明距离本质上找的就是汉明距离 = 两个数异或结果的二进制表示中 1 的个数。方法一:求异或和ret二进制表达中每一位数字是否为1,如果是1就加起来;public://求出异或和//x和y中不同位置的数字到底有几个while(ret!= 0)//从异或和的最低位开始依次看//如果二进制位1,就加到count中ret >>= 1;//右移一位。
2025-12-20 11:08:34
777
5
原创 算法入门:专题前缀和:一二维前缀和 寻找数组的中心下标 除自身以外数组的乘积 和为k的子数组 和可被k整除的子数组 连续数组 矩阵区域和
文章摘要 本文介绍了前缀和在算法中的应用,包括一维和二维前缀和的实现方法。通过代码示例展示了如何计算区间和、乘积以及寻找数组中心下标等常见问题。重点讲解了前缀和与哈希表结合解决子数组和问题的技巧,如LeetCode中的“和为k的子数组”题目。文章提供了清晰的代码实现和解题思路,适合算法初学者学习前缀和的相关应用。
2025-12-13 23:27:32
700
2
原创 基础IO 文件在内核中是怎么被管理的 重定向的含义 在自定义shell中加入重定向
摘要: 本文探讨了Linux系统下文件操作的核心机制。通过C语言示例代码,演示了使用系统调用open、write、read实现文件的创建、写入、追加和读取功能。关键点包括: 文件操作本质是进程通过系统调用(如open)与磁盘交互,库函数仅封装底层接口 权限控制:umask影响文件最终权限(0666 & ~umask) 三种基础操作模式:清空写入(O_TRUNC)、追加(O_APPEND)、只读(O_RDONLY) 文件描述符(fd)是操作系统管理文件的标识符 实现类cat命令的简易文件读取逻辑,展示
2025-12-01 22:37:05
1572
58
原创 算法入门:专题二分查找算法 模板总结 题目练手 :排序数组中查找元素的第一个和最后一个位置 第一个错误的版本 查找x的平方根 搜索插入位置 山脉数组的封顶索引
二分查找算法总结 核心要点 朴素二分查找:适用于有序数组,时间复杂度O(log n) 边界查找:处理排序数组中重复元素的第一个和最后一个位置 关键细节: 防止整数溢出:使用left+(right-left)/2计算中点 循环条件选择:left<=right或left<right 中点取法:左端点取左中点,右端点取右中点 算法模板 朴素二分: while(left target) right=mid-1; else if(nums[mid] 查找左端点: while(left 查找右端点: whi
2025-12-01 22:18:13
1046
23
原创 算法入门:滑动窗口--->找到字符串中所有的字母异位词,串联所有的子串,最小覆盖子串
文章摘要 📌 算法解析:字符串匹配与滑动窗口技巧 本文探讨了三种字符串匹配问题的高效解法,均基于滑动窗口+哈希表优化: 字母异位词查找:通过固定窗口大小比较哈希表字符频次,利用count统计有效字符,窗口滑动时动态维护哈希表,时间复杂度优化至O(n)。 串联子串匹配:将单词视为单位,按单词长度分步滑动窗口,多次遍历确保覆盖所有可能起始位置,避免遗漏组合。 最小覆盖子串:可变窗口扩展至包含目标字符后收缩左边界,通过哈希表频次对比和count验证覆盖性,确保找到最短子串。 🔑 核心优化:通过哈希表记录字符/
2025-11-27 23:09:15
632
28
原创 自定义shell命令行解释器自制
Shell原理与实现摘要 本文实现了一个简易Shell,核心原理是通过环境变量继承与进程管理(fork+exec)模拟命令行交互。关键模块包括: 环境变量管理 独立维护g_env数组,深拷贝系统environ实现隔离 支持PWD等变量动态更新(getcwd+putenv) 命令解析与执行 参数表g_argv存储解析后的命令及参数 内建命令如cd直接调用chdir,外部命令通过fork-exec启动 交互功能 动态提示符显示用户/主机/目录信息 别名系统(unordered_map存储)简化常用命令 通过循环
2025-11-27 18:35:22
1138
20
原创 MySQL在Centos 7 环境下安装
摘要 本文详细介绍了在CentOS 7.6系统上安装MySQL数据库的完整流程。主要内容包括:检查并卸载系统自带的mariadb/mysql环境,备份相关配置文件;通过官网下载MySQL 5.7的yum源安装包并配置本地yum源;使用rpm命令安装MySQL社区版服务端和客户端组件。文章提供了完整的命令行操作步骤和注意事项,帮助读者顺利完成MySQL环境的搭建,为后续数据库使用奠定基础。操作过程涵盖环境检查、软件包管理、yum源配置等Linux系统管理关键技能。
2025-11-22 15:16:51
865
30
原创 环境变量和程序地址空间 虚拟地址空间页表存在意义 附进程概念总结图干货云集
本文探讨了Linux系统中的环境变量和进程地址空间概念。环境变量是操作系统运行参数,存储在bash进程表中,可通过命令行参数表和环境变量表进行管理。文章介绍了获取环境变量的方法,如getenv函数,并演示了如何通过环境变量限制程序执行权限。在进程地址空间部分,解释了父子进程共享虚拟地址但独立物理空间的机制,通过页表实现虚拟地址到物理地址的映射。重点阐述了fork()创建子进程时如何拷贝父进程的task_struct,以及写时复制技术如何保证进程独立性,即当子进程修改变量时会创建新的物理页并更新映射关系。这些
2025-11-22 15:06:28
1188
16
原创 包管理器,yum工具,vim编辑器常见指令,解决sudo权限问题,Linux项目自动化构建工具-make/Makefile
本文介绍了Linux系统中软件包管理工具yum和vim编辑器的使用。主要内容包括:1)yum包管理器的功能与常用命令(安装、卸载、搜索软件等),以及Windows与Linux文件互传方法;2)vim编辑器的命令模式和底行模式操作技巧,包括光标移动、复制粘贴、批量注释等;3)gcc/g++编译器的工作流程(预处理、编译、汇编、链接),并对比分析了动态库和静态库的优缺点。文章还提供了vim配置方法和条件编译的实用案例,帮助开发者高效使用Linux开发工具。
2025-11-19 20:20:42
897
40
原创 进程状态,孤儿进程僵尸进程,Linux真实调度算法,进程切换
摘要:本文探讨了Linux进程状态管理与数据结构设计。通过运行队列和设备队列的双队列机制,操作系统实现进程调度与资源管理。进程状态包括运行(R)、阻塞(S/D)、挂起等,其中深度睡眠(D)可防止数据丢失。Linux采用list_head实现PCB的网状关联,支持多维度管理。僵尸进程(Z)保留了子进程退出信息供父进程查询。文章剖析了进程状态转换、阻塞/挂起机制及数据结构设计原理,并给出代码示例演示进程阻塞状态。
2025-11-19 19:59:15
1240
45
原创 进度条创建,版本控制器Git,如何从Linux系统下提交代码到gitee远程仓库,GDB调试指令
本文介绍了两种Vim批量注释方法及进度条实现。第一部分详细说明了Vim中使用Ctrl+V可视化块选择模式进行多行注释的操作步骤(包括选中行、插入#号和保存)。第二部分展示了进度条的实现代码,包含基础版本(process_v1)和结合下载场景的改进版本(FlushProcess)。改进版通过计算下载百分比动态更新进度条,搭配旋转动画,并支持自定义总大小和下载速度参数,最后输出下载完成信息。文中强调了fflush(stdout)对缓冲区刷新的重要性,并提供了完整的代码示例。
2025-11-17 23:44:12
843
8
原创 进程概念,冯诺依曼体系结构,系统调用,父子进程初解
摘要: 冯诺依曼体系结构由存储器、控制器、运算器和输入输出设备组成,数据流动需经过内存处理。操作系统作为软硬件管理核心,采用“先描述再组织”方式管理进程,通过系统调用接口提供安全访问。进程是正在运行的程序,由PCB(进程控制块)封装代码和数据,操作系统通过增删查改PCB链表管理进程。CPU与操作系统协同工作,确保程序高效执行。 关键词: 冯诺依曼体系、操作系统、进程管理、PCB、系统调用
2025-11-17 23:33:59
1581
31
原创 RAII智能指针底层实现 智能指针弊端引起循环引用 ,怎么解决内存泄漏问题
📝 智能指针与RAII机制解析 RAII机制:利用对象构造获取资源、析构释放资源,确保异常场景下资源自动回收,避免内存泄漏。 智能指针实现: RAII封装:智能指针通过构造函数获取资源,析构函数释放资源。 浅拷贝问题:多个指针管理同一资源时,默认浅拷贝会导致重复析构。 解决方案: auto_ptr:拷贝时转移所有权(不推荐,易悬空)。 unique_ptr:禁用拷贝,仅支持移动语义。 shared_ptr:引用计数(_pcount)跟踪资源持有者,析构时计数归零才释放资源。 weak_ptr:解决shar
2025-11-10 23:04:23
1540
27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅