- 博客(110)
- 收藏
- 关注
原创 一文读懂 Shell 脚本✨ 定义、结构、用途与编写指南
Shell脚本入门指南:自动化运维利器 Shell脚本是Linux/Unix系统中实现自动化操作的强大工具。它本质是一个包含终端命令和编程逻辑的纯文本文件,由Shell解释器直接执行,无需编译。脚本以#!/bin/bash开头,支持变量、条件判断和循环等基础语法,能够直接调用系统命令。 主要应用场景包括:自动化运维(如服务器监控)、批量文件处理、简化重复操作、环境初始化等。编写Shell脚本只需文本编辑器和终端环境,通过chmod +x赋予执行权限后即可运行。初学者应重点掌握变量定义、条件判断和循环三大核心
2025-12-19 16:06:04
813
1
原创 C++14 变量模板(Variable Templates)详解
C++14引入了变量模板(Variable Templates)这一重要特性,允许将变量参数化,填补了C++泛型编程的空白。变量模板可以用于定义泛型常量、类型特征等,支持编译期计算和模板特化。其语法与普通模板类似,可应用于全局/命名空间作用域或类内静态变量。典型应用场景包括定义不同类型参数的常量(如圆周率pi)、简化类型特征访问(如is_integral_v)以及生成编译期数组等。变量模板大幅提升了代码的灵活性和效率,为C++17标准库特性奠定了基础,是泛型编程的重要工具。使用时需注意作用域限制、实例化规则
2025-12-17 14:56:33
404
原创 C++14 版本前瞻:7 个实用特性让代码效率翻倍
C++14是C++11的增量升级版,提供了多项实用特性提升开发效率。主要内容包括:泛型Lambda支持auto参数,简化多类型处理;函数返回值自动推导,减少代码修改;智能指针工具std::make_unique增强内存安全性;变量模板实现泛型常量定义;constexpr支持复杂编译期计算;二进制字面量和数字分隔符提高代码可读性;以及标准库的多项实用优化。这些特性让代码更简洁、安全、高效,且与C++11高度兼容,只需添加编译选项即可使用。后续将针对各特性展开详细讲解和实战演示。
2025-12-17 10:25:02
749
原创 内存泄漏、死锁:定位排查工具+解决方案(C/C++ 实战指南)
本文针对C/C++开发中的内存泄漏和死锁问题,提供了从定位到解决的全流程实战指南。对于内存泄漏,介绍了Valgrind、AddressSanitizer等工具的用法,分析了常见泄漏场景及智能指针、RAII等解决方案。对于死锁问题,详细讲解了pstack+gdb、ThreadSanitizer等诊断工具的使用方法,并给出预防死锁的编码规范。文章覆盖Linux/Windows平台,包含基础判断方法、工具使用示例和典型问题解决方案,适用于从开发调试到生产环境的各种场景。
2025-12-02 17:56:23
855
原创 C++11 并发编程核心组件教程(初学者友好)
本文是C++11并发编程入门教程,重点介绍其核心组件。C++11之前开发者依赖操作系统API编写并发代码,而C++11引入的线程库和异步编程组件实现了跨平台并发。教程详细讲解7个关键组件:future(单一结果凭证)、shared_future(可共享结果凭证)、async(启动异步任务)、launch(任务启动策略)、promise(主动设置结果)、packaged_task(包装任务)、future_status(等待状态),通过通俗解释、接口说明和代码示例帮助初学者理解。文章首先介绍异步操作和结
2025-11-04 14:40:56
619
原创 进程和线程间的通信方式有哪些?
本文深入解析了进程间通信(IPC)和线程通信的核心差异及实现方式。进程由于独立地址空间,需通过管道、消息队列、共享内存等中间媒介进行通信,而线程可直接访问共享变量,但需同步机制保证并发安全。文章详细展示了Linux下四种IPC方式的代码实现:管道(父子进程)、消息队列(异步通信)、共享内存(高效内存共享)和Socket,并分析了线程通信的两种模式:互斥锁+共享变量和条件变量通知机制。最后总结指出,跨程序协作应选择IPC,单程序内并发优先使用线程通信,同时需注意死锁和资源泄漏问题。
2025-10-02 22:04:28
745
原创 从零开始学 Lua:小白也能轻松掌握的入门指南
本文介绍了Lua脚本语言的基础入门知识,内容涵盖: 两种编程模式(交互式和脚本式) 基础语法(注释、标识符、保留词) 6种常用数据类型(nil、boolean、number等) 变量类型(全局/局部)和多变量赋值 3种循环结构(while/for/repeat) 常见错误避坑指南 实战案例(学生成绩统计程序) 学习路线建议 文章采用通俗易懂的语言,配合大量代码示例,适合零基础编程新手快速掌握Lua基础。
2025-08-29 00:11:28
1505
20
原创 C++ 日志系统实战第五步:日志器的设计
本文介绍日志器类(Logger)设计实现。采用建造者模式简化创建,支持同步(SyncLogger )、异步(AsyncLogger )输出模式,异步将日志放缓冲区由线程输出。因创建复杂(涉名称、等级等设置),用建造者模式保代码优雅可维护。还介绍双缓冲区异步任务处理器(AsyncLooper)提升任务处理效率,以单例模式设计管理类确保全局可访问,通过代理模式提供全局接口简化操作。
2025-05-22 20:26:00
2344
27
原创 C++ 日志系统实战第四步:设计与代码实现详解
📖本项目设计多日志器日志系统,涵盖日志等级、消息等模块,支持同步异步落地,还展示了部分代码设计~
2025-05-07 19:34:45
1626
30
原创 C++ 日志系统实战第三步:熟悉掌握各种设计模式
本文介绍设计模式😎,包括六大原则(单一职责、开闭等🤓)及单例、工厂、建造者、代理等模式,以原理结合代码示例讲解~
2025-04-25 16:24:18
1702
27
原创 C++ 日志系统实战第一步:项目功能与技术架构详解
项目笔记🔥C++ 多设计模式打造同步 & 异步日志系统!详解功能、技术,剖析日志实现原理💻✨
2025-04-23 08:00:00
2571
52
原创 【Linux】动静态库知识大梳理
在 Linux 系统编程中,动静态库极为重要。静态库(.a)在编译链接时融入可执行文件,运行时无需依赖;动态库(.so)在程序运行时链接,可被多个程序共享。制作静态库需将源文件编译为.o 文件再打包,动态库制作则需在编译时加 - fPIC 选项生成位置无关码。使用时,要注意头文件和库文件路径设置,静态库生成目标文件后删除不影响程序运行。动态库运行时可能出现加载问题,可通过拷贝库文件、建立软连接、修改环境变量或配置ldconfig解决。
2025-04-03 20:46:59
1898
29
原创 【Linux】文件系统知识梳理:从磁盘硬件到文件管理
本文围绕 Ext 系列文件系统展开,详细介绍相关知识。先阐述磁盘物理和逻辑结构,包括 CHS 和 LBA 地址及其转换,为理解文件系统奠定基础。接着引入文件系统相关概念,“块” 是文件存取最小单位,分区基于柱面划分,inode 用于存储文件元信息。重点讲解 ext2 文件系统,其将分区划分为块组,各块组包含超级块、GDT 等重要结构,共同管理文件存储与访问,还介绍路径解析、挂载分区等操作。最后对比软硬连接,硬链接通过 inode 使多个文件名对应同一文件,软链接类似快捷方式,二者用途各异.
2025-04-02 21:03:02
3139
60
原创 深入理解 Linux 基础 IO:从文件操作到缓冲区机制
本文围绕 Linux 基础 IO 展开深入探讨。先阐述文件的狭义与广义概念,指出文件操作本质是进程对文件内容和属性的操作。接着回顾 C 文件接口,包括文件的打开、读写、关闭,标准输入输出流及打开模式。随后介绍系统文件 I/O,涵盖系统调用接口、文件描述符、重定向原理及实现。深入剖析 “一切皆文件” 理念,揭示其简化资源访问的机制。还探究缓冲区机制,包含缓冲区概念、作用、类型、刷新机制以及FILE结构体与缓冲区的关系。为开发者理解和运用相关技术提供有力支撑。
2025-03-24 22:24:16
2018
32
原创 深入自制Shell:解锁Linux进程控制的实践密码
本文承接前文对 Linux 进程控制的探讨,深入研究自制 Shell 命令行解释器。首先阐述 Shell 在 Linux 系统中的核心地位,强调自制 Shell 对理解系统运行机制的重要性。接着详细剖析其实现原理,涵盖获取命令、解析命令、创建及控制子进程等核心流程,以及内建命令处理方式。随后给出完整代码示例,并添加丰富注释以助理解。最后提出优化方向,包括强化错误处理、添加命令行编辑功能和实现管道重定向功能等。
2025-03-19 18:14:55
1315
42
原创 Linux 进程控制:创建、终止、等待与程序替换全解析
本文聚焦于 Linux 进程控制的核心知识。创建、终止、等待与程序替换,讲解十分详细!
2025-03-11 17:57:36
1652
45
原创 C++11 还能这样用?lambda 表达式与包装器的进阶玩法等你探索
本文聚焦 C++ 中实用特性。lambda 表达式是匿名函数对象,语法包含捕捉列表、参数列表等,可在函数内定义。捕捉方式多样,如显式、隐式及混合捕捉,在排序、多线程、智能指针删除器定制等场景优势显著,底层由仿函数对象实现。包装器方面,std::function可包装多种可调用对象,统一类型,便于扩展;std::bind能调整可调用对象参数个数与顺序,简化固定参数函数调用。
2025-03-10 12:08:42
1018
34
原创 掌握这些,C++11 不再难!(列表初始化,右值引用,可变参数模板,移动构造)
列表初始化实现统一初始化方式,支持内置与自定义类型,还引入 std::initializer_list 方便容器初始化。右值引用和移动语义区分左值、右值,可延长临时对象生命周期,解决传值返回问题,提高容器插入效率,C++11 对类型进一步细分,还涉及引用折叠和完美转发。可变参数模板支持函数和类接受任意数量和类型参数,可进行包扩展,STL 容器新增 emplace 系列接口。新类功能包括默认移动构造和赋值、成员变量缺省值等,STL 也有新容器和相关接口变化。
2025-03-09 22:20:29
1369
45
原创 探秘 Linux 系统编程:进程地址空间的奇妙世界
本文围绕 Linux 系统编程中进程地址空间展开,介绍相关知识。C 语言内存管理方面,常量字符串存于常量区且只读,线性地址分为栈区、堆区等区域,栈区地址递减、堆区递增,静态变量在全局区且生命周期特殊。使用 fork 函数时会出现同一变量地址读出不同内容的情况,这表明 C/C++ 中使用的是虚拟地址,由系统转化为物理地址。32 位机器地址空间由地址和数据总线组合而成且有区域划分,进程地址空间是内核数据结构,每个进程独有。页表管理地址空间,实现写时拷贝等机制,保障内存安全和合理使用。
2025-03-04 20:07:36
2594
59
原创 深入理解并实现自定义 unordered_map 和 unordered_set
本文聚焦 C++ 中unordered_map和unordered_set的实现,鉴于 SGI - STL30 版本无标准的这两个容器,仅存在类似功能的非标准容器hash_map和hash_set,文章基于哈希表模拟实现了自定义版本。先定义HashNode结构体构建哈希表节点,通过HashTable类实现哈希表的插入、查找、删除等核心操作,同时为其设计迭代器以支持遍历。在此基础上,分别构建unordered_set和unordered_map类,复用HashTable的功能,并给出详细代码注释。
2025-03-01 19:48:19
1592
63
原创 【C++】哈希表:从概念到代码实现
文章围绕哈希表展开全面解析,先阐述哈希基本概念,包括直接定址法及其应用实例、哈希冲突的产生与影响、负载因子对哈希表性能的作用、关键字转整数的需求以及多种哈希函数的原理。接着重点介绍处理哈希冲突的两种主要方法:开放定址法和链地址法。开放定址法通过线性探测、二次探测和双重探测解决冲突,文中给出以线性探测实现的代码,涵盖状态标识、负载因子控制、扩容及处理非整数关键字的仿函数等内容;链地址法将冲突数据用链表存储,也提供了相应代码实现,包含负载因子控制与扩容操作。
2025-02-25 17:32:02
2202
60
原创 深入剖析:基于红黑树实现自定义 map 和 set 容器
文章深入探讨了在 C++ 中基于红黑树实现自定义map和set容器的过程。首先剖析红黑树基础结构与操作,如节点结构包含颜色、指针和数据;通过左旋、右旋操作调整树结构,插入节点后用插入修复维持树的性质。插入操作先找位置再插入并修复,查找操作从根节点比较键值查找目标节点。然后基于红黑树进行map和set自定义实现,set的仿函数直接返回键,map的仿函数从键值对提取键,二者均封装红黑树提供插入等操作。最后给出测试代码验证功能。通过这些实现,展示了红黑树在关联容器中的关键作用及高效数据处理能力。
2025-02-24 13:24:38
1015
36
原创 红黑树:高效平衡二叉树的奥秘
本文深入探讨红黑树,从概念、性质出发,结合代码详细阐述其节点定义、插入操作,简述验证与删除相关内容,并对比红黑树与 AVL 树,介绍其应用,旨在帮助读者全面理解红黑树原理、实现及应用场景,文末设置投票互动增强读者参与。
2025-02-15 00:33:51
1357
47
原创 AVL树:高效平衡的二叉搜索树
文章围绕 AVL 树展开,介绍其诞生背景是解决二叉搜索树在数据有序时效率低下问题。AVL 树是平衡的二叉搜索树,其左右子树高度差绝对值不超 1,节点含数据、指针及平衡因子。插入分按二叉搜索树插入和调整平衡因子两步,失衡时依插入位置有四种旋转方式恢复平衡。验证需确认其为二叉搜索树且是平衡树。删除类似二叉搜索树,但可能需调整至根节点。AVL 树查询高效,适用于数据静态场景。
2025-02-13 21:25:18
1487
50
原创 C++开发必备:精通set与map容器,提升数据处理效率
这篇文章结合了关联式容器的各个方面,从定义、特点到实现细节及应用,帮助读者全面理解和掌握set、multiset、map与multimap容器。在实际编程中,通过选择合适的容器,你将能够更高效地存储和管理数据,提高代码的执行效率和可读性。
2025-02-10 23:49:18
1186
58
原创 【C++】一文吃透二叉搜索树:从基础概念到进阶应用
本文围绕二叉搜索树展开全面解析。首先介绍其基础概念,它是特殊二叉树,节点值遵循特定大小关系,与普通二叉树差异明显。接着阐述基本操作,查找类似二分查找,平均时间复杂度为 O (log n) ;插入和删除操作依据节点情况处理,能维持树的有序性,代码通过 C++ 实现。在进阶应用方面,可用于单词拼写检查、单词计数和数据库索引优化。最后分析性能,理想平衡时操作高效,但最坏情况会退化,为解决此问题出现了自平衡二叉搜索树。掌握二叉搜索树知识,对编程实践、算法学习和应对面试都具有重要意义。
2025-02-05 20:09:18
1387
41
原创 算法每日双题精讲 —— 前缀和(【模板】一维前缀和,【模板】二维前缀和)
本文聚焦算法中的前缀和,通过两道经典题目,详细介绍了一维前缀和与二维前缀和的应用。前缀和作为一种预处理技术,能有效解决区间和相关问题。
2025-01-29 00:37:03
1373
13
原创 算法每日双题精讲 —— 二分查找(寻找旋转排序数组中的最小值,点名)
想快速提升算法能力吗?快来解锁二分查找的神奇应用!这篇文章带你攻克两道经典算法题。在 “寻找旋转排序数组中的最小值” 里,教你巧用二分查找,从旋转数组中精准定位最小值,告别暴力遍历的低效。“点名” 问题更是有趣,面对按字母序排列的学生名单,用二分查找瞬间判断学生是否在列,还能返回其位置。每道题都有详细的题目描述、算法原理剖析、C++ 代码实现及复杂度分析,干货满满,快来一探究竟,提升你的算法实力!
2025-01-27 00:03:44
1438
25
原创 算法每日双题精讲 —— 二分查找(山脉数组的峰顶索引,寻找峰值)
文章聚焦 “x 的平方根” 与 “搜索插入位置” 两道经典算法题,深入讲解二分查找算法的应用。“x 的平方根” 要求在不使用内置指数函数和算符的情况下,计算非负整数 x 的算术平方根并取整。利用二分查找,设定左右边界,通过比较中间值平方与 x 的大小关系不断缩小搜索区间,最终得到结果。“搜索插入位置” 是在排序数组中查找目标值,若不存在则返回按序插入的位置。同样采用二分查找,依据中间值与目标值的比较结果更新边界,循环结束后得到插入位置
2025-01-24 21:23:25
2037
50
原创 Linux 进程环境变量:深入理解与实践指南
还在为搞不懂 Linux 进程环境变量而发愁?这篇文章带你 “一键通关”!PATH 如何决定命令 “行踪”、HOME 怎样成为你的专属空间、SHELL 又怎样在背后操控一切?从 env、echo 查看变量,到 getenv 获取变量值,再到利用 environ 深入探索,一文讲清。测试 PATH、HOME 变量的奇妙实验,export、unset、set 命令的使用窍门,环境变量底层的组织架构,以及编程获取变量的方法,全部囊括。掌握这些,轻松拿捏 Linux 系统,开发运维都不在话下,赶紧读起来!
2025-01-23 16:25:50
1869
45
原创 探秘 Linux 进程:优先级、调度与切换的精妙机制
本文深度剖析了 Linux 进程管理中的关键机制。进程优先级决定了进程获取 CPU 资源的先后顺序,其数值越小越易获得资源,通过调整 nice 值可改变优先级 。Linux 内核调度算法采用双队列架构、位图定位机制和双指针切换策略,保障进程有序运行和系统高效调度。进程具有竞争性、独立性,并行与并发是多任务处理的不同策略。CPU 寄存器与进程数据交互密切,进程切换时会保存和恢复上下文数据到 PCB。这些机制协同工作,支撑 Linux 系统稳定运行,对理解系统原理和优化性能意义重大。
2025-01-22 20:11:09
1610
43
原创 探秘 Linux 进程状态:解锁系统运行的密码
文章深入探讨 Linux 进程状态。先介绍经典进程状态模型,再着重讲述 Linux 内核定义的进程状态,如运行、睡眠等状态的特点与关联。通过代码示例展示进程状态变化,分析特殊状态如磁盘休眠、停止、僵尸状态的原理及影响,强调僵尸状态需父进程处理以防资源问题。最后说明ps aux和ps axj命令用于查看进程状态的重要性,为理解和管理 Linux 进程状态提供全面知识。
2025-01-20 20:10:34
2562
68
英语六级,④ 体裁词,方便过六级
2024-09-28
英语六级,③ 常用英语单词后缀大全,方便过六级
2024-09-24
英语六级,同义替换词(含动词词组和副词词组),方便过六级
2024-09-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅