- 博客(10)
- 收藏
- 关注
原创 ASP.NET Core使用filter和redis实现接口防重
日常开发中,经常需要对一些响应不是很快的关键业务接口增加防重功能,即短时间内收到的多个相同的请求,只处理一个,其余不处理,避免产生脏数据。接下来开始拼接key并检查redis,如果key已经存在,我们需要短路请求,这里直接返回的是。防重组件的思路很简单,将第一次请求的某些参数作为标识符存入redis中,并设置过期时间,下次请求过来,先检查redis相同的请求是否已被处理;通过使用Filter,我们可以在请求处理管道的特定阶段之前或者之后运行自定义代码,达到AOP的效果。实现一个自定义属性,方便使用。
2023-03-15 19:33:31
311
原创 .NET依赖注入之一个接口多个实现
最近又在项目中碰到需要将原本单实现的接口改造成多个实现的场景,这里记录一下常见的几种改法。假设已经存在如下接口和其实现,由于只有一种实现,注入和使用非常容易。现在我们需要增加一种实现。
2023-02-26 17:00:19
299
原创 【BotR】CLR堆栈遍历(Stackwalking in CLR)
在上一篇文章[CLR类型系统概述]里提到,当运行时挂起时, 垃圾回收会执行堆栈遍历器(stack walker)去拿到堆栈上值类型的大小和堆栈根。这里我们来翻译BotR里一篇专门介绍Stackwalking的文章,希望能加深理解。
2022-09-25 21:52:13
239
翻译 【BotR】CLR类型系统
NET运行时之书(Book of the Runtime,简称BotR)是一系列描述.NET运行时的文档,2007年左右在微软内部创建,最初目的是为了帮助其新员工快速上手.NET运行时;随着.NET开源,BotR也被公开了出来,如果想深入理解CLR,这系列文章不可错过
2022-09-23 20:59:23
317
原创 【Git进阶】基于文件(夹)拆分大PR
前段时间为了迁移一个旧服务到新项目,由此产生了一个巨大的PR,为了方便Code Review,最终基于文件夹,将其拆分成了多个较小的PR;现在这里记录下,后面可能还会需要
2022-09-09 19:25:52
393
原创 .NET使用StackTrace获取方法调用者信息
在日常工作中,偶尔需要调查一些诡异的问题,而业务代码经过长时间的演化,很可能已经变得错综复杂,流程、分支众多,如果能在关键方法的日志里添加上调用者的信息,将对定位问题非常有帮助。StackTrace, 位于命名空间下,名字很直观,它代表一个方法调用的跟踪堆栈,里面存放着按顺序排列的栈帧对象(StackFrame),每当发生一次调用,就会压入一个栈帧;而一个栈帧,则拥有本次调用的各种信息,除了MethodBase,还包括所在的文件名、行、列等。
2022-09-03 18:01:17
377
原创 .Net Core使用Coravel实现任务调度
本文介绍一个对开发者友好的、轻量级、零配置的.Net Standard库Coravel,并演示了如何使用Coravel在.Net 6 Minimal API中创建定时任务,最后浅析了的实现原理
2022-08-20 15:30:37
448
原创 使用Nginx在 Linux 上托管 ASP.NET Core 6.0应用:GitHub Actions自动部署
本文完整介绍了如何使用Github Actions做CI&CD,将ASP.NET Core 6.0 程序部署到阿里云Ubantu服务器,并使用Nginx作为web服务器,systemd做守护进程。
2022-08-14 22:27:50
849
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人