博客园 - 微笑刺客D
uuid:24b78886-0ed1-41c2-8670-e3f31dcf42c4;id=180733
2023-12-29T07:39:09Z
微笑刺客D
https://www.cnblogs.com/CKExp/
feed.cnblogs.com
https://www.cnblogs.com/CKExp/p/17935007.html
Generic Repository&UnitOfWork基本实现 - 微笑刺客D
前言 在DbContext中已经具备了事务,对于多个实体的操作,能够在一个事务中保证。借助仓储在基于DbContext上的封装,我们能够更好的扩展复用。泛型仓储的使用又能简化对于基础功能的依赖,但是当现有事务范围不足以覆盖或是多个仓储操作,多次调用SaveChange后,整体的事务范围便发生了变化,
2023-12-29T07:39:00Z
2023-12-29T07:39:00Z
微笑刺客D
https://www.cnblogs.com/CKExp/
【摘要】前言 在DbContext中已经具备了事务,对于多个实体的操作,能够在一个事务中保证。借助仓储在基于DbContext上的封装,我们能够更好的扩展复用。泛型仓储的使用又能简化对于基础功能的依赖,但是当现有事务范围不足以覆盖或是多个仓储操作,多次调用SaveChange后,整体的事务范围便发生了变化, <a href="https://www.cnblogs.com/CKExp/p/17935007.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/CKExp/p/17863135.html
Generic Repository基本实现 - 微笑刺客D
前言 自定义仓储能够很大程度方便我们实现功能,但是对于自定义仓储中的公共部分,又是非常基础的功能,如基础增删改和列表查询,分页查询,单个查询等,对于大部分自定义仓储来讲都能够用的上,如果每个自定义仓储中都实现一套,代码冗余度太高,无效工作过滤耗费时间。 构建泛型仓储 泛型仓储抽象接口 在自定义仓储接
2023-11-29T01:00:00Z
2023-11-29T01:00:00Z
微笑刺客D
https://www.cnblogs.com/CKExp/
【摘要】前言 自定义仓储能够很大程度方便我们实现功能,但是对于自定义仓储中的公共部分,又是非常基础的功能,如基础增删改和列表查询,分页查询,单个查询等,对于大部分自定义仓储来讲都能够用的上,如果每个自定义仓储中都实现一套,代码冗余度太高,无效工作过滤耗费时间。 构建泛型仓储 泛型仓储抽象接口 在自定义仓储接 <a href="https://www.cnblogs.com/CKExp/p/17863135.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/CKExp/p/17796196.html
DbContext&Repository基本实现 - 微笑刺客D
前言 对于仓储模式,各有看法不同,直接使用DbContext简单方便,使用仓储模式扩展复用较好。受限于场景的差异,人员技能熟悉程度,交付时间,成本等选择哪种方式也有不同。 Controller&DbContext 当需要快速设计一个访问数据库Demo时,顺手便是Controller+DbContex
2023-10-29T10:40:00Z
2023-10-29T10:40:00Z
微笑刺客D
https://www.cnblogs.com/CKExp/
【摘要】前言 对于仓储模式,各有看法不同,直接使用DbContext简单方便,使用仓储模式扩展复用较好。受限于场景的差异,人员技能熟悉程度,交付时间,成本等选择哪种方式也有不同。 Controller&DbContext 当需要快速设计一个访问数据库Demo时,顺手便是Controller+DbContex <a href="https://www.cnblogs.com/CKExp/p/17796196.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/CKExp/p/17737036.html
抽象CurrentUser适配Http和Job场景 - 微笑刺客D
前言 获取当前请求用户的基础信息是很常见的,诸如当前用户Id,角色,有无访问权限等。通常我们可以直接使用HttpContext.User来拿到当前经过认证后的请求人信息。但是这样对于分层应用不太友好,需要安装AspNetCore.Http.Abstractions的包,这样对于这层(非Web层)来讲
2023-09-29T07:37:00Z
2023-09-29T07:37:00Z
微笑刺客D
https://www.cnblogs.com/CKExp/
【摘要】前言 获取当前请求用户的基础信息是很常见的,诸如当前用户Id,角色,有无访问权限等。通常我们可以直接使用HttpContext.User来拿到当前经过认证后的请求人信息。但是这样对于分层应用不太友好,需要安装AspNetCore.Http.Abstractions的包,这样对于这层(非Web层)来讲 <a href="https://www.cnblogs.com/CKExp/p/17737036.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/CKExp/p/17664069.html
整合MediatR&Cap实现EventBus - 微笑刺客D
在软件开发中,事件早已被我们所熟悉,一个按钮按下,产生中断事件,一个回车,前端页面有侦听事件,在事件风暴建模活动中,事件也是作为领域建模的突破口,事件的重要性不言而喻。其本质是发生的事实到引发了相关事情,在这其中的传递的信息便是事件的内容。就如同猫叫了,引发着老鼠跑了,主人醒了,其中的事件便是猫叫了
2023-08-29T02:15:00Z
2023-08-29T02:15:00Z
微笑刺客D
https://www.cnblogs.com/CKExp/
【摘要】在软件开发中,事件早已被我们所熟悉,一个按钮按下,产生中断事件,一个回车,前端页面有侦听事件,在事件风暴建模活动中,事件也是作为领域建模的突破口,事件的重要性不言而喻。其本质是发生的事实到引发了相关事情,在这其中的传递的信息便是事件的内容。就如同猫叫了,引发着老鼠跑了,主人醒了,其中的事件便是猫叫了 <a href="https://www.cnblogs.com/CKExp/p/17664069.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/CKExp/p/17575349.html
.Net Core&Channels - 微笑刺客D
### 前言 生活中可以见到很多传送带,河道,工厂流水线,快递服务等。去站点寄个快递,通过传送带,将快递从一端传递到另一端,再去站点收个快递。参照这种设计,我们可以将其融入到软件中,以实现许多功能。 在.Net Core中实现了一个高效,线程安全的队列System.Threading.Channel
2023-07-23T10:15:00Z
2023-07-23T10:15:00Z
微笑刺客D
https://www.cnblogs.com/CKExp/
【摘要】### 前言 生活中可以见到很多传送带,河道,工厂流水线,快递服务等。去站点寄个快递,通过传送带,将快递从一端传递到另一端,再去站点收个快递。参照这种设计,我们可以将其融入到软件中,以实现许多功能。 在.Net Core中实现了一个高效,线程安全的队列System.Threading.Channel <a href="https://www.cnblogs.com/CKExp/p/17575349.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/CKExp/p/17509989.html
.Net 472&6.0 Razor编译时的小差异 - 微笑刺客D
## 前言 几个月前在进行着.Net 472到6.0的升级,复用原有代码,在对Razor进行迁移中,发现原运行正常的代码,却存在报错,深入研究发现是Core下对Razor编译有一些变动。 ## 问题复现 ### 472 创建视图 新建.Net Framework下Mvc,增加一个简单视图如下。 ``
2023-06-28T00:01:00Z
2023-06-28T00:01:00Z
微笑刺客D
https://www.cnblogs.com/CKExp/
【摘要】## 前言 几个月前在进行着.Net 472到6.0的升级,复用原有代码,在对Razor进行迁移中,发现原运行正常的代码,却存在报错,深入研究发现是Core下对Razor编译有一些变动。 ## 问题复现 ### 472 创建视图 新建.Net Framework下Mvc,增加一个简单视图如下。 `` <a href="https://www.cnblogs.com/CKExp/p/17509989.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/CKExp/p/17392384.html
通过Serverless私有化部署ChatGPT Web - 微笑刺客D
作为开发人员,想要自己部署一个渠道访问或是想随时访问但是奈何魔法有限,又或是海外服务器太贵,不想耗费这个钱,本文借助 Serverless 来搭建一下私有 ChatGPT 服务,Serverless 按照使用量来计费,个人使用下(满足工作和生活)费用相当低。 本文过程较为繁琐,也有更为简便的其他方式
2023-05-11T14:07:00Z
2023-05-11T14:07:00Z
微笑刺客D
https://www.cnblogs.com/CKExp/
【摘要】作为开发人员,想要自己部署一个渠道访问或是想随时访问但是奈何魔法有限,又或是海外服务器太贵,不想耗费这个钱,本文借助 Serverless 来搭建一下私有 ChatGPT 服务,Serverless 按照使用量来计费,个人使用下(满足工作和生活)费用相当低。 本文过程较为繁琐,也有更为简便的其他方式 <a href="https://www.cnblogs.com/CKExp/p/17392384.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/CKExp/p/17364932.html
.Net Core Console&Cache - 微笑刺客D
前言 有时候想快速验证一些想法,新建一个控制台来弄,可控制台模板是轻量级的应用程序模板,不具备配置、日志、依赖注入等一些功能。 缓存 在网站开发中,缓存无处不在,它能够极大地提高硬件和软件的运行速度。性能优化的第一步便是使用缓存,例如频繁的从数据库中读取,需要和底层IO交互,性能受限,如将常用数据加
2023-04-30T01:48:00Z
2023-04-30T01:48:00Z
微笑刺客D
https://www.cnblogs.com/CKExp/
【摘要】前言 有时候想快速验证一些想法,新建一个控制台来弄,可控制台模板是轻量级的应用程序模板,不具备配置、日志、依赖注入等一些功能。 缓存 在网站开发中,缓存无处不在,它能够极大地提高硬件和软件的运行速度。性能优化的第一步便是使用缓存,例如频繁的从数据库中读取,需要和底层IO交互,性能受限,如将常用数据加 <a href="https://www.cnblogs.com/CKExp/p/17364932.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/CKExp/p/17299198.html
.Net Core Console&Generic HostBuilder - 微笑刺客D
前言 有时候想快速验证一些想法,新建一个控制台来弄,可控制台模板是轻量级的应用程序模板,不具备配置、日志、依赖注入等一些功能。 通用主机 在Asp.Net Core中有WebHostBuilder来提供DI,Configuratio,日志等功能,很是齐全,如果是在控制台中使用呢,或是使用的场景不单单
2023-04-08T12:52:00Z
2023-04-08T12:52:00Z
微笑刺客D
https://www.cnblogs.com/CKExp/
【摘要】前言 有时候想快速验证一些想法,新建一个控制台来弄,可控制台模板是轻量级的应用程序模板,不具备配置、日志、依赖注入等一些功能。 通用主机 在Asp.Net Core中有WebHostBuilder来提供DI,Configuratio,日志等功能,很是齐全,如果是在控制台中使用呢,或是使用的场景不单单 <a href="https://www.cnblogs.com/CKExp/p/17299198.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/CKExp/p/17216231.html
.Net Core Console&Logger - 微笑刺客D
前言 有时候想快速验证一些想法,新建一个控制台来弄,可控制台模板是轻量级的应用程序模板,不具备配置、日志、依赖注入等一些功能。 日志 .Net Core自带了一个基础的logger框架Microsoft.Extensions.Logging提供记录日志功能,能够按日志不同级别记录日志信息(Infor
2023-03-15T00:06:00Z
2023-03-15T00:06:00Z
微笑刺客D
https://www.cnblogs.com/CKExp/
【摘要】前言 有时候想快速验证一些想法,新建一个控制台来弄,可控制台模板是轻量级的应用程序模板,不具备配置、日志、依赖注入等一些功能。 日志 .Net Core自带了一个基础的logger框架Microsoft.Extensions.Logging提供记录日志功能,能够按日志不同级别记录日志信息(Infor <a href="https://www.cnblogs.com/CKExp/p/17216231.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/CKExp/p/17179291.html
.Net Core Console&Dependency injection - 微笑刺客D
前言 有时候想快速验证一些想法,新建一个控制台来弄,可控制台模板是轻量级的应用程序模板,不具备配置、日志、依赖注入等一些功能。 依赖注入 在Asp.Net Core应用程序中,可以通过依赖注入使用IConfiguration接口来使用配置。而控制台模板十分简单,没有内置依赖注入,应用程序所依赖的功能
2023-03-05T00:16:00Z
2023-03-05T00:16:00Z
微笑刺客D
https://www.cnblogs.com/CKExp/
【摘要】前言 有时候想快速验证一些想法,新建一个控制台来弄,可控制台模板是轻量级的应用程序模板,不具备配置、日志、依赖注入等一些功能。 依赖注入 在Asp.Net Core应用程序中,可以通过依赖注入使用IConfiguration接口来使用配置。而控制台模板十分简单,没有内置依赖注入,应用程序所依赖的功能 <a href="https://www.cnblogs.com/CKExp/p/17179291.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/CKExp/p/17157754.html
.Net Core Console&Configuration - 微笑刺客D
前言 有时候想快速验证一些想法,新建一个控制台来弄,可控制台模板是轻量级的应用程序模板,不具备配置、日志、依赖注入等一些功能。 Configuration 在Asp.Net Core应用程序中,可以通过依赖注入使用IConfiguration接口来使用配置。而控制台模板十分简单,没有内置依赖注入,应
2023-02-27T00:08:00Z
2023-02-27T00:08:00Z
微笑刺客D
https://www.cnblogs.com/CKExp/
【摘要】前言 有时候想快速验证一些想法,新建一个控制台来弄,可控制台模板是轻量级的应用程序模板,不具备配置、日志、依赖注入等一些功能。 Configuration 在Asp.Net Core应用程序中,可以通过依赖注入使用IConfiguration接口来使用配置。而控制台模板十分简单,没有内置依赖注入,应 <a href="https://www.cnblogs.com/CKExp/p/17157754.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/CKExp/p/17149389.html
Prometheus&Alertmanager告警推送 - 微笑刺客D
前言 尽管可以通过可视化数据监控系统运行状态,但我们无法时刻关注系统运行,因此需要一些实时运行的工具能够辅助监控系统运行,当系统出现运行问题时,能够通知我们,以此确保系统稳定性,告警便是作为度量指标监控中及其重要的一环。 Prometheus告警介绍 在Prometheus中,告警模块为Alertm
2023-02-23T13:05:00Z
2023-02-23T13:05:00Z
微笑刺客D
https://www.cnblogs.com/CKExp/
【摘要】前言 尽管可以通过可视化数据监控系统运行状态,但我们无法时刻关注系统运行,因此需要一些实时运行的工具能够辅助监控系统运行,当系统出现运行问题时,能够通知我们,以此确保系统稳定性,告警便是作为度量指标监控中及其重要的一环。 Prometheus告警介绍 在Prometheus中,告警模块为Alertm <a href="https://www.cnblogs.com/CKExp/p/17149389.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/CKExp/p/17080907.html
Prometheus&Grafana基本使用 - 微笑刺客D
Prometheus介绍 Prometheus 是一套开源的系统监控与报警框架,以便于我们能够监控生产环境下的应用与服务。启发于 Google 的 BorgMon 监控系统,由工作在 SoundCloud 的 google 前员工在 2012 年创建,作为社区开源项目进行开发,并于 2015 年正式
2023-01-31T14:03:00Z
2023-01-31T14:03:00Z
微笑刺客D
https://www.cnblogs.com/CKExp/
【摘要】Prometheus介绍 Prometheus 是一套开源的系统监控与报警框架,以便于我们能够监控生产环境下的应用与服务。启发于 Google 的 BorgMon 监控系统,由工作在 SoundCloud 的 google 前员工在 2012 年创建,作为社区开源项目进行开发,并于 2015 年正式 <a href="https://www.cnblogs.com/CKExp/p/17080907.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/CKExp/p/17053497.html
AspNetCore&Cookie认证授权 - 微笑刺客D
有时想快速搭建一个简单Demo或是需要验证授权完成后的一些动作,总是需要去找一番,有时还要不断去翻找到适合的,或是copy过来又不能使用又或是过时的。 认证与授权说来说去还是四个核心步骤 登录(SignIn),为了获得当前请求人是谁的标识 退出(SignOut),令系统移除请求人的标识 请求资源时识
2023-01-15T06:57:00Z
2023-01-15T06:57:00Z
微笑刺客D
https://www.cnblogs.com/CKExp/
【摘要】有时想快速搭建一个简单Demo或是需要验证授权完成后的一些动作,总是需要去找一番,有时还要不断去翻找到适合的,或是copy过来又不能使用又或是过时的。 认证与授权说来说去还是四个核心步骤 登录(SignIn),为了获得当前请求人是谁的标识 退出(SignOut),令系统移除请求人的标识 请求资源时识 <a href="https://www.cnblogs.com/CKExp/p/17053497.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/CKExp/p/17005842.html
Jaeger&ElasticSearch存储链路追踪数据 - 微笑刺客D
前言 Jaeger的all in one镜像下是用内存存储(或是临时文件格式存储),容器重启,数据丢失。生产环境下更多是存储到es或是cassandra,这样对于查询或是系统扩展是比较方便的。此处介绍Jaeger的几个组件独立部署以及存储到ElasticSearch中。使用单个拉取镜像创建容器的方式
2022-12-26T07:09:00Z
2022-12-26T07:09:00Z
微笑刺客D
https://www.cnblogs.com/CKExp/
【摘要】前言 Jaeger的all in one镜像下是用内存存储(或是临时文件格式存储),容器重启,数据丢失。生产环境下更多是存储到es或是cassandra,这样对于查询或是系统扩展是比较方便的。此处介绍Jaeger的几个组件独立部署以及存储到ElasticSearch中。使用单个拉取镜像创建容器的方式 <a href="https://www.cnblogs.com/CKExp/p/17005842.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/CKExp/p/16933756.html
Asp.Net Core&Jaeger实现链路追踪 - 微笑刺客D
前言 随着应用愈发复杂,请求的链路也愈发复杂,微服务化下,更是使得不同的服务分布在不同的机器,地域,语言也不尽相同。因此需要借助工具帮助分析,跟踪,定位请求中出现的若干问题,以此来保障服务治理,链路追踪也就出现了。 OpenTracing协议 OpenTracing是一套分布式追踪协议,与平台,语言
2022-11-28T13:55:00Z
2022-11-28T13:55:00Z
微笑刺客D
https://www.cnblogs.com/CKExp/
【摘要】前言 随着应用愈发复杂,请求的链路也愈发复杂,微服务化下,更是使得不同的服务分布在不同的机器,地域,语言也不尽相同。因此需要借助工具帮助分析,跟踪,定位请求中出现的若干问题,以此来保障服务治理,链路追踪也就出现了。 OpenTracing协议 OpenTracing是一套分布式追踪协议,与平台,语言 <a href="https://www.cnblogs.com/CKExp/p/16933756.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/CKExp/p/16838794.html
.Net Core&RabbitMQ限制循环消费 - 微笑刺客D
前言 当消费者端接收消息处理业务时,如果出现异常或是拒收消息将消息又变更为等待投递再次推送给消费者,这样一来,则形成循环的条件。 循环场景 生产者发送100条消息到RabbitMQ中,消费者设定读取到第50条消息时,设置拒收,同时设定是否还留存在当前队列中(当requeue为false时,设置了死信
2022-10-29T07:22:00Z
2022-10-29T07:22:00Z
微笑刺客D
https://www.cnblogs.com/CKExp/
【摘要】前言 当消费者端接收消息处理业务时,如果出现异常或是拒收消息将消息又变更为等待投递再次推送给消费者,这样一来,则形成循环的条件。 循环场景 生产者发送100条消息到RabbitMQ中,消费者设定读取到第50条消息时,设置拒收,同时设定是否还留存在当前队列中(当requeue为false时,设置了死信 <a href="https://www.cnblogs.com/CKExp/p/16838794.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/CKExp/p/16656155.html
.Net Core&RabbitMQ优先级队列 - 微笑刺客D
优先级队列 消息除了有生命周期长短,也有紧急与非紧急之分,承载了具有优先级消息的队列则为优先级队列。 队列优先级设置 为消息设置优先级前,队列需要先具备优先级的能力,队列设置参数时,可添加x-max-priority来设置队列中消息能够达到的最高优先级(255封顶但推荐设置在1-10之间)。 var
2022-09-04T22:46:00Z
2022-09-04T22:46:00Z
微笑刺客D
https://www.cnblogs.com/CKExp/
【摘要】优先级队列 消息除了有生命周期长短,也有紧急与非紧急之分,承载了具有优先级消息的队列则为优先级队列。 队列优先级设置 为消息设置优先级前,队列需要先具备优先级的能力,队列设置参数时,可添加x-max-priority来设置队列中消息能够达到的最高优先级(255封顶但推荐设置在1-10之间)。 var <a href="https://www.cnblogs.com/CKExp/p/16656155.html" target="_blank">阅读全文</a>