设计背景中的 LLD 数据结构: 高压设计模式 — 如何连续地选择下一个最佳项目

2026年8月1日1 次浏览来源:Dev.to阅读原文

"一旦你明白一个Heap解决的行为, 你会开始注意到它到处。" 在上篇文章中,我们学会了如何识别希普问题.

我们学会了问: 如果答案是"是",那么一个Heap常常值得考虑.

现在让我们来看看这个想法在真正的软件系统中是如何出现的。

这篇文章不是关于学习另一个数据结构的.

这是关于学习识别一个工程模式。

许多系统背后的共同模式 虽然骑行共享应用,操作系统,游戏平台,以及医院似乎完全不同,但它们往往解决了相同的根本问题.

每当这种循环连续地重复,一头花常成为自然的选择.

让我们来探讨几个例子。

设计模式1: CPU 排程 一个操作系统可能有上百个程序等待执行.

排程器不断问:概念上:注意排程器并不需要完美订购的每一个过程.

它只需要下一个。

设计模式2:"骑行任务" 想象顾客要求搭乘.

附近有几个司机。

平台评估的因素包括: 距离可用性 估计到达时间 业务规则 然后它问: 每一次新的骑行请求都重复同样的决定.

设计模式3:背景任务排程现代应用程序在背景中执行许多任务.

例如:发送电子邮件处理图像 生成发票 创建报告 工人反复询问:平台持续选择下一个最重要的工作.

设计模式4:医院急诊室患者全天到来.

医生不会简单地按到来顺序治疗病人.

相反,他们问:同样的工程行为再次出现.

设计模式5:监测和事件管理生产系统产生上千个警报.

有些是宣传。

另一些国家则指出严重失败。

一个事件管理平台再三问:突发事件自然向上移动.

设计模式6:Live Leaderboards Gaming平台不断得到新分数.

玩家不断加入,离开,并不断改进.

该系统反复确认: 排名随着分数变化而不断演变.

注意图案 乍一看,这些系统看起来并不相关。

但是如果我们忽略了商业领域,它们都遵循同样的设计.

这是Heap用来支持的行为 像软件工程师一样思考 初学者常常会记住一些例子 例如:排程器中使用了堆积.

堆积被用在领导板上.

堆积被用在了乘分上.

经验丰富的工程师们的想法不同.

他们问道:"这是另一个反复选择下个最佳候选人的系统吗?" 如果答案是肯定的,他们自然地开始考虑一个Heap.

域无所取.

行为确实如此。

常见的"初学者错误"(Beginner Mistakes Mistakes Mistake 1)——回忆应用程序取而代之"模式"(Patterns),不要试图记住每一个使用"Heap"的系统.

学习基本的行为 错误2 — 假设每个优先系统需要一个堆积 A 堆积是一个可能的解决方案.

正确的选择总是取决于一整套要求。

在选择数据结构之前先了解问题.

错误3——忽略了"商业规则""Heap"并不决定"最佳"的含义.

你的商业逻辑是。

同样的Heap可以优先排序:最高得分,最早的最后期限,最短的休息时间,最接近的车手,或最严重.

错误 4 —— 认为"域"是"重要的"共享","银行","游戏"和"保健"看起来不同.

从工程学的角度来看,他们中许多人解决了完全相同的问题.

专注于行为,而不是行业。

设计模式摘要 每当看到一个系统反复询问:或者在考虑类或算法之前暂停.

先辨出行为.

如果系统连续从许多选项中挑选出最佳候选人,你就会看到典型的优先权选择问题.

这是你设计中最强烈的信号之一.

分享