归档

SQL Server 批量核对查询实战:临时表 + SqlBulkCopy + JOIN 一次比对十万级数据

批量核对场景下循环单条查询会带来 N+1 网络往返,IN 列表又受 2100 个参数上限约束。本文基于真实落地的 BulkQueryData 实现,拆解「临时表 + SqlBulkCopy + JOIN」方案:SELECT INTO WHERE 1=2 结构克隆与 identity 列处理、行号列回传技巧、NULL 空值等价匹配条件、统计回填与 try/finally 幂等清理,万行级核对从分钟级降到秒级。

C# IP 区间建模实战:IPAddress 字节序比较 + IComparable/IComparer/IEquatable 三接口实现网段排序

IPAddress 没有实现 IComparable,直接字符串排序会掉进字典序陷阱:10.0.0.10 反而排在 10.0.0.9 前面。本文以局数据系统中的 IPInterval / PortInterval 为例,完整实现字节序比较、CIDR 掩码求广播地址,以及 IComparable / IComparer / IEquatable 三个泛型接口的职责分工与 GetHashCode 一致性,让区间对象无缝接入 Sort、Distinct 与 O(n) 重合检测。

Mapster 对象映射实战:AfterMapping、Map 表达式与 MapWith,从扁平数据到树形结构

对象之间的字段搬运是后端最高频也最枯燥的工作。本文基于真实的菜单权限系统源码,系统讲解 Mapster 的四个映射层级:零配置 Adapt 一行映射、Map 表达式处理 int/bool 双向转换、AfterMapping 钩子组装嵌套对象、MapWith 自定义函数实现扁平列表转三层树形结构,并给出映射后位运算二次加工的组合技与选型建议,帮助把转换逻辑放对地方。

C# Telnet ORDP 直连客户端实战:多设备并发 + 协议清洗 + 回退机制

在电信行业网络运维中,Telnet 协议直连网元是一个非常实用但容易被忽视的技术方案。本文从 SwitchData 项目出发,完整拆解一套生产级 ORDP 直连架构:SemaphoreSlim 并发限流保护网关单点、VT100+NUL+命令回显三重协议清洗、IAsyncDisposable 异步资源管理、Try-Catch 整体回退第三方平台。附带 TelnetClient.ClearPendingText、ExpectedCommandPromptCount 多阶段提示符等多个实战踩坑经验。

DataTable 扩展方法实战:从零构建 ADO.NET 数据后处理工具集(Trim/Schema/映射/落库零分配完整实现)

DataTable 用得多了就会发现,所有项目都在重复这些操作:去空行、Trim 字符串、列名/索引互查、Schema 克隆、DataRow 转 Dictionary、ToSortedTable、FirtRowToColumnName。本文基于 SwitchData 项目中真实在用的 DataTableExtensions(1700+ 行),把高频数据后处理操作整理成统一的扩展方法工具集,涵盖倒序遍历、Span 零分配清洗、CloneSchema/CopyData 投影、SplitColumn/MergeColumns/FillDownColumns 复杂业务转换等完整实现。

从零实现轻量级 ADO.NET ORM:特性驱动 + Expression Tree 委托 + 多级 ConcurrentDictionary 缓存完整架构

本文带你拆解一个生产环境真实在用的轻量级 ADO.NET ORM 框架。它基于特性驱动实体映射,用 Expression Tree 动态编译 Getter/Setter 委托实现零反射开销,并通过 MetadataCache、SchemaCache、CachingMechanism 三级 ConcurrentDictionary 缓存体系保证性能与线程安全。整个框架零外部依赖,代码量不过千行,却完整实现了 Dapper 的核心能力。

基于特性标注 + 泛型驱动的 RabbitMQ 客户端封装实战:把消息发送变成一行代码

生产项目里接入 RabbitMQ 最烦的是每次发消息前都要写一长串 ExchangeDeclare + QueueDeclare + QueueBind 模板代码。本文从 SwitchData 项目源码中拆解一套声明式封装:用 [RabbitMqQueue] 特性标注消息模型类,用 ConcurrentDictionary 做拓扑缓存和反射缓存,用 SemaphoreSlim 做异步锁延迟创建单例连接,用泛型 SendMessageAsync<T> 让调用方只需要传消息对象本身。附带死信队列自动声明、延迟消息插件支持、手动 ACK/NACK 异常兜底、AutomaticRecoveryEnabled 自动重连等生产级能力,整个客户端不到 400 行却把 RabbitMQ.Client 裸 API 包装成了'一行代码发消息'的干净调用。

从零实现 C# Telnet 协议客户端:IAC 协商 + 子协商 + 终端类型握手完整实战

本文从真实项目代码出发,带你从零实现一个完整的 C# Telnet 协议客户端。我们会拆开 Telnet 协议的每一个字节——IAC 转义、DO/DONT/WILL/WONT 协商、SB/SE 子协商、终端类型(VT100)握手、窗口大小声明——然后用一个有限状态机把它们串起来,最后用 SemaphoreSlim 保证异步读写的线程安全。完整代码来自生产环境,已稳定跑了一年多。

ConcurrentDictionary + record struct 组合键:.NET ORM 零分配缓存三层设计实战

手写 ORM 或数据库抽象层时,缓存是性能关键。本文从 SwitchData 项目提取一套生产级缓存方案:用 record struct 做零 GC 组合键,ConcurrentDictionary 做线程安全容器,CacheKey 包含 ConnectionString 防止串库,命中缓存时必须 Clone 可变对象(DbParameter、DataTable、List)避免被业务代码污染。四句话总结一套可直接抄过去的 ORM 缓存基础设施。

Swagger 多态文档实战:JsonPolymorphic + Swashbuckle oneOf 让接口继承体系一目了然

Web API 有基类+多子类的继承体系(如 ReviewBase 派生 Excel/TXT/Database 三种导入请求),Swagger 默认只展示基类导致前端看不到子类字段。本文介绍用 System.Text.Json 的 JsonPolymorphic + JsonDerivedType 特性让运行时支持多态,再配合 Swashbuckle 的 UseOneOfForPolymorphism 自动生成 OpenAPI oneOf Schema,以及手动 DocumentFilter 和自定义 OperationFilter 两种备用方案,让 Swagger UI 直接展示子类下拉选择。

C# LINQ 表达式树深度解析:手写 ORM 如何把 Where/OrderBy 翻译成数据库查询条件

EF Core 是怎么把 LINQ 翻译成 SQL 的?答案是表达式树。本文从 SwitchData 项目中 462 行的 ExpressionParser 真实代码出发,展示手写 ORM 如何把 Where/OrderBy Lambda 翻译成结构化 QueryCondition 列表:排序解析沿方法调用链向内剥离,条件解析基于 ExpressionVisitor 深度优先遍历并还原括号语义,还包含闭包变量提取、string.Contains 转 LIKE、PredicateBuilder 动态组合等核心难点的完整实现。

Hangfire 动态定时任务调度实战:数据库驱动 Cron 注册、多实例部署与独立 Worker 架构

从 SwitchData 项目的 NeTaskHangfireScheduler + JobWorkerService 出发,拆解一套完整的 Hangfire 数据库驱动定时任务体系:独立 Worker 进程架构、SQL Server 持久化配置、动态 Cron AddOrUpdate/RemoveIfExists、后台服务 SyncJobsAsync 自动同步、SlidingInvisibilityTimeout 幽灵任务防护、DisableGlobalLocks 多实例部署安全,以及 Dashboard 鉴权加固实战。

从零实现 C# Telnet 客户端:从 Socket 到 ORDP 网关的完整协议栈

Telnet 协议看似简单,实际涉及完整的状态机、自动协商、子协商、VT100 终端控制序列、NUL 空字符、UTF-8 跨包解码等一堆细节。本文基于 SwitchData 项目中从零实现的 TelnetClient + TelnetProtocolParser + OrdpClient 四层架构,逐层拆解实现原理,并附带华为/中兴设备实战踩坑总结。

ASP.NET Core 过滤器(Filter)实战:从接口日志到权限管控的完整实现

本文基于 SwitchData 项目的实际代码,完整展示 ASP.NET Core 过滤器(Filter)体系的工程实践:用 IAsyncActionFilter 实现接口操作日志(反射读取 DisplayAttribute、敏感参数脱敏、Fire-and-forget 异步写库),用 NoPermissionAttribute + PermissionAttribute 双层拦截实现权限管控,以及通过自定义 IFilterProvider 动态注入过滤器。适合希望深入理解 ASP.NET Core 管道模型的开发者。

C# 工厂策略模式 + Channel 管道:从零构建多格式日志解析架构

在多厂商多格式网元日志解析场景下,传统的 if/else 分支写法难以维护。本文以 SwitchData 项目为实战案例,拆解一套工厂策略模式 + Channel 异步管道 + ADO.NET 批量入库的完整架构,从接口抽象、工厂分发、Channel 背压、批量 Flush 等关键设计点入手,带你看约 500 行核心代码如何支撑百万级日志解析流水线稳定运行两年多。

C# 显式接口实现实战:从泛型桥接到异步资源管理

显式接口实现是 C# 中一个常被忽视但极其有用的特性。本文基于 SwitchData 项目中的真实代码,通过泛型接口桥接、双 Dispose 模式、多接口共存三大实战场景,深入讲解这个特性的核心价值与应用边界,让你在遇到同名接口冲突时能优雅化解。

从零实现 Telnet 协议客户端:完整的 C# 网络编程实战

本文基于 SwitchData 项目源码,从零实现一个完整的 Telnet 协议客户端。涵盖协议状态机设计、IAC/DO/DONT/WILL/WONT 四命令协商、子协商机制、业务数据与协议控制分离解析、粘包/半包处理、UTF-8 多字节跨包解码、IAC 转义等核心技术要点。

C# 安全随机密码生成与校验:基于 RandomNumberGenerator 的策略化实现

在日常开发中,密码生成是后台系统、命令行工具等场景的常见需求。本文基于 SwitchData 项目中的 PasswordGenerator 实现,介绍如何使用 RandomNumberGenerator 构建密码学安全、策略可配置的密码生成与校验方案,涵盖字符池管理、Fisher-Yates 洗牌、控制台星号输入等实战技巧。

C# ZIP 解压安全实战:从 Zip Slip 攻击防御到 Span/stackalloc 现代性能优化

你以为解压一个 ZIP 包只是一行代码?里面藏着 Zip Slip 路径穿越漏洞、GBK/UTF-8 中文乱码、CRC 边界溢出等坑点。本文带你拆解 SwitchData 项目里的 SharpZipHelper:用 ReadOnlySpan.SplitAny 做零字符串分配解析,用 stackalloc + RandomAccess 做零堆分配 ZIP 头校验,用沙箱包含判定彻底堵死 Zip Slip,最后用 ArraySegment 把 CRC32 算得又快又准。看完你也能写一个安全、性能、编码三不误的现代 .NET 压缩工具类。

手写轻量级 ORM 实战:Database 抽象层 + MetadataCache 表达式树编译 + 三级缓存完整实现

本文从 SwitchData 项目源码出发,手把手拆解一个约 2000 行代码的手写轻量级 ORM 框架。核心组件包括 Database 抽象基类(Provider 模式 + 模板方法)、MetadataCache 元数据驱动(反射扫描 + 表达式树编译高性能 Getter/Setter)、ObjectMapper 对象映射、SqlDatabase 泛型 CRUD,以及 ParameterCache、SchemaCache、MetadataCache 三级缓存机制。

从零实现生产级 Telnet 客户端:Socket 异步编程 + 协议状态机 + 并发安全实战

本文基于 SwitchData 项目中自研的 TelnetClient,深入剖析 .NET 下 Telnet 协议客户端的完整实现:从 Telnet 协议规范(IAC 转义、DO/DONT/WILL/WONT 协商、子协商)、八状态协议解析器,到 Socket 异步读写、SemaphoreSlim 并发保护、Decoder 连续解码缓冲、ReadUntilAsync 条件读取等关键技术点,最后结合华为 ORDP 网关实战讲解生产环境调用方式。

从零实现 C# Telnet 客户端:Socket 编程 + 自定义 Telnet 协议解析 + 并发控制完整实战

在网络设备管理和运维自动化场景中,经常需要通过 Telnet 协议连接到交换机、路由器等网元设备。本文将深入 SwitchData 项目源码,剖析一个工业级 C# Telnet 客户端的完整实现,涵盖 Telnet 协议规范解析、Socket 异步编程、状态机模式设计、SemaphoreSlim 并发控制、CancellationTokenSource 超时组合、Decoder 多字节字符解码等核心知识点。

C# 对象映射实战:Mapster 配置与复杂场景处理

本文结合 SwitchData 项目中的真实代码,介绍 Mapster 的三种核心配置策略:Map 简单字段映射、AfterMapping 复杂对象装配、MapWith 自定义转换逻辑,帮助你在 C# 项目中优雅地处理 DTO 与实体之间的转换。

Hangfire + 工厂策略模式 + 幂等性控制:一套完整的 .NET 后台任务调度架构

基于 SwitchData 项目真实代码,讲解如何用 Hangfire 做后台任务调度,用工厂+策略模式让每种任务独立实现,用幂等性 Key 和 CAS 状态机防重复执行,用 BackgroundService 在 Worker 启动时一次性把数据库任务同步到 Hangfire。从配置、调度封装、策略接口、工厂注册到执行记录持久化,完整实现一条可扩展的后台任务链路。

C# Channel 实战:高性能生产者-消费者数据管道(IAsyncEnumerable + Batch BulkCopy + CancellationToken 完整实现)

在处理百万级数据导入场景时,传统同步流水线让数据库成为瓶颈。本文结合 SwitchData 项目中的语音专线数据同步实战,展示如何用 .NET 8 的 System.Threading.Channels 构建生产者-消费者并行管道:一个异步任务负责从数据库逐条读取+聚合去重,另一个任务负责批量 BulkCopy 入库,两者通过有界 Channel 解耦,吞吐提升 3.6 倍。

ASP.NET Core System.Text.Json 自定义 Converter 实战:DateTime 格式化 + DataTable 双序列化器桥接

ASP.NET Core 默认使用 System.Text.Json 做 JSON 序列化,但日期格式化、字符串 Trim、DataTable 桥接这些常见需求需要自己实现 Converter。本文基于 SwitchData 项目,从 DateTimeJsonConverter、TrimStringJsonConverter 到 DataTableJsonConverter,再到 JsonConverterFactory 消除重复、JsonHelper 统一双序列化器入口,手把手实现一套完整的自定义 Converter 体系。

C# 表达式树深度解析:自建 ORM 如何把 LINQ 翻译成 SQL

很多人每天写 LINQ,却不知道它背后是一棵可以被拆解翻译的表达式树。Entity Framework 能把 Where(x => x.Name == "张三") 转成 SQL,靠的就是表达式树解析。本文基于生产项目中的 ExpressionParser,从零实现了一个表达式树解析器,能把 LINQ 的 Where 条件和 OrderBy 排序翻译成数据库查询条件,配合反射构建的元数据缓存,构成了一个自实现 ORM 的核心查询层。

手写 LINQ 表达式树解析器:将 Lambda 条件翻译为数据库查询

从 SwitchData 项目的 ExpressionParser 出发,手把手拆解如何把 LINQ 表达式树拆解成结构化查询条件。详解 ExpressionVisitor 遍历、闭包常量提取、运算符反转、括号分组还原,以及 MetadataCache 元数据缓存和 PredicateBuilder 动态表达式组合,读完就能手写一个轻量 LINQ Provider。

C# 从零实现 Telnet 协议客户端:Socket 连接超时 + Telnet 协商 + 异步回调完整实战

在网络设备管理中,通过 Telnet 连接交换机、路由器发送命令是常见需求。本文基于 SwitchData 项目的真实实现,讲解如何用 C# 从零实现一个完整的 Telnet 客户端,涵盖 Socket BeginConnect 异步超时、Telnet IAC 协商命令自动响应(DO/DONT/WILL/WONT)、子协商(终端类型 VT100 + 窗口大小)、同步 Read 与异步事件回调两种工作模式、以及连接存活检测技巧。

C# 表达式树编译实战:从零实现高性能属性访问器

深入讲解如何利用 C# 表达式树(Expression Tree)编译技术,把反射式的属性访问编译成原生委托。本文从 SwitchData 项目的 MetadataCache.CreateGetter/CreateSetter 真实代码出发,手把手实现一个并发安全的 ConcurrentDictionary + 编译缓存方案,让 ORM 对象映射性能达到接近直接调用的水平。

从零实现可扩展查询条件体系:FilterOperator 策略模式 + 组合模式构建动态 SQL WHERE 子句

在业务系统中,动态构建 SQL WHERE 子句是绕不开的需求。本文以 SwitchData 项目中的 FilterOperator + IFilterNode 实现为例,剖析一套完整的可扩展查询条件体系:策略模式封装 15 种运算符的 SQL 生成逻辑,组合模式构建条件树支持 AND/OR 嵌套,递归遍历 + 参数化查询安全翻译成 SQL,还能通过 virtual 属性适配不同数据库方言。

C# 反射表达式微型 ORM:MetadataCache 元数据驱动的 CRUD 实现

本文基于 SwitchData 项目的实际代码,讲解如何从零构建一个基于反射表达式的微型 ORM。通过 MetadataCache 实现元数据驱动,使用表达式树编译强类型 Getter/Setter 委托替代反射调用,性能接近直接调用。实现 INSERT/UPDATE/DELETE 的 SQL 自动生成、ObjectMapper 对象映射、实体验证机制等完整功能,无需依赖任何第三方 ORM 框架。

C# 位运算实战:把任意 IP 段拆成最少的 CIDR 块

在 SwitchData 项目做 UPF 地址分配时遇到一个经典问题:把任意 IP 段(10.0.0.5 ~ 10.0.0.250 这种不规整的)拆成最少的 CIDR 块。本文用 UInt128 + 位运算写出一套同时支持 IPv4 和 IPv6 的通用解法,核心是 CountTrailingZeros + 贪心算法。

Mapster 对象映射实战:从简单映射到复杂树形结构转换

Mapster 是 .NET 生态中高性能的对象映射库。本文以 SwitchData 项目为例,讲解 Mapster 的集中式配置、字段映射、AfterMapping 后处理、MapWith 自定义转换等核心用法,并演示如何将扁平列表映射为前端所需的树形结构。

从零构建 ADO.NET 抽象层:参数缓存、Schema 缓存与数据类型映射完整实现

本文基于实际项目源码,详细讲解如何从零构建一套完整的 ADO.NET 数据库抽象层。通过 Database 基类封装通用数据库操作,使用 ParameterCache 和 SchemaCache 实现参数与元数据缓存,提供 CLR 类型到 DbType 的自动映射,支持批量操作和异步调用。这套抽象层已在生产环境中运行良好,显著提升了数据库访问的性能和代码可维护性。

ASP.NET Core 过滤器实战:操作日志记录与异步日志机制

在 ASP.NET Core 项目中,过滤器(Filter)是实现横切关注点的核心机制。本文基于 SwitchData.Api 项目的真实代码,深入剖析 ApiDbLoggingActionFilter 的实现原理,讲解异步过滤器的生命周期、敏感参数脱敏、多类型出参智能捕获、ExpandoObject 动态截断以及 fire-and-forget 异步日志写入等高级技巧。

ASP.NET Core 请求日志中间件实战:基于 Stopwatch 的性能监控与异常追踪

本文从 SwitchData 项目提取 DisplayLoggingMiddleware,讲解如何在 ASP.NET Core 中手写请求日志中间件,实现接口耗时统计、状态码分级日志与异常追踪。通过 Endpoint 元数据读取菜单名称、Stopwatch 精确计时、静态文件过滤等技巧,不到 70 行代码即可构建生产级请求监控能力。

Mapster 高级映射实战:AfterMapping、条件映射与树形数据转换

本文从 SwitchData 项目提取三个真实场景,深入讲解 Mapster 的 AfterMapping 后映射钩子、Map 条件映射和 MapWith 自定义映射函数,最后展示如何将扁平数据一键转为树形结构。三种映射方式各有定位:Map 处理属性级类型转换,AfterMapping 处理对象级后置逻辑,MapWith 处理结构级整体变换。

表达式树解析:从 LINQ 到 SQL 的迷你 ORM 实现

深入 C# 表达式树(Expression Tree)的解析原理,使用 ExpressionVisitor 模式从零实现一个迷你版 LINQ-to-SQL 方案,包括元数据映射、条件解析、排序解析、动态 PredicateBuilder 组合,以及编译表达式树生成高性能访问器的完整实战。

C# 泛型接口显式实现:让工厂模式优雅地桥接类型差异

泛型接口IFoo<T>无法直接放进List<IFoo>,因为不同泛型参数是不同类型。本文从SwitchData项目出发,介绍如何用泛型接口显式实现(Explicit Interface Implementation)优雅地桥接泛型与非泛型世界,让工厂模式统一调度、子类享受强类型,同时集中类型转换、复用通用逻辑。

在 ASP.NET Core 中使用 Hangfire 实现企业级定时任务调度系统

本文结合实际项目经验,深入讲解如何在 ASP.NET Core 中使用 Hangfire 构建完整的定时任务调度系统。涵盖环境配置、持久化存储、调度器实现、执行器工厂模式、幂等性保障、后台 Worker 服务等核心主题,提供完整的代码实现和最佳实践。

C# 表达式树深度解析:构建自定义 LINQ 条件解析器

本文深入剖析 C# 表达式树的解析机制,基于 SwitchData 项目的 ExpressionParser 实现,手把手教你构建一个将 LINQ 表达式转换为数据库查询条件的解析器。涵盖 ExpressionVisitor 访问者模式、排序解析、条件解析、逻辑分组、元数据映射、PredicateBuilder 动态组合等核心技术点。

C#/.NET 加密解密实战:RSA分块加解密、AES对称加密与哈希算法完整实现

在企业级开发中,数据安全离不开加密解密。本文从 SwitchData 项目真实代码出发,系统讲解 C#/.NET 下三大加密体系的完整实现:RSA 非对称加密(含 PEM 多格式导入、分块加解密公式、数字签名与验签、标准 Dispose 模式)、AES 对称加密(CryptoStream 管道设计、IV 随机化、密钥生成)、MD5/SHA256 哈希算法(字节流/文件/字符串多输入支持)。最后附上 RSA+AES+SHA256 混合加密实战方案与常见坑点避坑指南。

ASP.NET Core 接口签名验证:防篡改、防重放的完整实现

在对外提供 OpenAPI 时,仅靠账号密码远远不够。本文从 SwitchData 项目真实代码出发,详解基于 userId+timestamp+secret 的 MD5 签名方案:包含签名头字段、5 分钟重放窗口、类型化 Filter 注册、AllowAnonymous 跳过、签名生成与校验、日志记录等,读完可直接套用到你自己的 API 接口安全上。

自定义 JWT 认证处理器:让 ASP.NET Core 认证更灵活

ASP.NET Core 内置了功能强大的 JWT Bearer 认证中间件,但在实际项目中常需要从 Header/Query/Form 多位置取 token 或自定义校验逻辑。本文展示如何通过继承 AuthenticationHandler<TOptions> 实现一个完全自定义的 JWT 认证处理器,从 Handler、Options、DI 注册、多位置 Token 提取到与官方处理器的对比,帮你快速掌握这一标准姿势。

ASP.NET Core 中间件实现统一响应格式

通过自定义 ASP.NET Core 中间件拦截 HTTP 响应管道,将业务返回值统一包装为标准 JSON 格式(包含 code、msg、data 字段),并集中处理异常与状态码映射,避免每个 Action 重复封装响应结构。

Parallel.ForEachAsync并行处理解析

深入解析 .NET 6+ 新增的 Parallel.ForEachAsync 异步并行方法,讲解其与同步 ForEach 的区别、并发度控制(MaxDegreeOfParallelism)、取消令牌使用,以及在 IO 密集型场景中的最佳实践。

记录ado.net批量新增最快的一种入库方式

实测对比三种 ADO.NET 批量入库方案:逐行 Insert、Table-Valued Parameter(TVP)、SqlBulkCopy,给出基准性能数据并推荐 SqlBulkCopy 作为百万级数据快速落库的最优方案。

.net8中实现多线程的几种方式

系统梳理 .NET 8 中常见的多线程与异步编程手段:Thread、ThreadPool、Task、Parallel、ValueTask、IAsyncEnumerable,对比各自适用场景,并给出线程安全与资源释放的注意事项。

.net8的生命周期

详解 .NET 依赖注入容器的三种生命周期:Singleton(全局单例)、Scoped(请求范围单例)、Transient(瞬态),对比注入行为、常见坑(Singleton 注入 Scoped 的陷阱)以及如何选择合适的生命周期。

mysql索引失效

列举 MySQL 中导致索引失效的典型写法:隐式类型转换、最左前缀不匹配、OR 条件未建索引、LIKE %前缀、对索引列使用函数/运算,配合 Explain 分析并给出改写建议。

RabbitMQ高级特性详解

深入 RabbitMQ 生产级特性:消息持久化与投递确认(Publisher Confirm/Consumer ACK)、死信队列(DLX)、延迟队列、优先级队列、惰性队列,保障消息不丢与业务可靠。

RabbitMQ六种队列模式

逐一解析 RabbitMQ 的六种经典通信模式:简单队列、Work Queues、Publish/Subscribe(Fanout)、Routing(Direct)、Topics、Headers、RPC,配合 Exchange 路由键与绑定关系图,快速掌握选型。

消息队列入门:概念与场景

从生产者-消费者模型出发,介绍消息队列(MQ)的三大核心价值:异步解耦、流量削峰、日志与通知,结合订单、秒杀、短信等真实场景说明何时应该引入 MQ。

IStartupFilter自定义中间件

讲解如何通过 IStartupFilter 在 ASP.NET Core 启动阶段自动包装中间件管道,实现框架级自动注入(如预热、健康检查、统一前处理),而无需用户显式调用 UseXxx。