自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux修炼:库制作与原理(一)

本文详细介绍了C++中静态库和动态库的创建与使用方式。主要内容包括:1) 静态库的创建步骤(头文件、实现文件、主程序编写及编译打包);2) 动态库的构建方法(使用-shared和-fPIC选项);3) ELF文件格式解析(ELF头部、程序头表、节头表等结构);4) 链接过程详解(符号解析、地址分配、重定位等关键步骤)。文章通过具体代码示例和编译命令,展示了从库文件创建到程序链接的完整流程,并比较了静态链接与动态链接的特点差异。最后还探讨了ELF文件加载到内存时的地址转换机制。

2025-10-26 16:19:08 1417 11

原创 Linux修炼:Ext系列文件系统

本文介绍了磁盘存储与文件系统的核心原理。主要内容包括:1. 磁盘物理结构和工作原理,如CHS/LBA寻址方式;2. Ext2文件系统的关键组件:超级块、GDT、inode表和块位图等;3. 文件存储机制,包括inode与数据块的映射关系;4. 路径解析与目录缓存机制;5. 软硬链接的区别与实现原理。文章通过技术细节揭示了操作系统如何管理磁盘上的文件数据,帮助读者深入理解文件系统的底层实现机制。

2025-10-25 15:32:54 1584 5

原创 前端基础:JS基础语法

JavaScript 是一种广泛应用于网页开发的脚本语言,具有动态类型和弱类型特性。掌握这些基础语法是 JavaScript 编程的起点,后续可以深入学习面向对象编程、模块化、框架等高级概念。JavaScript 使用回调、Promise 和 async/await 处理异步操作。JavaScript 支持各种运算符,包括算术运算符、比较运算符、逻辑运算符等。数组是存储有序集合的数据结构,JavaScript 提供了丰富的数组操作方法。函数是 JavaScript 中的重要概念,可以封装可重用的代码块。

2025-10-25 15:31:56 607

原创 前端基础:从0到1制作简单网页(三)

div>- 通用块级容器<span>- 通用内联容器(处理行内内容)

2025-10-24 16:23:37 703

原创 Linux修炼:基础IO(二)

本文介绍了Linux系统中shell重定向功能的实现原理和文件操作机制。主要内容包括:1) 实现myshell的重定向功能,通过宏定义区分不同重定向类型,使用指针解析命令并处理重定向符号;2) 解释"一切皆文件"概念,说明操作系统如何通过VFS将硬件设备抽象为文件;3) 分析缓冲区的意义和刷新策略,区分语言级缓冲区和内核文件缓冲区;4) 介绍标准错误的作用及重定向方法;5) 模拟实现简易C标准库文件操作,包括MyFILE结构体设计和相关函数实现。文章通过代码示例深入浅出地讲解了Linux

2025-10-24 16:23:10 1224 5

原创 Linux修炼:基础IO(一)

本文系统介绍了Linux系统文件IO操作,主要包含三部分内容:1.回顾C语言文件操作,包括文件打开方式、基本语法和常用模式;2.深入讲解系统文件IO接口,对比C语言封装与系统调用的差异;3.重点剖析Linux文件管理机制,包括文件描述符分配规则、文件内核缓冲区管理原理,以及输入/输出重定向的实现机制。文章通过大量代码示例详细演示了底层系统调用open/read/write/close等接口的使用方法,并解释了C语言标准库如何封装这些系统调用以提高跨平台性和IO效率。

2025-10-23 16:35:08 1033 2

原创 Linux修炼:进程控制(二)

本文介绍了进程替换的原理和实现方式,重点讲解了exec系列函数的使用方法。通过fork创建子进程后,可以使用exec系列函数将子进程替换为新的程序执行。文章详细讲解了execl、execv、execlp、execvp、execvpe等函数的特点和区别,并给出了实际应用示例。最后,文章展示了一个简易Shell命令行解释器的实现过程,包括初始化、命令提示符显示、命令获取与解析、命令执行等功能模块的实现,特别说明了如何处理内建命令如cd和echo。该Shell实现采用C/C++混编方式,能够持续运行并执行用户输入

2025-10-23 16:34:44 894 3

原创 Linux 修炼:进程控制(一)

目录 1、写时拷贝2、进程终止 2.1、退出码 2.2、进程退出3、进程等待 3.1、进程等待引入 3.2、进程等待的方式 3.2.1、wait 3.2.2、waitpid 3.3、非阻塞等待 通过前面的学习,我们知道了要想创建子进程需要用fork函数。创建完成后fork函数子进程返回值为0,父进程返回值为子进程的pid。需要注意的是,fork函数不能无限次数调用,因为每次调用都会复制页表,虚拟地址空间,pcb等

2025-09-25 21:31:39 1050

原创 前端基础:从0到1实现简单网页效果(二)

HTML 块元素(Block-level Elements)是指在页面中以独立块形式显示的元素,通常占据一整行,并会在前后自动换行。这些元素常用于构建页面的主要结构,如段落、标题、列表等。CSS(Cascading Style Sheets)用于控制网页的样式和布局,包含多种属性,涵盖文本、颜色、背景、边框、盒模型、定位、动画等方面。以下分类介绍主要 CSS 属性及其用途。

2025-09-25 20:15:35 627

原创 前端基础:从0到1实现简单网页效果(一)

HTML是构建网页的标准标记语言,通过标签定义内容和结构。基本结构包括文档类型声明、根元素、头部元数据和主体内容。常用标签分为结构标签(如<html>、<body>)、文本标签(如<h1>、<p>)、媒体标签(如<img>、<video>)、列表和表格标签等。HTML5新增了语义化标签和多媒体支持。特殊字符需使用实体引用(如&lt;表示<)。常与CSS和JavaScript配合使用,形成完整的网页。

2025-09-22 20:42:38 814

原创 Linux 修炼:进程概念(下)

本文介绍了Linux系统编程中的三个重要概念:命令行参数、环境变量和进程地址空间。首先解释了命令行参数如何通过main函数的参数实现不同功能,其本质是字符串参数解析。接着详细讲解了环境变量的作用机制,包括PATH变量、获取方法(main函数、getenv、environ)以及环境变量的全局属性。最后深入分析了进程地址空间的虚拟特性,通过代码验证了内存区域分布,阐述了虚拟地址通过页表映射物理内存的原理,以及写时拷贝机制如何保证进程独立性。

2025-09-22 17:19:17 1006

原创 Linux 修炼:进程概念(中)

本文系统介绍了操作系统中的进程状态管理机制。首先概述了进程的常见状态(新建、就绪、运行、阻塞、终止、挂起)及其转换关系,特别说明了Linux系统中特有的状态表示(R运行、S睡眠、D磁盘睡眠、T停止等)。文章深入解析了僵尸进程、孤儿进程的形成原理,以及进程优先级调整机制(PRI和nice值的关系)。最后详细阐述了进程切换的上下文保存恢复过程,并介绍了Linux采用的O(1)调度算法,通过双队列结构和位图实现高效调度。全文结合代码示例和系统命令演示,全面呈现了进程管理的核心原理。

2025-07-27 16:44:59 953 7

原创 Git 完全手册:从入门到团队协作实战(4)

本文介绍了Git团队协作开发的两个场景:1)同分支下多人修改同一文件的冲突处理方法;2)不同分支下多人并行开发的协作流程。文章详细讲解了分支管理、远程仓库同步、冲突解决等关键操作。此外,还介绍了企业级开发模型,包括DevOps理念、开发环境划分、GitFlow分支设计和Gitee企业版DevOps平台的使用方法。通过具体命令演示和场景模拟,帮助开发者掌握团队协作中的版本控制技巧和企业级开发流程。

2025-07-23 16:05:23 1166 2

原创 Linux修炼:进程概念(上)

本文介绍了计算机系统的基础知识,包括冯诺依曼体系结构、操作系统和进程管理。冯诺依曼体系由运算器、控制器、存储器、输入设备和输出设备组成,采用二进制编码和存储程序控制原理。操作系统作为软硬件资源管理软件,通过分层架构协调硬件与应用交互。进程是程序执行的动态实例,由程序代码、数据和进程控制块(PCB)组成,在Linux系统中通过task_struct实现。文章还演示了使用fork创建子进程的方法,子进程会继承父进程的task_struct模板。这些概念构成了现代计算机系统的核心框架。

2025-07-23 16:04:12 1137

原创 Git 完全手册:从入门到团队协作实战(3)

本文介绍了Git远程操作与标签管理的实用技巧。首先讲解了SSH协议克隆仓库的方法,包括生成SSH密钥和添加公钥到远端仓库的步骤;其次介绍了推送与拉取分支的操作命令。文章还分享了给Git命令配置别名的两种方式,可以简化日常操作。在标签管理部分,详细说明了如何创建、查看、推送和删除标签,包括本地与远端标签的同步操作。这些Git进阶技巧能帮助开发者更高效地进行版本控制和代码管理。

2025-07-21 10:21:29 874 2

原创 Linux修炼:gdb/cgdb

【GDB/CGDB调试工具使用指南】本文介绍了Linux系统下常用的程序调试工具GDB和CGDB。GDB是GNU开发的跨平台调试器,支持多种编程语言。文章首先讲解如何安装GDB和CGDB,并强调调试需要编译debug版本程序(使用-g选项)。接着详细介绍了CGDB的使用方法,包括查看代码、设置/管理断点、单步调试、变量监视等常用调试命令。特别说明了watch命令可以监控变量变化,bt命令查看调用堆栈等实用技巧。最后指出GDB/CGDB会记录上一条命令,按回车即可重复执行。

2025-07-21 10:20:09 931

原创 我的创作纪念日

作者回顾了在优快云平台近一年的成长历程。从最初通过优快云解决编程问题,到主动分享技术博客,记录了从C语言到Linux的学习轨迹。虽然粉丝量不及大V,但1700位关注者已让作者倍感鼓舞。文章分享了"学习+写博客"的复习模式,认为这种方式虽然效率不高但效果稳固。作者展望未来,希望博客能成为职业发展的加分项,并期待通过平台结识更多行业专家。最后表达了继续坚持写作、像登山一样逐步实现目标的决心,将每篇博客视为进步的阶梯。

2025-07-19 19:02:15 494

原创 Git 完全手册:从入门到团队协作实战(2)

本文详细介绍了Git版本控制和分支管理的关键操作。主要内容包括:1)版本回退的不同方式和注意事项,如使用git reset和git revert命令;2)撤销修改的三种情况及对应解决方案;3)分支管理的基础操作(创建、切换、合并、删除)和高级应用(合并冲突处理、no-ff模式、bug分支修复技巧)。文章特别强调了对远程仓库的安全操作方式,并提供了实际场景下的最佳实践建议,如使用git stash暂存未完成的工作来处理紧急bug修复。

2025-07-19 18:01:33 1640 9

原创 数据结构与算法之美:拓扑排序

拓扑排序是对有向无环图(DAG)的顶点进行线性排序,使得对于图中的每一条有向边 (u, v),顶点 u 在排序中总是位于顶点 v 的前面。常用于任务调度、依赖解析等场景。简单来说,拓扑排序就是每次从入度为0的点开始,每次都走入度为0的点,直到遍历完所有的顶点。拓扑排序只适用于有向无环图,并且,拓扑排序的结果可能不唯一。

2025-07-19 17:49:57 1112 10

原创 C++修炼:IO流

本文介绍了C++ IO流的相关知识,主要包括:1. C++ IO库通过继承体系实现,支持标准IO流、文件IO流和字符串IO流;2. IO流状态管理,包括goodbit、eofbit、failbit和badbit四种状态,以及如何恢复错误状态;3. 输出缓冲区的管理机制和触发刷新的五种情况;4. 标准IO流的使用方法;5. 文件IO流的分类(ofstream、ifstream、fstream)和多种文件打开方式;6. 字符串IO流的使用方法

2025-07-16 20:50:14 1297 7

原创 Git 完全手册:从入门到团队协作实战(1)

这篇博客介绍了Git版本控制系统的基础知识和使用方法。主要内容包括:1)Git的基本概念和历史背景;2)Git的工作流程(本地修改、暂存、提交、推送等);3)如何搭建Git仓库并进行基础操作(clone、add、commit、push等);4)常用Git命令介绍(log、status、diff等)。文章通过实际案例讲解了版本控制的重要性,并详细演示了从创建仓库到提交代码的完整流程,适合初学者快速入门Git版本控制工具。

2025-07-16 11:46:52 795 2

原创 C++修炼:C++中的类型转换

本文系统介绍了C++中的类型转换机制,主要内容包括:1. C语言类型转换回顾,包括隐式和显式转换;2. C++新增的类型转换特性,如内置类型与自定义类型间的转换(通过构造函数和operator函数实现);3. C++四种显式强制类型转换运算符:static_cast(常规转换)、reinterpret_cast(低级别转换)、const_cast(const属性操作)和dynamic_cast(多态类型安全转换);4. RTTI(运行时类型信息)机制及其应用。

2025-07-14 20:00:33 871 2

原创 Linux修炼:自动化构建make/Makefile

当在命令行运行make clean时,Make 会执行该目标下的命令。

2025-07-14 15:26:29 751 3

原创 Linux修炼:开发工具

本文介绍了Linux系统下的软件安装方法和开发环境配置。主要内容包括:1) Linux软件安装的三种方式(源码安装、rpm安装、yum/apt工具安装),重点推荐使用yum/apt自动解决依赖关系;2) vim文本编辑器的五种模式及常用命令,包括命令模式、底行模式等,以及.vimrc配置文件的使用;3) gcc/g++编译器的使用,详细说明从源代码到可执行程序的四个阶段(预处理、编译、汇编、链接),并比较动态链接和静态链接的区别;4) 简要分析Linux生态的重要性。

2025-07-13 15:31:08 1362 9

原创 数据结构与算法之美:跳表

本文介绍了跳表(SkipList)这一高效数据结构。跳表通过多层概率性索引结构,将有序链表的查询、插入和删除操作时间复杂度优化至O(logn)。文章详细讲解了跳表的基本原理:底层包含所有元素,上层逐步稀疏;通过随机生成层数实现高效查找。随后给出了C++实现方案,包括节点结构、查找算法、随机层数生成、插入删除操作等核心代码实现。最后分析了跳表的性能特点:时间复杂度O(logn),空间复杂度O(n),实现简单且适合高并发场景。跳表是平衡树的轻量级替代方案,广泛应用于Redis等系统。

2025-07-12 22:30:42 1104 1

原创 数据结构与算法之美:线索二叉树

摘要:本文详细介绍了线索二叉树的概念、结构和操作方法。线索二叉树通过利用空指针域存储前驱/后继信息,实现了无需递归或栈的高效遍历。文章讲解了节点结构、构建过程(包括线索化代码)、遍历算法,以及插入删除操作的注意事项。最后分析了线索二叉树的优缺点:优点是节省空间、遍历高效,缺点是操作复杂度较高。线索二叉树是普通二叉树的优化版本,适用于需要频繁遍历的场景。

2025-07-12 22:30:09 557

原创 Linux修炼:权限

本文介绍了Linux系统中的文件权限管理机制。主要内容包括:1) Linux通过文件属性列(如-、d、l等)而非后缀名区分文件类型;2) Linux支持多用户登录,通过adduser/userdel管理用户,root与普通用户权限差异显著;3) 文件权限分为rwx三种,对应拥有者、所属组和其他用户三类身份;4) 使用chmod/chown命令修改权限和所有者;5) 目录权限的特殊性(r查看、w修改、x进入)及umask机制对默认权限的影响。

2025-07-11 17:03:50 980 2

原创 数据结构与算法之美:索引表

本文介绍了索引表的概念与应用,重点讲解了索引表的核心作用、常见类型(B树、哈希、全文索引)及优缺点,并给出使用建议。通过C++代码示例展示了哈希表索引的简单实现,包括性能优化和扩展功能(动态调整、范围查询)。最后指出索引表在数据库等场景的实际应用,强调合理选择数据结构对提升查询效率的重要性。文章提供了从理论到实践的完整索引表知识框架。

2025-07-11 17:03:07 579

原创 数据结构与算法之美:广义表

本文介绍了广义表的基本概念与实现。广义表是一种非线性数据结构,允许元素为原子或子表,具有递归嵌套特性。文章详细讲解了广义表的定义、表示方法(如(a,(b,c),d))、存储结构(带tag标识的链式节点)和基本操作(创建、求长度/深度、遍历等)。通过C++代码示例展示了广义表类的实现,包括节点结构、递归创建/销毁方法以及测试用例。最后对比了广义表与线性表的区别,并列举了广义表在文件目录、多项式存储等场景的应用。广义表虽实现复杂,但为层次化数据提供了灵活解决方案。

2025-07-10 16:48:23 1137 7

原创 Linux修炼:基础指令

本文介绍了Linux操作系统的基础知识及常用命令。首先概述了Linux的特点(开源、多用户、高稳定性等)和主要发行版(Ubuntu、CentOS等)。然后详细讲解了20多个基础命令的使用方法,包括文件操作(ls、cd、mkdir)、文件处理(cat、grep)、压缩解压(zip、tar)以及系统管理(shutdown、history)等。文章还提供了常见热键操作技巧,如Tab补全、Ctrl+C终止程序等。适合Linux初学者快速掌握基本操作,为后续学习打下基础。所有示例基于CentOS 7环境演示。

2025-07-10 15:40:34 944 5

原创 数据结构与算法之美:LRU Cache

因为优先使用的我们要放到链表的最开始,所以说我们先通过哈希表判断这个值在不在list里,如果在的话,我们把这个值调整到链表最开始。_LRUList中存储数据访问顺序,_hashMap存储每个数据的key值对应的迭代器,以便于实现快速调整。通过双向链表维护访问顺序,结合哈希表实现高效查询,LRU Cache 在有限空间内最大化缓存命中率。

2025-06-28 16:16:22 773 4

原创 数据结构与算法之美:图

万字爆肝!详细讲解图以及图相关各种算法,配图解释!!!

2025-06-27 15:52:54 1748 10

原创 数据结构与算法之美:并查集

摘要:本文介绍了并查集数据结构及其实现。并查集主要用于处理不相交集合的合并与查询,支持Find和Union操作。文章详细讲解了初始化、查找(含路径压缩优化)和合并(含按秩合并优化)的实现方法,并提供了C++代码示例。此外还介绍了判断元素是否同属一个集合和计算集合数量的操作。通过优化,并查集的操作时间复杂度可接近常数级

2025-06-27 15:51:42 664 4

原创 C++修炼:智能指针

详细讲解C++智能指针

2025-06-24 11:34:06 952 10

原创 C++修炼:异常

本文详细讲解了C++异常处理机制。主要内容包括:1. 异常的基本概念和原理,通过throw抛出异常,try-catch捕获处理;2. 异常栈展开机制,异常对象生命周期;3. 异常匹配规则,包括基类派生类多态捕获;4. 异常安全问题和内存泄漏风险;5. 标准库异常体系和使用方法;6. 异常重新抛出和noexcept规范。文章通过代码示例展示了除法异常、类继承异常、内存泄漏等典型场景,并提供了标准库异常类和自定义异常的实现方式。最后补充了异常重新抛出的应用场景。

2025-06-24 11:32:24 1063 4

原创 C++修炼:C++11(三)

详细讲解C++11新增lambda,function,bind

2025-06-08 15:18:48 1026 5

原创 题海拾贝:P1091 [NOIP 2004 提高组] 合唱队形

【代码】题海拾贝:P1091 [NOIP 2004 提高组] 合唱队形。

2025-06-07 16:34:45 430 2

原创 C++修炼:C++11(二)

详细讲解C++11新增可变参数模板以及类的新功能

2025-06-07 16:33:46 1004 11

原创 题海拾贝:P2347 [NOIP 1996 提高组] 砝码称重

【代码】题海拾贝:P2347 [NOIP 1996 提高组] 砝码称重。

2025-06-04 19:09:13 396 2

原创 C++修炼:C++11(一)

C++11(一)万字讲解!

2025-06-04 16:13:05 1047 11

空空如也

空空如也

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

TA关注的人

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