- 博客(164)
- 问答 (1)
- 收藏
- 关注
原创 【标准项目】高并发内存池
本文介绍了一个高并发内存池项目,其原型是Google开源项目tcmalloc(Thread-Caching Malloc)。该项目简化了tcmalloc核心框架,实现了一个高效的多线程内存管理工具,用于替代传统的内存分配函数(malloc/free)。文章首先介绍了内存池的基本概念、池化技术及其解决的问题(效率和内存碎片),并对比了malloc的实现机制。随后详细讲解了定长内存池的设计与实现,通过测试对比展示了其在特定场景下的性能优势。最后介绍了高并发内存池的整体框架设计,强调其针对多线程环境的优化特性。该
2025-06-05 14:35:17
1070
原创 【C++项目】负载均衡在线OJ系统-2
本文介绍了OJ在线判题系统的服务器模块设计,采用MVC架构实现题目管理和判题功能。 MVC架构设计: Model(oj_model):负责题库数据交互,支持文件和MySQL两种存储方式 View(oj_view):处理网页渲染,提供首页、题目列表和单题页面 Controller(oj_control):核心业务逻辑,通过路由分发请求 路由功能实现: 使用cpp-httplib搭建服务器 提供3个核心接口: /all_questions 获取题目列表 /question/(\d+) 获取单个题目 /judge
2025-06-05 12:57:08
1043
原创 【C++项目】负载均衡在线OJ系统-1
本文介绍了一个基于C++的负载均衡在线OJ系统设计与实现。项目采用前后端分离架构,前端通过HTTP请求与后端交互,后端采用负载均衡策略动态选择编译服务主机。技术栈包括C++ STL、cpp-httplib、jsoncpp、Boost等库,实现了代码编译、运行、结果返回等功能。系统结构分为oj_server(前端交互)、compiler_server(编译服务)和common(公共模块)三部分。文章详细阐述了编译功能的设计思路,包括临时文件管理、错误处理和日志系统等关键模块的实现方法。
2025-06-03 20:08:14
1364
原创 【递归、搜索与回溯】专题二、二叉树中的深搜
本文摘要了五道二叉树相关算法题的解题思路和代码实现: 计算布尔二叉树值 - 递归判断叶子节点或按运算符处理左右子树 求根到叶节点数字之和 - DFS遍历累积路径数字并求和 二叉树剪枝 - 后序递归移除全0子树 验证二叉搜索树 - 中序遍历检查严格递增性 二叉搜索树第K小元素 - 中序遍历计数获取目标节点 各题均采用递归解法,处理节点时分别运用了前序、后序和中序遍历策略,代码简洁高效。二叉搜索树相关问题利用了其有序特性,通过中序遍历解决验证和查找问题。
2025-06-01 01:45:23
572
原创 【递归、搜索与回溯算法】专题一 递归
本文介绍了递归、搜索与回溯算法在编程问题中的应用。主要内容包括:1)汉诺塔问题的递归解法,通过移动盘子的三步策略实现;2)合并两个有序链表的递归方法,比较节点值并递归处理剩余部分;3)反转链表的递归实现,通过改变指针指向完成反转;4)两两交换链表节点的递归和迭代两种解法;5)快速幂算法求幂的递归实现,通过分治法将时间复杂度优化至O(logn)。这些案例展示了递归思想在解决分治、链表和数学问题中的灵活运用。
2025-05-27 14:49:12
504
原创 【算法专题十七】BFS解决拓扑排序
摘要 本文介绍了拓扑排序及其在LeetCode题目中的应用。主要内容包括:1) 拓扑排序的基本概念;2) 课程表问题及其解法(判断课程安排是否合理);3) 课程表Ⅱ问题(输出合理的课程学习顺序);4) 火星词典问题(根据单词顺序推导字母顺序)。每个问题都给出了详细思路和C++代码实现,通过构建有向图并使用拓扑排序算法来检测环并确定顺序。其中课程表类问题使用入度统计和BFS方法,火星词典问题则通过比较相邻单词建立字母间的相对顺序关系。
2025-05-26 13:40:03
445
原创 【算法专题十六】多源BFS
本文主要介绍了三个与图论相关的算法问题及其解决方案。首先,多源最短路问题通过广度优先搜索(BFS)解决,适用于计算矩阵中每个点到最近零点的距离。其次,01矩阵问题同样使用BFS,通过从零点出发逐层扩展,计算每个点的最短距离。最后,飞地的数量问题通过BFS标记边界可达的点,统计无法到达边界的陆地数量。每个问题都提供了详细的思路和代码实现,展示了BFS在图论问题中的广泛应用。
2025-05-23 16:12:37
416
原创 【算法专题十五】BFS解决最短路问题
本文介绍了三个基于广度优先搜索(BFS)的算法问题:迷宫中离入口最近的出口、最小基因变化和单词接龙。对于迷宫问题,通过BFS从入口开始搜索,找到最近的出口。最小基因变化问题则通过BFS在基因库中寻找从起始基因到目标基因的最少变化次数。单词接龙问题同样使用BFS,在单词列表中寻找从起始单词到目标单词的最短转换路径。每个问题都提供了详细的思路和代码实现,展示了BFS在解决最短路径问题中的高效性。
2025-05-21 16:49:19
548
原创 【算法专题十三】优先级队列
本文介绍了LeetCode中的四个与堆相关的算法题目及其解决方案。首先,1046.最后一块石头重量通过大根堆模拟石头碰撞过程,最终返回剩余石头的重量。其次,703.数据流中的第K大元素使用小根堆维护数据流中的前K大元素,确保每次查询时能快速返回第K大值。接着,692.前K个高频单词通过哈希表统计单词频率,并结合自定义比较器的小根堆,返回频率最高的前K个单词。最后,数据流的中位数通过大根堆和小根堆的平衡维护,确保能够快速获取数据流的中位数。每个问题都提供了详细的思路和代码实现,展示了堆在解决复杂问题中的高效性
2025-05-18 15:18:12
462
原创 【算法专题十二】队列+宽搜
本文介绍了四道LeetCode题目及其解法,主要涉及二叉树的层序遍历及其变种。第一题是N叉树的层序遍历,通过队列实现逐层遍历并记录每层节点值。第二题是二叉树的锯齿形层序遍历,在层序遍历的基础上,通过标志位控制每层节点的输出顺序。第三题是求二叉树的最大宽度,通过给节点编号并计算每层最左和最右节点的编号差来得到宽度。第四题是在每层中找最大值,通过层序遍历逐层比较节点值并记录最大值。每道题目均提供了详细的思路和C++代码实现,帮助理解二叉树的遍历及其应用。
2025-05-16 15:16:36
416
原创 【项目设计】MySQL 连接池的设计
连接池是一个数据库连接的管理工具,旨在优化数据库连接的开启、关闭和复用,从而提高数据库访问性能和系统的并发处理能力。连接池在应用程序启动时预先创建一定数量的数据库连接,并将它们放入一个池中。当应用程序需要连接数据库时,从连接池中获取一个空闲的连接,使用完毕后再将连接归还给连接池,以便其他请求可以复用这个连接。这样一来,就避免了频繁地开启和关闭数据库连接的开销。
2025-05-02 13:08:53
844
原创 【MySQL】使用C语言连接
要使用库,必须先进行初始化。mysql_init 函数会给我们返回一个 MYSQL 句柄,我们后续的操作都需要通过这个 MYSQL 句柄来完成。本篇博客主要讲解了 mysql 连接库的下载和安装、mysql 接口介绍以及实现了简易版的 mysql 客户端等等。以上就是本篇博客的全部内容,如果大家觉得有收获的话,可以点个三连支持一下!💖💝❣️。
2025-04-30 09:50:55
1284
原创 【MySQL】用户管理
本篇博客主要讲解了如何查看用户信息、创建用户、删除用户、修改用户密码、给用户授权、回收权限等等。以上就是本篇博客的全部内容,如果大家觉得有收获的话,可以点个三连支持一下!💖💝❣️。
2025-04-21 10:46:07
1332
原创 【MySQL】视图特性
本篇博客主要讲解了什么是视图、视图的基本使用以及视图规则和限制等等。以上就是本篇博客的全部内容,如果大家觉得有收获的话,可以点个三连支持一下!💖💝❣️。
2025-04-18 20:32:30
298
原创 【MySQL】事务管理
事务就是一组 DML 语句组成,这些语句在逻辑上存在相关性,这一组 DML 语句要么全部成功,要么全部失败,是一个整体。MySQL 提供一种机制,保证我们达到这样的效果。事务还规定不同的客户端看到的数据是不相同的。事务就是要做的或所做的事情,主要用于处理操作量大,复杂度高的数据。
2025-04-18 20:22:58
1159
原创 【MySQL】索引特性
一张张不仅仅只有一个索引结构。当我们建立表结构的时候,如果有主见,那么 MySQL 会为我们构建主键索引。主键索引分为聚簇索引和非聚簇索引。MyISAM 存储引擎构建主键索引或者普通索引就是构建 B+ 树,叶子节点保存数据的记录的地址即可。InnoDB 存储引擎构建的主键索引是聚簇索引,而普通索引就是根据普通列构建 B+ 树,然后叶子节点上保存的是该普通数据对应的主键值。后续查找的时候,可以通过回表查询的方式进行查找。需要回表查询并不意味着效率就会变低。
2025-04-16 23:57:33
1074
原创 【MySQL】内外连接
本篇博客主要讲解了表的连接,表的连接是一种将多个表中的数据联合在一起的操作,通过连接条件来关联这些表。如果大家觉得有收获的话,可以点个三连支持一下!💖💝❣️。
2025-04-13 16:43:16
489
原创 【MySQL】复合查询
本篇博客主要讲解了多表查询、自连接和子查询等等。以上就是本篇博客的全部内容了,如果大家觉得有收获的话,可以点个三连支持一下!💖💝❣️。
2025-04-12 13:14:40
941
原创 【MySQL】内置函数
数字能够直接使用二进制来表示,不需要再进行编码,所以数字的 charset 为 binary,而字符串可能需要进行编码,其 charset 与配置文件中的 charset 和建表时指定的 charset 有关。substring 的第一个参数是要截取的字符串,第二个参数是截取的起始位置,第三个参数是截取多少个字符。当出现乱码问题时,可能是因为存储数据的编码和取出数据的编码是不一样的。数据库的字符串下标是从 1 开始的,原因是使用数据库的人可能不是程序员,只是普通用户。以首字母大写的方式显示所有员工的姓名。
2025-04-12 01:31:23
726
原创 【数据结构与算法】跳表
skiplist 本质上也是一种查找结构,用于解决算法中的查找问题,跟平衡搜索树和哈希表的价值是一样的,可以作为 key 或者 key / value 的查找模型。那么相比而言它的优势是什么的呢?这么等我们学习完它的细节实现,我们再来对比。skiplist是由 William Pugh 发明的,最早出现于他在 1990 年发表的论文《Skip Lists: A Probabilistic Alternative to Balanced Trees》。skiplist,顾名思义,首先它是一个 list。
2025-03-20 22:43:48
1025
原创 【Linux】Reactor模式
Reactor 模式是一种事件驱动的设计模式,是将就绪的事件交给特定的事件处理器,用于实现高效的事件驱动程序。它主要用于网络编程中,用于处理大量的并发连接。本篇博客主要讲解了什么是 Reactor 模式、Reactor 模式的组件、Reactor 模式的工作流程以及基于 Reactor 模式的 TCP 服务器等等。以上就是本篇博客的全部内容了,如果大家觉得有收获的话,可以点个三连支持一下!💖💝❣️。
2025-03-20 22:08:29
964
原创 【数据结构与算法】LRU Cache
LRU 是 Least Recently Used 的缩写,意思是最近最少使用,它是一种 Cache 替换算法。什么是Cache?狭义的 Cache 指的是位于 CPU 和主存间的快速 RAM(随机存取存储器), 通常它不像系统主存那样使用 DRAM 技术,而使用昂贵但较快速的 SRAM 技术。广义上的Cache 指的是位于速度相差较大的两种硬件之间, 用于协调两者数据传输速度差异的结构。
2025-03-20 21:52:16
844
原创 【Linux】带你深入了解多路转接
本篇博客主要讲解了多路转接之 select、poll 和 epoll,分析了它们的函数原型、优缺点和应用场景等。以上就是本篇博客的全部内容了,如果大家觉得有收获的话,可以点个三连支持一下!💖💝❣️。
2025-03-20 11:04:19
862
原创 【数据结构与算法】最小生成树|最短路径
Dijkstra 算法只能求出没有负权的图的最短路径,时间复杂度为 O(N^3)。BellmanFord 算法能够求出有负权的图的最短路径,时间复杂度为 O(N^3)。但存在负权回路问题,任何算法都无法解决负权回路问题。Dijkstra 算法和 BellmanFord 算法都需要给点起点,求得的是从起点到其他点的最短路径;而 FloydWarshall 算法能够求出任意两点之间的最短路径,时间复杂度为 O(N^3)。
2025-03-19 09:59:19
1208
原创 【MySQL】基础查询
CRUD 是数据库中常用的术语,表示对数据进行增、删、改、查的操作。主键或者唯一键对应的值已经存在会导致插入数据记录失败。
2025-03-18 21:08:17
764
原创 【数据结构与算法】图的基本概念 | 邻接矩阵和邻接表 | 广度优先遍历和深度优先遍历
本篇博客主要讲解了图的基本概念、邻接矩阵和邻接表、图的广度优先遍历和深度遍历等。那么以上就是本篇博客的全部内容了,如果大家觉得有收获的话,可以点个三连支持一下!💖💝❣️。
2025-03-15 23:29:12
1057
原创 【Linux】带你了解高级IO
本篇博客主要讲解了 IO 的基本概念、五种 IO 模型、高级 IO 的重要概念、其他高级 IO 以及非阻塞 IO 等等。
2025-03-15 22:27:02
694
原创 【Linux】网络层、数据链路层、DNS、ICMP协议、NAT技术
IP 协议只是依据目的 IP 地址、子网划分、路由表查找与路由算法提供了数据转发的策略,并没有实现设备转发的具体功能。具体的设备转发就是局域网内数据转发的问题,这是由下一层数据链路层来解决的。DNS,全称 Domain Name System,即域名系统,用于将易于记忆的域名)转换为与之对应的 IP 地址。域名解析服务使用的是 UDP 协议的 53 号端口,DNS 协议是应用层协议。当用户在浏览器输入域名的时候,会自动查询 DNS 服务器, 由 DNS 服务器检索数据库,得到对应的 IP 地址。
2025-03-11 14:53:16
796
空空如也
微机原理,,,,,,
2021-05-18
TA创建的收藏夹 TA关注的收藏夹
TA关注的人