自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 TCP 通信中的四种核心异常情况

如网络严重拥塞、路由环路、防火墙屏蔽报文、跨网传输时的长时间丢包,导致双方能收发少量报文,但无法正常传输数据,连接处于 “看似正常,实际不可用” 的状态。针对 TCP 的非优雅异常(掉电、断网、连接假死),仅依赖 TCP 层机制(保活)不够灵活(默认超时时间过长),需。重启后的主机无任何历史连接状态,对端的残留连接会被 RST 报文终止,属于。,TCP 层会完成完整的连接释放,无残留连接状态,也不会产生脏数据。,TCP 层无任何主动响应(因无法收发报文),核心依赖 TCP 的。,并触发 TCP 的。

2026-03-16 11:33:09 431

原创 TCP/IP 协议:从分层原理到核心机制

分层逻辑:应用层(做什么)→传输层(传给谁)→网络层(怎么走)→数据链路层(怎么传),数据自上而下封装,自下而上解封装;传输层核心:TCP 的可靠传输(确认应答、超时重传、滑动窗口、流量控制、拥塞控制)和 UDP 的轻量传输,是网络编程的重点;网络层核心:IP 地址的管理(CIDR、私有 IP / 公网 IP)、路由选择、NAT 技术,实现跨网通信,解决 IPv4 地址枯竭问题;数据链路层核心。

2026-03-15 19:04:02 445

原创 Python 字符串高频操作

填充(补空格 / 字符)常用于格式化输出、表格对齐;统一大小写是文本处理的基础操作,常用于用户名、验证码、日志文本等场景(如不区分大小写的搜索、统一格式展示)。格式化是字符串的 “门面操作”,决定了数据展示的可读性。从解析 CSV 数据、URL 参数,到拼接单词、生成路径,拆分与合并是字符串处理的。,无论是查找关键词、替换敏感词,还是判断字符串开头 / 结尾,都离不开这些方法。日常开发中常需校验字符串是否为纯数字、纯字母、合法标识符等,这些方法能快速完成。是目前最推荐的方案。

2026-03-13 20:41:57 396

原创 MySQL 复合查询与表连接

多表查询的关键是通过关联字段消除笛卡尔积,表别名能简化代码并解决字段歧义;自连接是特殊的多表查询,将一张表当作两张表使用,适用于表内自身关联的场景;子查询灵活多变,可作为筛选条件、临时表使用,需根据返回结果选择inallany等运算符;合并查询用union(去重)和union all(不去重),要求多个 select 语句的字段结构一致;表连接推荐使用标准语法(join),内连接返回匹配记录,外连接(left/right join)保留某张表的全量数据,未匹配字段为 NULL。

2026-03-12 11:01:15 387

原创 MySQL 内置函数

select concat(name, '的语文是',chinese,'分,数学是',math,'分') as '分数' from student;日期函数:聚焦获取、增减、差值,解决时间筛选和计算,now()date_add()datediff()为高频;字符串函数:核心是拼接、截取、替换concat()replace()能满足大部分字符处理需求;工具函数ifnull()处理空值、md5()用于加密、length()计算字节长度,都是开发必备。

2026-03-12 10:56:26 342

原创 MySQL 索引核心特性深度解析:从底层原理到实操应用

MySQL 的索引本质是基于B + 树的数据结构实现,InnoDB 和 MyISAM 引擎均采用 B + 树作为索引结构(MEMORY 引擎支持 HASH 和 B + 树)。为什么 B + 树能成为索引的最优选择?我们从数据组织的过程逐步解析。索引的本质是B + 树,通过空间换时间,减少磁盘 IO 次数,提升查询效率,代价是降低写操作性能,占用磁盘空间。InnoDB 的核心是聚簇索引,主键索引与数据合二为一,辅助索引需要回表查询,MyISAM 仅支持非聚簇索引,索引与数据分离。

2026-03-10 20:17:59 344

原创 MySQL 事务管理核心解析:从 ACID 到 MVCC 深度理解

事务是由一组逻辑相关的 DML 语句组成的操作集合,MySQL 通过专属机制保证这组操作的整体性;同时事务规定,不同客户端在并发操作时,看到的数据可以是不同的,以此实现隔离性。适用场景:操作量大、步骤复杂且存在数据关联的场景,如金融转账、电商下单、系统数据批量修改 / 删除等。事务是解决数据库并发问题和操作完整性的关键,仅 InnoDB 引擎支持;ACID 是事务的核心特性,原子性、隔离性、持久性保障技术层面的正确性,一致性需业务逻辑 + 技术共同保障;MySQL 有四种隔离级别,默认。

2026-03-10 20:09:15 362

原创 Linux基础命令大全

curl -o [文件名] [URL] # 下载文件并指定文件名,例:curl -o nginx.tar.gz https://nginx.org/download/nginx-1.24.0.tar.gz。wget -O [文件名] [URL] # 下载文件并指定文件名,例:wget -O nginx.tar.gz https://nginx.org/download/nginx-1.24.0.tar.gz。

2026-03-05 17:35:42 455

原创 解锁测试用例设计的核心逻辑

测试用例(Test Case)是为实施测试向被测试系统提供的一组集合,包含测试环境、操作步骤、测试数据、预期结果等核心要素,而明确定义预期输出或结果是测试用例编写的必备原则。简单来说,一个完整的测试用例,能让任何一名测试人员按照步骤操作,都能得到可验证、可复现的测试结果。

2026-03-01 10:58:01 591

原创 软件开发生命周期与开发模型

软件开发模型的演变,是软件工程从 “重流程、重文档” 到 “重产品、重交付”,从 “拒绝变化” 到 “拥抱变化” 的过程。瀑布模型作为基础,奠定了软件生命周期的核心框架;螺旋模型聚焦风险控制,解决了大型项目的开发难题;增量与迭代模型通过分块开发和反复求精,实现了产品的逐步落地;敏捷模型则结合了增量与迭代的优势,成为互联网时代适配需求变化的最优解。在实际项目开发中,纯单一的开发模型并不多见,更多的是模型的融合与优化。

2026-02-28 15:21:56 569

原创 经典力扣、牛客好题

思路:这道题运用递归的思想,将大问题分成小问题,要想知道某个数是2的几次方相加得知,首先通过按位与1,知道下标为几的位置为1,并且用vector保存下来,设置string变量来放最后求得格式,遍历vector中内容,若i不等于0,加等“+”,若数组内容为1,增加“2”,若不为1,继续递归。的串末位可能是1,所以要分类讨论,若末尾为1,f1(n),末尾为0,f0(n),末尾为0,长度为N,可由f1(N-1)和f0(N-1)得到,末尾为1,长度为N,可由f0(N-1)得到。思路:运用递归分治的思想,长度为。

2026-02-28 11:37:22 646

原创 深度解析 C++ list

在 C++ 标准模板库(STL)中,std::list是一个基于双向链表实现的容器。它与等连续存储容器有着截然不同的性能特征和适用场景。本文将从底层原理、核心接口、性能分析到实际应用,带你全面掌握list的使用。

2026-01-27 10:47:07 227

原创 深入浅出 C++ vector

当 vector 存储自定义类 /string等需要深拷贝的类型时,若手动实现拷贝构造 / 赋值运算符,需注意深拷贝,否则会导致二次释放内存(崩溃)。public:// 拷贝构造(深拷贝)// 赋值运算符(深拷贝)if (this!// 释放原有内存// 使用时无需担心浅拷贝问题// 深拷贝,安全底层通过三个指针维护连续内存,size 是实际元素数,capacity 是内存容量;

2026-01-25 18:30:52 633

原创 C++String类

string是 C++ 标准库(STL)中定义的字符串类,位于<string>头文件下,属于std命名空间。它本质上是的特化版本,底层封装了字符数组,并提供了一系列成员函数和运算符重载,简化了字符串的增删改查、拼接、比较等操作。string是 C++ 处理字符串的首选工具,封装了内存管理,提供了丰富的成员函数和运算符重载,比 C 语言字符数组更安全、便捷;核心操作需掌握:初始化、长度判断、字符访问、拼接、查找替换、截取、比较;进阶重点:理解自动扩容机制,避免越界、类型不匹配等常见陷阱;

2026-01-24 15:31:27 779

原创 C++模板初阶

templateclassT1classT2, ...,classTnclass类模板名//类内成员定义。

2026-01-22 11:17:28 154

原创 C++内存管理

1. 调用operator new函数申请空间2. 在申请的空间上执行构造函数,完成对象的构造。

2026-01-21 18:59:58 228

原创 C++类和对象-下

尽量使⽤初始化列表初始化,因为那些你不在初始化列表初始化的成员也会⾛初始化列表,如果这个成员在声明位置给了缺省值,初始化列表会⽤这个缺省值初始化。内部类本质也是⼀种封装,当A类跟B类紧密关联,A类实现出来主要就是给B类使⽤,那么可以考虑把A类设计为B的内部类,如果放到private/protected位置,那么A类就是B类的专属内部类,其。友元提供了⼀种突破类访问限定符封装的⽅式,友元分为:友元函数和友元类,在函数声明或者类 声明的前⾯加friend,并且把友元声明放到⼀个类的⾥⾯。

2026-01-21 10:09:09 802

原创 C++中类和对象-上

•class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后⾯分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的⽅法或者成员函数。•为了区分成员变量,⼀般习惯上成员变量会加⼀个特殊标识,如成员变量前⾯或者后⾯加_ 或者 m开头,注意C++中这个并不是强制的,只是⼀些惯例,具体看公司的要求。•C++中struct也可以定义类,C++兼容C中struct的⽤法,同时struct升级成了类,明显的变化是。

2026-01-19 19:00:01 925

原创 C++入门基础

C++的引⽤跟其他语⾔的引⽤(如Java)是有很⼤的区别的,除了⽤法,最⼤的点,C++引⽤定义后不能改变指向,也是类似,在类型转换中会产⽣临时对 象存储中间值,也就是时,rb和rd引⽤的都是临时对象,⽽C++规定临时对象具有常性,所以这⾥就触发了权限放⼤,必须要⽤常引⽤才可以。编译查找⼀个变量的声明/定义时,默认只会在局部或者全局查找,不会到命名空间⾥⾯去查找。C++中指针和引⽤就像两个性格迥异的亲兄弟,指针是哥哥,引⽤是弟弟,在实践中他们相辅相成,功能有重叠性,但是各有⾃⼰的特点,互相不可替代。

2026-01-18 20:00:19 686

原创 各种排序的算法

时间复杂度为O(N^2),空间复杂度为O(1),算法不稳定,实际应用效果不大。时间复杂度为O(N^2),空间复杂度为O(1),算法稳定,实际应用效果不大。时间复杂度为O(n*logn),空间复杂度为O(logn),算法不稳定。时间复杂度为O(n*logn),空间复杂度为O(1),算法不稳定。时间复杂度为O(n^1.3),空间复杂度为O(1),算法不稳定。时间复杂度为O(n*logn),空间复杂度为O(n),算法稳定。时间复杂度为O(n+k),空间复杂度为O(n+k),算法稳定。

2026-01-17 20:30:46 134

原创 二叉树的相关操作

5.二叉树查找值为x的节点。4.二叉树第k层节点个数。2.二叉树叶子节点个数。11.判断平衡二叉树。

2026-01-15 18:55:18 257

原创 栈和队列定义与实现

【代码】栈和队列定义与实现。

2026-01-13 16:17:29 217

原创 链表的一些操作

通过使用快慢指针来判断是否会相遇,进而判断环的问题。

2026-01-12 11:05:45 127

原创 文件操作:让程序 “永久保存” 数据

fclose。

2026-01-06 17:10:45 371

原创 结构体:C 语言里的 “数据打包神器”

结构体类型的定义是先声明数据的组合规则struct 结构体名 {数据类型 成员1;数据类型 成员2;// ...更多成员// 书名(字符串)// 价格(浮点型)int page;// 页数(整型)// 基于struct Book类型,创建变量b12. 定义类型时直接创建变量int page;} b2, b3;// 定义类型的同时,创建b2、b3两个变量struct Book b1 = {"C语言从入门到精通", 59.9, 300};2. 单独初始化成员(用 “.” 访问成员)

2026-01-05 14:57:26 394

原创 整数与浮点数在内存中的存储机制

(0 表示正数,1 表示负数),但直接用 “符号位 + 原码” 会导致运算错误(如。,通过 “符号位 + 指数位 + 尾数位” 的编码方式存储。,实际存储的是近似值,多次运算后误差会累积。:将减法运算转换为加法运算,简化硬件设计。无符号整数仅表示非负数值,其存储方式是。,无法直接用二进制映射,因此遵循。当整数超出其取值范围时,会发生。解决正负值的表示与运算问题。在内存中存储为上述补码。,32 位内存中存储为。),二者的存储核心是。,但有符号整数需通过。有符号整数的最高位是。占 64 位,结构与。

2026-01-04 21:00:53 474

原创 内存操作函数

内存操作函数(memcpymemsetmemcmp)是 C 语言处理任意内存数据的核心工具,不依赖'\0',通用性极强。void*通用指针是内存操作函数通用性的关键,内部实现需转换为char*以字节为单位操作。memcpy负责拷贝,memset负责填充,memcmp负责比较,使用时需牢记字节操作的核心和避坑要点。相比字符串操作函数,内存操作函数更安全、更通用,是处理二进制数据、结构体、数组的首选,也是深入理解 C 语言内存模型的重要入口。

2026-01-04 19:05:59 657

原创 C 语言指针

回调函数不是由该函数的实现⽅直接调⽤,⽽是在特定的事件或条 件发⽣时由另外的⼀⽅调⽤的,⽤于对该事件或条件进⾏响应。const如果放在*的左边,修饰的是指针指向的内容,保证指针指向的内容不能通过指针来改变。const如果放在*的右边,修饰的是指针变量本⾝,保证了指针变量的内容不能修改,但是指针指。概念: 野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)数组指针变量应该是:存放的应该是数组的地址,能够指向数组的指针变量。函数指针变量应该是⽤来存放函数地址的,未来通过地址能够调⽤函数的。

2026-01-03 22:27:50 237

原创 扫雷小游戏

扫雷是一款经典的单人益智小游戏,本文将详细介绍如何使用 C 语言从零开始实现一个简易的扫雷游戏,包括整体设计思路和具体代码实现步骤。

2025-12-29 19:53:48 359

原创 C语言分支循环语句

无论是简单的条件判断(比如 “成绩是否及格”),还是复杂的重复执行(比如 “计算 1 到 100 的和”),都离不开这两类语句。与 while 的区别:循环体先执行一次,再判断条件(适合 “必须执行一次” 的场景,比如密码输入验证)。for 循环将 “初始化、条件判断、更新变量” 整合在一行,结构清晰,适合已知循环次数的场景。执行流程:先判断条件 → 条件为真则执行循环体 → 再次判断条件(直到条件为假,退出循环)。(1)在循环中,break 和 continue 用于灵活控制循环流程:​。

2025-12-28 19:42:14 642

原创 菜鸟的编程之始

生活中我喜欢拆解问题、动手实践,拼乐高时的专注与解锁新技能的成就感,让我对编程背后的逻辑魅力深深着迷 —— 从日常 APP 到智能工具,技术改变生活的力量始终吸引着我,如今终于下定决心开启系统学习之路。我倾向于c++研发方向,我的编程目标分阶段推进:短期 3-6 个月吃透 c语言和数据结构 基础,搞定语法、函数等核心知识点,一年内希望能学完c++,linux,数据库等技术,用代码解决实际需求。这是我的第一篇博客,未来会持续记录学习点滴、项目成果与踩坑心得,期待和各位同路人交流互助,在编程世界里稳步成长!

2025-12-27 17:41:25 206

空空如也

空空如也

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

TA关注的人

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