华为云DCS全产品对比

1. 为什么需要一份 DCS 产品对比

华为云分布式缓存服务(Distributed Cache Service,简称 DCS)是托管式的 Redis / Memcached 兼容缓存服务。随着业务规模增长,很多团队在选型时会遇到同一个问题:DCS 下面到底有几种实例形态?它们之间差在哪里?什么时候该用单机、什么时候必须上集群、什么时候该考虑读写分离?

本文把 DCS 的各个产品形态放在同一张"体检表"里,从功能、性能、可靠性、兼容性、性能监控、告警、日志、迁移方案八个维度逐项对比,帮助你在架构评审时快速给出结论。

说明:本文基于华为云 DCS 公开的产品文档与常见实践整理,具体规格、配额与计费以华为云官网控制台和最新文档为准。

2. DCS 产品形态总览

DCS 目前主流的实例类型可以归纳为以下几类:

实例类型 底层形态 典型定位
Redis 单机 单节点 Redis 开发测试、非关键缓存
Redis 主备 一主一备(或多备) 生产环境通用缓存
Redis 集群(Cluster) 分片 + 副本 大容量、高并发场景
Redis 读写分离 主节点写 + 只读副本读 读多写少、读扩展
Memcached 多节点无持久化 纯 KV 缓存、简单场景

从演进路径看,绝大多数业务会走"单机 → 主备 → 集群/读写分离"的路线。下面逐维度展开。

3. 功能对比

功能项 单机 主备 集群 读写分离 Memcached
数据持久化(RDB/AOF) 支持 支持 支持 支持 不支持
备份与恢复 支持 支持 支持 支持 不支持
主备自动切换 不支持 支持 支持 支持 不涉及
水平扩容 不支持 不支持 支持(分片扩容) 支持(增加只读副本) 支持(增加节点)
多 DB(database) 支持 支持 受限(Cluster 模式仅 db0) 受限 不支持
事务 / Lua 脚本 支持 支持 支持(需注意跨 slot) 支持 不支持
发布订阅 支持 支持 支持 支持 不支持
慢查询分析 支持 支持 支持 支持 有限

几个容易踩坑的点:

  • 集群模式的跨 slot 操作 :MGET、MSET、事务、Lua 脚本涉及多个 key 时,必须保证这些 key 落在同一个 slot(可用 hash tag,如 user:{1001}:name)。
  • 读写分离的读一致性:只读副本存在复制延迟,强一致读场景要显式走主节点。
  • Memcached 无持久化:进程重启即数据全失,只适合可重建的纯缓存。

4. 性能对比

性能主要受三件事影响:单节点规格、分片数量、网络与连接模型。

维度 单机 主备 集群 读写分离
单分片 QPS 高 高(写走主) 高 写走主,读可横向扩展
总吞吐上限 受单节点限制 受单节点限制 随分片数线性提升 随只读副本数提升读吞吐
容量上限 单机内存上限 单机内存上限 分片数 × 单分片容量 主节点容量
扩容方式 不支持 不支持 在线增加分片 在线增加只读副本
大 key / 热 key 影响 明显 明显 单分片热点 读热点可分散

实践建议:

  1. 先压测再选型。用 redis-benchmark 或业务真实流量回放,重点看 P99 而不是平均值。
  2. 关注连接数。集群模式下客户端需要维护到每个分片的连接,连接数会随分片数增长。
  3. 避免大 key。单个 value 建议控制在 10 KB 以内,集合类元素数量控制在千级。
bash 复制代码
# 简单压测示例:100 并发、10 万请求、value 大小 128 字节
redis-benchmark -h <dcs_endpoint> -p 6379 -a <password> \
  -c 100 -n 100000 -d 128 -t set,get -q

5. 可靠性对比

可靠性能力 单机 主备 集群 读写分离
节点故障自动切换 无 有(秒级) 有(分片内切换) 有
数据副本数 1 2 及以上 每分片 2 及以上 主 + 多只读
跨 AZ 部署 不支持 支持 支持 支持
备份策略 手动/自动 手动/自动 手动/自动 手动/自动
故障影响面 全量不可用 秒级抖动 单分片抖动 读抖动

关键结论:

  • 生产环境不要用单机。单机没有副本,节点故障即服务中断,且数据可能丢失。
  • 主备是性价比最高的可靠性基线,配合跨 AZ 部署可以抵御单可用区故障。
  • 集群的可靠性是"分片级"的 :单个分片故障只影响该分片上的 key,但客户端需要正确处理 MOVED / ASK 重定向和重连。

6. 扩容、缩容与故障冗余度评估

选型只是起点,真正决定线上稳定性的,是「容量变化时能不能平滑过渡」以及「坏掉一部分还能剩多少」。这一节把扩容、缩容和故障冗余度单独拎出来评估。

6.1 扩容能力对比

扩容维度 单机 主备 集群 读写分离 Memcached
是否支持在线扩容 不支持 不支持 支持(增加分片) 支持(增加只读副本) 支持(增加节点)
扩容粒度 --- --- 分片级 副本级 节点级
扩容期间是否可读写 --- --- 可读写,部分 key 需迁移 可读写 可读写
扩容对业务的影响 需停机重建 需新建实例 + 数据迁移 slot 迁移期间有短暂重定向 新副本追平前读流量不均 需客户端重新分片
扩容耗时主要因素 数据量 数据量 分片数 × 单分片数据量 副本全量同步耗时 节点数与数据量

扩容实践要点:

  • 集群扩容的本质是 slot 迁移 。迁移过程中客户端可能收到 MOVED / ASK 重定向,务必确认客户端支持重定向(Jedis、Lettuce、go-redis 均支持,但要开启对应配置)。
  • 扩容前先清理无效 key。大量过期未删的 key 会让迁移数据量虚高,扩容时间成倍增加。
  • 扩容不是无感的 。建议在业务低峰期执行,并提前把 timeout、重试次数调大,避免迁移期间大量超时。
  • 主备/单机无法在线扩容,只能新建更大规格实例再迁移数据,这本质上是一次迁移,要按第 10 节的迁移流程走。

6.2 缩容能力对比

缩容维度 单机 主备 集群 读写分离
是否支持在线缩容 不支持 不支持 支持(减少分片,需先迁出数据) 支持(移除只读副本)
缩容前置条件 --- --- 目标分片容量能容纳迁入数据 剩余副本能承载读流量
主要风险 --- --- 数据迁移失败、slot 分布不均 读流量集中到主节点
建议做法 新建小规格实例迁移 新建小规格实例迁移 低峰期分批迁出分片 先降读流量再移除副本

缩容比扩容更容易出事,几个原则:

  1. 缩容前必须确认余量。缩容后的内存使用率建议不超过 60%,给突发流量留缓冲。
  2. 缩容要分批。一次只减一个分片或一个副本,观察 24 小时再继续。
  3. 缩容不可逆的部分要提前想清楚。分片减少后 slot 重新分布,热点 key 可能集中到某个分片,需要重新评估 key 设计。
  4. 读写分离缩容要盯住主节点。移除只读副本后读流量全部回到主节点,务必确认主节点 CPU 与连接数能扛住。

6.3 故障冗余度评估

「冗余度」可以理解为:坏掉多少还能正常服务。用 N+1 的思路量化一下:

实例类型 副本冗余 可容忍故障 冗余度评价
单机 0 副本 0 个节点 无冗余,任一故障即中断
主备 1 主 + 1 备(可多备) 1 个节点(备节点故障不影响服务) 基础冗余,可抵御单节点故障
集群 每分片 1 主 + N 备 每分片可容忍 N 个副本故障 分片级冗余,整体可用性随分片数下降
读写分离 1 主 + N 只读 只读副本故障仅影响读能力 读侧冗余,写侧仍为单点

评估冗余度时建议按下面的公式做一次粗算:

text 复制代码
整体可用性 ≈ 单分片可用性 ^ 分片数

举例:假设单分片可用性为 99.99%,集群有 16 个分片,则整体可用性约为 0.9999^16 ≈ 99.84%,相当于每月多出约 70 分钟不可用时间。这说明分片越多,越要重视单分片的故障率与快速切换能力。

提升冗余度的几个手段:

  • 跨 AZ 部署:主备、集群、读写分离均支持,可抵御单可用区整体故障。
  • 多副本:主备与集群均可配置多副本,副本数越多,单点故障影响越小,但写入放大也越明显。
  • 客户端重试与降级:缓存不可用时要有降级到数据库或本地缓存的兜底逻辑,避免缓存故障直接打穿后端。
  • 容量冗余:内存使用率长期控制在 70% 以下,为故障切换后的流量集中预留空间。

6.4 容量规划速查

场景 扩容策略 缩容策略 冗余要求
业务快速增长 集群 + 预留 30% 内存余量,按季度扩容 一般不缩容 每分片 ≥ 2 副本 + 跨 AZ
流量波峰波谷明显 读写分离 + 弹性增加只读副本 波谷移除多余副本 主节点 + 至少 1 只读副本
稳定中小业务 主备,规格留 1.5 倍余量 迁移到小规格实例 主备 + 跨 AZ
临时测试 单机 直接释放 无

7. 兼容性对比

兼容项 Redis 系实例 Memcached
协议 RESP2 / RESP3 Memcached 文本协议 / 二进制协议
客户端 Jedis、Lettuce、redis-py、go-redis 等 spymemcached、xmemcached 等
版本兼容 兼容主流 Redis 版本命令集 兼容标准 Memcached 命令
受限命令 部分管理类命令受限(如 KEYS 建议禁用) 不支持 Redis 特有数据结构
数据结构 String/List/Hash/Set/ZSet/Stream 等 仅 KV

迁移到 DCS 时常见的兼容性问题:

  • 禁用命令 :KEYS、FLUSHALL 等高风险命令在托管实例上通常被限制或需要谨慎使用,代码里要提前替换为 SCAN。
  • Cluster 模式下的多 key 命令:如前所述,需要 hash tag 或改写逻辑。
  • Lettuce 连接池配置 :集群模式下建议开启拓扑刷新(enablePeriodicRefresh),避免分片变更后路由过期。

8. 性能监控对比

DCS 提供实例级和节点级的监控指标,接入云监控服务(CES)后可统一查看。不同实例形态暴露的指标并不完全一致:单机只有单节点指标,主备/读写分离多了复制类指标,集群多了分片与 slot 类指标,Memcached 则没有 Redis 特有的命令与持久化指标。

8.1 各产品形态支持的监控指标

监控类别 关键指标 单机 主备 集群 读写分离 Memcached
基础资源 CPU 使用率、内存使用率、磁盘/网络 I/O 支持 支持 支持(实例级 + 分片级) 支持 支持
连接 当前连接数、新建连接数、拒绝连接数 支持 支持 支持(按分片汇总) 支持(主 + 只读分别统计) 支持
命令 QPS、命中率、慢查询数 支持 支持 支持(分片级可下钻) 支持(主/只读分别统计) 部分支持(QPS、命中率)
时延 平均时延、P99 时延 支持 支持 支持(分片级) 支持(主/只读分别统计) 支持(平均时延)
复制 主备延迟、复制中断次数 不涉及 支持 支持(分片内) 支持 不涉及
高可用 主备切换次数、切换耗时 不涉及 支持 支持(分片级) 支持 不涉及
集群 分片负载、slot 分布、迁移状态 不涉及 不涉及 支持 不涉及 不涉及
持久化 RDB/AOF 状态、最近备份结果 支持 支持 支持 支持 不涉及
内存细节 已用内存、碎片率、淘汰 key 数 支持 支持 支持(分片级) 支持 支持(已用内存、淘汰数)

几点说明:

  • 集群形态的指标要"先看整体、再看分片"。整体 QPS 正常不代表没有热点分片,建议对分片级 CPU、内存、QPS 单独配置看板。
  • 读写分离要区分主节点与只读副本。只读副本的时延、连接数、复制延迟是独立指标,混在一起看会掩盖读侧问题。
  • Memcached 指标相对简单,没有持久化、复制、slot 相关指标,重点看内存、连接与命中率。
  • 单机形态没有复制与切换类指标,监控重点应放在资源水位与实例存活状态上。

8.2 建议重点盯住的指标

  1. 内存使用率:超过 80% 就要评估扩容,避免触发淘汰策略导致命中率骤降。
  2. 缓存命中率:命中率下降往往意味着 key 设计或过期策略有问题。
  3. P99 时延:平均值好看不代表没问题,P99 才是用户体验的真实体现。
  4. 主备延迟(主备/集群/读写分离):延迟持续增大说明复制链路异常,切换时可能丢数据。
  5. 分片负载均衡度(集群):分片间 CPU/内存差异过大,说明 slot 或 key 分布不均。

9. 告警配置对比

告警指标建立在监控指标之上,但不同形态需要关注的告警项不同:单机没有切换类告警,主备/读写分离要重点配复制类告警,集群要额外配分片与 slot 类告警,Memcached 则聚焦资源与命中率。

8.1 各产品形态建议的告警指标

告警项 建议阈值 单机 主备 集群 读写分离 Memcached
CPU 使用率 > 70% 持续 5 分钟 建议 建议 建议(含分片级) 建议(主/只读分别) 建议
内存使用率 > 80% 建议 建议 建议(含分片级) 建议 建议
连接数使用率 > 80% 建议 建议 建议 建议 建议
缓存命中率 < 90% 建议 建议 建议 建议 建议
主备延迟 > 1 MB 或 > 5 秒 不涉及 建议 建议(分片内) 建议 不涉及
实例状态 非运行中 建议 建议 建议 建议 建议
慢查询数 突增 建议 建议 建议 建议 可选
主备切换事件 发生即告警 不涉及 建议 建议 建议 不涉及
分片负载不均 分片间 CPU 差异 > 30% 不涉及 不涉及 建议 不涉及 不涉及
slot 迁移异常 迁移超时或失败 不涉及 不涉及 建议 不涉及 不涉及
淘汰 key 数 持续 > 0 建议 建议 建议 建议 建议
持久化失败 备份/RDB 失败 建议 建议 建议 建议 不涉及

8.2 告警落地建议

  • 按严重 / 重要 / 次要分级,严重告警直接电话+短信,次要告警走 IM 群。
  • 告警要绑定责任人,避免"群里有告警但没人认领"。
  • 对扩容类告警设置抑制规则,避免扩容过程中反复告警。
  • 切换类告警要单独成组:主备切换、分片切换属于高优先级事件,即使服务已自动恢复,也要通知到人排查根因。
  • 集群告警建议按分片维度配置,避免只配实例级阈值导致单分片热点被平均值掩盖。
  • 告警阈值要随业务基线调整:大促前临时上调内存与连接数阈值,避免误报淹没真实问题。

9. 日志能力对比

日志类型 内容 获取方式
慢查询日志 执行时间超阈值的命令 控制台查看 / 参数配置阈值
运行日志 实例运行状态、异常事件 控制台 / 云日志服务 LTS
审计日志 关键操作记录 控制台操作记录
备份日志 备份任务执行结果 备份管理页面

实践要点:

  • 慢查询阈值建议设置为业务可接受时延的 1/2,例如目标 P99 为 10 ms,则阈值设为 5 ms。
  • 将运行日志接入 LTS 后可以做关键字告警,例如匹配 OOM、connection refused 等。
  • 日志保留周期要满足合规要求,一般生产环境建议至少保留 30 天。

10. 迁移方案对比

迁移场景 推荐方案 注意事项
自建 Redis → DCS DCS 数据迁移工具 / redis-shake 校验 key 数量与抽样数据
其他云 Redis → DCS 在线迁移(公网/专线) 带宽评估、增量同步
DCS 实例间迁移 备份恢复 / 迁移工具 大实例优先备份恢复
Memcached → Redis 应用层改造 数据结构需重新设计
版本升级迁移 新建实例 + 双写切换 灰度切流、可回滚

通用迁移流程:
#mermaid-svg-LjXFt7It9NFAiO58{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-LjXFt7It9NFAiO58 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-LjXFt7It9NFAiO58 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-LjXFt7It9NFAiO58 .error-icon{fill:#552222;}#mermaid-svg-LjXFt7It9NFAiO58 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-LjXFt7It9NFAiO58 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-LjXFt7It9NFAiO58 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-LjXFt7It9NFAiO58 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-LjXFt7It9NFAiO58 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-LjXFt7It9NFAiO58 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-LjXFt7It9NFAiO58 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-LjXFt7It9NFAiO58 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-LjXFt7It9NFAiO58 .marker.cross{stroke:#333333;}#mermaid-svg-LjXFt7It9NFAiO58 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-LjXFt7It9NFAiO58 p{margin:0;}#mermaid-svg-LjXFt7It9NFAiO58 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-LjXFt7It9NFAiO58 .cluster-label text{fill:#333;}#mermaid-svg-LjXFt7It9NFAiO58 .cluster-label span{color:#333;}#mermaid-svg-LjXFt7It9NFAiO58 .cluster-label span p{background-color:transparent;}#mermaid-svg-LjXFt7It9NFAiO58 .label text,#mermaid-svg-LjXFt7It9NFAiO58 span{fill:#333;color:#333;}#mermaid-svg-LjXFt7It9NFAiO58 .node rect,#mermaid-svg-LjXFt7It9NFAiO58 .node circle,#mermaid-svg-LjXFt7It9NFAiO58 .node ellipse,#mermaid-svg-LjXFt7It9NFAiO58 .node polygon,#mermaid-svg-LjXFt7It9NFAiO58 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-LjXFt7It9NFAiO58 .rough-node .label text,#mermaid-svg-LjXFt7It9NFAiO58 .node .label text,#mermaid-svg-LjXFt7It9NFAiO58 .image-shape .label,#mermaid-svg-LjXFt7It9NFAiO58 .icon-shape .label{text-anchor:middle;}#mermaid-svg-LjXFt7It9NFAiO58 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-LjXFt7It9NFAiO58 .rough-node .label,#mermaid-svg-LjXFt7It9NFAiO58 .node .label,#mermaid-svg-LjXFt7It9NFAiO58 .image-shape .label,#mermaid-svg-LjXFt7It9NFAiO58 .icon-shape .label{text-align:center;}#mermaid-svg-LjXFt7It9NFAiO58 .node.clickable{cursor:pointer;}#mermaid-svg-LjXFt7It9NFAiO58 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-LjXFt7It9NFAiO58 .arrowheadPath{fill:#333333;}#mermaid-svg-LjXFt7It9NFAiO58 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-LjXFt7It9NFAiO58 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-LjXFt7It9NFAiO58 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-LjXFt7It9NFAiO58 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-LjXFt7It9NFAiO58 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-LjXFt7It9NFAiO58 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-LjXFt7It9NFAiO58 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-LjXFt7It9NFAiO58 .cluster text{fill:#333;}#mermaid-svg-LjXFt7It9NFAiO58 .cluster span{color:#333;}#mermaid-svg-LjXFt7It9NFAiO58 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-LjXFt7It9NFAiO58 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-LjXFt7It9NFAiO58 rect.text{fill:none;stroke-width:0;}#mermaid-svg-LjXFt7It9NFAiO58 .icon-shape,#mermaid-svg-LjXFt7It9NFAiO58 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-LjXFt7It9NFAiO58 .icon-shape p,#mermaid-svg-LjXFt7It9NFAiO58 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-LjXFt7It9NFAiO58 .icon-shape .label rect,#mermaid-svg-LjXFt7It9NFAiO58 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-LjXFt7It9NFAiO58 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-LjXFt7It9NFAiO58 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-LjXFt7It9NFAiO58 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 是
否
评估源实例规格与数据量
创建目标 DCS 实例
全量数据迁移
增量同步与校验
灰度切流 10%
错误率与延迟是否正常
逐步放量至 100%
回滚至源实例
观察稳定后下线源实例

迁移 checklist:

  • 源实例 key 数量、内存占用、大 key 清单已盘点
  • 目标实例规格留有余量(建议 ≥ 源实例的 1.2 倍)
  • 客户端连接串、密码、超时参数已更新
  • 双写/灰度期间的数据一致性校验脚本已准备
  • 回滚方案与责任人已明确

11. 选型建议速查

业务场景 推荐实例类型
开发测试、临时验证 单机
中小型生产业务、会话缓存 主备
大容量、高并发、可分片 集群
读多写少、读扩展需求强 读写分离
纯 KV、无持久化需求 Memcached

一句话总结:能用主备就别用单机,容量或并发顶不住就上集群,读压力大就加只读副本,Memcached 只留给最简单的场景。

12. 总结

DCS 的产品矩阵并不复杂,难点在于把"业务特征"映射到"实例形态"。回顾本文的八个维度:

  • 功能:集群模式要注意跨 slot 限制,Memcached 无持久化。
  • 性能:先压测再选型,关注 P99 与连接数。
  • 可靠性:生产环境以主备为基线,跨 AZ 部署。
  • 扩容与缩容:集群可在线扩缩分片,主备/单机只能新建实例迁移;缩容前留足余量、分批执行。
  • 故障冗余度:分片越多整体可用性越低,需按「单分片可用性 ^ 分片数」粗算,并用多副本、跨 AZ、客户端降级兜底。
  • 兼容性:提前排查禁用命令与多 key 操作。
  • 监控与告警:盯住内存、命中率、P99 三个核心指标。
  • 日志:慢查询阈值按业务时延倒推,日志接入 LTS。
  • 迁移:全量 + 增量 + 灰度切流 + 可回滚,四步不能少。
相关推荐
大江东去浪淘尽千古风流人物1 小时前
【HIMO】跨模态图像匹配算法:IMO方向场提取与PolarP描述符源码精讲
matlab·跨模态·遥感·图像匹配·1024程序员节·特征描述符
芝麻开门2921 小时前
c++11
c++11·1024程序员节
乃嘿仔1 小时前
AI 热点日报 · 2026-10-24
1024程序员节
HY小宝F1 小时前
智能摄像头系统 30 天学习计划 Day 08 · FFmpeg:成为你的“视频瑞士军刀”
1024程序员节
zyseo81 小时前
谷歌SEO 排名因素权重地图:把精力花在刀刃上
1024程序员节
basketball6161 小时前
动态规划第一章:引论
算法·动态规划·1024程序员节
CRMEB系统商城1 小时前
家电零售的供应商协同与物流提效
java·开发语言·人工智能·小程序·1024程序员节
xiaoniu1428571 小时前
命题的映射化
数学·1024程序员节·高中数学·文化课
jason.zeng@15022071 小时前
Nginx 配置详解(静态 HTML、下载目录、API 反向代理三套场景)
java·vue.js·1024程序员节