自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

A Charmer 的博客

将个人所学分享在此,期待各位大佬的包涵和理解

  • 博客(102)
  • 收藏
  • 关注

原创 C++ 日志系统实战第六步:性能测试

本文介绍了一个日志系统的性能测试方法,旨在评估系统每秒能打印多少条日志消息到文件。

2025-05-23 20:28:26 407 13

原创 C++ 日志系统实战第五步:日志器的设计

本文介绍日志器类(Logger)设计实现。采用建造者模式简化创建,支持同步(SyncLogger )、异步(AsyncLogger )输出模式,异步将日志放缓冲区由线程输出。因创建复杂(涉名称、等级等设置),用建造者模式保代码优雅可维护。还介绍双缓冲区异步任务处理器(AsyncLooper)提升任务处理效率,以单例模式设计管理类确保全局可访问,通过代理模式提供全局接口简化操作。

2025-05-22 20:26:00 1095 24

原创 C++ 日志系统实战第四步:设计与代码实现详解

📖本项目设计多日志器日志系统,涵盖日志等级、消息等模块,支持同步异步落地,还展示了部分代码设计~

2025-05-07 19:34:45 1070 29

原创 【MySQL】库的操作

本文介绍 MySQL 库操作,涵盖创建、查看、修改、删除、备份恢复及连接查看,还有字符集和校验规则相关内容。

2025-04-26 08:00:00 1125 1

原创 C++ 日志系统实战第三步:熟悉掌握各种设计模式

本文介绍设计模式😎,包括六大原则(单一职责、开闭等🤓)及单例、工厂、建造者、代理等模式,以原理结合代码示例讲解~

2025-04-25 16:24:18 1517 26

原创 C++ 日志系统实战第二步:不定参数函数解析

多参数函数怎么写?即使你不做这个项目也得懂!

2025-04-24 08:00:00 1007 18

原创 【MySQL】数据库基础

数据库基础(重点)

2025-04-24 08:00:00 1382 18

原创 C++ 日志系统实战第一步:项目功能与技术架构详解

项目笔记🔥C++ 多设计模式打造同步 & 异步日志系统!详解功能、技术,剖析日志实现原理💻✨

2025-04-23 08:00:00 2165 51

原创 【网络】代理服务器收尾及高级IO

本文介绍了 高级IO,及其5种IO模型概念,常见的多路转接接口。自己写自己的八股~

2025-04-22 11:02:15 1502 23

原创 【网络】数据链路层知识梳理

数据链路层相关知识,自己写自己的八股!

2025-04-20 21:58:51 2128 44

原创 网络层IP协议知识大梳理

详细梳理了网络层的IP协议,做自己的八股!

2025-04-17 20:05:16 1142 38

原创 【Linux】动静态库知识大梳理

在 Linux 系统编程中,动静态库极为重要。静态库(.a)在编译链接时融入可执行文件,运行时无需依赖;动态库(.so)在程序运行时链接,可被多个程序共享。制作静态库需将源文件编译为.o 文件再打包,动态库制作则需在编译时加 - fPIC 选项生成位置无关码。使用时,要注意头文件和库文件路径设置,静态库生成目标文件后删除不影响程序运行。动态库运行时可能出现加载问题,可通过拷贝库文件、建立软连接、修改环境变量或配置ldconfig解决。

2025-04-03 20:46:59 1740 29

原创 【Linux】文件系统知识梳理:从磁盘硬件到文件管理

本文围绕 Ext 系列文件系统展开,详细介绍相关知识。先阐述磁盘物理和逻辑结构,包括 CHS 和 LBA 地址及其转换,为理解文件系统奠定基础。接着引入文件系统相关概念,“块” 是文件存取最小单位,分区基于柱面划分,inode 用于存储文件元信息。重点讲解 ext2 文件系统,其将分区划分为块组,各块组包含超级块、GDT 等重要结构,共同管理文件存储与访问,还介绍路径解析、挂载分区等操作。最后对比软硬连接,硬链接通过 inode 使多个文件名对应同一文件,软链接类似快捷方式,二者用途各异.

2025-04-02 21:03:02 2421 55

原创 深入理解 Linux 基础 IO:从文件操作到缓冲区机制

本文围绕 Linux 基础 IO 展开深入探讨。先阐述文件的狭义与广义概念,指出文件操作本质是进程对文件内容和属性的操作。接着回顾 C 文件接口,包括文件的打开、读写、关闭,标准输入输出流及打开模式。随后介绍系统文件 I/O,涵盖系统调用接口、文件描述符、重定向原理及实现。深入剖析 “一切皆文件” 理念,揭示其简化资源访问的机制。还探究缓冲区机制,包含缓冲区概念、作用、类型、刷新机制以及FILE结构体与缓冲区的关系。为开发者理解和运用相关技术提供有力支撑。

2025-03-24 22:24:16 1856 32

原创 深入自制Shell:解锁Linux进程控制的实践密码

本文承接前文对 Linux 进程控制的探讨,深入研究自制 Shell 命令行解释器。首先阐述 Shell 在 Linux 系统中的核心地位,强调自制 Shell 对理解系统运行机制的重要性。接着详细剖析其实现原理,涵盖获取命令、解析命令、创建及控制子进程等核心流程,以及内建命令处理方式。随后给出完整代码示例,并添加丰富注释以助理解。最后提出优化方向,包括强化错误处理、添加命令行编辑功能和实现管道重定向功能等。

2025-03-19 18:14:55 1212 42

原创 Linux 进程控制:创建、终止、等待与程序替换全解析

本文聚焦于 Linux 进程控制的核心知识。创建、终止、等待与程序替换,讲解十分详细!

2025-03-11 17:57:36 1567 45

原创 C++11 还能这样用?lambda 表达式与包装器的进阶玩法等你探索

本文聚焦 C++ 中实用特性。lambda 表达式是匿名函数对象,语法包含捕捉列表、参数列表等,可在函数内定义。捕捉方式多样,如显式、隐式及混合捕捉,在排序、多线程、智能指针删除器定制等场景优势显著,底层由仿函数对象实现。包装器方面,std::function可包装多种可调用对象,统一类型,便于扩展;std::bind能调整可调用对象参数个数与顺序,简化固定参数函数调用。

2025-03-10 12:08:42 923 34

原创 掌握这些,C++11 不再难!(列表初始化,右值引用,可变参数模板,移动构造)

列表初始化实现统一初始化方式,支持内置与自定义类型,还引入 std::initializer_list 方便容器初始化。右值引用和移动语义区分左值、右值,可延长临时对象生命周期,解决传值返回问题,提高容器插入效率,C++11 对类型进一步细分,还涉及引用折叠和完美转发。可变参数模板支持函数和类接受任意数量和类型参数,可进行包扩展,STL 容器新增 emplace 系列接口。新类功能包括默认移动构造和赋值、成员变量缺省值等,STL 也有新容器和相关接口变化。

2025-03-09 22:20:29 1270 45

原创 探秘 Linux 系统编程:进程地址空间的奇妙世界

本文围绕 Linux 系统编程中进程地址空间展开,介绍相关知识。C 语言内存管理方面,常量字符串存于常量区且只读,线性地址分为栈区、堆区等区域,栈区地址递减、堆区递增,静态变量在全局区且生命周期特殊。使用 fork 函数时会出现同一变量地址读出不同内容的情况,这表明 C/C++ 中使用的是虚拟地址,由系统转化为物理地址。32 位机器地址空间由地址和数据总线组合而成且有区域划分,进程地址空间是内核数据结构,每个进程独有。页表管理地址空间,实现写时拷贝等机制,保障内存安全和合理使用。

2025-03-04 20:07:36 2090 58

原创 深入理解并实现自定义 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 1412 63

原创 【C++】哈希表:从概念到代码实现

文章围绕哈希表展开全面解析,先阐述哈希基本概念,包括直接定址法及其应用实例、哈希冲突的产生与影响、负载因子对哈希表性能的作用、关键字转整数的需求以及多种哈希函数的原理。接着重点介绍处理哈希冲突的两种主要方法:开放定址法和链地址法。开放定址法通过线性探测、二次探测和双重探测解决冲突,文中给出以线性探测实现的代码,涵盖状态标识、负载因子控制、扩容及处理非整数关键字的仿函数等内容;链地址法将冲突数据用链表存储,也提供了相应代码实现,包含负载因子控制与扩容操作。

2025-02-25 17:32:02 1680 60

原创 深入剖析:基于红黑树实现自定义 map 和 set 容器

文章深入探讨了在 C++ 中基于红黑树实现自定义map和set容器的过程。首先剖析红黑树基础结构与操作,如节点结构包含颜色、指针和数据;通过左旋、右旋操作调整树结构,插入节点后用插入修复维持树的性质。插入操作先找位置再插入并修复,查找操作从根节点比较键值查找目标节点。然后基于红黑树进行map和set自定义实现,set的仿函数直接返回键,map的仿函数从键值对提取键,二者均封装红黑树提供插入等操作。最后给出测试代码验证功能。通过这些实现,展示了红黑树在关联容器中的关键作用及高效数据处理能力。

2025-02-24 13:24:38 889 36

原创 红黑树:高效平衡二叉树的奥秘

本文深入探讨红黑树,从概念、性质出发,结合代码详细阐述其节点定义、插入操作,简述验证与删除相关内容,并对比红黑树与 AVL 树,介绍其应用,旨在帮助读者全面理解红黑树原理、实现及应用场景,文末设置投票互动增强读者参与。

2025-02-15 00:33:51 1262 47

原创 AVL树:高效平衡的二叉搜索树

文章围绕 AVL 树展开,介绍其诞生背景是解决二叉搜索树在数据有序时效率低下问题。AVL 树是平衡的二叉搜索树,其左右子树高度差绝对值不超 1,节点含数据、指针及平衡因子。插入分按二叉搜索树插入和调整平衡因子两步,失衡时依插入位置有四种旋转方式恢复平衡。验证需确认其为二叉搜索树且是平衡树。删除类似二叉搜索树,但可能需调整至根节点。AVL 树查询高效,适用于数据静态场景。

2025-02-13 21:25:18 1339 50

原创 C++开发必备:精通set与map容器,提升数据处理效率

这篇文章结合了关联式容器的各个方面,从定义、特点到实现细节及应用,帮助读者全面理解和掌握set、multiset、map与multimap容器。在实际编程中,通过选择合适的容器,你将能够更高效地存储和管理数据,提高代码的执行效率和可读性。

2025-02-10 23:49:18 1050 58

原创 【C++】一文吃透二叉搜索树:从基础概念到进阶应用

本文围绕二叉搜索树展开全面解析。首先介绍其基础概念,它是特殊二叉树,节点值遵循特定大小关系,与普通二叉树差异明显。接着阐述基本操作,查找类似二分查找,平均时间复杂度为 O (log n) ;插入和删除操作依据节点情况处理,能维持树的有序性,代码通过 C++ 实现。在进阶应用方面,可用于单词拼写检查、单词计数和数据库索引优化。最后分析性能,理想平衡时操作高效,但最坏情况会退化,为解决此问题出现了自平衡二叉搜索树。掌握二叉搜索树知识,对编程实践、算法学习和应对面试都具有重要意义。

2025-02-05 20:09:18 1261 41

原创 算法每日双题精讲 —— 前缀和(【模板】一维前缀和,【模板】二维前缀和)

本文聚焦算法中的前缀和,通过两道经典题目,详细介绍了一维前缀和与二维前缀和的应用。前缀和作为一种预处理技术,能有效解决区间和相关问题。

2025-01-29 00:37:03 1257 13

原创 算法每日双题精讲 —— 二分查找(寻找旋转排序数组中的最小值,点名)

想快速提升算法能力吗?快来解锁二分查找的神奇应用!这篇文章带你攻克两道经典算法题。在 “寻找旋转排序数组中的最小值” 里,教你巧用二分查找,从旋转数组中精准定位最小值,告别暴力遍历的低效。“点名” 问题更是有趣,面对按字母序排列的学生名单,用二分查找瞬间判断学生是否在列,还能返回其位置。每道题都有详细的题目描述、算法原理剖析、C++ 代码实现及复杂度分析,干货满满,快来一探究竟,提升你的算法实力!

2025-01-27 00:03:44 1358 25

原创 算法每日双题精讲 —— 二分查找(山脉数组的峰顶索引,寻找峰值)

文章聚焦 “x 的平方根” 与 “搜索插入位置” 两道经典算法题,深入讲解二分查找算法的应用。“x 的平方根” 要求在不使用内置指数函数和算符的情况下,计算非负整数 x 的算术平方根并取整。利用二分查找,设定左右边界,通过比较中间值平方与 x 的大小关系不断缩小搜索区间,最终得到结果。“搜索插入位置” 是在排序数组中查找目标值,若不存在则返回按序插入的位置。同样采用二分查找,依据中间值与目标值的比较结果更新边界,循环结束后得到插入位置

2025-01-24 21:23:25 1712 50

原创 Linux 进程环境变量:深入理解与实践指南

还在为搞不懂 Linux 进程环境变量而发愁?这篇文章带你 “一键通关”!PATH 如何决定命令 “行踪”、HOME 怎样成为你的专属空间、SHELL 又怎样在背后操控一切?从 env、echo 查看变量,到 getenv 获取变量值,再到利用 environ 深入探索,一文讲清。测试 PATH、HOME 变量的奇妙实验,export、unset、set 命令的使用窍门,环境变量底层的组织架构,以及编程获取变量的方法,全部囊括。掌握这些,轻松拿捏 Linux 系统,开发运维都不在话下,赶紧读起来!

2025-01-23 16:25:50 1710 45

原创 探秘 Linux 进程:优先级、调度与切换的精妙机制

本文深度剖析了 Linux 进程管理中的关键机制。进程优先级决定了进程获取 CPU 资源的先后顺序,其数值越小越易获得资源,通过调整 nice 值可改变优先级 。Linux 内核调度算法采用双队列架构、位图定位机制和双指针切换策略,保障进程有序运行和系统高效调度。进程具有竞争性、独立性,并行与并发是多任务处理的不同策略。CPU 寄存器与进程数据交互密切,进程切换时会保存和恢复上下文数据到 PCB。这些机制协同工作,支撑 Linux 系统稳定运行,对理解系统原理和优化性能意义重大。

2025-01-22 20:11:09 1457 43

原创 探秘 Linux 进程状态:解锁系统运行的密码

文章深入探讨 Linux 进程状态。先介绍经典进程状态模型,再着重讲述 Linux 内核定义的进程状态,如运行、睡眠等状态的特点与关联。通过代码示例展示进程状态变化,分析特殊状态如磁盘休眠、停止、僵尸状态的原理及影响,强调僵尸状态需父进程处理以防资源问题。最后说明ps aux和ps axj命令用于查看进程状态的重要性,为理解和管理 Linux 进程状态提供全面知识。

2025-01-20 20:10:34 2121 68

原创 算法每日双题精讲 —— 二分查找(x 的平方根,搜索插入位置)

今天,就让我们一同聚焦于 “x的平方根” 以及 “搜索插入位置” 这两道经典题目,深度挖掘二分查找算法的奥秘与应用技巧🤓。

2025-01-16 13:43:41 1252 18

原创 我的128天创作之路:回顾与展望

大家好呀!今天来和你们分享一下我的创作历程😁。

2025-01-12 21:38:21 1030 42

原创 算法每日双题精讲 —— 二分查找(二分查找,在排序数组中查找元素的第一个和最后一个位置)

本文围绕二分查找算法展开,针对 “二分查找” 及 “在排序数组中查找元素的第一个和最后一个位置” 两道题进行精讲。

2025-01-12 16:15:33 1239 21

原创 Linux 进程入门:带你走进操作系统的核心地带(2)

本文深入讲解 Linux 进程知识。在进程创建方面,介绍了 fork 系统调用,它有两个返回值,父子进程代码共享但数据采用写时拷贝技术并各自开辟空间,通常用 if 语句分流。对于进程状态,详细阐述了 Linux 内核源代码中定义的多种状态,如 R 运行、S 睡眠、D 磁盘休眠、T 停止、X 死亡、Z 僵死状态等,并解释了其含义。还提及通过 ps aux 或 ps axj 命令查看进程状态,以创建维持 30 秒僵死进程的代码为例说明。

2025-01-11 14:28:53 1112 47

原创 Linux 进程入门:带你走进操作系统的核心地带(1)

从计算机管理硬件需描述与组织对象引入,阐述进程概念,课本中它是程序执行实例,内核里是分配系统资源的实体。Linux 通过进程控制块 PCB(即 task_struct 结构体)管理进程,其包含标示符、状态、优先级等众多属性,进程以 task_struct 链表形式在内核组织。查看进程可利用 /proc 系统文件夹及 top、ps 等用户级工具。还能通过系统调用获取进程 id(PID)和父进程 id(PPID)了解进程关系。文章全面且生动地介绍 Linux 进程相关知识,助力读者深入理解 Linux 系统核心

2025-01-09 00:18:51 1550 26

原创 算法每日双题精讲 —— 滑动窗口(串联所有单词的子串,最小覆盖子串)

本文聚焦 “串联所有单词的子串” 与 “最小覆盖子串” 两道算法题,深入剖析滑动窗口算法的应用。对于 “串联所有单词的子串”,先点明暴力解法低效,再详述滑动窗口思路,包括计算单词总长度、用哈希表记录单词出现次数等,还给出以单词长度为单位移动窗口的优化思路及 C++ 代码,并加详细注释。对于 “最小覆盖子串”,同样阐述暴力与滑动窗口解法原理,说明用哈希表记录字符次数、移动窗口寻找最小子串的过程,以及利用变量记录窗口长度的优化方法,也附上带注释的 C++ 代码。文末设置投票,增强读者互动,助于了解学习情况。

2025-01-05 21:57:11 1884 25

原创 告别编程困惑:GDB、冯诺依曼、操作系统速通指南

文章聚焦编程基础,涵盖 GDB 调试器、冯诺依曼体系结构与操作系统知识。开篇点明编程常遇问题,掌握这些知识可化解难题。接着介绍 GDB 调试器,指出 Linux 下需加 -g 选项,阐述其启动、查看代码、运行程序等多样操作命令 。随后阐述冯诺依曼体系结构,由输入、CPU、输出单元构成,强调 CPU 与内存交互及外设经内存中转数据特点。还讲解操作系统,包括内核与其他程序,其使命为管理资源与提供执行环境,介绍管理方式及系统调用与库函数概念。文末设投票,了解读者对知识点难度感受及后续知识需求。

2025-01-03 22:41:37 1036 67

原创 掌握进度条与 Git,为你的 Linux 编程效率插上翅膀

本文聚焦 Linux 编程,阐述进度条与 Git 对提升编程效率的重要性。开篇点明二者在 Linux 编程中的关键作用。随后,先以老式打字机为例,生动诠释回车(\r)、换行(\n)概念及行缓冲区现象,并结合代码说明。接着,详细剖析进度条小程序代码,展示其实现原理。同时,全面介绍 Git 在项目管理中的运用,如安装、Github 项目创建与下载,以及 git add、commit、push 等关键操作。结尾强调掌握进度条与 Git,能助力开发者在 Linux 编程中更得心应手,鼓励不断探索创新。

2025-01-01 22:37:56 1550 19

英语六级,④ 体裁词,方便过六级

英语六级,④ 体裁词,方便过六级英语六级,④ 体裁词,方便过六级英语六级,④ 体裁词,方便过六级英语六级,④ 体裁词,方便过六级英语六级,④ 体裁词,方便过六级英语六级,④ 体裁词,方便过六级英语六级,④ 体裁词,方便过六级英语六级,④ 体裁词,方便过六级英语六级,④ 体裁词,方便过六级英语六级,④ 体裁词,方便过六级英语六级,④ 体裁词,方便过六级英语六级,④ 体裁词,方便过六级英语六级,④ 体裁词,方便过六级英语六级,④ 体裁词,方便过六级英语六级,④ 体裁词,方便过六级英语六级,④ 体裁词,方便过六级英语六级,④ 体裁词,方便过六级英语六级,④ 体裁词,方便过六级英语六级,④ 体裁词,方便过六级英语六级,④ 体裁词,方便过六级英语六级,④ 体裁词,方便过六级英语六级,④ 体裁词,方便过六级英语六级,④ 体裁词,方便过六级英语六级,④ 体裁词,方便过六级英语六级,④ 体裁词,方便过六级英语六级,④ 体裁词,方便过六级英语六级,④ 体裁词,方便过六级英语六级,④ 体裁词,方便过六级英语六级,④ 体裁词,方便过六级英语六级,④ 体裁词,方便过六级英语六级,④ 体裁词,方便过六级英语六级

2024-09-28

英语六级,③ 常用英语单词后缀大全,方便过六级

英语六级,③ 常用英语单词后缀大全,方便过六级英语六级,③ 常用英语单词后缀大全,方便过六级英语六级,③ 常用英语单词后缀大全,方便过六级英语六级,③ 常用英语单词后缀大全,方便过六级英语六级,③ 常用英语单词后缀大全,方便过六级英语六级,③ 常用英语单词后缀大全,方便过六级英语六级,③ 常用英语单词后缀大全,方便过六级英语六级,③ 常用英语单词后缀大全,方便过六级英语六级,③ 常用英语单词后缀大全,方便过六级英语六级,③ 常用英语单词后缀大全,方便过六级英语六级,③ 常用英语单词后缀大全,方便过六级英语六级,③ 常用英语单词后缀大全,方便过六级英语六级,③ 常用英语单词后缀大全,方便过六级英语六级,③ 常用英语单词后缀大全,方便过六级英语六级,③ 常用英语单词后缀大全,方便过六级英语六级,③ 常用英语单词后缀大全,方便过六级英语六级,③ 常用英语单词后缀大全,方便过六级英语六级,③ 常用英语单词后缀大全,方便过六级英语六级,③ 常用英语单词后缀大全,方便过六级英语六级,③ 常用英语单词后缀大全,方便过六级英语六级,③ 常用英语单词后缀大全,方便过六级英语六级,③ 常用英语单词后缀大全

2024-09-24

英语六级,同义替换词(含动词词组和副词词组),方便过六级

英语六级有关的120组高分同义替换词 适用于:备考英语六级考试的大学生 可打印进行学习,增加六级的分数和通过率 英语六级有关的120组高分同义替换词 适用于:备考英语六级考试的大学生 可打印进行学习,增加六级的分数和通过率 英语六级有关的120组高分同义替换词 适用于:备考英语六级考试的大学生 可打印进行学习,增加六级的分数和通过率 英语六级有关的120组高分同义替换词 适用于:备考英语六级考试的大学生 可打印进行学习,增加六级的分数和通过率 英语六级有关的120组高分同义替换词 适用于:备考英语六级考试的大学生 可打印进行学习,增加六级的分数和通过率 英语六级有关的120组高分同义替换词 适用于:备考英语六级考试的大学生 可打印进行学习,增加六级的分数和通过率 英语六级有关的120组高分同义替换词 适用于:备考英语六级考试的大学生 可打印进行学习,增加六级的分数和通过率 英语六级有关的120组高分同义替换词 适用于:备考英语六级考试的大学生 可打印进行学习,增加六级的分数和通过率

2024-09-22

空空如也

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

TA关注的人

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