- 博客(89)
- 收藏
- 关注
原创 【算法】递归、搜索与回溯
递归是算法中最基础却也最容易让人困惑的知识点之一。本文从“什么是递归、为什么使用递归、如何理解和写好递归”出发,系统讲解递归的基本概念和实现技巧。同时,结合多个经典题目(如汉诺塔问题、链表操作、幂函数计算、布尔树求值等),通过递归与循环的对比、从宏观和树形结构两个视角拆解递归过程,帮助读者真正掌握递归的本质。此外,文章还深入探讨递归与搜索算法(DFS、BFS)、暴力搜索、回溯与剪枝之间的区别与联系,理清遍历与搜索的边界与用途。
2025-07-13 21:18:48
995
原创 【Linux】线程机制深度实践:创建、等待、互斥与同步
本文系统梳理了多线程编程的核心知识点,涵盖线程的基本概念、创建与终止、等待与分离机制、互斥锁的使用与封装、死锁的形成与避免策略,以及条件变量与信号量等常用同步手段。
2025-07-13 15:07:14
1193
原创 【Linux网络】IP 协议详解:结构、地址与交付机制全面解析
本篇文章将系统讲解 IP 协议的基本概念和结构,介绍它在网络通信中的作用以及无连接、尽力而为的特性。接着解析 IP 报文的报头结构及字段含义,说明如何分离报头与数据,以及数据如何被正确交付。随后将介绍 IP 地址的划分方式、子网掩码与 CIDR 表示法,解释特殊 IP 地址的用途,如环回地址和广播地址等。文章还会讲解 IPv4 地址枯竭问题,以及私有 IP、公网 IP 和 NAT 的关系。最后梳理广域网、局域网、公网和内网的区别与联系,希望帮助您全面理解 IP 地址体系。
2025-07-12 22:25:51
921
2
原创 【Linux网络】深入理解HTTP/HTTPS协议:原理、实现与加密机制全面解析
本文系统讲解了 HTTP 与 HTTPS 协议相关的核心内容。首先介绍了 URL 的基本结构和编码解码方式,帮助读者建立起网络通信的基本认知。接着深入解析了 HTTP 请求与响应的宏观格式,通过服务端封装与调用代码,实际验证了协议结构在编程实现中的应用。此外,文章还探讨了 HTTP 方法与状态码的作用,并系统分析了长连接与会话保持的实现方式,包括老旧方案与现代手段的利弊对比。在 HTTPS 部分,重点讲解了加密传输的基本原理、数据指纹概念以及整体加密流程。
2025-07-11 22:55:34
1012
原创 【linux网络】深入理解 TCP/UDP:从基础端口号到可靠传输机制全解析
本文系统梳理了传输层中两个核心协议——UDP 和 TCP 的工作机制与关键特性。内容从端口号的划分和知名端口介绍入手,逐步展开介绍了 UDP 的无连接特性、协议格式、缓冲区与常见“坑点”,再到 TCP 协议的可靠传输原理,包括三次握手、四次挥手、滑动窗口、流量控制与拥塞控制等。此外还深入探讨了 TCP 中的确认应答机制、标记位作用、粘包问题和异常情况处理等高频面试/实战问题,适合网络编程学习者、求职者以及系统开发工程师查漏补缺或系统学习
2025-07-11 21:19:26
786
原创 【linux 网络】网络基础
本文介绍了计算机网络的基础概念和协议分层体系。主要内容包括:1. 网络协议的定义和作用,协议是多方通信的约定标准;2. TCP/IP五层模型(应用层、传输层、网络层、数据链路层、物理层)及其功能;3. OSI七层模型与TCP/IP模型的关系;4. 同一网段和不同网段的数据传输流程;5. IP地址和MAC地址的特性对比。文章通过协议分层阐述了网络通信的基本原理,包括数据封装和解包过程,以及路由器在不同网段通信中的作用。
2025-07-08 17:04:33
1024
原创 【linux网络】网络编程全流程详解:从套接字基础到 UDP/TCP 通信实战
本篇博客系统讲解了基于 C++ 的网络套接字编程,从概念理解到实战实现,逐步深入。前半部分介绍了套接字编程的基本共识、端口号与协议(UDP/TCP)的核心原理、网络字节序与通用接口设计,为网络编程打下理论基础。后半部分则进入实战环节,带你动手封装 UDP/TCP 通信服务器,详细展示了服务器的初始化、绑定、通信、连接管理(三次握手与四次挥手)等过程,并提供了完整的 UdpServer.hpp/.cpp 和 TcpServer.hpp 实现代码
2025-07-08 16:43:51
1326
原创 MySQL 表的内外连接
摘要:SQL连接操作分为内连接和外连接两大类型。内连接只保留两表中匹配的行,相当于先做笛卡尔积后筛选符合条件的记录。外连接则在匹配基础上保留一侧的未匹配行,用NULL填充缺失值。左外连接以左表为主保留未匹配行,右外连接以右表为主保留未匹配行。连接语法分别为INNER JOIN、LEFT JOIN和RIGHT JOIN,需配合ON子句指定连接条件。(133字)
2025-07-05 15:44:43
234
原创 【算法】宽度优先遍历BFS
本文介绍了使用BFS(广度优先搜索)解决树和图相关问题的算法思路与代码实现。主要内容包括:1)二叉树的层序遍历和锯齿形遍历,通过队列实现;2)优先级队列(堆)的应用,如最后一块石头重量和TopK问题;3)FloodFill算法解决图像渲染、岛屿数量及面积问题;4)BFS在最短路径问题中的应用;5)拓扑排序判断课程安排可行性。文章通过具体例题(如LeetCode题目)详细讲解了每种算法的实现步骤和关键技巧。
2025-07-05 11:06:55
709
原创 MySQL 查询进阶指南:子查询、多表连接与 UNION 操作全解析
本文深入讲解了 MySQL 查询语法中的关键技术模块,涵盖基础查询回顾、子查询的多种类型与使用场景、多表连接(包括自连接)、以及多结果集合并(UNION 和 UNION ALL)等内容。通过丰富的 SQL 示例和语法对比,帮助读者从掌握常规查询语句,到理解复杂 SQL 查询的构造逻辑,适合希望提升数据库查询能力的读者查阅学习。
2025-07-04 20:32:50
615
原创 MySQL 事务详解:从基础操作到隔离级别与 MVCC 原理
本文围绕 MySQL 事务展开,从基础概念入手,逐步介绍事务的提交机制、操作实践、隔离级别及其背后的 MVCC 实现原理。通过实际验证事务行为、分析异常场景,帮助读者深入理解事务的四大特性(ACID),掌握不同隔离级别的区别与适用场景,尤其聚焦在可重复读与读已提交之间的 MVCC 实现差异。适合希望系统学习 MySQL 事务机制的开发者、DBA 及后端工程师阅读。
2025-07-04 18:49:01
1272
原创 MySQL 用户管理与权限控制
MySQL用户权限管理摘要 MySQL通过用户管理机制保障数据库安全,避免直接使用root账户带来的风险。用户信息存储在mysql.user表中,包含用户名、主机访问限制和加密密码等字段。创建用户需指定访问主机/IP和密码,创建后需执行flush privileges刷新权限。MySQL提供细粒度的权限控制,包括数据操作、表结构修改、存储过程管理等30余种权限。管理员可通过grant/revoke命令授予或回收权限,root用户还能修改其他用户密码(8.0+版本使用ALTER USER命令)。特别要注意新创
2025-07-02 20:06:20
745
原创 深入理解 MySQL 索引:原理、结构与实战指南
本文系统性地探讨了MySQL索引的工作原理及优化策略。首先通过800万条数据无索引查询耗时6.5秒的实例,揭示索引的必要性。随后从硬件层面分析磁盘结构(扇区、柱面、磁头)及IO特性,解释MySQL采用16KB页大小与BufferPool内存机制的原因。重点解析B+树索引结构优势:有序存储、多阶目录、矮胖树形减少IO次数。对比分析了聚簇索引(InnoDB主键索引)与非聚簇索引(MyISAM)的本质区别,以及Hash、B树等结构的局限性。最后提供完整的索引操作指南(创建/查看/删除)
2025-06-24 11:27:37
795
原创 MySQL CRUD 操作与高级查询语法详解
本文介绍了MySQL表的基本CRUD操作,包括创建(Create)、读取(Retrieve)、更新(Update)和删除(Delete)。重点讲解了INSERT操作中的全列/指定列插入、冲突更新(ON DUPLICATE KEY UPDATE)和REPLACE替代;SELECT查询中的条件筛选(WHERE)、排序(ORDER BY)和分页(LIMIT);UPDATE和DELETE的使用注意事项。文章还涉及聚合函数(COUNT,SUM等)、分组查询(GROUP BY)及HAVING筛选。
2025-06-22 12:54:49
1211
原创 MySQL 表结构设计中的约束机制详解
数据库约束是确保数据合法性的重要机制。文章讨论了多种约束条件的作用:非空约束(NOT NULL)强制字段必须赋值;默认约束(DEFAULT)为未指定字段提供默认值;列描述(COMMENT)添加注释说明;主键(PRIMARY KEY)保证唯一性和非空性;自增长(AUTO_INCREMENT)自动生成递增值;唯一键(UNIQUE)确保字段值不重复但允许NULL;外键(FOREIGN KEY)维护表间关系并保证数据一致性。通过合理组合这些约束,可以有效解决数据类型单一、数据冗余和业务逻辑不合理等问题,构建健
2025-06-20 21:52:59
755
1
原创 MySQL 数据类型全解析:数值、字符串、日期与枚举详解
摘要:本文详细介绍了MySQL中的数据类型分类,包括数值类型(整型和浮点型)、文本/二进制类型、日期/时间类型以及枚举/集合类型。重点分析了各种数据类型的存储特性、范围限制和使用场景,特别比较了CHAR和VARCHAR的本质区别与选择策略。文章还探讨了数据类型作为数据完整性的约束机制,以及TIMESTAMP的自更新特性、ENUM和SET类型的使用方法。通过实际存储示例和对比表格,帮助读者理解如何根据业务需求选择合适的数据类型来优化存储空间和查询性能。
2025-06-20 11:40:23
616
原创 MySQL在ubuntu下的安装
本文介绍了在Ubuntu系统上安装MySQL数据库的全过程。首先需卸载已有MySQL/mariadb环境,添加官方APT软件源后安装lrzsz工具包。通过下载的deb文件安装MySQL,配置root密码并验证服务状态。建议初期使用root用户操作快速上手MySQL语句。文章还讨论了MySQL开机自启的适用场景,并强调应将字符编码配置为utf8mb4而非utf8。最后提供了MySQL登录和退出的基本命令。整个流程需在root权限下完成,但安装后普通用户也可使用。
2025-06-17 09:32:09
1428
原创 Git 实战场景
摘要:本文系统介绍了Git标签管理和多人协作开发的核心要点。在标签管理方面,阐述了创建、查看、删除和推送标签的具体操作,强调标签作为项目里程碑的重要作用。在协作开发部分,对比分析了同一分支和不同分支下的协作模式,详细说明了解决冲突、合并分支的流程。文章还深入探讨了企业级开发模型,包括DevOps理念、多环境部署策略和GitFlow分支管理模型,并以实际项目案例演示了从需求开发到测试上线的全流程管理。最后针对不同环境Bug提供了具体修复方案,为团队协作提供了系统的Git实践指导。
2025-06-17 09:04:45
1000
原创 掌握Git核心:版本控制、分支管理与远程操作
无论热爱技术的阅读者你是希望掌握Git的企业级应用,能够深刻理解Git操作过程及操作原理,理解工作区暂存区、版本库的含义;还是想要掌握Git的版本、分支管理,自由的进行版本回退、撤销、修改等Git操作方式与背后原理和通过分支创建、切换、合并、删除整个声明周期,灵活进行各种场景的分支管理,学习常见的分支策略;亦或是掌握Git远程仓库与本地仓库,理解分布式的版本控制系统,远程仓库和本地仓库的交互操作
2025-06-08 23:33:22
15504
1
原创 高性能分布式消息队列系统(四)
摘要:本文详细介绍了基于RabbitMQ消息队列系统的客户端模块设计与实现。客户端通过信道(Channel)与服务器交互,信道在TCP连接上实现多路复用,封装协议细节,提供消息发布、订阅等服务。文章重点阐述了订阅者模块、异步线程模块、连接模块和信道管理模块的实现逻辑,包括数据结构设计、线程安全处理及模块间协作流程。通过广播、直接和主题三种交换机模式的联调测试,验证了客户端功能。项目采用Protobuf协议通信,利用Muduo网络库实现异步事件处理,具有良好的扩展性,可以支持多虚拟机、可视化界面等进一步开发。
2025-06-05 23:52:30
960
原创 高性能分布式消息队列系统(三)
摘要:本文详细介绍了消息中间件服务端模块的设计与实现,采用分层架构设计,主要包含交换机、队列、绑定、消息、路由、消费者和信道等核心模块。系统通过SQLite实现交换机/队列/绑定关系的持久化存储,采用文件存储实现消息持久化,并设计了垃圾回收机制优化性能。多模块协作实现了消息发布-订阅模型,包括交换机路由匹配、消费者轮询调度等关键功能。网络通信层基于muduo网络库构建,结合线程池实现异步处理,确保系统高并发能力。通过虚拟主机整合所有组件,提供统一管理接口,最终构建了一个高性能、可靠的消息中间件服务端系统。
2025-06-05 14:52:35
771
原创 高性能分布式消息队列系统(二)
本文详细阐述了消息队列系统的核心模块设计与实现方案。系统基于AMQP协议,采用生产者-消费者模型,包含服务端和客户端两大部分。简述了服务端和客户端的各个部分的功能,实现了后续项目的必要工具。
2025-06-03 21:20:43
1125
原创 高性能分布式消息队列系统(一)
本文介绍了使用C++在Linux环境下开发一个简易消息队列的技术方案。主要技术栈包括:Protobuf用于高效序列化、muduo网络库实现高并发通信、SQLite3进行轻量级数据存储、Gtest单元测试框架。文章详细讲解了开发环境搭建、各组件原理及使用方法
2025-06-03 10:37:02
1280
原创 高并发内存池(手写min版tcmalloc)--6W字详解
想了解Google TCMalloc如何实现高效内存分配吗?本文带你用手写代码的方式实现核心逻辑并配有详细解释,彻底搞懂高并发内存池的设计精髓!通过这片文章了解三级缓存分层设计:ThreadCache:线程独享的无锁缓存,秒级分配小内存、CentralCache:全局中心缓存,智能合并碎片内存、PageCache:兜底大招,充当操作系统内存分配的桥梁了解两大核心优化技术:无锁化:线程本地缓存避免竞争碎片管理:通过Span合并/分割减少内存浪费虽然是mini版,但完整保留了TCMalloc的设计思想
2025-04-28 12:14:28
1076
原创 【Linux网络】以太网(数据链路层)
本文内容包括▶ 以太网帧格式如何进行分离?如何进行分用?基于协议重谈是局域网进行数据转发的原理▶ ARP协议ARP数据报的格式协议的原理ARP欺骗重新看待OSI七层模型▶ DNS协议DNS协议的基本工作原理:▶ ICMP协议ICMP协议的功能▶ 一些常用的命令ping命令traceroute命令▶ NAT技术NAT IP转换技术▶ NAPT技术NAPT的技术原理▶ 代理服务器
2025-04-06 21:42:04
736
原创 【算法】二分查找
本文总结了二分查找的特点、使用条件、和时间复杂度的分析,并且还将二分进行总结成三种情况,分别是朴素二分、查找左边界的二分和查找右边界的二分三种情况。通过若干到例题进行强化算法思维。
2025-04-06 13:08:41
1694
原创 【Linux网络】高级IO概念的理解
进行理解高级IO高级之处在传统本地IO的基础上,网络通信需要更高效的IO处理方式。IO(输入/输出)指数据在外设与内存之间的传输,其性能影响系统的整体效率。高效IO的核心IO操作由等待数据就绪 + 数据拷贝组成,提高IO效率的关键在于减少等待时间。
2025-03-30 10:57:00
1006
原创 【Linux】进程间的通信
本文内容包括通信的概念、通信的作用、如何建立进程间通信、如何通过管道进行通信,其中包括命名管道通信和匿名管道通信、以及如何通过共享内存进行通信。
2025-03-06 10:39:17
3799
原创 【Linux】文件系统
本文内容包含磁盘的物理、存储、抽象结构,磁盘进行分区管理的方式包括Boot Block 、Block Group、文件内容 inode编号的查找、操作系统对于文件的创建删除查看的实现,软硬链接有关问题,包括软硬链接的创建、区别等等
2025-02-05 07:30:00
1142
原创 【Linux】文件描述符
本文内容包括文件的一些共识、C语言层面关于文件方面的结构以及系统层面的接口、文件描述符相关概念以及内核、缓冲区的理解等
2025-02-04 17:47:36
1039
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人