自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(182)
  • 问答 (1)
  • 收藏
  • 关注

原创 【Git】企业级开发模型

测试系统的完善和成熟也是衡量一个软件企业整体水平的重要指标之一,测试往往被忽视,因为它对可以的隐性、对软件开发企业不产生直接的效益,但是它却是软件质量的最终保障,乃至项目能否成功的重要因素!在 develop 下开发人员自测通过后,先确定下 develop 不存在未测试完毕的需求,然后研发人员可基于 develop 分支创建一个 release/xxx 分支出来,可交由测试人员进行测试。develop 为开发分支,基于 master 分支创建的只读且唯一分支,始终保持最新完成以及 bug 修复后的代码。

2026-06-17 03:27:12 161

原创 【Git】多人协作

目前,我们的仓库中只有一个 master 主分支,但在实际的项目开发中,在任何情况下其实都是不允许直接在 master 分支上修改代码的,这是为了保证主分支的稳定。这时推送失败,因为你的小伙伴的最新提交和你推送的提交有冲突,解决办法也很简单,Git 已经提示我们,先用 git pull 把最新的提交从 origin/dev 抓下来,然后,在本地进行合并,并解决冲突,再推送。这时,你的小伙伴已经修养的差不多,可以继续进行自己的开发工作,那么他首先要获取到你帮他开发的内容,然后接着你的代码继续开发。

2026-06-16 23:14:21 152

原创 【Git】标签管理

相较于难以记住的 commit id,tag 很好的解决这个问题,因为 tag 一定要给一个让人容易记住,且有意义的名字。标签 tag,可以简单的理解为是对某次 commit 的一个标识,相当于起了一个别名。例如,在项目发布某个版本的时候,针对最后一次 commit 起一个 v1.0 这样的标签来标识里程碑的意义。另外,打完标签之后,使用 tree .git 命令查看一下你的本地库有什么变化,肯定能帮助你理解!在 Git 中打标签非常简单,首先,切换到需要打标签的分支上。

2026-06-16 20:53:32 173

原创 【Git】远程操作

顺利的话,可以在用户主目录里找到 .ssh 目录,里面有 id_rsa 和 id_rsa.pub 两个文件,这两个就是 SSH Key 的秘钥对,id_rsa 是私钥,不能泄露出去,id_rsa.pub 是公钥,可以放心地告诉任何人。Git 是分布式版本控制系统,同一个 Git 仓库,可以分布到不同的机器上。实际情况往往是这样,找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个 “服务器” 仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。

2026-06-16 20:23:28 138

原创 【Git】分支管理

添加一个新功能时,你肯定不希望因为一些实验性质的代码,把主分支搞乱了,所以,每添加一个新功能,最好新建一个分支,我们可以将其称之为 feature 分支,在上面开发,完成后,合并,最后,删除该 feature 分支。在 Git 中,每个 bug 都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。

2026-06-16 15:38:06 193

原创 【Git】基本操作:从初始Git到熟悉基本操作

注意事项:还需要再明确一点,所有的版本控制系统,Git 也不例外,其实只能跟踪文本文件的改动,比如 txt 文件,网页,所有的程序代码等等。递增的数字,而是一个 SHA-1 (哈希算法) 计算出来的一个非常大的数字,用十六进制表示 (你看到的 commit id 和我的肯定不一样,以自己的为准)。当执行 git add 命令时,暂存区的目录树被更新,同时工作区修改 (或新增) 的文件内容被写入到对象库中的一个新的对象中,就位于 “.git/objects” 目录下,让我们来看看这些对象有何用处:。

2026-06-16 13:15:57 200

原创 【Git】git reset 详解

1.git reset 的 “回到上一次”,是相对当前 HEAD(最新提交)的前一次提交(HEAD^),而非固定的 “上一个版本”。2.三种核心用法对应不同需求:–soft(保留暂存区)、–hard(彻底丢弃)、–mixed(默认,保留工作区)。3.–hard 有数据丢失风险,仅在私有分支使用,公共分支禁止随意操作。

2026-01-29 21:28:53 709

原创 C++知识

std::map 大量插入慢,是因为 “红黑树的节点级操作 + 每次 log n 计算 + 频繁内存分配” 三者叠加;std::map 在“大量插入”场景下出现性能瓶颈,并不是因为它“不会用 CPU”,而是由它的底层数据结构(红黑树)和接口语义共同决定的。C++ 标准库从 C++11 开始明确规定:多个线程并发地对同一个 std::map 对象进行读写操作,是未定义行为(UB)——除非你自己加锁(如 std::mutex)。其实STL中的容器都是线程不安全的,如果想要线程安全的话,就得自己加锁。

2025-09-04 20:57:10 1041 4

原创 MySQL知识

【代码】MySQL知识。

2025-09-04 20:56:53 372

原创 【算法刷题】手撕

(最常见:LeetCode 240 变种:240. 搜索二维矩阵 II)1.判断有序二维数组中是否存在target。每行升序,但行与行之间可交叉 / 可重复。

2025-08-16 00:33:54 265

原创 【数据结构】排序

O(n log n)(均匀划分)

2025-08-14 22:10:05 341

原创 计算机网络知识

20 kB/s 这个上限并不是“路由器里跑 TCP 协议”决定的,而是由人为策略(管制/整形)强加的一条速率阈值。如果只是简单地“超过 20 kB/s 就立即丢包/标记”,那就是 policing,效果同样是 20 kB/s 上限。任何时刻 bucket 里没有足够 token 时,多余的分组就被缓存或丢弃,于是宏观速率被钳在 20 kB/s。TCP 本身不会主动限速,它只是根据丢包/延迟信号调整拥塞窗口;20 kB/s 是人为给它的“天花板”。填充速率 = 20 kB/s。

2025-08-14 21:50:01 330

原创 操作系统知识

Linux:根据/etc/systemd/system/default.target启动服务(如sshd、crond)启动第一个用户空间进程:Linux执行/sbin/init(PID 1),Windows启动wininit.exe。内核加载:将操作系统内核(如Linux的vmlinuz或Windows的ntoskrnl.exe)加载到内存。Linux:启动X11/Wayland服务,加载桌面环境(如GNOME)登录验证:通过PAM(Linux)或LSA(Windows)验证用户凭据。

2025-08-13 17:16:45 610

原创 内存池项目问题

我的page cache是按照直接定址法设计的哈希桶结构,从1page 到 128 page 一共有128个桶,每个桶上面挂有和桶号相对应的挂有相同内存大小的span双向链表,比如,1号桶下挂的是span双向链表,每个链表节点指向的内存是1page,当第二层缓存central cache 向第三层缓存page cache申请内存时,其会优先找申请内存对应的桶号,如果该桶号下无内存,就依次向更大的桶号去找。若 x==0 返回 0。你的担心是合理的:如果直接跨线程操作 thread cache,是不安全的。

2025-08-13 17:08:30 721

原创 leetcode-hot100-2

public:// 使用二分算法分别查找左右端点// 查找左端点//找右端点。

2025-07-07 13:48:56 451

原创 leetcode-hot100-1

本文总结了回溯算法的典型应用,包括电话号码字母组合、括号生成、组合总和和N皇后问题。通过递归和回溯的思想,系统地解决了这些经典问题:在字母组合中遍历数字对应的字符,在括号生成中控制左右括号数量,在组合总和中通过位置或个数枚举寻找解,在N皇后问题中检查行列和对角线冲突。所有解法都遵循"递归+回溯"的框架,通过深度优先搜索探索解空间,同时使用临时变量记录状态,并在回溯时恢复现场。代码实现简洁高效,展现了回溯算法在组合类和排列类问题中的强大解决能力。

2025-06-13 12:19:30 560

原创 二叉树基础OJ

本文分享了三个二叉树相关问题的解法:1)判断两棵树是否相同的递归解法;2)计算二叉树最大深度的两种方法(自底向上和自顶向下);3)判断一棵树是否为另一棵树的子树的两种解法(暴力匹配和高度优化匹配)。所有解法均采用递归实现,代码简洁高效,并附有时间复杂度分析。对于子树问题,暴力解法的时间复杂度为O(n*min(n,m)),高度优化方法则进一步提升了效率。

2025-06-13 12:16:34 463

原创 C语言基础OJ

摘要 本文介绍LeetCode"检测大写字母"问题的解决方案。题目要求判断单词是否满足全部大写、全部小写或首字母大写三种大写字母使用规则。提供两种编程语言实现:C语言版本通过遍历统计大写字母数量,判断是否符合三种情况之一;C++版本则使用ranges::count_if算法简化大写字母计数。两种实现的核心逻辑相同,通过统计大写字母数量并验证其是否符合特定条件来解决问题。该算法的时间复杂度为O(n),空间复杂度为O(1)。

2025-06-13 12:15:51 334

原创 【递归、搜索与回溯】专题三 穷举vs暴搜vs回溯vs剪枝

【代码】【递归、搜索与回溯】专题三 穷举vs暴搜vs回溯vs剪枝。

2025-06-06 16:47:20 591

原创 【标准项目】高并发内存池

本文介绍了一个高并发内存池项目,其原型是Google开源项目tcmalloc(Thread-Caching Malloc)。该项目简化了tcmalloc核心框架,实现了一个高效的多线程内存管理工具,用于替代传统的内存分配函数(malloc/free)。文章首先介绍了内存池的基本概念、池化技术及其解决的问题(效率和内存碎片),并对比了malloc的实现机制。随后详细讲解了定长内存池的设计与实现,通过测试对比展示了其在特定场景下的性能优势。最后介绍了高并发内存池的整体框架设计,强调其针对多线程环境的优化特性。该

2025-06-05 14:35:17 1249

原创 【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 1283

原创 【C++项目】负载均衡在线OJ系统-1

本文介绍了一个基于C++的负载均衡在线OJ系统设计与实现。项目采用前后端分离架构,前端通过HTTP请求与后端交互,后端采用负载均衡策略动态选择编译服务主机。技术栈包括C++ STL、cpp-httplib、jsoncpp、Boost等库,实现了代码编译、运行、结果返回等功能。系统结构分为oj_server(前端交互)、compiler_server(编译服务)和common(公共模块)三部分。文章详细阐述了编译功能的设计思路,包括临时文件管理、错误处理和日志系统等关键模块的实现方法。

2025-06-03 20:08:14 1602

原创 【递归、搜索与回溯】专题二、二叉树中的深搜

本文摘要了五道二叉树相关算法题的解题思路和代码实现: 计算布尔二叉树值 - 递归判断叶子节点或按运算符处理左右子树 求根到叶节点数字之和 - DFS遍历累积路径数字并求和 二叉树剪枝 - 后序递归移除全0子树 验证二叉搜索树 - 中序遍历检查严格递增性 二叉搜索树第K小元素 - 中序遍历计数获取目标节点 各题均采用递归解法,处理节点时分别运用了前序、后序和中序遍历策略,代码简洁高效。二叉搜索树相关问题利用了其有序特性,通过中序遍历解决验证和查找问题。

2025-06-01 01:45:23 654

原创 【递归、搜索与回溯算法】专题一 递归

本文介绍了递归、搜索与回溯算法在编程问题中的应用。主要内容包括:1)汉诺塔问题的递归解法,通过移动盘子的三步策略实现;2)合并两个有序链表的递归方法,比较节点值并递归处理剩余部分;3)反转链表的递归实现,通过改变指针指向完成反转;4)两两交换链表节点的递归和迭代两种解法;5)快速幂算法求幂的递归实现,通过分治法将时间复杂度优化至O(logn)。这些案例展示了递归思想在解决分治、链表和数学问题中的灵活运用。

2025-05-27 14:49:12 618

原创 【算法专题十七】BFS解决拓扑排序

摘要 本文介绍了拓扑排序及其在LeetCode题目中的应用。主要内容包括:1) 拓扑排序的基本概念;2) 课程表问题及其解法(判断课程安排是否合理);3) 课程表Ⅱ问题(输出合理的课程学习顺序);4) 火星词典问题(根据单词顺序推导字母顺序)。每个问题都给出了详细思路和C++代码实现,通过构建有向图并使用拓扑排序算法来检测环并确定顺序。其中课程表类问题使用入度统计和BFS方法,火星词典问题则通过比较相邻单词建立字母间的相对顺序关系。

2025-05-26 13:40:03 532

原创 【算法专题十六】多源BFS

本文主要介绍了三个与图论相关的算法问题及其解决方案。首先,多源最短路问题通过广度优先搜索(BFS)解决,适用于计算矩阵中每个点到最近零点的距离。其次,01矩阵问题同样使用BFS,通过从零点出发逐层扩展,计算每个点的最短距离。最后,飞地的数量问题通过BFS标记边界可达的点,统计无法到达边界的陆地数量。每个问题都提供了详细的思路和代码实现,展示了BFS在图论问题中的广泛应用。

2025-05-23 16:12:37 519

原创 【算法专题十五】BFS解决最短路问题

本文介绍了三个基于广度优先搜索(BFS)的算法问题:迷宫中离入口最近的出口、最小基因变化和单词接龙。对于迷宫问题,通过BFS从入口开始搜索,找到最近的出口。最小基因变化问题则通过BFS在基因库中寻找从起始基因到目标基因的最少变化次数。单词接龙问题同样使用BFS,在单词列表中寻找从起始单词到目标单词的最短转换路径。每个问题都提供了详细的思路和代码实现,展示了BFS在解决最短路径问题中的高效性。

2025-05-21 16:49:19 641

原创 【算法专题十四】BFS解决FloodFill算法

题目链接。

2025-05-19 17:28:33 544

原创 【算法专题十三】优先级队列

本文介绍了LeetCode中的四个与堆相关的算法题目及其解决方案。首先,1046.最后一块石头重量通过大根堆模拟石头碰撞过程,最终返回剩余石头的重量。其次,703.数据流中的第K大元素使用小根堆维护数据流中的前K大元素,确保每次查询时能快速返回第K大值。接着,692.前K个高频单词通过哈希表统计单词频率,并结合自定义比较器的小根堆,返回频率最高的前K个单词。最后,数据流的中位数通过大根堆和小根堆的平衡维护,确保能够快速获取数据流的中位数。每个问题都提供了详细的思路和代码实现,展示了堆在解决复杂问题中的高效性

2025-05-18 15:18:12 553

原创 【算法专题十二】队列+宽搜

本文介绍了四道LeetCode题目及其解法,主要涉及二叉树的层序遍历及其变种。第一题是N叉树的层序遍历,通过队列实现逐层遍历并记录每层节点值。第二题是二叉树的锯齿形层序遍历,在层序遍历的基础上,通过标志位控制每层节点的输出顺序。第三题是求二叉树的最大宽度,通过给节点编号并计算每层最左和最右节点的编号差来得到宽度。第四题是在每层中找最大值,通过层序遍历逐层比较节点值并记录最大值。每道题目均提供了详细的思路和C++代码实现,帮助理解二叉树的遍历及其应用。

2025-05-16 15:16:36 528

原创 【算法专题十二】栈

【代码】【算法专题十二】栈。

2025-05-15 01:35:49 481

原创 【算法专题十一】字符串

【代码】【算法专题十一】字符串。

2025-05-08 13:45:50 555

原创 【算法专题十】哈希表

题目链接。

2025-05-06 16:08:23 813

原创 【算法专题九】链表

题目链接。

2025-05-03 16:11:55 487

原创 【算法】动态规划专题一 斐波那契数列模型 1-4

【代码】【算法】动态规划专题一 斐波那契数列模型 1-4。

2025-05-02 13:09:22 641

原创 【项目设计】MySQL 连接池的设计

连接池是一个数据库连接的管理工具,旨在优化数据库连接的开启、关闭和复用,从而提高数据库访问性能和系统的并发处理能力。连接池在应用程序启动时预先创建一定数量的数据库连接,并将它们放入一个池中。当应用程序需要连接数据库时,从连接池中获取一个空闲的连接,使用完毕后再将连接归还给连接池,以便其他请求可以复用这个连接。这样一来,就避免了频繁地开启和关闭数据库连接的开销。

2025-05-02 13:08:53 1020

原创 【MySQL】使用C语言连接

要使用库,必须先进行初始化。mysql_init 函数会给我们返回一个 MYSQL 句柄,我们后续的操作都需要通过这个 MYSQL 句柄来完成。本篇博客主要讲解了 mysql 连接库的下载和安装、mysql 接口介绍以及实现了简易版的 mysql 客户端等等。以上就是本篇博客的全部内容,如果大家觉得有收获的话,可以点个三连支持一下!💖💝❣️。

2025-04-30 09:50:55 1456

原创 【MySQL】用户管理

本篇博客主要讲解了如何查看用户信息、创建用户、删除用户、修改用户密码、给用户授权、回收权限等等。以上就是本篇博客的全部内容,如果大家觉得有收获的话,可以点个三连支持一下!💖💝❣️。

2025-04-21 10:46:07 1423

原创 【MySQL】视图特性

本篇博客主要讲解了什么是视图、视图的基本使用以及视图规则和限制等等。以上就是本篇博客的全部内容,如果大家觉得有收获的话,可以点个三连支持一下!💖💝❣️。

2025-04-18 20:32:30 354

原创 【MySQL】事务管理

事务就是一组 DML 语句组成,这些语句在逻辑上存在相关性,这一组 DML 语句要么全部成功,要么全部失败,是一个整体。MySQL 提供一种机制,保证我们达到这样的效果。事务还规定不同的客户端看到的数据是不相同的。事务就是要做的或所做的事情,主要用于处理操作量大,复杂度高的数据。

2025-04-18 20:22:58 1291

空空如也

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

TA关注的人

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