自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【算法题】快排

快速排序是基于的经典算法,核心逻辑是“选基准→分区→递归处理子区间”:通过将数组切分为“小于基准”“等于基准”“大于基准”的三个部分,逐步缩小排序范围,平均时间复杂度为Onlogn。除了基础排序,快排的“分区+选择”思想还能高效解决“找第K大元素”“取最小的N个元素”等问题。本文通过4道经典题目,拆解快排思想在不同场景下的应用。

2026-01-08 01:01:05 788

原创 【算法题】模拟

模拟”是算法中最直观的解题思路之一——,不需要复杂的算法设计,但需要理清细节,处理好边界条件。本文将通过5道经典模拟题,拆解不同场景下的模拟思路与代码实现。

2026-01-06 21:12:52 650 1

原创 【算法题】位运算

位运算是利用解决问题的高效算法,核心通过:与(&)、或(|)、异或(^)、移位(<< / >>)等基础操作,将时间/空间复杂度优化到极致(通常为On时间、O1空间)。它的应用场景覆盖“位计数”“找唯一数”“数值运算”“状态压缩”等核心问题,是算法面试中高频且易掌握的考点。本文将通过9道经典题目,拆解位运算在不同场景下的解题逻辑与代码实现。

2025-12-29 23:29:17 1073 8

原创 【C语言深度解析】手把手实现字符串函数与内存函数

本文详细解析了C语言中字符串函数和内存函数的实现原理。字符串函数部分涵盖了strlen(三种实现方式)、strcpy、strcmp、strcat和strstr的实现,重点讲解了指针操作、空指针防护和'\0'处理。内存函数部分介绍了memset的实现,强调void*指针的通用性和按字节操作的特点。所有函数实现都包含核心逻辑解析和注意事项说明,帮助开发者深入理解底层原理。文章提供了完整的可运行代码,适合C语言学习者和准备技术面试的开发者参考。

2025-12-29 18:40:12 1216 1

原创 【网络】TCP 协议深度解析:从连接建立到可靠性机制

本文系统介绍了TCP协议的核心特性和工作机制。TCP作为传输层核心协议,通过三次握手建立可靠连接、四次挥手优雅断开连接。其首部格式包含端口号、序号、确认号等关键字段,支持连接管理、流量控制和拥塞控制。TCP通过确认应答、超时重传、滑动窗口等机制确保数据可靠传输,同时采用延迟应答、捎带应答优化性能。TIME_WAIT和CLOSE_WAIT状态处理连接关闭问题,而字节流特性导致的粘包问题可通过定义数据边界解决。TCP为HTTP、FTP等应用层协议提供可靠传输基础。

2025-12-25 18:57:51 1931 42

原创 【算法题】前缀和

前缀和是一种,核心思想是通过提前计算“前缀累计值”,将数组/矩阵的从暴力遍历的On优化到O1,同时也能结合哈希表解决“子数组和”等复杂问题。它的应用场景非常广泛:既可以处理基础的“多次区间和查询”,也能扩展到二维矩阵的区域和,还能结合哈希表解决“子数组和为目标值”“最长平衡子数组”等问题。本文将通过8道经典题目,拆解前缀和在不同场景下的解题逻辑与代码实现。

2025-12-25 17:16:40 879 3

原创 【算法题】二分

给定非递减排序的整数数组nums和目标值target,找出target在数组中的开始位置和结束位置;若不存在则返回[-1, -1]。要求时间复杂度为Olog⁡nO(\log n)Ologn。示例[3,4][-1,-1]通过两次二分查找找左边界:二分找第一个等于target的位置。若,左指针右移;否则右指针左移,最终左指针即为左边界。找右边界:二分找最后一个等于target的位置。若,左指针右移;否则右指针左移,最终右指针即为右边界。若左边界对应的元素不是target,直接返回。

2025-12-23 20:11:21 1104

原创 【算法题】滑动窗口 (二)

滑动窗口不仅能解决基础的子串/子数组问题,还能处理等复杂场景。本文继续介绍4道经典滑动窗口题目,覆盖“类型限制”“异位词匹配”“多单词串联”“最小覆盖子串”等核心场景。

2025-12-22 23:27:24 1097 1

原创 【网络】UDP 协议深度解析:从五元组标识到缓冲区

本文系统介绍了UDP协议的核心特性和工作机制。UDP作为轻量级传输层协议,具有无连接、不可靠和面向数据报三大特性,适用于实时音视频等对延迟敏感的场景。文章详细解析了UDP首部格式、端口号机制、数据报传输特性以及缓冲区管理,并与TCP协议进行对比,突出了UDP高效简洁的设计优势。同时指出UDP的注意事项,如64K数据长度限制和不可靠传输的应对策略,为网络应用开发提供了重要参考。

2025-12-18 08:32:17 969 3

原创 【算法题】滑动窗口(一)

滑动窗口是处理的经典双指针技巧,核心是通过维护一个“窗口”(左右指针界定的区间),动态调整窗口范围来满足题目条件,从而高效求解问题。

2025-12-12 21:09:14 1008 7

原创 【算法题】双指针(二)

找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水,返回容器可以存储的最大水量。请返回所有和为 0 且不重复的三元组(答案中不可包含重复的三元组)。,请找出并返回满足下述全部条件且不重复的四元组。,返回其中可以组成三角形三条边的三元组个数。,请在购物车中找到两个商品的价格总和刚好是。三角形条件:任意两边之和大于第三边。购物车内的商品价格按升序记录于数组。若存在多种情况,返回任一结果即可。给定一个包含非负整数的数组。先排序数组,利用三角形的。在三数之和的基础上扩展为。说明:不能倾斜容器。

2025-12-04 20:58:12 1306 3

原创 【算法题】双指针(一)

如果直接从前往后遍历复写零,会覆盖后续未处理的元素;如果用额外数组存储结果,又不符合“原地修改”的要求。如果 n 是 快乐数 就返回 true;不是,则返回 false。(因为数字的平方和范围有限,比如 3 位数的最大平方和是。将所有 0 移动到数组末尾,同时保持非零元素的相对顺序。,将每个出现的零复写一遍,并右移其余元素。编写一个算法来判断一个数 n 是不是快乐数。(最后一个0因数组长度限制无法复写)给你一个长度固定的整数数组。,不可能无限增大)。

2025-12-02 10:32:18 1246 2

原创 【网络】HTTP协议深度解析:从请求响应到Cookie/Session

本文系统介绍了HTTP协议的核心概念与应用。作为Web通信的基础协议,HTTP定义了客户端与服务器的交互规则,包括请求/响应格式、方法类型、状态码等关键要素。文章详细解析了GET与POST方法的区别,列举了常见状态码的分类与用途,并探讨了Cookie/Session解决HTTP无状态问题的机制。通过理解HTTP的工作原理,开发者可以更好地进行Web开发与调试,构建高效的网络应用。

2025-11-30 15:16:31 838 7

原创 【网络】网络基础概念:从协议分层到Socket基础

本文系统介绍了网络通信的核心原理与技术框架。首先阐述了网络的本质是实现跨主机进程间通信,其核心价值在于资源共享、分布式协作和突破地理限制。重点解析了协议分层模型,对比了OSI七层模型和实际应用的TCP/IP五层模型,说明了每层的功能与核心协议。详细讲解了网络通信的三大标识(IP地址、MAC地址、端口号)及其作用机制,并强调IP+端口号构成Socket这一关键概念。最后概述了传输层TCP/UDP协议的特性差异及适用场景,为后续网络编程奠定理论基础。

2025-11-30 10:39:13 819 2

原创 【Linux】线程同步与互斥深度解析:从锁机制到生产者消费者模型

本文介绍了多线程编程中同步与互斥的关键概念。主要内容包括:互斥量(mutex)保护临界资源的方法,条件变量(cond)实现线程有序协作,生产者消费者模型的实际应用,以及线程安全、可重入函数和死锁等核心问题。通过售票系统示例展示了未加保护的共享资源会导致竞态条件,而使用互斥量可确保数据一致性。文章还详细讲解了互斥量接口、RAII风格锁封装、条件变量使用规范等实用技术,并对比分析了阻塞队列和环形队列两种生产者消费者模型的实现方案。最后总结了线程安全与可重入的区别,以及避免死锁的实战方法。

2025-11-29 22:05:42 2785 37

原创 【Linux】线程从内核到实战:本质、控制逻辑与封装指南

本文深入探讨线程的本质与实现机制。从内核视角看,线程是共享进程地址空间的轻量级进程(LWP),Linux通过复用task_struct结构体实现线程管理。文章详细对比了进程与线程的资源分配差异,指出线程共享虚拟地址空间但拥有私有执行上下文。在内存布局方面,解析了主线程栈与子线程栈的关键区别。最后介绍了POSIX线程库的核心API,包括线程创建、终止、等待与分离等操作,并强调线程封装的最佳实践。全文从理论到实践,系统性地阐述了多线程编程的核心概念与技术要点。

2025-11-29 15:31:42 1093 2

原创 【Linux】进程信号深度解析:从中断本质到信号捕捉全流程

本文系统性地探讨了Linux系统中的信号机制及其与中断的深层关联。信号作为进程间通信的"软中断",其生命周期包含产生、保存和递达三个阶段,处理方式分为默认、忽略和自定义三种。文章从生活场景类比入手,详细解析了信号的五大触发来源(终端按键、系统命令、软件条件、硬件异常等),并深入剖析了内核中信号保存的未决与阻塞机制。通过对比硬件中断、时钟中断、软中断和异常的实现原理,揭示了信号作为用户态中断的本质特性。最后,文章还提供了信号捕捉的完整流程分析、常见陷阱规避指南以及实际应用场景。

2025-11-29 11:25:42 1251 22

原创 【Linux】进程间通信(IPC)深度解析:从管道到共享内存

本文介绍了Linux系统中两种主要的进程间通信(IPC)方式:管道和共享内存。管道包括匿名管道和命名管道(FIFO),前者仅适用于有亲缘关系的进程间通信,后者通过文件系统中的特殊管道文件实现任意进程间通信。共享内存则是将同一块物理内存映射到不同进程的地址空间,实现高效的数据共享。

2025-11-28 19:27:42 844 1

原创 【Linux】Ext 系列文件系统深度解析:从磁盘到软硬链接

本文系统介绍了Linux文件系统的核心原理,重点解析了Ext2文件系统的设计思想与实现机制。主要内容包括:文件系统概述(Ext系列发展)、磁盘硬件基础(物理结构、CHS/LBA寻址)、文件系统核心概念(块、分区、inode)、Ext2结构详解(块组设计、超级块、inode映射)、目录解析与路径查找机制。通过深入剖析inode结构、数据块分配、软硬链接区别等关键技术点,帮助读者掌握Linux文件存储管理的底层逻辑。

2025-11-28 13:19:19 1363 2

原创 【Linux】基础 IO 深度解析:文件、描述符与缓冲区

本文摘要: 文章系统介绍了Linux文件IO操作的核心概念与实现机制。从IO本质与"一切皆文件"哲学出发,详细对比了C标准库接口(fopen/fread等)与系统调用(open/read等)的使用差异。重点剖析了文件描述符(fd)的分配规则、内核文件管理模型,以及重定向机制(dup2)的实现原理。深入讲解了Linux通过file结构体和file_operations实现设备统一抽象的机制,并分析了用户级缓冲区与内核缓冲区的协同工作方式。

2025-11-27 22:28:26 1596 33

原创 【Linux】进程控制

本文系统讲解了Linux进程控制的三大核心操作:进程终止、进程等待和进程程序替换。在进程终止部分,详细分析了正常终止(main函数return、exit/_exit调用)和异常终止(信号触发)的机制与区别。进程等待部分重点介绍了wait和waitpid函数的使用方法,以及避免僵尸进程的必要性。程序替换部分解析了exec函数族的功能与底层原理。最后通过迷你Shell的实现案例,展示了进程控制技术的综合应用。

2025-11-26 16:01:38 903 1

原创 【Linux】进程概念

本文系统介绍了Linux进程概念。首先基于冯诺依曼体系结构阐明计算机硬件基础,指出进程是操作系统资源分配的基本单位。重点解析了进程控制块(PCB)的概念及其Linux实现task_struct,包含进程标识、状态、优先级等关键信息。详细阐述了Linux进程的七种状态,特别分析了僵尸进程和孤儿进程的形成机制与处理方法。深入探讨了fork系统调用的"一次调用两次返回"特性及写时拷贝技术。最后剖析了进程地址空间的虚拟化本质及其优势,包括内存保护、高效共享等特性。

2025-11-26 13:44:39 771 1

原创 【C++】C++11:其他重要特性

本文系统介绍了C++11引入的列表初始化、可变参数模板、lambda表达式、function包装器等新特性。

2025-11-17 16:39:06 1567 12

原创 【C++】C++11:智能指针

本文系统介绍了C++智能指针的设计原理和使用方法。首先分析了传统指针在异常处理时可能出现的内存泄漏问题,提出使用RAII机制通过对象生命周期管理资源的解决方案。详细讲解了标准库中的主要智能指针类型:已废弃的auto_ptr、独占式的unique_ptr、共享式的shared_ptr以及辅助性的weak_ptr,包括它们的特性、使用场景和线程安全问题。特别探讨了shared_ptr的循环引用问题及weak_ptr的解决方案,并介绍了删除器的定制化使用。最后总结了智能指针在避免内存泄漏方面的优势。

2025-11-16 21:05:15 1159 8

原创 【C++】C++11:右值引用和移动语义

本文全面讲解了C++11中的左值、右值、引用机制以及移动语义。主要内容包括: 左值和右值的定义与区别:左值是可寻址的持久对象,右值是临时表达式或字面值 引用类型:左值引用(&)和右值引用(&&)的用法及限制 移动语义:通过std::move实现资源转移,避免不必要的拷贝 引用折叠规则和完美转发机制 现代C++中的值类别分类及实际应用场景 文章通过代码示例详细演示了各种引用类型的用法,以及如何利用移动语义提升程序性能,特别是对于容器操作和资源管理类。

2025-11-15 22:08:49 1270 25

原创 【C++】多态

本文系统介绍了C++多态的核心概念与实现机制。

2025-11-06 22:59:05 1439 24

原创 【C++】继承

本文介绍了C++面向对象编程中的继承机制。

2025-11-05 20:19:50 1396 12

原创 【C++】模板

本文介绍了C++中的泛型编程与模板技术,主要内容包括:泛型编程概述、函数模板的概念和实例化方式、类模板的定义和使用方法,以及模板的高级特性。

2025-11-05 19:15:25 716 4

原创 【项目】基于多设计模式的同步&异步日志系统

本文介绍了一个基于C++11的高性能日志系统设计。系统采用模块化架构,包含日志等级、消息封装、格式化输出和落地方向等核心模块。支持多级别日志(DEBUG/INFO/WARN/ERROR/FATAL),提供同步/异步输出模式,确保线程安全。系统应用多种设计模式:单例模式管理日志器、工厂模式创建落地方向、建造者模式构建复杂日志器、代理模式简化接口调用。通过双缓冲区设计优化性能,支持控制台输出、文件输出和滚动文件输出等多种日志落地方式,具有高扩展性和灵活性。

2025-10-26 21:13:31 1077 15

原创 【项目】日志系统中的设计模式

本文介绍了日志系统中常见的设计模式及其实现方式。

2025-10-22 12:41:55 1051 11

原创 【C++】C++11并发库

本文介绍了C++11标准库中的多线程编程工具。

2025-10-10 21:32:12 1112 4

原创 【数据库】MySQL用户管理

本文详细介绍了MySQL用户管理与权限控制的完整流程。

2025-10-10 14:35:07 841 10

原创 【数据库】MySQL事务

本文介绍了数据库事务的核心概念与实现机制。

2025-10-09 12:32:42 1488 5

原创 【数据库】MySQL索引

本文系统介绍了MySQL索引的核心原理与实现机制。

2025-10-08 18:26:29 1535 4

原创 【数据库】复合查询

本文介绍了SQL查询的多种高级技巧,包括基本查询回顾、多表连接、自连接、子查询(单行/多行/多列/from子句/合并查询)以及内外连接(左外/右外)。

2025-10-08 15:50:50 473

原创 【数据库】内置函数

本文系统介绍了MySQL常用函数及应用场景。

2025-10-08 09:25:15 601 1

原创 【数据库】表的基本查询

本文系统介绍了SQL数据操作的核心方法。

2025-10-07 10:43:51 727 2

原创 【数据库】表的约束

本文系统介绍了MySQL中的八种重要约束属性。

2025-10-07 10:24:00 656 2

原创 【数据库】数据类型

本文介绍了MySQL数据库的主要数据类型及其应用。

2025-10-07 10:01:55 823 3

原创 【数据库】库/表的操作

摘要:本文介绍了MySQL数据库及表的基本操作。

2025-10-06 22:05:02 541 3

空空如也

空空如也

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

TA关注的人

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