自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构 最短路径课设(源码+实验报告+视频讲解)(用了自取)

关于数据结构最短路径问题实验报告+代码+视频(用了自取)

2023-01-23 20:18:50 3241

原创 课程设计、二叉树实现及应用(附上源码和实验报告,用了自取)

结课课设对二叉树的应用实现项目

2023-01-03 20:58:45 944

原创 课设 银行家算法 源码+实验报告(用了自取)

银行家算法400行代码,用自取,逻辑清晰、思路完整、代码布局合理,复制粘贴即可使用

2023-01-02 10:49:15 7692 2

原创 豆包牛批普拉斯

自定义删除器允许开发者自定义资源释放逻辑,适用于管理非内存资源(如文件句柄、socket、锁)。示例(管理文件句柄):cpp运行if (fp) {// 读取文件return 0;优势统一使用智能指针管理所有资源,代码风格一致。自动释放资源,避免泄漏。支持 lambda 表达式作为删除器,灵活定制释放逻辑。

2026-06-29 21:23:30 23

原创 codegraph使用手册

【代码】codegraph使用手册。

2026-06-24 11:47:25 29

原创 Go(五)小徐先生文章汇总

上一周和大家聊了 Golang HTTP 标准库的实现原理. 本周在此基础上做个延伸,聊聊 web 框架 Gin 的底层实现原理.:Linux 内核有成熟稳定的红黑树通用实现,适配 fd 增删改查、范围查找场景,内核极少用哈希表做高频动态管理。本期和大家一起探讨 Golang net/http 包的底层实现,走读的源码版本为 Golang 1.19.:高并发下连接频繁增删,哈希表扩容 rehash 会造成瞬时卡顿,内核不可接受;:epoll 需要频繁遍历所有监听 fd,红黑树中序遍历有序、缓存友好;

2026-06-12 17:17:21 15

原创 epoll 为什么用红黑树而非哈希表?

需要有序遍历就绪 / 监听 fd,红黑树遍历效率与缓存友好度远优于无序哈希表;连接频繁增删改,哈希表rehash 扩容会造成突发卡顿而且缩容过程更复杂fd 为连续整型,哈希表冲突严重、性能抖动大,红黑树 O(logn) 延迟稳定;Linux 内核原生提供成熟稳定的红黑树实现,适配内核编程模型。

2026-06-11 18:02:16 17

原创 Go(四)Channel

在 Go 语言中,是并发编程的核心组件之一。如果说 Goroutine 是 Go 并发执行的实体,那么 Channel 就是这些实体之间沟通的桥梁。Go 语言有一句非常经典的并发哲学:> (不要通过共享内存来通信,而应该通过通信来共享内存。

2026-06-04 11:14:12 53

原创 Go(三)GC垃圾回收

5、Golang三色标记混合写屏障GC模式全分析 · 语雀本节为重点章节本章节含视频版:视频链接地址:https...

2026-06-03 18:02:25 55

原创 Go(二)Goroutine及GMP模型

你写在代码里的同步阻塞网络请求,在底层全被 Go Runtime 偷偷拦截,并通过。

2026-06-03 14:35:12 96

原创 Go(一)Gin框架 和 GORM机制

Gin 负责处理程序的网络入口。在底层,Go 的 标准库已经自带了高效的协程调度和网络轮询(类似底层封装好的 epoll 模型),而 Gin 就是在这个基础上搭建的一层极其易用的脚手架。极速路由: Gin 底层使用了一棵基于基数树(Radix Tree)的路由引擎。它的路由匹配速度极快,内存占用极低,特别适合构建高并发的 RESTful API。数据绑定与校验 (类似 Pydantic): 当客户端发起 POST 请求时,Gin 可以直接将传递过来的 JSON 数据“反序列化”并绑定到 Go 的结构体(S

2026-06-02 15:43:45 363

原创 Hermes Agent使用

【代码】Hermes Agent使用。

2026-05-27 15:31:31 35

原创 前端依赖配置

【代码】前端依赖配置。

2026-05-15 14:32:00 32

原创 C++中的零拷贝

处理磁盘/网络 I/O 时:优先考虑sendfilemmap或更现代的io_uring。处理 C++ 业务逻辑时:熟练使用std::move以及利用编译器的 RVO。处理高并发网络协议与报文时:抛弃连续内存思维,使用基于链表/块引用的IOBuf结构和支持零拷贝的序列化流。

2026-05-14 16:05:56 36

原创 Linux(十五)自旋锁

是空间换时间(通过线程切换让出 CPU 给别人用),适合;是时间换空间(省去了切换开销但空耗 CPU),适合的原子操作。

2026-05-13 17:35:37 30

原创 Linux(十四)读者写者问题

读者写者问题的核心在于对共享资源的非对称访问控制。基本约束:读-读兼容:多个读者可以同时读取资源。(并发)读-写互斥:当有人在写时,任何人不能读。(互斥)写-写互斥:同一时间只能有一个写者在操作。(互斥)矛盾点:如何在保证数据一致性的前提下,尽可能提高系统的并发度,并避免某一方长时间拿不到锁(即“饥饿”)。

2026-05-13 11:08:22 34

原创 MySQL(十)SQL调优专题

mysqlslap — MySQL自带原生工具可以看到使用字段查询同样一条记录的耗时是使用列的60倍左右同时也可以使用 show processlist 显示当前正在运行的线程在执行 SELECT等sql语句之前都可以用EXPLAIN执行分析,返回分析结果,来优化SQL。

2026-05-10 16:21:24 110

原创 虚拟环境pip

你之前在 WSL 里跑过创建环境的命令。Linux 系统生成的虚拟环境结构是,而 Windows 需要的是。如果在切回 Windows 时,旧的 Linux.venv文件夹没被彻底删干净,Windows 进去一找,发现没有Scripts目录,就会报这个错。:在 Windows PowerShell 里执行时,如果系统没有正确配置 Python 环境变量,或者触发了微软商店(Microsoft Store)的别名拦截,它可能会瞬间结束,既不报错,。我们现在用最稳妥的方式,彻底清理并重建一次。

2026-05-09 15:02:42 71

原创 MySQL(九)主从复制集群架构

不要一上来就讲线程,先展示你的架构全局观。“MySQL 主从复制是指将主数据库(Master)的 DDL 和 DML 操作通过二进制日志传到从库(Slave),然后在从库上重放(Replay),从而使得从库和主库的数据保持一致。主库挂了,可以快速切换到从库,避免单点故障。面对高并发场景,主库负责写,多个从库负责读,极大地分摊了数据库的读压力。可以在从库上进行日常备份,不影响主库的线上业务性能。

2026-05-07 23:07:41 52

原创 MySQL(八)事务

事务就是一组DML语句,由一个或多个sql语句组成,这组语句要么全部成功,要么全部回滚,不会停留在某个中间单元。二、ACID:一个事务中的多个操作,要么全部成功,要么全部失败依赖 Undo Log(回滚日志)保证:一个事务被提交后,对数据的改变是持久的,即使数据库发生故障,恢复后数据依然存在依赖Redo Log(重做日志)保证:通过锁和MVCC机制控制事务之间的可见性和操作冲突(并发事务之间互不干扰)依赖MVCC(多版本并发控制)和锁机制 保证。

2026-05-06 17:38:35 227

原创 c++里面的RAII锁是悲观还是乐观锁?

C++ 里的 RAII 锁,比如lock_guard,本质上是一个资源管理工具。它里面封装的std::mutex属于典型的。悲观锁假设并发冲突概率高,拿不到锁就会让线程陷入阻塞,带来上下文切换的开销。如果业务场景是‘读多写少’且临界区极短,悲观锁会成为性能瓶颈。这时我会在设计上倾向于,也就是利用 C++11 的提供的 CAS(比较并交换)原语,通过自旋重试的方式实现无锁化编程,避免线程在用户态和内核态之间频繁切换。

2026-05-06 16:01:09 19

原创 MySQL(七)索引

是帮助MySQL高效获取数据的MySQL在存储数据之外,数据库系统中还维护着满足特定查找算法的数据结构,这些数据结构以某种引用(指向)表中的数据,这样我们就可以通过数据结构上实现的高级查找算法来快速找到我们想要的数据。而这种就是。不用加内存,不用改程序,不用调sql,只要执行正确的create index ,查询速度就可能提高成百上千倍。但是天下没有免费的午餐,查询速度的提高是以插入、更新、删除的速度为代价的,这些写操作,增加了大量的IO。

2026-05-04 16:20:41 329

原创 计算机通信协议TCP/IP

而是指一个由成百上千个协议组成的。只是因为 TCP 和 IP 是其中最核心、最具代表性的两个,所以用它们来命名整个大家族。为了降低复杂性,TCP/IP 采用了(著名的 4 层模型)。

2026-05-03 16:26:33 167

原创 C++ 为什么构造函数不能设置为虚函数

2026-04-27 21:38:06 16

原创 C++析构函数为什么建议设置为虚函数?

2026-04-27 19:04:37 30

原创 Git——分支管理

初始化并连接云端git init(将普通文件夹变成 Git 仓库)<远程仓库地址>(绑定公司服务器(拉取公司服务器上的所有历史记录)(让本地代码树与远程主干对齐,同时完美保留你本地所有的修改和新增文件,例如你新写的。

2026-04-22 14:49:23 63

原创 QT——对象树

在 Qt 中,绝大多数类都直接或间接地继承自QObject(比如所有的界面控件QWidget, 布局QLayout等)。当你创建一个QObject对象时,你可以给它指定一个父对象(Parent)。认父归宗:当你传入一个父对象指针时,父对象会自动将这个新创建的子对象添加到自己的子对象列表(Children List)中。树状结构:这种“一个父节点带着多个子节点,子节点又可以有自己的子节点”的关系,最终在内存中构成了一棵树。通常,程序的顶层窗口(如MainWindow)就是这棵树的根节点。尽量在堆上创建(使用。

2026-04-21 18:49:23 214

原创 Git——自用手册

(这正是 Git 提示里建议的命令).git彻底剥夺它作为一个独立 Git 仓库的身份,让它变成一个普通的纯代码文件夹。(注意:如果v2.0或者其他副本文件夹里也有.git,建议一并用rm -rf删掉。git add .这次就不会再报错了。接下来你就可以正常执行然后推送到远程仓库了。

2026-03-19 13:09:01 85

原创 基于langchain构建问答系统

拿到数据库返回的原始数据后,LLM 才开始流式生成人类能读懂的句子。因此,你会发现程序先静止几秒,然后文字才像打字机一样“啪嗒啪嗒”出来。

2026-03-08 18:29:19 408

原创 悬空引用,悬空指针

如果在函数中有一个变量a,然后我们通过指针p指向a,然后解引用修改这个a,需要注意什么?这是我今天的一个面试题。

2026-03-02 20:12:53 41

原创 26年3月2日 思看科技

的,而不是属于某个对象的。为了节省空间,同一个类的所有对象共用同一份虚表。它通常存放在可执行文件的只读数据段中。4、c++新特性 智能指针 uniqueptr和sharedptr区别 他们分别的适用场景。如果派生类覆盖了基类的虚函数,虚表中对应的地址就会被替换为派生类的函数地址。使用条件变量的wait接口,等待同一把互斥锁,以及state信号的条件。6、介绍常见的stl 说说map和vector的使用场景。虚表是存储类中所有虚函数地址的一个函数指针数组。1、生产者消费者 三个线程交替打印abc。

2026-03-02 20:02:35 63

原创 栈(五)20. 有效的括号

判断字符串是否有效。

2026-03-01 18:47:44 40

原创 Docker容器化部署编译运行模块

我的oj服务在本地的8080端口,然后配置文件里面写了三台8081 8082 8083三个端口的本地主机,现在AI给我写了一份docker文件,我应该如何使用,我从来没有docker部署经验,请一步一步指导,比如我在当前文件界面启动oj服务器,在linux系统的其他比如我新建一个文件夹,再这个文件夹里面如何部署docker?在一台机器上模拟三个判题节点。打包形成tar文件,新的机器直接使用这个文件。步骤 C:在新电脑加载并运行。重启相应的docker容器。步骤 A:在本机打包镜像。步骤 B:传输到新电脑。

2026-02-02 18:12:05 369

原创 二分搜索(十一)911. 在线选举

/ 返回 1 ,在时刻 25 ,票数分布为 [0,1,1,0,0,1] ,编号为 1 的候选人领先。(在平局的情况下,1 是最近获得投票的候选人)。// 返回 1 ,在时刻 12 ,票数分布为 [0,1,1] ,编号为 1 的候选人领先。// 返回 0 ,在时刻 3 ,票数分布为 [0] ,编号为 0 的候选人领先。在平局的情况下,最近获得投票的候选人将会获胜。时刻在选举中领先的候选人的编号。

2026-01-26 15:25:49 281

原创 二分查找(十)1146. 快照数组 pair整理

这四次调用结束后,下标 0 的历史修改记录 history[0]=[(2,6),(3,1),(3,7),(5,2)],每个数对中的第一个数为调用 set 时的快照编号,第二个数为调用 set 时传入的 val。由于历史修改记录中的快照编号是有序的,我们可以在 history[0] 中二分查找快照编号 ≤4 的最后一条修改记录,即 (3,7)。在 history[0] 中,快照编号 ≤1 的记录不存在,说明在快照编号 ≤1 时,我们没有修改下标 0 保存的元素,返回初始值 0。lambda自定义排序。

2026-01-26 11:41:29 622 3

原创 轰炸敌人,最多可以摧毁的敌人城堡数目

对于每一个空位置,进行一次bfs,从上下左右四个方向去寻找,这是岛屿问题的相似处理,但是这个题可以优化,因为横竖方向可以进行动规优化。:同理,对于同一列里、两个墙之间的所有格子,它们能炸到的“列敌人”数量也是一样的。:对于同一行里、两个墙之间的所有格子,它们能炸到的“行敌人”数量是一样的。都重新数一遍它所在的行和列有多少敌人。之后,重新计算当前这段的敌人数量。来缓存每一列当前段的敌人数量。

2026-01-24 17:04:05 219

原创 贪吃蛇 set和deque使用

【代码】贪吃蛇 set和deque使用。

2026-01-24 16:58:59 237

原创 二分查找(九)2300. 咒语和药水的成功对数

整体思路较为清楚,遍历每一份spells,利用这个spell来进行与potions每个元素乘积结果的判断,使用二分搜索优化,找到第一个大于等于target的位置,后续直接用个数-位置即可。- 第 1 个咒语:1 * [1,2,3,4,5] = [1,2,3,4,5]。- 第 2 个咒语:3 * [1,2,3,4,5] = [3,6,- 第 0 个咒语:5 * [1,2,3,4,5] = [5,一个咒语和药水的能量强度。总共 4 个成功组合。总共 3 个成功组合。所以返回 [4,0,3]。

2026-01-23 17:39:52 400

原创 二分查找(八)2476. 二叉搜索树最近节点查询、lower_bound库

树中小于等于 16 的最大值是 15 ,且大于等于 16 的最小值不存在。所以第三个查询的答案是 [15,-1]。- 树中小于等于 2 的最大值是 2 ,且大于等于 2 的最小值也是 2。所以第一个查询的答案是 [2,2]。- 树中小于等于 5 的最大值是 4 ,且大于等于 5 的最小值是 6。所以第二个查询的答案是 [4,6]。由于是二叉搜索树,利用中序遍历维护一个递增数组。,和一个由正整数组成、长度为。在递增数组的基础上进行二分搜索。对于几种结果的分类讨论。

2026-01-23 15:32:23 353

原创 二分搜索(七)744. 寻找比目标字母大的最小字母 二分搜索基本题型

letters 中没有一个字符在字典上大于 'z',所以我们返回 letters[0]。letters 中字典顺序上大于 'c' 的最小字符是 'f'。letters 中字典上比 'a' 大的最小字符是 'c'。如果不存在这样的字符,则返回。

2026-01-19 12:41:53 193

mysql数据类型学习

mysql数据类型学习

2026-01-16

Linux多线程-相关手写笔记

线程概念、线程控制、线程安全

2023-02-06

操作系统-银行家算法-银行家算法是操作系统的经典算法之一

银行家算法是操作系统的经典算法之一,用于避免死锁情况的出现。 它最初是为银行设计的(因此得名),通过判断借贷是否安全,然后决定借不借。 在银行中,客户申请贷款的数量是有限的,每个客户在第一次申请贷款时要声明完成该项目所需的最大资金量,在满足所有贷款要求时,客户应及时归还。银行家在客户申请的贷款数量不超过自己拥有的最大值时,都应尽量满足客户的需要。 用在操作系统中,银行家、出借资金、客户,就分别对应操作系统、资源、申请资源的进程。 每一个新进程进入系统时,必须声明需要每种资源的最大数目,其数目不能超过系统所拥有的的资源总量。当进程请求一组资源时,系统必须首先确定是否有足够的资源分配给该进程,若有,再进一步计算在将这些资源分配给进程后,是否会使系统处于不安全状态如果不会才将资源分配给它,否则让进程等待。 (1)互斥条件:并发进程所要求和占有的资源是不能同时被两个以上进程使用或操作的,进程对他所需要的资源进行排他性控制。 (2)不剥夺条件:进程所获得的资源在未使用完毕之前,不能被其他进程强行剥夺,而且只能由获得该资源的进程自己释放。 (3)请求和保持条件:进程已经至少保持了一个资源,但又提

2023-01-26

《二叉树及应用》 数据结构中二叉树使用

[问题描述]建立一个二叉树,并对其进行4种遍历(前中后层)。 [要求] 使用递归和非递归,计算二叉树中节点的个数,树的深度等。 [目的] 通过对二叉树的应用,熟练运用递归,栈和队列。 [实现提示] 二叉树中节点的结构如下: class BNode { char m_value; //二叉树中节点的值 BNode* m_left; //指向左子树指针 BNode* m_right;//指向右子树指针 }; 1、课程设计目的和内容 主要包括:需求分析,模块功能要求,分析理解问题,明确问题; 2、算法的基本思想 主要包括:概要设计,详细设计,数据结构定义,流程图 以及各个模块之间的关系; 3、测试数据 列出对于给定的输入所产生的输出; 4、源程序及文档说明 程序最终源码\程序最终设计文档 5、心得体会 课程设计的收获,遇到问题的思考过程,程序的调试能力,以及对于数据结构这门课程的思考 6、参考文献 二叉树先序中序后续遍历递归与非递归的实现、掌握栈和队列的用法。了解结构体内部嵌套之间的关系 二叉树(Binary tree)是树形结构的一个重要类型。许多实际问题抽象出来的数据结构

2023-01-26

数据结构课程设计-最短路径

最短路径问题是图论研究中的一个经典算法问题, 旨在寻找图(由结点和路径组成的)中两结点之间的最短路径。 算法具体的形式包括: 确定起点的最短路径问题 - 即已知起始结点,求最短路径的问题。 确定终点的最短路径问题 - 与确定起点的问题相反,该问题是已知终结结点,求最短路径的问题。在无向图中该问题与确定起点的问题完全等同,在有向图中该问题等同于把所有路径方向反转的确定起点的问题。 确定起点终点的最短路径问题 - 即已知起点和终点,求两结点之间的最短路径。 全局最短路径问题 - 求图中所有的最短路径。 1、用邻接矩阵存储一张带权有向图。 2、对图进行从某一源点到其他各顶点的最短路径 3、输出最后结果(路径名称、路径长度)。 邻接矩阵建立包括:用二维数组存储信息。没有直达路径的为无穷。 用循环来判断最小值。 最终结果用一维数组存储。D[]存放源点到其他顶点的最短路径的长度,P[]存放该顶点最短路径的前驱顶点下标,visit[]为访问标识。初始全部值设为F,先把源点的标识设为T,后面每找到一个源点到其余顶点的最短路径,就将该顶点下标对应的标识置为T。直到全部顶点执行完毕。 输出一维数组D[

2023-01-26

空空如也

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

TA关注的人

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