一、安装依赖 # 基础包 Install-Package Polly # HTTP 集成(推荐) Install-Package Microsoft.Extensions.Http.Polly 二、策略与代码 1. 重试(Retry):自愈瞬时故障 作用:网络抖动、偶发超时、5xx 等临时错误自动重 ...
简单入门 1. 准备函数[1][2][3] [DllImport("User32")] // 设置消息钩子 public static extern IntPtr SetWindowsHookExA(int idHook, HookProc lpfn, IntPtr hmod, int dwThre ...
一、设计思路 1. 架构分层 一级缓存:IMemoryCache(进程内内存缓存,读写纳秒级,无网络开销) 二级缓存:IDistributedCache(Redis 分布式缓存,跨服务共享,毫秒级) 数据源:数据库 / 接口(兜底,避免缓存穿透) 2. 读写流程 读取数据(Get) 先查本地缓存,命 ...
一、Redis 常用 5 个数据结构 StackExchange.Redis 是 .NET 最主流客户端,所有结构都有对应 API。 1. String(字符串) 用途:缓存对象、计数器、分布式锁、简单配置 // 存对象(序列化) await db.StringSetAsync("user:1", ...
目录简介核心代码使用示例依赖包总结讨论 简介 在 .NET 开发中,PDF 转图片是一个常见需求。本文介绍如何使用 Docnet.Core 和 SkiaSharp 实现一个跨平台的 PDF 转图片工具类。 核心代码 using Docnet.Core; using Docnet.Core.Model ...
在处理 PDF 文档时,“拆分页面”可以说是最常遇到的需求之一。比如:一份几十页的报告,你只想要其中某一章;或者开会发的 PDF 会议纪要,需要按参会者姓名拆成单页分别发邮件;又或者你刚把一份扫描件导出来,希望每一页变成一个独立的 PDF 文件……这些场景我都遇到过。 今天我就用 Free Spir ...
一、核心规则 异常仅用于非预期错误,禁止用来做业务逻辑判断(替代 if/TryXXX)。 精准捕获:抓具体异常,禁止无脑捕获 Exception。 禁止空捕获 catch{}、吞异常、隐藏故障。 重抛异常只用裸 throw;,禁用 throw ex;(丢失堆栈)。 资源释放优先 using,少手写 ...
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 在压测一个 asp.net 实现的服务器时,发现第一次压测和第二次压测性能差距较大。 以下是我的分析,以及询问 ChatGPT 得到的答案: C# 中基于 a ...
一、.NET 官方 + 企业通用代码规范 1. 命名规范(最核心) 遵循 PascalCase / camelCase 严格区分,禁止拼音、无意义命名。 表格 类型规范示例 类、接口、方法、属性 PascalCase UserService、GetUserById() 私有字段 _camelCase ...
1. 安装 NuGet SqlSugarCore 2. SqlSugar 数据库上下文 using SqlSugar; namespace Demo; public class SqlSugarContext { public ISqlSugarClient Db { get; } public S ...
04. async/await 原理与性能优化:深入理解异步编程 本章 GitHub 仓库:csharp-concurrency-cookbook ⭐ 欢迎 Star 和 Fork!所有代码示例都可以在仓库中找到并运行。 本章导读 本文目标:深入理解 async/await 的编译器魔法 ...
做了个小工具, 这个是用于将文件夹的图标路径设置为相对路径, 方便转移文件. 效果: 绝对路径转相对路径核心代码 (纯业余水平, 见丑了): string[] tmp2; //吧路径切成腻子, 图标路径 string[] tmp3; //吧路径切成腻子, 当前文件夹路径 string[] tmp4; ...
一、SQL 为什么会慢? 根本原因 3 个: 没走索引 / 索引失效(全表扫描) 数据量太大(没分页、没过滤) 写法复杂(子查询嵌套、join 太多、排序分组无索引) 二、索引(SQL 优化的核心) 1. 什么是索引? 可以理解为书的目录: 没有索引 = 一页一页翻(全表扫描) 有索引 = 直接查目 ...
一、SOLID 原则(类与方法的设计规范) SOLID 是 5 个面向对象设计原则的缩写,目的:让代码易维护、易扩展、少出 bug。 1. S – 单一职责原则 (Single Responsibility) 一个类 / 方法只做一件事,且只做好一件事 坏:一个类同时处理「用户注册 + 发送邮件 + ...
一、环境准备(NuGet 安装) # SqlSugar 核心 Install-Package SqlSugarCore # Redis 驱动 (StackExchange.Redis 官方推荐) Install-Package StackExchange.Redis # 缓存工具包 Install- ...
一、环境准备(新建 .NET Web API) 先安装所有需要的 NuGet 包: 必装包 # AOP 核心 Install-Package Autofac Install-Package Autofac.Extras.DynamicProxy Install-Package Microsoft.E ...
一、先安装必需 NuGet 包 # API版本控制 Install-Package Microsoft.AspNetCore.Mvc.Versioning Install-Package Microsoft.AspNetCore.Mvc.Versioning.ApiExplorer # JWT In ...
一、.NET Web API 是什么 ASP.NET Web API 是微软用于构建 HTTP 服务 的框架,专门用来开发: 前后端分离接口 移动端 API 微服务接口 它基于 Controller + Action 模式,返回 JSON/XML 数据,不返回页面。 二、路由(Routing) 路由 ...
一、请求处理管道(Pipeline) 1. 是什么? ASP.NET Core 处理 HTTP 请求的一条流水线。 请求进来 → 依次经过多个中间件 → 响应返回。 2. 核心特点 单向进入,双向返回 请求:从上到下执行中间件 响应:从下到上原路返回 顺序至关重要 先注册的中间件先执行 可短 - c ...
一、内存基础:栈 vs 堆 C# 把内存分成两块核心区域,分配规则完全不同,这是理解 GC 的前提。 1. 栈内存 (Stack) 存放内容:值类型(int、bool、struct)、引用类型变量的引用地址 特点: 自动分配、自动释放(方法执行完立刻释放) 速度极快,无需 GC 管理 大小固定,空间 ...