- 博客(103)
- 收藏
- 关注
原创 Windsurf 远程 SSH 卡死排查记录
摘要:Windsurf远程SSH连接卡死问题排查 针对Windows环境下Windsurf远程连接Ubuntu虚拟机卡死的问题,分析发现: 本地SSH配置中ControlPath使用非法Windows路径导致连接卡死 远程服务器存在残留的.windsurf-server目录和安装锁文件 解决方案: 修正SSH配置,避免使用相对路径和中文路径 删除远程服务器上的残留文件和安装锁 重新建立连接完成服务器安装后恢复正常 排查要点包括区分本地SSH与远程服务器问题、清理安装锁文件以及正确解读错误日志。通过修正路径配
2025-11-15 00:22:37
1633
4
原创 10个TCP可靠性与拥塞控制题目整理
TCP可靠性与拥塞控制核心机制摘要: TCP通过序列号/ACK确认、超时重传和滑动窗口三大机制保证可靠性。ACK采用累积确认方式,确认已收到数据并指示期望的下个字节序号。超时重传(RTO)动态计算超时时间并采用指数退避策略。滑动窗口机制通过接收方通告的rwnd控制发送速率,避免接收方过载。特殊处理包括零窗口探测(定期发送1字节探测包)和快重传(收到3个重复ACK立即重传)。拥塞控制通过慢启动、拥塞避免等算法调节发送速率。实际编程中需注意send()可能只发送部分数据,需循环发送确保完整传输。这些机制共同构成
2025-11-06 22:35:11
948
原创 10个Tcp三次握手四次挥手题目整理
【TCP连接管理核心总结】 本文整理了TCP三次握手与四次挥手的关键知识点,包括: 三次握手流程与状态变化,强调"确认双方收发能力"和"防止历史连接"的设计初衷 四层挥手过程详解,剖析TIME_WAIT状态的2MSL等待机制及其必要性 实战经验: 全连接队列溢出导致丢连接的解决方案 端口重用(SO_REUSEADDR)处理TIME_WAIT问题 SYN Cookie防御DDoS攻击的配置 特殊场景分析:第三次握手携带数据、CLOSE_WAIT泄露的代码缺陷等 (148
2025-11-06 22:31:35
674
原创 HTTP协议深度解析:从基础到性能优化
本文系统梳理了HTTP协议的核心知识点,包括协议基础、请求响应格式、状态码、HTTP/1.1特性,以及项目实现。主要内容: HTTP基础:无状态协议,基于TCP,默认端口80/443,包含请求行/头/体和响应行/头/体结构 请求方法:GET(获取资源)、POST(创建资源)等,重点分析GET/POST区别和幂等性概念 状态管理:通过Cookie和Session机制解决HTTP无状态问题,详解登录流程和安全属性 HTTP/1.1关键特性:持久连接、缓存验证、Host头、分块传输等优化机制 项目实践:在C++
2025-11-04 16:27:56
911
原创 TCP可靠传输的秘密:从滑动窗口到拥塞控制
本文深入解析TCP协议的可靠传输机制,主要包含三大核心机制: ACK确认机制:通过序列号和确认号保证数据有序到达,介绍累积确认、选择性确认(SACK)和捎带确认的工作原理。 超时重传机制:详细讲解RTO动态计算方法和快速重传触发条件(3个重复ACK),包括RTT测量和SRTT平滑算法。 滑动窗口与拥塞控制:分析流量控制与拥塞控制的区别,阐述慢启动、拥塞避免、快速恢复等算法,并通过Linux内核源码和Reactor项目实例说明实际应用。 文章还解答了常见面试问题,如ack=500的真实含义、滑动窗口与send
2025-11-03 18:18:50
653
原创 深入理解TCP连接管理:三次握手与四次挥手
TCP连接管理是网络通信的核心,本文深入解析了TCP三次握手和四次挥手的关键机制。三次握手确保可靠连接建立,防止历史连接导致的资源浪费;四次挥手则保证数据完整传输和连接安全关闭。文章详细探讨了SYN攻击防御(如SYN Cookie)、TIME_WAIT状态作用和常见问题(CLOSE_WAIT堆积)。通过Reactor项目实战,展示了实际开发中的连接管理技巧和问题排查方法,包括端口占用、连接泄漏等场景处理,为网络编程面试和工程实践提供全面指导。
2025-11-03 18:13:55
758
原创 递归专题5 - FloodFill算法专题
本文是递归算法系列的第5篇,聚焦FloodFill算法专题。通过对比FloodFill与网格DFS的核心差异,总结出FloodFill的特点是不需要回溯和恢复现场,直接修改原数组进行填充。文章提供了FloodFill的通用模板和六个典型应用案例,包括图像渲染、岛屿数量统计、最大面积计算等,详细分析了每种应用的具体实现方法和关键技巧。特别强调了避免无限递归等常见错误,帮助读者掌握FloodFill算法的核心思想和实践要点。
2025-10-31 16:30:55
324
原创 递归专题4 - 网格DFS与回溯
本文介绍了网格DFS算法的两种实现形态及其应用场景。第一种形态采用bool返回值,适用于只需找到一条路径的问题(如单词搜索),通过剪枝提前终止搜索;第二种形态采用void返回值,适用于需要遍历所有路径或寻找最优解的问题(如黄金矿工),通过全局变量记录结果。文章对比了两种形态的特性差异,提供代码模板和典型例题,并强调恢复现场和返回值选择的关键作用,帮助读者掌握网格DFS的正确使用方法。理解这两种形态的区别能有效提升网格类问题的解题效率。
2025-10-31 15:01:11
492
原创 递归专题3 - 回溯算法十大类型
本文详细总结了回溯算法的十大类型,系统分析了各类问题的特征与解题模板。文章首先阐述了回溯算法的本质是"尝试-撤销"的递归过程,强调恢复现场的关键时机。然后通过对比表格清晰呈现了全排列、子集、组合等七种基础类型的区别,包括集合来源、check数组使用、for循环起点等核心特征,并提供了标准代码模板。对每种类型都结合LeetCode典型题目进行实例说明,如全排列型需要从头遍历和check数组,而子集型则通过index参数避免重复。文章特别指出判断问题类型的关键因素,帮助读者快速定位适用解法,
2025-10-31 14:12:58
373
原创 VMware虚拟机无法启动问题解决记录
VMware使用.lck文件来标记虚拟机正在运行,防止多个进程同时访问同一个虚拟机,避免数据损坏。VMware虚拟机无法启动,提示"正在使用中"锁文件(.lck)未被正常清理关闭VMware进程 → 删除.lck文件 → 重新启动约3分钟100%安全,无数据丢失风险遇到类似问题时,删除.lck文件是安全且有效的,这些文件只是进程锁定标记,不包含任何虚拟机数据。
2025-10-30 15:31:38
1305
原创 递归专题2 - 二叉树DFS
本文是递归算法系列的第2篇,重点探讨二叉树DFS的递归解法。主要内容包括: 三种遍历方式及其适用场景: 前序遍历(自顶向下)适合需要先处理父节点的题目 中序遍历(左中右)适用于BST相关问题 后序遍历(自底向上)适合需要先知道子树信息的题目 两种递归返回值模式: void返回值+全局变量:适用于需要遍历所有路径、结果累积的情况 bool返回值:适用于找到一个答案就停止、需要提前终止的题目 特别针对BST验证等典型问题,分析了常见错误模式,如仅判断当前节点而忽略子树范围限制等,并给出了正确的解法思路。 文章通
2025-10-30 15:05:57
1015
原创 递归专题1 - 递归基础与思维方法
本文是递归算法系列的第一篇,主要讲解递归基础与思维方法。文章首先介绍了递归的本质,即通过将大问题分解为同类型小问题并逐步求解。然后提出递归三要素:递归出口、递归体和返回值,并强调递归思维的关键在于"只考虑当前层做什么"。接着详细阐述了递归函数设计的五步法:明确函数语义、找递归出口、确定子问题、设计递归体和检查语义一致性。文章还对比了void和bool/int两种递归返回值的使用场景,并列举了常见错误及解决方法。最后提供了递归模板和实战示例,帮助读者系统掌握递归算法的实现技巧。
2025-10-30 15:04:56
1179
原创 高并发内存池 - 开发记录08,09
高并发内存池多线程测试结果分析 摘要:开发日志记录了高并发内存池在多线程环境下的性能测试情况。测试结果显示,单线程下内存池比malloc快2.45倍,但在多线程环境中性能反转:2线程时malloc快2.3倍,4线程快4.27倍,8线程快12倍。分析表明,问题在于测试模式采用"立即分配-立即释放"策略,导致频繁触发锁竞争,使ThreadCache的批量处理优势无法发挥。作者指出真实场景中的批量分配释放模式才能体现内存池优势,当前测试方法存在局限性。
2025-10-27 22:09:33
904
1
原创 高并发内存池 - 开发记录07
本文记录了高并发内存池开发第7天的工作内容。首先巩固了页合并算法的理解,明确了各层架构职责和合并流程。随后实现了慢增长算法(NumMoveSize),通过动态批量申请策略优化不同大小对象的内存分配。最后封装了统一对外接口ConcurrentAlloc/Free,隐藏内部实现并区分处理大小内存。开发过程中遇到指针访问、函数命名冲突等细节问题,通过分析调试得到解决。整体提高了内存池的易用性和性能,为后续优化奠定了基础。
2025-10-26 23:38:50
865
原创 高并发内存池 - 开发记录05
高并发内存池开发记录05摘要 本文记录了高并发内存池ThreadCache批量归还内存的实现过程。主要内容包括: 目标分析:解决ThreadCache内存堆积问题,设计批量归还机制(超过512个对象时归还一半) 关键实现: 通过手绘流程图加深对三层架构的理解(2小时投入带来显著效果) 设计PopRange接口批量弹出对象链表 实现ReleaseToCentralCache归还逻辑 技术细节: 详细解析NextObj指针操作原理 说明批量弹出时的循环次数计算(n-1次) 解释链表断开的关键操作(NextObj
2025-10-26 17:12:41
1106
原创 网络编程实战02·从零搭建Epoll服务器
详细解答:第一步:说清楚TIME_WAIT在哪里TCP四次挥手:客户端(主动关闭) 服务器(被动关闭)| || FIN ||-------------------------->| 客户端:FIN_WAIT_1| | 服务器:CLOSE_WAIT| ACK ||<--------------------------| 客户端:FIN_WAIT_2| || FIN ||<--------------------------| 服务器:LAST_ACK| || ACK |
2025-10-24 20:18:59
821
1
原创 队列+BFS专题总结:树都快忘了,4题还是全AC了
这篇文章总结了队列和BFS在树结构中的应用,通过4道LeetCode题目的实战演练,展示了层序遍历的核心思路和常见技巧。文章从N叉树的基础结构讲起,详细解释了如何通过队列实现分层处理,并针对不同类型的层序遍历问题(如锯齿形遍历、计算最大宽度)给出了具体解决方案。关键点包括:使用q.size()固定当前层节点数、二叉树编号技巧计算包含null的宽度、以及模板化思维处理BFS变形问题。最终作者成功实现了4道题目的全AC,并总结出通用的BFS解题框架。
2025-10-22 23:19:49
1124
原创 高并发内存池 - 开发记录06
高并发内存池开发Day6摘要 主要工作 修复两个关键bug:CentralCache的Span映射不完整问题和NumMovePage计算错误 实现CentralCache归还Span给PageCache的逻辑,解决了潜在的锁竞争问题 设计并实现了PageCache的页合并算法,采用向前+向后合并策略提升内存利用率 技术要点 发现bug得益于对边界条件的深入思考和数据流追踪 页合并算法采用while循环实现连续合并 多线程环境下正确处理锁的释放与重获 合并后需更新所有页的映射关系 成果与收获 三层架构基本完成
2025-10-22 22:17:04
1228
原创 栈专题总结:从模拟操作到解题思维
本文记录了栈专题的学习过程,通过5道典型题目总结了栈的应用场景和解题技巧。主要收获包括:1)用字符串模拟栈操作;2)处理运算优先级时加减法入栈、乘除法即时计算;3)嵌套结构使用双栈处理;4)验证栈序列的模拟方法。重点强调了手动模拟的重要性,并总结了常见错误点(栈非空判断、索引移动、短路求值顺序)。文章提供了栈的典型应用场景分类和核心代码模板,帮助读者掌握栈这一数据结构的解题思维。
2025-10-21 15:18:23
943
原创 # 高并发内存池开发记录 - 04
本文记录了一个高并发内存池中PageCache层的设计与实现过程。核心内容包括: PageCache设计思路:作为第三层架构,负责管理大块内存(1-128页),提供Span切分和合并功能,减少外部碎片。 NewSpan实现:通过四种分支处理不同场景(超大对象、现成Span、切分大Span、向OS申请),并详细分析了作者在实现过程中遇到的典型错误和解决方案。 关键数据结构:使用SpanList数组管理不同大小的Span,通过_pageToSpan哈希表实现快速页号到Span的映射,支持后续页合并操作。 优化策
2025-10-20 22:59:35
1081
原创 字符串专题总结:从模拟运算到模板掌握
本文总结了字符串专题的学习过程,重点掌握三个核心概念:1)字符串比较的横向/纵向方法;2)回文串处理的中心扩散法;3)大数运算的模拟技巧。作者通过4道典型题目实践,详细记录了字符转换、索引判断等易错点,并提炼出核心模板。特别强调大数运算需要模拟手工计算过程,注意字符与数字转换方向(字符转数字减,数字转字符加)和索引判断的边界条件。文章以问题导向的方式呈现学习路径,对字符串处理的常见陷阱和解题思路进行了系统梳理。
2025-10-20 18:24:01
820
原创 高并发内存池项目开发记录 - 03
高并发内存池项目开发记录 - Day3 摘要 本文记录了高并发内存池项目中CentralCache模块的实现过程。CentralCache作为ThreadCache与PageCache之间的中介层,负责协调多个线程的内存分配请求。关键内容包括: CentralCache架构: 采用单例模式确保全局唯一性 管理208个不同大小的Span链表 通过Span结构将大块内存切分为小块供ThreadCache使用 核心难点: 页号与物理地址的转换机制 Span内存块的切分逻辑实现 指针运算的注意事项(void需转为c
2025-10-19 23:58:38
409
原创 哈希表专题总结:从困惑到掌握容器选择
本文总结了哈希表的学习和应用过程。作者通过4天分散学习,完成了8道哈希表相关题目,涵盖基础哈希和前缀和+哈希表两类题型。学习过程分为三个阶段:最初对哈希表仅停留在概念层面;中期在实践中踩坑,遇到容器选择、数组比较等问题;后期终于理解哈希表本质是空间换时间,掌握其三种主要用途(判断存在性、统计频次、分组)及对应容器选择原则。文中详细分析了典型题目解法,如两数之和的哈希优化、字符重排的数组模拟技巧等,并总结了常见错误和模板代码。最终作者建立起哈希表应用的决策树,从困惑到掌握这一重要数据结构。
2025-10-19 13:15:51
565
原创 高并发内存池项目开发记录 - 02
本项目开发了一个高并发内存池的ThreadCache层,解决了多线程竞争内存分配的性能问题。通过TLS机制为每个线程创建独立缓存,避免了全局锁竞争。实现包括:内存对齐计算、批量申请策略(每次8块)、智能缓存检查(分段阈值控制)。目前已完成基础框架和核心功能,后续将整合CentralCache层并优化参数。关键技术点:thread_local实现线程局部存储、FreeList管理、按对象大小分段控制缓存上限。
2025-10-18 22:20:58
1476
原创 分治算法-归并排序专题:从性能优化到索引数组的突破
本文总结了归并排序的核心算法及其在统计类问题中的应用。通过4道编程题(排序数组、逆序对、右侧更小元素、翻转对),深入探讨了归并排序的分治思想、性能优化技巧以及索引数组等关键概念。重点分析了归并排序与快速排序的差异,归纳了统计类问题的两类处理策略(合并统计和分步统计),并详细记录了5个典型错误案例(包括性能优化、边界条件和统计逻辑混淆等)。文章特别强调了索引数组这一重要技巧,它能够有效解决排序过程中的元素追踪问题。通过实践-错误-修正的过程,展示了如何从算法原理转化为实际代码实现。
2025-10-18 20:59:43
895
原创 分治算法_快速排序专题总结-----分治
本文总结了分治算法中的快速排序专题,在1天内完成4道相关题目并全部通过。主要内容包括: 分治算法核心:介绍分治三要素(分、治、合)及其适用条件,对比快速排序、归并排序和二分查找的分治方式。 快速排序优化:讲解传统快排的问题,提出随机基准+三块划分的优化方案,通过荷兰国旗问题演示三指针法的实现细节。 题目详解: 颜色分类(三指针分区) 快速排序(随机基准+三块划分) 数组第K大元素(快速选择优化) 最小K个数(返回值处理差异) 关键收获:掌握快速选择算法将时间复杂度从O(nlogn)优化到O(n)的核心思想,
2025-10-16 16:34:30
774
1
原创 MySQL实战篇11:MySQL性能瓶颈分析实战-----从现象到根因探索
MySQL性能瓶颈分析实战摘要 本文详细记录了MySQL性能瓶颈分析的完整过程。作者首先发现监控脚本QPS显示异常,修正后观察到数据插入存在周期性爆发现象。通过科学方法论,逐步排除缓冲池不足、B-tree页面分裂等假设,最终定位到binlog缓存溢出是根本原因:当binlog_cache_size(32KB)不足时,事务数据会暂存磁盘,导致性能波动。优化调大该参数后,性能提升23%。同时发现次要瓶颈——每秒刷盘配置不合理,建议调整为每N秒刷盘一次。本文展示了从现象观察、假设提出、验证排除到最终优化的完整技术
2025-10-16 14:19:54
1426
1
原创 MySQL实战篇10:MySQL性能监控命令实战------3个必会的命令
MySQL性能监控三大核心命令:SHOW PROCESSLIST查看当前连接与执行SQL,SHOW STATUS获取运行统计(如连接数、慢查询),SHOW VARIABLES查看配置参数(如最大连接数)。实战发现主从复制线程、缓冲池过小等问题。这些命令是排查性能瓶颈的关键工具,也是面试高频考点。
2025-10-16 14:05:22
1056
原创 MySQL实战篇09:MySQL主从延迟压测-------每秒1000条写入,延迟1秒
MySQL主从延迟压测摘要 本次测试在Docker MySQL 8.0环境(1主2从)中进行,通过Python脚本实现每秒1000条写入,持续60秒共6万条数据。测试结果显示最大延迟仅1秒,远低于预期的5-10秒。 测试过程采用双脚本设计:insert_data.py负责高并发写入,monitor_delay.py实时监控延迟。通过分析发现,延迟产生的主要原因是Slave SQL线程执行速度跟不上Master写入速度,导致relay log堆积。 影响延迟的因素包括网络带宽、服务器性能、事务大小等。测试环境
2025-10-16 13:58:24
720
原创 MySQL实战篇08:MySQL主从复制环境修复记录---3个真实问题的排查过程
MySQL主从复制修复记录:3个关键问题解析 作者在Docker MySQL 8.0主从集群(1主2从)重启后遇到主从复制中断问题。排查过程发现三个核心问题: server_id冲突:主从节点server_id相同导致IO线程停止(错误13117),通过修改从节点server_id解决; SQL线程执行失败:从节点已存在数据库导致同步失败(错误1007),采用CHANGE REPLICATION SOURCE重置复制位置解决; 配置失效:Docker重启导致配置丢失,需在容器启动时确保配置持久化。 经验总结
2025-10-16 13:51:21
737
原创 【学习笔记10】C++模板编程深度学习(下):可变参数模板与完美转发核心技术
本文深入探讨了现代C++中的高级模板技术,包括可变参数模板、折叠表达式、完美转发和模板元编程等核心概念。主要内容涵盖: 可变参数模板的基础语法与递归展开实现 C++17折叠表达式的四种形式及其优势 完美转发的引用折叠规则与万能引用机制 std::forward的工作原理与实际应用场景 模板元编程的编译期计算特性 C++20 Concepts对模板编程的改进 这些技术是理解现代C++标准库实现和高性能编程的关键,通过递归展开、参数包操作等手段,实现了更灵活、更高效的泛型编程能力。
2025-10-15 21:33:51
859
2
原创 模拟算法专题总结:直接按题意实现的艺术
模拟算法专题总结 核心要点 模拟算法特点:直接按照题目描述实现逻辑,不依赖复杂算法技巧,重点在于理解题意和细节处理 典型解题步骤: 明确题目要求 分析输入输出边界 设计模拟过程 处理特殊情况 常见模拟类型: 字符串处理(替换问号、外观数列) 时间区间模拟(提莫攻击) 状态转换模拟(Z字变换、数青蛙) 关键技巧: 边界条件检查 状态变量管理 字符串拼接优化 易错点: 运算符混淆(= vs ==) 数组越界 状态切换时机 模拟算法强调代码实现能力,需要培养对题目细节的敏感度和处理边界条件的能力。
2025-10-15 15:07:47
810
1
原创 c++项目篇:高并发内存池项目开发记录01
本文介绍了高并发内存池项目的开发记录,重点讲解了内存对齐算法、自由链表管理以及三层架构设计。作者通过实现NextObj函数的内存复用机制、FreeList类的内存块管理功能以及SizeClass类的智能对齐策略,构建了一个高效的内存分配系统。项目采用ThreadCache、CentralCache和PageCache三层架构来解决多线程环境下的内存分配性能问题,并通过位运算优化提升了计算效率。开发过程中,作者深入理解了内存管理底层原理,并解决了指针操作、内存对齐等技术难点。
2025-10-14 23:36:02
1044
1
原创 二分查找专题总结:从数组越界到掌握“两段性“
本文总结了二分查找算法的学习经验,重点分析了常见错误与解题技巧。作者通过3天时间刷完9道二分题,将题目分为标准二分、边界二分和旋转数组三类。核心内容包括:1)二分查找前提条件(有序或两段性);2)两种模板(标准查找和边界查找)的区别与应用;3)五个典型错误(循环条件、整型溢出、搜索条件、数组越界、边界遗漏)。特别强调"两段性"概念在旋转数组问题中的重要性,并提供了通用代码框架。文章通过具体错题分析,如LeetCode 704的标准二分错误和LeetCode 69的整型溢出问题,深入剖析了
2025-10-14 15:39:58
925
原创 位运算专题总结:从变量初始化陷阱到理解异或分组
位运算专题总结:从变量初始化陷阱到理解异或分组 核心内容总结 本文系统总结了位运算的5大核心应用和8类常见错误。通过10道典型题目,作者深入分析了位运算的关键技巧: 五大经典应用 位图思想:用整数的位代替数组 异或消消乐:找唯一出现元素 异或分组:分离两个不同元素 位计数法:统计每位出现次数 位运算加法:模拟硬件加法过程 八大常见错误 数组索引越界 位运算未赋值 循环变量被修改 整型数值溢出 变量初始化不全 索引与值混淆 循环范围错误 位判断条件错误 实用技巧 n & (n-1)清除最低位1 异或的
2025-10-14 15:09:38
646
原创 前缀和专题总结:从哈希表的疑惑到理解2D索引映射
前缀和算法总结 前缀和是一种用于高效计算数组区间和的预处理技术,主要分为一维和二维两种形式。核心思想是预先计算并存储前i项的和,将区间查询转化为两次取值运算,时间复杂度从O(n)降至O(1)。 核心公式: 一维:sum[l,r] = dp[r+1] - dp[l] 二维:sum = dp[x2+1][y2+1] - dp[x1][y2+1] - dp[x2+1][y1] + dp[x1][y1] 三大应用场景: 基础区间和查询(数组存储) 特定子数组统计(配合哈希表) 二维矩阵区域和计算 典型题目: 基础:
2025-10-14 15:07:26
728
原创 C++模板编程实战记录:SFINAE核心技术深度掌握
本文记录了作者在2025年10月13日进行的C++模板编程实战学习过程。通过4小时的系统练习,作者从函数模板基础开始,逐步掌握类模板、模板特化到SFINAE等核心技术。实战中详细记录了开发环境(VSCode+g++)、遇到的典型错误(如函数模板误写为类模板、类型推导冲突、const正确性问题)及解决方法,并最终实现了编译期类型检测功能。文章采用"问题-解决"的递进式结构,包含代码示例、错误分析和运行结果,展现了从基础到高级的完整模板编程学习路径。
2025-10-13 22:10:39
685
原创 【学习笔记09】C:++模板编程深度学习(上)------从基础语法到SFINAE技术
这篇文章系统梳理了C++模板编程的核心技术,从基础概念到高级特性。主要内容包括:模板基础(函数模板和类模板)、模板实例化的编译期机制、模板特化(完全特化和偏特化)以及SFINAE技术。作者通过"菜谱"的生动比喻,解释了模板如何实现代码复用,并详细分析了模板必须在头文件实现的原因。文章还探讨了如何通过模板特化为特定类型定制行为,以及SFINAE在编译期进行条件选择的原理。整体结构清晰,由浅入深,既有理论讲解也有代码示例,适合想要深入理解C++模板编程的开发者阅读。
2025-10-13 14:54:22
1213
原创 MySQL实战篇07:MySQL索引优化实战-----从100万数据看索引的威力
测试项无索引有索引提升幅度执行时间0.469秒0.015秒31倍type类型ALL(全表扫描)ref(索引查找)质的飞跃扫描行数994,192行1行扫描量减少99.9999%key索引NULL用上索引场景WHERE条件索引生效?keytype场景1✓ref场景2✓ref场景3age = xxx✗NULLALL场景示例索引生效?原因函数操作✗需要计算每行LIKE %开头✗无法定位起点不等于= xxx✗返回数据太多。
2025-10-12 22:03:45
785
原创 MySQL学习笔记11:MySQL架构设计与运维深度学习:性能优化到高可用架构
N+1查询❌// 第1次查询:查所有聊天室(1次查询)// 第2-N次查询:循环查每个聊天室的最新消息(N次查询)// 每次循环都查数据库!room.id// 如果有100个聊天室,就要查询 1 + 100 = 101 次!✅// 用JOIN一次查出所有数据 auto result = db . query(R"(SELECT)");// 只查1次数据库!N+1查询是业务逻辑层的问题需要在应用代码层面优化不能只盯着数据库,应用代码也可能是瓶颈。
2025-10-12 08:30:00
591
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅