面向面试复习的 C# 独立 Demo 集合。命名风格 Demo.{主题}.Api,但:
- 每个主题一个独立目录,自带
.sln,互不引用、无 Shared 项目 - 端口从 5101 起,各项目固定互不冲突
- .NET SDK 9.0+
- Linux(CI 已验证);net9.0 标准 API,Windows / macOS 未在 CI 验证
| 项目 | 端口 | 对应笔记 | 说明 |
|---|---|---|---|
| Demo.Rest.Api | 5101 | API/REST | HTTP 动词与资源设计 |
| Demo.Versioning.Api | 5102 | API/API版本化 | URL / Header 版本 |
| Demo.ETag.Api | 5103 | API/ETag | If-Match 乐观并发 |
| Demo.Idempotent.Api | 5104 | 分布式/幂等性 | Idempotency-Key |
| Demo.Outbox.Api | 5105 | 分布式/Outbox | Transactional Outbox |
| Demo.Inbox.Api | 5106 | 分布式/Inbox | Transactional Inbox |
| Demo.MqConsumer.Api | 5107 | 分布式/消息消费 | ACK / 重试 / DLQ |
| Demo.Saga.Api | 5108 | 分布式/Saga | 编排式补偿 |
| Demo.RateLimit.Api | 5109 | 弹性/限流 | 固定 / 滑动窗口 |
| Demo.Retry.Api | 5110 | 弹性/重试 | 指数退避 |
| Demo.CircuitBreaker.Api | 5111 | 弹性/熔断 | 开/半开/关 |
| Demo.ShortUrl.Api | 5112 | 缓存/短网址 | 短链跳转 |
| Demo.Redis.Api | 5113 | 缓存/Redis缓存 | Cache-Aside(内存模拟) |
| Demo.CacheProblems.Api | 5114 | 缓存/缓存三大问题 | 穿透 / 击穿 / 雪崩 |
| Demo.Seckill.Api | 5115 | 缓存/秒杀 | 预扣 + 异步建单 |
| Demo.PasswordAuth.Api | 5116 | 认证/密码认证 | PBKDF2 加盐哈希 |
| Demo.JwtAuth.Api | 5117 | 认证/JWT | Access + Refresh |
| Demo.QrLogin.Api | 5118 | 认证/扫码登录 | Ticket 状态机 Mock |
| Demo.Sso.Api | 5119 | 认证/单点登录 | 简化 CAS Ticket |
| Demo.OptimisticLock.Api | 5120 | 存储/乐观锁 | 版本号 CAS |
| Demo.DistributedLock.Api | 5121 | 存储/分布式锁 | SET NX EX(内存) |
| Demo.OrderTimeout.Api | 5122 | 支付/超时关单 | 关单 vs 支付竞态 |
| Demo.Payment.Api | 5123 | 支付相关 | HMAC 回调幂等入账 |
| Demo.DiLifetime.Api | 5124 | CSharp/DI生命周期 | 三种生命周期对比 |
| Demo.I18n.Api | 5125 | CSharp/国际化 | 消息本地化 + 数据国际化 |
| Demo.Configuration.Api | 5126 | CSharp/配置 | 环境分层加载 / 覆盖优先级 / Options 校验 |
| Demo.AsyncAwait.Console | — | CSharp/async与await | 并发与取消 |
| Demo.Linq.Console | — | CSharp/LINQ | 常用算子演示 |
| Demo.Delegates.Console | — | CSharp/委托 | 委托 / 事件 / 多播 |
| Demo.Algorithms.Tests | — | 算法/* | 双指针 / 链表 / 二叉树 |
理论向笔记(CAP/BASE、选型对比、MySQL 索引原理等)不单独建可运行服务,相关点分散在上述 Demo 与注释中。
采用 Git Flow(主干为 master),速查见 docs/branch-management.md。
cd Demo.RateLimit.Api
dotnet runDevelopment 下访问 Scalar:http://localhost:{端口}/scalar
健康检查:GET /health
- 目标框架:
net9.0;SDK 由 global.json 锁定,编译属性集中在 Directory.Build.props,包版本集中在 Directory.Packages.props - 代码风格:
.editorconfig+ CIdotnet format门禁;依赖漏洞由 CI 拦截 High/Critical - 应持久化的状态:各项目以进程内内存为主(教学简化);需要持久化时可改为独立 SQLite,互不共享
- 日志与错误信息:简体中文
- Scalar API 文档:默认浅色模式(
WithDarkMode(false)) - 项目之间零引用,便于单独拷贝学习