自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++算法 二分查找篇(上)

基础二分,找到直接 return,适合数组无重复、只需要判断是否存在的场景;、mid 向下取整:左边界模板,用来找第一个满足条件的位置,对应 searchInsert、searchRange 左端点;、mid 向上取整:右边界模板,用来找最后一个满足条件的位置,对应 mySqrt、searchRange 右端点。mid的计算方式决定循环会不会死循环,区间开闭条件、边界收缩方向一定要配套。记住模板不要混用,遇到有序数组查找问题,先判断我们要找「精确值」、「左边界」还是「右边界」,再选择对应的二分框架。

2026-11-07 18:04:38 68 2

原创 Linux进程(四)概念:命令行参数和环境变量篇

Linux 下命令行参数与环境变量,二者是进程接收外部信息的两大途径:命令行参数是程序启动时一次性传入的参数;环境变量是附着在进程上的KEY=VALUE键值对,子进程默认继承父进程环境变量。命令行参数:依靠argc(参数个数)、argv(参数字符串数组)传递,argv[0]代表程序名,仅本次程序运行有效,不具备继承性。环境变量基础:属于进程内全局,不是操作系统全局,修改子进程环境不会影响父进程;列举了等常用环境变量。Shell 操作命令:使用。

2026-11-04 21:28:44 165 26

原创 C++算法 滑动窗口篇(下)

不定长窗口固定长度窗口,都用「频次哈希 + count 计数器」避免每次全表比对,提升效率水果成篮(不定长滑动窗口,最多 2 类)目标:最长子数组,元素种类≤2;right 扩,种类超 2 就收缩 left,记录最大值。找到字符串中所有字母异位词(定长滑动窗口)目标:和 p 等长、字符频次完全相同;窗口大小固定为 p 的长度,count 统计匹配字符数,count==p 长度即找到答案。串联所有单词的子串(定长滑动窗口,按单词块滑动)目标:连续凑齐 words 里全部单词;单词等长,枚举。

2026-11-02 17:59:23 281 22

原创 Linux进程(三)概念:进程优先级与进程切换篇

进程依靠优先级确定调度权重,用户只能修改 nice 值间接改变内核 PRI;进程具备资源隔离的独立性,同时会竞争 CPU 等资源;并发是时间片交替执行,并行是多核同时执行,二者概念不能混淆;O (1) 调度器为每个 CPU 分配独立 runqueue,依靠 bitmap 快速定位最高优先级就绪进程;active 存放有剩余时间片的就绪进程,expired 存放时间片耗尽的就绪进程;active 耗尽时直接交换 active、expired 指针,开启新一轮调度;

2026-11-01 21:48:40 230 22

原创 Linux进程(二)概念:查看操作和进程状态篇

基础区分程序与进程:程序是磁盘上静态可执行文件;进程是程序运行的动态实例,由内核 PCB 管理,拥有唯一 PID。介绍pstop等查看进程命令,以及getpid()getppid()获取 PID、PPID。fork():用于创建子进程,调用一次、返回两次,父子进程代码共享、数据采用写时拷贝,子进程从 fork 之后开始执行,依靠返回值区分父、子进程与创建失败场景。kill 信号机制:kill 本质是发送信号,不是直接删除进程;

2026-10-27 14:28:33 160 27

原创 C++算法 滑动窗口篇(上)

刷数组和字符串题目时,滑动窗口是绕不开的经典算法。很多初学者容易把它和暴力双循环混淆,误以为内层 while 循环会带来平方级复杂度;实际上只要左指针不回退,滑动窗口就能做到线性时间。它的精髓在于维护一个动态变化的窗口,不断扩张右边界探索新元素,窗口不满足约束时收缩左边界,始终维持窗口的合法性。有些题目不会直接给出窗口目标,需要我们转换问题视角。接下来将通过四道典型真题,一步步带你理解滑动窗口的套路、模板和使用前提。

2026-10-22 21:37:46 206 25

原创 Linux进程(一)冯.诺依曼体系结构与进程初识篇

冯・诺依曼体系以存储程序思想和五大部件搭建起计算机硬件框架,规定了指令与数据的存取执行方式;进程作为程序的动态执行实例,是操作系统资源分配与调度的基本单元。操作系统围绕进程完成创建、调度、状态切换、同步通信与资源回收等一系列管理工作,以此支撑多个程序在计算机上安全、并发地运行。

2026-10-22 10:37:34 370 25

原创 Liunx基础开发工具(四)git与gdb/cgdb篇

Git 是一款分布式版本控制系统,由 Linus Torvalds 开发,用来跟踪文件变更、管理代码版本。几个核心概念工作区 (Working Directory):你肉眼看到的文件夹,日常写代码的地方。暂存区 (Stage/Index):临时存放准备提交的文件变更,相当于 “待提交清单”。本地仓库 (Repository).git隐藏文件夹,保存所有历史版本快照。远程仓库:放在云端(Gitee/GitHub/GitLab)的仓库,多人协作共享代码。已修改(modified)→已暂存(staged)→。

2026-10-20 14:02:46 495 21

原创 Linux基础开发工具(三)gcc/g++与make/makefile篇

gccC 语言编译器,用于编译.c源码g++C++ 编译器,用于编译,内部底层依然调用 gcc,自动链接 C++ 标准库.c文件推荐用gcc.cpp文件推荐用g++核心用途Linux基础开发工具(二)程序编译与动静态库篇,深入理解。将 C/C++ 源代码,经过预处理 → 编译 → 汇编 → 链接,生成可执行程序支持生成目标文件、静态库、动态库支持调试、优化、警告检查伪目标不是文件,只是一个标签,用来执行一组命令,不会生成对应的文件。最常用的就是clean:用来删除编译产物(.o、可执行程序)。

2026-10-19 17:24:56 380 20

原创 C++算法:双指针篇(下)

前提:数组排序,是双指针、去重的基础;核心思想固定一部分,双指针在剩余区间相向收缩,把暴力多层枚举降低复杂度;相向双指针适用场景:有序数组,判断两数之和和目标值的大小关系,通过移动左右指针调整总和。

2026-10-17 20:02:16 293 19

原创 Linux基础开发工具(二)程序编译与动静态库篇

库(Library)是预先编译好的目标代码(.o)文件集合,里面封装了已经写好的函数、变量,我们写程序时不需要重复实现,直接调用库里的函数即可。静态库(Static Library).a后缀动态库 / 共享库(Shared Library).so后缀目标文件.o:源文件.c只编译不链接得到的二进制代码,不能直接运行。编译四阶段预处理gcc -E:纯文本处理,展开头文件、宏替换、删除注释,不检查语法,输出.i。编译gcc -S:词法、语法、语义分析与代码优化,C 转汇编,输出.s汇编文本。汇编。

2026-10-14 16:34:48 352 23

原创 C++算法:双指针篇(上)

这 4 道题都属于双指针经典算法题移动零:快慢双指针。快指针遍历找非零数,慢指针标记非零元素存放位置,交换元素,把 0 挪到数组末尾,保持非零元素相对顺序,一次遍历完成。复写零:两次双指针。先从左向右定位最终填充边界,再从右向左原地复写 0,避免原始数据被覆盖,实现原地把数组里每个 0 复制多一个 0。快乐数:快慢指针判环(弗洛伊德龟兔赛跑)。把平方和序列抽象成链表,慢指针每次一步、快指针每次两步。相遇时判断是否为 1,区分快乐数 / 循环死环,无需哈希表。盛最多水的容器:左右对撞双指针。

2026-10-12 18:50:11 475 19

原创 Linux基础开发工具(一)软件包管理器与Vim编辑器篇

Linux系统中的软件并非零散二进制文件,通常打包为软件包,包内包含程序可执行文件、配置文件、依赖清单、文档等。软件包管理器就是一套工具,核心作用:1.下载软件包;2.自动解析、安装软件依赖;3.安装、升级、卸载软件;4.管理本地软件包数据库。不同Linux发行版使用不同包格式与包管理器.deb包 →apt.rpm包 →yumCentOS8+/Rocky → dnf(yum升级版,用法基本一致)

2026-10-12 16:09:22 287 24

原创 Linux权限

1. Linux权限核心是UGO三身份 + rwx三权限,文件和目录权限含义完全不同,删除文件看目录w权限,修改文件看文件w权限;2.chmod改权限、改归属、umask控默认权限、file查文件类型;3.粘滞位是公开目录的安全屏障,解决多人共用目录的文件误删问题,是生产环境高频特殊权限;先归属、后权限、默认靠umask、公开目录加粘滞位。

2026-10-08 13:59:59 781 26

原创 Linux基本指令(下)

find搜所有文件,which只搜命令执行路径,whereis搜命令全套相关文件。

2026-10-01 23:33:14 355 22

原创 Linux基本指令(上)

指令核心功能高频用法pwd查看当前路径pwdcd切换目录ls查看目录内容ls -lhtouch创建空文件touch 文件名mkdir创建目录mkdir -p 多级目录rmdir删除空目录rmdir 空目录名rm删除文件/目录rm -rf 文件名/目录名cp复制文件/目录cp -rf 源 目标mv移动/重命名mv 源 目标cat查看小文件内容cat -n 文件名more/less分页查看文件less 文件名(首选)man查看指令帮助。

2026-10-01 23:17:18 473 21

原创 C++11(下)

可变模板定义参数包,args...包扩展,C++11靠递归遍历emplace:原地构造、无临时对象、效率高于push系列:default生成默认函数,delete禁用函数function:统一包装所有可调用对象,用于回调存储bind:固定参数、调换参数顺序,配合占位符使用。

2026-09-21 19:54:39 233 15

原创 C++11(上)

C++11 是 2011 年推出的 C++ 官方标准,是现代C++的起点。在它之前的 C++98 语法冗余、漏洞多、手写代码量大;C++11 大幅简化语法,新增自动化特性、智能内存管理、高效容器、优雅遍历方式。基础简化:auto推导、nullptr空指针、统一初始化列表、范围for循环,极简编码函数升级:Lambda匿名函数,灵活适配算法场景内存安全:三大智能指针+RAII机制,彻底解决裸指针内存bug性能优化:右值引用+移动语义,杜绝无效内存拷贝功能拓展。

2026-09-14 19:11:25 221 6

原创 C++智能指针

指针类型所有权引用计数拷贝/移动核心场景unique_ptr独占无禁拷贝、可移动独占资源、常规局部内存管理shared_ptr共享有可拷贝、可移动多对象共享资源weak_ptr无不参与计数可拷贝、可移动解决循环引用、安全观察内存智能指针核心:RAII 自动内存管理,解决裸指针泄漏、野指针、重复释放问题分工逻辑:unique 管独占、shared 管共享、weak 管纠错编码原则:能独占不共享,共享防泄漏用 weak_ptr。

2026-09-11 17:52:41 195 4

原创 C++ 红黑树

1. 时间复杂度稳定:查找、插入、删除均为 O(log n)。2. 旋转次数少,执行效率高:属于弱平衡树,不要求严格平衡;插入最多 2 次旋转,删除最多 3 次旋转,大量操作只需要变色,不需要旋转。对比 AVL 树,增删频繁时性能更好。3. 工程实用性强:C++ STL 的底层就是红黑树,工业界广泛使用。4. 最坏情况可控:树高保证最长路径 ≤ 2× 最短路径,不会退化成为链表,避免 BST 最坏O(n)的情况。

2026-08-07 22:22:58 485 30

原创 C++ AVL树

严格平衡,左右子树高度差≤1,查询、查找效率稳定 (O(log_2N))。相比普通 BST,不会退化成链表,规避最坏 (O(N)) 的情况。

2026-08-03 02:09:02 328 11

原创 C++ map与set

set和multiset都是 C++ 容器,底层红黑树,容器内部元素自动保持有序。只存放单个数据。不同:set:集合,元素不能重复。同一个值,插入多次,容器里只会保留一份。multiset:多重集合,允许存在多个相同值,重复插入全部保留。map:key唯一不重复,自动按 key 排序multimap:key允许重复,自动按 key 排序。

2026-07-27 00:34:12 254 5

原创 C++ 二叉搜索树

BST 核心:左小右大,递归约束;标志性特征:中序遍历有序;基础操作:查找→插入→删除;缺陷:极端情况退化,引出平衡树需求。

2026-07-22 00:43:20 176 5

原创 C++ 继承与多态(下)

多态是面向对象三大特性之一,指父类引用指向子类实例,在程序运行阶段,调用同名成员方法时,会根据对象实际类型执行对应子类重写后的方法,实现一个接口、多种实现的效果。编译时多态(静态多态):比如函数重载,函数模板运行时多态(动态多态):传不同对象产生不同的行为举例类成员函数前加virtual 修饰(父类子类都要加:父类一定要加,子类可不加但不规范),那么这个成员函数被称为虚函数。

2026-06-09 16:56:58 609 30

原创 C++ 继承与多态(上)

继承机制是面向对象程序设计使代码可以复用的重要手段,它允许我们在保持原有类特性的基础上进行扩展,增加方法(成员函数)和属性(成员变量),这样产生新的类,叫做子类。被继承的类的统称继承父类、并拓展功能的类。

2026-06-06 23:09:42 439 26

原创 C++ 认识使用stack,queue和priority_queue

重载了operator()的类 / 结构体,使用形式像函数,本质是类对象。

2026-05-29 17:12:20 327 21

原创 C++ list的使用

list 是 C++ STL 里的双向链表容器。

2026-05-27 21:17:23 455 14

原创 C++ vector的使用

是C++ 动态数组,长度可自动增减,头文件<vector>:存取快、自动扩容,代码里用来存所有字母组合结果。

2026-05-22 16:58:15 662 19

原创 C++ string类

string类是C++自带的字符串类,其头文件为:#include<string>

2026-05-18 21:47:55 208 7

原创 C++ 模板

的核心工具,它的本质是一个 “通用模具”,让你可以编写与类型无关的通用代码,避免重复写逻辑相同、仅类型不同的代码。template<class/typename 类型1,class/typename 类型2,......>2.模板的关键字template模板的分类:函数模板,类模板。例如:会自动识别类型,生成对应模板函数。参数类型不一致时(增加模板参数列表)4.类模板(都是显示实例化)推导实例化(结果不一致)显示实例化(结果一致)模板是 C++ 实现。与类型无关的通用代码。

2026-04-26 21:26:30 49 6

原创 C++ 数据内存分布

精准控制内存的生命周期、大小与使用时机,兼顾灵活性、空间利用率与程序稳定。// 静态局部 → 全局区。2.内存分布(如图)

2026-04-26 20:26:33 44 6

原创 C++构造函数初始化列表

静态成员函数(用static修饰的成员函数)无this指针,可以访问其他静态成员,但不能访问非静态的成员(因为没有this指针)。构造函数初始化列表是C++中在构造函数体执行前,专门用来初始化成员变量的地方。每个成员都要走初始化列表(尽量用初始化列表进行成员的初始化)2.基本形式(在原本的构造函数体前加了初始化列表)其中成员变量在初始化列表只能出现一次(初始化一次)初始化列表是按声明的顺序初始化的,与列表顺序无关。6.不走初始化列表——static静态成员。:成员变量1(初始值1/表达式1),

2026-04-24 13:21:43 48 2

原创 C++ 构造函数和析构函数

析构函数主要作用:清理资源(释放内存、关闭文件、断开数据库连接等)构造函数主要作用:初始化对象的属性(给成员变量赋初始值)

2026-04-20 22:57:51 34 2

原创 C语言的循环

1.for例如2.while例如3.do-while例如。

2026-04-16 21:25:10 40 3

原创 C++ 简单认识类

1.类:简单说,类就是把数据和操作数据的函数打包在一起的工具。一般成员变量都会被限制为private或者protected。与C语言里的结构体类似,类的关键字是class。需要给别人使用的成员函数会放为public。在类里定义的函数默认为内联函数。

2026-04-14 21:08:40 45 4

原创 C++ 命名空间域

命名空间域是以namespace为关键字封装的单独的域空间。域名+“::”+要访问的变量名或者函数名。需要分别指定对应的“路径”,解决命名冲突。} //注意,此处没有分号!用来访问被封装的域里的变量或者函数。namespace 域名。请注意:域不可在局部定义。2.“::”域作用限定符。

2026-04-12 20:44:08 35 1

原创 整数和浮点数在内存中的存储

浮点数 = 符号位 + (指数 + 偏移量) + (省略整数1后的小数部分)算指数存储值:2 + 127 = 129(二进制 10000001)②负数:先转化为二进制的原码,再转化为补码(补码:原码取反再+1)尾数位M:小数点后的二进制小数部分(整数部分默认 1,不存)1 位符号位 + 11位指数位+ 52 位尾数位。1 位符号位 + 8 位指数位+ 23位尾数位。尾数(去掉开头的 1):101 指数:2。①正数:先转化为二进制,高位补零(即原码)指数位E:真正的指数 + 127(偏移量)

2026-04-09 23:07:40 39 2

原创 学业和职业规划

学校进度太慢而且讲的很浅,我希望通过网上的一些资源学习,然后去洛谷等刷题,尽量让知识巩固。同时多看大佬的代码学习。因为本科学校不是特别好,我不确定能不能进入一些知名大厂,我觉得先定一个小目标,通过我自己的努力再慢慢调整🥰。目前初学C语言,计划本月结束C语言的学习,之后学习数据结构。我会及时调整目标,慢慢掌握计算机语言。我知道学习编程需要不断敲代码才能真正掌握,我会每天抽出至少3个小时去学习编程知识。今年大一,计算机科学与技术专业,目前在南京一个普通一本学校读书。

2025-12-24 17:01:16 237

空空如也

空空如也

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

TA关注的人

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