自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 攻克 MySQL:从 B+ Tree 底层进化论到隔离级别的技术内幕

在 InnoDB 中,表数据本身就是按照 B+ Tree 组织的数据结构。在理解 B+ Tree 之前,我们得先看看它的“前身”们遇到了什么瓶颈。

2026-05-29 16:00:31 371

原创 深度解密:从 TCP 三次握手到 TLS 1.2 加密,看这一篇就够了

《后端面试必杀技:TCP/HTTPS核心机制与HTTP状态码精析》摘要: 本文深度剖析后端面试高频考点:1)TCP三次握手底层逻辑,详解SYN_SENT/SYN_RCVD状态流转,指出两次握手的资源浪费风险;2)TIME_WAIT的2MSL设计意义及高并发场景优化方案;3)HTTPS的TLS1.2握手全流程,包括密钥交换机制与性能损耗根源;4)HTTP状态码实战解读,区分301/302重定向本质差异,解析502/504等网关错误场景。全文聚焦协议栈底层设计思想,提供从原理到生产环境的系统性解决方案,助开发者

2026-05-29 15:53:45 476

原创 《Linux GDB 调试完全指南:从入门到实战》

《Linux下GDB调试C/C++程序指南》 摘要:本文全面介绍Linux环境下使用GDB调试C/C++程序的实用技巧。从GDB基础安装配置开始,详细讲解调试关键操作:编译时添加-g参数生成调试信息;使用run、break、step等命令控制程序执行;通过print、backtrace等工具分析变量和调用栈。文章还深入探讨条件断点设置、变量监视、动态库调试等高级功能,并推荐结合Valgrind进行内存检查。针对实际开发场景,提供了优化调试效率的建议,包括脚本化调试流程和core文件分析技巧,帮助开发者快速定

2026-05-12 21:58:38 576

原创 深度理解 C++ 继承与多态:从底层原理到实战技巧

本文深入解析C++面向对象编程中的继承与多态两大核心概念。继承部分重点讲解三种继承方式(public/protected/private)的区别及构造/析构顺序,强调基类虚析构函数的重要性。多态部分通过虚函数和纯虚函数示例,展示如何实现动态绑定。文章还剖析了底层机制,包括虚函数表的内存开销,并解答了为何基类析构函数必须声明为虚函数的关键问题。最后总结继承用于代码复用和多态用于接口解耦的设计思想,为开发者提供深入理解这两大特性的实用指南。

2026-05-12 16:07:14 378

原创 告别重复造轮子:Codex写脚本的技术

本文介绍了利用OpenAI Codex编写脚本的技术实践,重点探讨如何通过AI辅助避免重复编码工作。文章首先解析Codex的基本原理,说明其基于GPT-3训练、支持多语言代码生成的特点。核心内容包括:脚本生成的具体方法(需求描述、逻辑拆解)、优化技巧(上下文约束、迭代修正)以及注意事项(代码安全、性能优化)。通过实际案例展示了自动化部署脚本和数据预处理流水线的实现方法,强调清晰的需求描述和必要的人工审查是保证生成质量的关键。这种技术实践能显著提升开发效率,让开发者更专注于核心创新工作。

2026-05-11 12:28:25 204 1

原创 C++ STL核心容器总结

本文介绍了C++ STL中常用容器的特性与使用技巧。string底层采用SSO优化,查找和截取操作需注意npos判断;vector连续存储但扩容开销大,建议提前reserve;list适合频繁插入删除但无法随机访问;stack和queue是容器适配器,不支持遍历;set自动去重排序,map提供键值对映射功能,需注意[]操作符的副作用。文章还对比了有序(map/set)和无序(unordered_map/unordered_set)容器的区别,建议根据有序性需求选择合适容器。掌握这些特性可显著提升编程效率和性

2026-05-11 12:23:49 532 3

原创 C++类和对象详解

本文摘要:C++类与对象基础概念总结,包含类的定义、构造函数、拷贝构造和运算符重载等内容。类作为对象的蓝图,通过访问限定符实现封装,包含成员变量和成员函数。构造函数用于初始化对象,析构函数负责资源释放。拷贝构造函数处理对象复制,需注意浅拷贝问题。运算符重载允许自定义类对象的操作行为,如+、<<等运算符。文章详细介绍了这些核心概念的语法规则和使用场景,为C++面向对象编程提供基础指导。

2026-03-29 20:41:42 506 3

原创 开源项目Git贡献全流程拆解

git clone。

2026-03-29 20:39:27 54 1

原创 C++基础

定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接⼀对{}即可,{}中即为命名空间的成员。命名空间中可以定义变量/函数/类型等。namespace本质是定义出⼀个域,这个域跟全局域各自独立,不同的域可以定义同名变量C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找⼀个变量/函数/类型出处(声明或定义)的逻辑,所有有了域隔离,名字冲突就解决了。局部域和全局域除了会影响编译查找逻辑,还会影响变量的生命周期,命名空间域和类域不影响变量生命周期。

2026-01-20 11:51:31 737 1

原创 内存分配函数

总是检查返回值:这三个函数在失败时都返回 NULL匹配使用free:分配的内存必须用 free() 释放realloc可能移动内存:realloc 可能返回不同的指针地址避免内存泄漏:确保所有分配的内存最终都被释放不要重复释放:同一块内存不能释放两次。

2025-11-26 17:45:56 827

原创 动态内存题目分析

并且 GetMemory(str)是函数一级指针调用,形参p接收的是str的副本,且在函数GetMemory中修改副本不影响原始str。这个代码本身逻辑没有问题,我们会误以为GetMemory函数返回p的地址会给到变量str,实际上站栈内存的生命周期会随着函数的结束而销毁。我们通过二级指针传址调用来实现了在函数中修改主调函数中str的指向,通过free函数将内存释放给系统,供其他程序使用避免了程序内存泄露。而前面的题目一之所以可以接受到GetMemory函数返回的地址,是因为p储存的是堆内的地址。

2025-11-12 20:04:15 296 8

原创 深入理解指针

那我们通过取地址操作符(&)拿到的地址是⼀个数值,⽐如:0x006FFD70,这个数值有时候也是需要 存储起来,⽅便后期再使⽤的,我们把这样的地址值存放在指针变量中。其中pap的类型是int*,这⾥pap左边写的是类型的对象, * 是在说明pa是指针变量,⽽前⾯的 int 是在说明pa指向的是整型(int)类型的对象。上述代码 根据数组名是数组⾸元素的地址这个规则,⼆维数组的数组名表⽰的就是第⼀行的地址,是⼀ 维数组的地址。根据上⾯的例子,第⼀行的⼀维数组的类型就是 int [5]

2025-11-03 22:03:58 1156 6

原创 不能创建临时变量(第三个变量),实现两个整数的交换

这种方法巧妙的运用了简单的算法来实现题目要求,a = a + b 是关键。它储存了a,b的总和。这个时候总和减去b的值就是a,然后将这个值赋给b就实现了b值的交换。此时b值是原本的a的值。因此a - b就是实现了a值的交换。当看到这个题目的时候,第一眼是非常简单,但是第二眼看到限制条件的时候突然蒙住了。我们普遍交换变量的想法就是创建一个赋值为零的变量当作“空瓶子”来实现这两个整数的交换。这两个公式,其中(a ^ b) ^ b = a,把a的值赋值给b,(a ^ b) ^ a = b则是把b的值给a。

2025-09-18 23:48:09 415 5

原创 用C语言实现扫雷游戏

在扫雷游戏中每当你排新的未知格子的时候会有数字显示,如下图:它代表着以你点击的方块为中心周围8个方块中含雷的个数,下图就代表着红色方块中有3个雷。经过以上就完成了棋盘的初始化,为了检验我们写得代码是否正确,棋盘初始化是否完成,我们写一个打印棋盘的代码,打印出来看看是否棋盘初始化正确。把该函数放入game()中,我们有两个棋盘一个是储存数据的大棋盘,一个是给用户玩的隐藏小棋盘。这里我们要用定义COLS和ROWS 也就是11*11棋盘 但是我们打印的是9*9的棋盘,显示给玩家的是9*9的棋盘。

2025-09-13 23:15:48 1245 7

原创 C语言基础知识点速通

我学习的第一门编程语言是C语言,本文主要是C语言基础知识点,方便后续学习查看(持续更新)。也欢迎大家补充讨论。

2025-09-01 20:31:37 729 6

空空如也

空空如也

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

TA关注的人

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