- 博客(64)
- 收藏
- 关注
原创 【CMake】第2期 详解 CMake 多目录工程、变量作用域与核心语法
【CMake】第2期 详解 CMake 多目录工程、变量作用域与核心语法
2026-10-29 21:10:38
113
原创 【MySQL】第4期 用户管理与 C 语言连接编程详解
MySQL 权限按作用范围从大到小可分为:全局层级 > 数据库层级 > 表层级 > 列层级 > 子程序层级。按权限类型可分为数据操作、结构操作、管理操作三大类,核心权限如下:表格权限分类具体权限作用范围数据操作表 / 列结构操作库 / 表视图 / 存储过程视图 / 子程序系统管理全局。
2026-10-19 17:16:49
193
原创 【MySQL】第3期 索引、事务与视图系统详解
索引是典型的「空间换时间」优化方案,通过建立类似 “目录” 的数据结构,大幅减少磁盘 IO 次数,实现海量数据下的秒级查询。索引提升查询速度的代价,是写入(增删改)时需要额外维护索引结构,因此索引的价值在于优化高频查询场景磁盘是机械存储设备,依靠磁头移动寻址,随机 IO 的效率远低于连续 IO,数据库性能的核心瓶颈通常就是磁盘 IO 的次数可通过命令验证 InnoDB 页大小:MySQL 在内存中开辟了一块大内存空间叫Buffer Pool,作为磁盘数据的缓存:首先有一个问题:为什么MySQL与磁盘进行
2026-10-17 00:44:18
311
原创 【MySQL】 第2期 查询与函数系统详解:从基础 CRUD 到复合多表查询
Ok了,上一期我们认识了什么是MySQL,学习了相关的DDL操作、数据类型、表的约束。下面我们趁热打铁,接着学习DML,内置函数、复合查询。日期函数是业务中使用频率最高的一类函数,用于处理时间的获取、计算、提取等操作,是按时间统计、时间范围判断的核心工具。:第一张表的每一行,都会和第二张表的所有行组合一次,最终结果行数 = 表 1 行数 × 表 2 行数。指定要插入的列,一次插入多行数据,是生产环境推荐的批量写入方式,性能远高于逐条插入。:员工编号,员工名,职位,主管编号,入职时间,薪资,奖金,部门编号。
2026-10-13 22:16:58
500
原创 【MySQL】 第1期 从核心概念到表约束全解析
Ok了,大家好久不见,前面我们一起通过15期的博客,完成了对Linux系统/网络的系统学习,接下来我们要进入到一个全新的板块——MySQL,废话不多说,我们直接开始。在编程开发中,数据存储是贯穿整个系统的核心环节。最初我们可以用普通文件来保存数据,但随着业务复杂度提升,文件在查询效率、数据管理、安全性和并发控制上的短板愈发明显。数据库正是为解决这些问题而生的一套专业解决方案数据库的本质,是一套。
2026-10-12 21:48:41
370
原创 【Linux】第16期 讲解数据链路层、ARP、NAPT 与内网穿透
正向代理是面向客户端的代理:它位于客户端和目标服务器之间,代表客户端向目标服务器发起请求。客户端明确知道目标服务器的地址,但不直接与其通信,所有请求都委托给代理服务器目标服务器只能感知到代理服务器的访问,完全不知道真实客户端的身份和 IP客户端配置代理:客户端需要手动或自动配置正向代理的 IP 和端口,系统会将外网请求定向发送给代理,而不是直接发往目标。客户端发送请求:客户端将原本要发给目标服务器的完整请求,发送给正向代理服务器。代理本地预处理。
2026-10-12 13:56:02
211
原创 【Linux】第15期 讲解IP网络层核心原理与机制
但是TCP报文是由IP协议完整交付给传输层的,也就是说,IP已经把一整个完整的TCP报文交给了传输层,只需要通过IHL确定有效载荷的起始位置,剩下的全部字节就是TCP的有效载荷。更糟糕的是,TCP 根本不知道是 IP 分片丢了,它只会感知到「这个段没收到确认」,然后重传整个段,进而又会产生一批新的分片,形成恶性循环。,一边连接内部的本地子网,一边连接外部的上级网络,因此一个路由器至少拥有两个 IP 地址,分别对应两侧的网络。只要有一个为 0,结果就是 0),最终得到的结果就是该 IP 所属的。
2026-09-09 00:29:57
179
1
原创 【Linux】第14期 详解传输层协议UDP、TCP原理
ok了,上一期我们学习了应用层协议HTTP,今天这一期我们要向下一层的学习,也就是传输层,重点要来学习UDP、TCP原理的相关知识,废话不多说,我们直接开始传输层是 TCP/IP 模型中负责的核心层,传输层通过「端口号」将数据精准分发到对应进程我们在讲解UDP、TCP原理之前,我们要在来聊聊端口号端口号(Port)是主机上每个网络应用程序的唯一标识,长度为 16 位,取值范围 0~65535。
2026-09-04 00:32:57
371
原创 【Linux】第13期 详解应用层协议HTTP+Cookie/Session+HTTPS
Cookie(也叫 Web Cookie、浏览器 Cookie)是服务器发送到用户浏览器并保存在本地的一小块数据。浏览器在之后向同一服务器发起请求时,会自动将 Cookie 携带在请求头中发送给服务器告知服务器「多个请求是否来自同一个浏览器」,从而实现保持登录状态、记录用户偏好等功能第一次用户在浏览器上填写登录信息后,浏览器向服务器发送相对应的登录信息,然后服务器进行处理认证,通过后向浏览器返回,携带Set-Cookie报头,随后在浏览器上创建Cookie,后续的所有请求都会自动携带Cookie。
2026-08-27 00:00:00
239
原创 【Linux】第12期 应用层自定义协议和序列化 + 进程组、会话与守护进程深度解析
TCP 协议的核心特性是面向字节流:它只负责可靠地传输字节序列,完全不关心字节对应的业务含义但我们的业务程序传输的都是结构化数据 —— 比如计算器服务需要传输两个操作数和运算符,聊天程序需要传输昵称、时间、消息内容。如果直接把结构体丢进网络,不仅跨平台、跨语言无法兼容,接收端也根本无法从连续的字节流中拆分出一个个独立的业务请求因此,通信双方必须提前约定数据的组织格式,约定如何拆分报文、如何解析数据,这种约定就是应用层协议要在字节流上传输结构化数据,就需要两个核心操作:如上图,我们想要发送一条消息“你好啊”
2026-08-18 18:38:35
211
7
原创 【Linux】第11期 详解Linux网络基础+socket编程
它只是一个 “通用壳子”,实际编程不会直接填充它,而是填充对应协议的专用结构体,再强制转换成。
2026-08-12 17:30:48
404
原创 【Linux】第9期 详解 Linux线程 :概念、地址空间与线程控制、同步与互斥、日志与线程池全解析
本文详细讲解了关于Linux线程的相关知识:相关概念,地址空间与线程控制,同步与互斥,线程池等等都进行了详细讲解
2026-07-26 19:40:24
186
原创 【Linux】第8期 详解 Linux 进程信号:从产生、保存到捕捉全流程底层拆解
signum:要设置的信号编号handler:信号处理函数指针,信号递达时会回调该函数如上图,运行程序后,每次我们按下Ctrl +C,程序不会退出,而是打印“获得一个信号:2”,证明Ctrl+C的本质就是向进程发送 2 号SIGINT信号如上图,还是之前的代码,我们来对比一下两者的区别,左边的当我们键盘输入指令时,程序继续执行,而右边,当我们运行可执行程序时,后面加上一个,然后我们再输入指令时,可以被执行,为什么呢??这就是下面要讲解的——前台进程与后台进程这个问题的起点:早期计算机。
2026-07-09 19:43:59
168
原创 【Linux】第7期 进程间通信 (IPC) 详解:管道 (匿名 / 命名) + System V
System V 共享内存是所有本机进程间通信中速度最快的方案内核在物理内存中开辟一块独立的内存区域,允许多个进程将这块物理内存映射到自身的虚拟地址空间中。映射完成后,进程直接读写自己的虚拟地址指针,就等同于操作这块共享的物理内存,全程不需要内核中转数据,也没有额外的内存拷贝⚠️ 天生缺陷:共享内存本身没有任何同步与互斥机制,多个进程同时读写会出现数据竞争、内容撕裂,必须配合信号量、互斥锁等同步工具一起使用System V 消息队列的本质是内核维护的一条链式消息队列。
2026-07-03 17:34:32
580
原创 【Linux】第6期 动静态库制作与原理
在 Linux 开发中,「库」是代码复用、工程模块化的核心载体,我们每天写的 C/C++ 代码,底层都依赖着 libc、libstdc++ 等系统库所以,什么是库??库是预先编写好的、成熟可复用的二进制代码集合。比如我们之前使用过的 printf、strlen… 等等库函数,都是C语言库提供的函数,库的存在极大降低了开发成本,提升了代码复用率从本质上说,库是一种可执行代码的二进制格式,可以被操作系统载入内存执行。根据链接时机和使用方式的不同,Linux 下将库分为两类:•静态库•动态库(共享库)
2026-06-29 22:55:26
538
原创 【Linux】第5期 深入理解 Linux 基础 IO 与 Ext 文件系统:从系统调用到磁盘底层
本文深入探讨了Linux系统中的文件IO机制与文件系统原理。首先介绍了Linux"一切皆文件"的设计哲学,包括普通文件、设备、进程间通信等资源的统一抽象。然后从用户态的C语言标准IO接口(fopen/fread/fwrite等)入手,详细解析了系统调用层(open/read/write等)的实现机制。重点讲解了文件描述符的本质——它是进程文件描述符表的数组索引,并通过files_struct和struct file结构体揭示了内核如何管理打开的文件。文章还涉及文件定位、标准流、位图标志位传递等关键技术点,为
2026-06-20 17:22:01
256
原创 【学习篇】第23期 C++11 核心特性 + 异常机制 + 智能指针
文章介绍了C++11带来的一些新的语法特性,以及关于C语言的异常知识,接着深入讲解了智能指针和内存泄漏
2026-06-17 16:34:58
491
原创 【Linux】第4期 Linux 进程与进程控制:一篇搞定所有核心知识点
如上图,我们自己的可执行的程序要想交给CPU来执行,首先要将它加载到内存中,生成对应的代码和数据,接着操作系统会为这个程序生成对应的 PCB 并将其链入到进程列表中,这样操作系统对进程的管理就转变成了对链表的增删查改•核心定义execle多了一个e后缀(代表environment)。它允许你自定义子进程的环境变量,而不是继承父进程的环境变量。同时它不支持自动搜索 PATH,必须写完整路径。•参数详解•完整代码示例•适用场景需要隔离子进程的环境,不希望子进程继承父进程的敏感环境变量。
2026-06-02 21:47:28
542
13
原创 【学习篇】第22期 带你手撕红黑树
现在我们假设一颗红黑树的最短路径为x ,最极端的场景下,最短路径上就是全是黑色节点(因为一旦有红色节点,这条路径就不是理论最短),那么因为有规则 3 的约束:不能有连续两个红色节点,所以最长路径就只能是使用这 x 个黑色节点,并且每个黑色节点后面就跟一个红色节点,这样就构成了理论最长路径,此时最长路径就是 2*x,是不是就满足::红⿊树最⻓路径不超过最短路径的2倍的 ,这个特性。我主页里有更好康的呦!如上图, c 和 parent 为红色,并且此时的 u 为红色,g 为黑色,这时候要进行的就是变色操作。
2026-05-27 22:17:58
530
原创 【学习篇】第21期 超详解 AVL树
如上图,当子树 a 的高度因为插入了一个节点而增加 1 ,对于 a 来说,这时父节点的 bf 变为 -1 ,祖父的 bf 变为 -2,说明因为 subL 这个节点的左子树高度增加了 1 个,导致了 subL 的左边高了一个,parent 的左边也高了一个,这时就要进行。我主页里有更好康的呦!ok了,正如标题所见,今天我们这一期学习的是让很多同学都望而生畏的AVL树,大家肯定是听过诸如“左旋”,“右旋”,“左右双旋” 这种的一些名词,看上去挺唬人的,今天就和同学们一起看图搞懂并实现 AVL树。
2026-05-27 00:52:53
486
原创 【Linux】第3期 Linux 基础开发工具全家桶
• 语法:变量名= “值”• 功能:定义可复用的常量,统一管理配置,修改时只需改一处,和 #define 相似。
2026-05-20 21:23:40
542
原创 【学习篇】第20期 超详解 C++ 多态:从语法规则到底层原理
多态是⼀个继承关系的下的类对象,去调⽤同⼀函数,产⽣了不同的⾏为。⽐如Student继承了Person。Person对象买票全价,Student对象优惠买票。• 必须是用基类的指针或者引⽤来调⽤虚函数• 被调⽤的函数必须是虚函数,并且完成了虚函数重写/覆盖。问题:为什么必须使用基类的指针或引用来调用虚函数,不能用基类对象调用?因为基类对象只能容纳基类的成员,无法容纳派生类的成员。当你用派生类对象给基类对象赋值时,会发生切片(Slice),派生类的部分会被切掉,只剩下基类的部分。
2026-05-17 17:21:21
1815
原创 【学习篇】第19期 一文彻底搞懂C++继承
在 C++ 面向对象编程(OOP)中,继承是三大核心特性(封装、继承、多态)之一,也是实现代码复用、构建类层次结构的核心手段继承是指一个类(派生类 / 子类)可以复用另一个类(基类 / 父类)的成员变量和成员函数,同时可扩展自身独有特性的机制。简单说:继承就是 “复用 + 扩展”,是类设计层面的代码复用(区别于函数层面复用)。
2026-05-15 17:05:13
507
原创 【Linux】第2期 一文彻底搞懂 Linux 权限管理
是其最核心的设计哲学,这就必然涉及到对文件的权限管理,本文将从最基础的概念讲起,通过大量的实例和图解,带你彻底搞懂 Linux 权限管理的方方面面,让你从权限小白变成权限管理高手。Linux 系统通过权限机制来控制用户的行为,防止误操作的发生,同时也保护了系统和用户数据的安全。但实际上我们创建的文件和目录,看到的权限往往不是上面这个值。:如果目录有写权限,用户是否可以删除目录中的文件,而不论这个用户是否有这个文件的写权限?,也就是说,不同的角色(用户)对不同的目标(文件 / 目录)拥有不同的操作权限。
2026-05-11 23:06:59
584
原创 【学习篇】第18期 C++模板
C++ 程序通常采用分离编译的方式:• 将程序分为多个.cpp源文件• 每个源文件单独编译成目标文件(.o或.obj)• 最后将所有目标文件链接成可执行文件模板是 C++ 泛型编程的核心,它让我们能够编写与类型无关的通用代码,极大地提高了代码的复用性和可维护性。
2026-05-09 23:20:21
604
1
原创 【Linux】第1期 教你白嫖6个月的阿里云服务器 + Linux 常用指令学习
| ” 管道,充当的作用就像是 “临时的一块地方”,先把所有的日志打印到这块临时地方,接着取前 600 条日志再次打印到临时的地方,接着取最后 10 行,这样我们就提取出590 ~600 这个区间的日志了。如上图,输入指令后,给出了当前路径下的所有目录和文件的所有属性,即文件信息。
2026-04-24 01:06:05
650
11
原创 【学习篇】第17期 C++入门必看——类和对象全站最详篇
如上图所示,class为定义类的关键字,在class后面的Date是类的名字,{}中为类的主体,要注意类定义结束时后面的分号不能省略。类体中的内容称为类的成员,类中的变量称为类的属性或者成员变量;类中的函数成为类的方法或=成员函数为了区分成员变量,一般我们会在成员变量加一些特殊标志,比如在其前面或后面加 " _ " 或者以 “ m ” 为开头,但不是一定要做的,只是个人习惯。
2026-04-18 22:05:05
610
15
原创 【实战篇】 第14期 算法竞赛_数据结构超详解(下)
【你奶奶都能听懂的算法数据结构】 第14 期 数据结构ok,我们书接上回,上一期我们学习了在算法竞赛中数据结构相关的知识,一起学习了顺序表、链表、双向链表、栈、队列这几个数据结构。今天我们来学习下半部分,内容包括:树、二叉树、堆、红黑树、哈希表这几个数据结构在学习篇中我们已经超详细的讲解了树相关的知识,这里补充两点:所谓的无序树简单来说就是,一棵树上下关系保证不变,同一层的节点顺序可以更换• 有根树:树的根节点已知,是固定的。• ⽆根树:树的根节点未知,谁都可以是根结点。在竞赛中一般的树形结构是一个无序
2026-02-03 23:12:41
1012
2
原创 【实战篇】 第13期 算法竞赛_数据结构超详解(上)
今天这一期来更新一下实战篇,就如标题所见,在竞赛算法题中,很多时候我们要使用一些数据结构来帮助我们进行对数据进行增、删、查、改的操作,前面我们在学习篇里已经学习过了一些数据结构,那为什么 要在实战篇里又要学习数据结构呢?那当然是因为有很大的不同。前面的数据结构偏向于工程,实现起来很复杂,但是在竞赛算法中,我们追求的是速度,不可能为了实现一个数据结构,从头开始写相关的函数实现吧?所以有了这一期算法竞赛中的数据结构,这是上半部分,我们将一起学习:顺序表、链表、双向链表、栈、队列这几个数据结构,还会介绍C++中给
2026-01-18 00:35:03
913
1
原创 【学习篇】 第16期 全站最全七大排序超超超详解
所谓稳定性,是指排序后,相同元素的相对位置没有被改变如上图,未排序时 “红色的2” 在 “绿色的2” 的前面,排完序后稳定的话会保证相对位置不变,不稳定的反之稳定毋庸置疑,冒泡肯定是稳定的,它每次只是将待排区间的数中的最值放到数组最后,其他数的相对位置不会改变不稳定这个是非常非常非常容易错的,几个例子:如上图,我们遍历待排区间,如果 1 是最小的数,就要与数组开头交换,可以发现 6 的相对位置就改变了稳定不稳定因为希尔排序会选择 gap 为快速跳跃的步长,就会破坏稳定性不稳定。
2026-01-07 01:37:45
1108
2
原创 【你奶奶都能听懂的C语言】实战篇 第12期 滑动窗口算法
【你奶奶都能听懂的C语言】第12期 滑动窗口算法ok了,依旧是一个星期至少一篇,今天继续我们的算法学习,这一期实战篇要学习的算法是——滑动窗口滑动窗口算法本质是用两个左、右指针来动态的维护一个“窗口”(区间),通过题目中具体的条件来更新区间的范围,从而在O(n) 的时间复杂度来解决“子串”相关问题。要注意的是,“更新结果”这一步不一定是在“出窗口”的后面执行,要具体题目来定接下来就开始我们的云刷题:看到题目,要让我们求出长度最小的一段子数组,满足 “之和大于等于 target”这个条件如上图,给这样的
2025-12-14 01:08:15
1081
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅