- 博客(454)
- 收藏
- 关注
原创 豆包牛批普拉斯
自定义删除器允许开发者自定义资源释放逻辑,适用于管理非内存资源(如文件句柄、socket、锁)。示例(管理文件句柄):cpp运行if (fp) {// 读取文件return 0;优势统一使用智能指针管理所有资源,代码风格一致。自动释放资源,避免泄漏。支持 lambda 表达式作为删除器,灵活定制释放逻辑。
2026-06-29 21:23:30
23
原创 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(一)Gin框架 和 GORM机制
Gin 负责处理程序的网络入口。在底层,Go 的 标准库已经自带了高效的协程调度和网络轮询(类似底层封装好的 epoll 模型),而 Gin 就是在这个基础上搭建的一层极其易用的脚手架。极速路由: Gin 底层使用了一棵基于基数树(Radix Tree)的路由引擎。它的路由匹配速度极快,内存占用极低,特别适合构建高并发的 RESTful API。数据绑定与校验 (类似 Pydantic): 当客户端发起 POST 请求时,Gin 可以直接将传递过来的 JSON 数据“反序列化”并绑定到 Go 的结构体(S
2026-06-02 15:43:45
363
原创 C++中的零拷贝
处理磁盘/网络 I/O 时:优先考虑sendfilemmap或更现代的io_uring。处理 C++ 业务逻辑时:熟练使用std::move以及利用编译器的 RVO。处理高并发网络协议与报文时:抛弃连续内存思维,使用基于链表/块引用的IOBuf结构和支持零拷贝的序列化流。
2026-05-14 16:05:56
36
原创 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
原创 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
原创 26年3月2日 思看科技
的,而不是属于某个对象的。为了节省空间,同一个类的所有对象共用同一份虚表。它通常存放在可执行文件的只读数据段中。4、c++新特性 智能指针 uniqueptr和sharedptr区别 他们分别的适用场景。如果派生类覆盖了基类的虚函数,虚表中对应的地址就会被替换为派生类的函数地址。使用条件变量的wait接口,等待同一把互斥锁,以及state信号的条件。6、介绍常见的stl 说说map和vector的使用场景。虚表是存储类中所有虚函数地址的一个函数指针数组。1、生产者消费者 三个线程交替打印abc。
2026-03-02 20:02:35
63
原创 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
原创 二分查找(九)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
操作系统-银行家算法-银行家算法是操作系统的经典算法之一
2023-01-26
《二叉树及应用》 数据结构中二叉树使用
2023-01-26
数据结构课程设计-最短路径
2023-01-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅