秒杀的优化,本质是把“同一时刻的极端并发”拆成“可控的排队、可控的下单、可控的扣库存”,并把失败尽量前置,让系统把力气花在更可能成功的请求上。工程上通常沿着三条主线推进:削峰(入口挡住)、隔离(链路拆开)、一致性(库存与订单不乱)。 入口削峰:把请求挡在系统之外 秒杀最怕所有请求都打到应用与数据库。...
GPU 和 CPU 的核心区别,本质上是: CPU 负责“通用、复杂逻辑控制” GPU 负责“大规模并行计算” 一、结构差异(决定能力边界) CPU(Central Processing Unit,中央处理器) 特点: 核心数量少(一般 4~32 核) 单核性能强 有复杂的控制单元 大缓存(L1/L...
在 CP(一致性 Consistency + 分区容忍 Partition tolerance) 取向的分布式系统里,Leader 选举的核心目标不是“尽快选出一个人”,而是“任何时刻至多一个合法 Leader,且新 Leader 的状态不倒退”。为此,系统会牺牲一部分可用性:网络分区或多数派不可达...
AI 项目的技术实现更像一条“从业务假设到可上线系统”的装配线:先把目标拆成可量化指标,再把数据、模型、工程与运营闭环装进同一套流水线里。真正的难点往往不在某个模型结构,而在端到端的可控性、可复现性与可维护性。 从业务目标到可计算问题:先定边界与指标口径 技术实现的起点不是选模型,而是把业务语义翻译...
反转链表通常分两类:单链表(Singly Linked List)与双链表(Doubly Linked List)。工程里最常见的是单链表,核心动作只有一件事:把每个节点的 next 指针改指向前驱节点。实现方式以迭代与递归两种最常用。 单链表:迭代反转(最常用、最稳) 思路是用三个指针滚动前进:p...
延时双删除是一种围绕缓存与数据库一致性设计的工程策略,典型用于“先更新数据库、再处理缓存”的写路径上。核心动作是对同一个缓存键执行两次删除:第一次紧贴数据库写入之前或之后立刻删除,第二次在一个短暂延时之后再删除一次,用来兜住并发读写窗口里可能产生的“脏缓存回填”。 这种策略常见于 Cache Asi...
Redisson 的分布式锁实现,本质是用 Redis 的原子写入能力保存“锁状态”,再用续期与发布订阅把“锁的生命周期”和“等待唤醒”这两件事做得更工程化:既尽量避免误删他人锁,也尽量避免业务执行时间超出锁过期时间导致的并发闯入。 1. 锁在 Redis 里长什么样:唯一标识 + 可重入计数 Re...
非对称加密把“加密”和“解密”拆成两把不同的钥匙:一把公开、一把私有。公开钥匙(公钥)可以随意分发,用来加密或验证;私有钥匙(私钥)必须严格保管,用来解密或签名。核心效果是:即使公钥人人可得,也难以在可接受时间内从公钥反推出私钥,从而让“开放分发”与“安全保密”同时成立。 一把钥匙公开、一把钥匙保密...
缓存删在更新之后,本质是在制造一个“空窗期”:数据库已是新值,缓存被清掉,紧接着大量并发请求同时打到缓存发现 miss,于是集体回源数据库重建缓存,形成缓存击穿与回源风暴。同时,若重建逻辑不严谨,还会出现短暂的脏读与反复覆盖。处理这类场景,思路不是“删缓存更快”,而是把空窗期变成“可控的单点重建”,...
Kubernetes 里 GPU 调度麻烦,本质原因只有一句话: GPU 不是“普通资源”,而是“特殊硬件资源”。 CPU、内存是天然被内核管理的标准资源 GPU 需要额外插件 + 驱动 + 设备映射 + 显存管理 下面我给你从系统层、K8s 调度层、实际生产问题三个角度讲清楚。 一、CPU 为什么...