自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 SemaphoreSlim 轻量级的异步方法的同步访问控制

是 .NET 框架中的一个同步原语,用于控制对资源的并发访问。它类似于传统的信号量(Semaphore),但设计上更轻量级,适用于在单个进程内进行线程同步。解释:这行代码定义了一个静态只读的实例_lock,并初始化为允许一个线程进入(初始计数为1,最大计数也为1)。作用是一种轻量级的同步基元,用于限制同时访问某一资源或池的线程数。在这里,它被设置为1,表示一次只能有一个线程可以进入临界区。在这个示例中,最多允许3个线程同时访问资源,其余线程将被阻塞,直到有线程释放资源。

2024-08-06 07:24:52 424

原创 自定义一个通用的事件总线驱动机制

该示例旨在实现了一个简单的事件总线(Event Bus)系统,并通过ASP.NET Core Web API来演示其使用。:注册一个事件及其回调函数。:注销一个事件及其回调函数。:触发一个事件并执行所有注册的回调函数。该接口定义了事件总线的基本操作,允许注册、注销和触发事件。set;定义一个简单的事件类,包含一个消息属性。该类用于传递事件数据。这段代码实现了一个简单的事件总线系统,通过ASP.NET Core Web API演示其使用。

2024-08-06 07:17:22 400

原创 自定义一个通用的异常重试机制

该实例旨在实现一个通用的异步重试机制。接受一个返回任务的函数(func)和一个重试次数(tryCounts),在指定的重试次数内尝试执行该函数。如果函数执行失败抛出异常,则会捕获异常并进行重试,直到成功或达到最大重试次数,如果达到最多重试次数还是异常,则将异常抛往外层。

2024-08-06 07:12:15 197

原创 基于ASP.NET CORE 6 使用Polly来实现处理Http请求异常

Polly 是一个 .NET 弹性和瞬态故障处理库,旨在帮助开发者构建更健壮和可靠的应用程序。它提供了一系列策略,如重试、断路器、超时、回退和隔离等,用于处理瞬态故障和提高系统的弹性。通过这些示例,你可以看到如何使用 Polly 来增强 ASP.NET Core 应用程序的弹性和容错能力。根据具体的业务需求,可以灵活组合和调整这些策略。

2024-07-29 07:41:37 402

原创 Mapster原理以其运用实例

Mapster 是一个高性能的对象映射库,用于 .NET 应用程序中。它可以将一个对象的属性快速复制到另一个对象,通常用于 DTO(数据传输对象)和实体之间的转换。Mapster 的设计目标是提供比 AutoMapper 更高的性能,同时保持易用性。set;set;set;set;通过上述步骤,你可以在 .NET 项目中轻松地使用 Mapster 进行对象映射。Mapster 的高性能和灵活性使其成为处理对象映射的强大工具。

2024-07-29 07:41:06 357

原创 基于 ASP.NET Core 6 整合 Hangfire 实现项目案例

Hangfire 是一个开源的 .NET 库,用于在 ASP.NET 应用程序中执行后台任务。它允许开发人员轻松地将长时间运行的任务、定时任务和其他后台处理从主线程中分离出来,以提高应用程序的响应速度和性能。这个示例项目展示了如何在 .NET Core 6 中整合 Hangfire,并实现了四种类型的后台任务:Fire-and-forget、Delayed、Recurring 和 Continuations。通过这种方式,你可以轻松地将长时间运行的任务从主线程中分离出来,提高应用程序的响应速度和性能。

2024-07-29 07:40:45 939

原创 Akka.NET 原理及运用

这个示例展示了如何使用 Akka.NET 构建一个简单的实时聊天应用程序。通过 Actor 模型,我们可以轻松地处理并发用户的消息,并且系统具有良好的扩展性。

2024-07-29 07:39:18 360

原创 Refit 原理及使用Refit 和不使用的HTTP请求案例运用对比

定义一个接口来描述你的 API 端点。set;set;set;set;set;set;通过对比可以看出,使用 Refit 可以大大简化与 RESTful API 的交互代码,通过定义接口并使用依赖注入,你可以轻松地发起 HTTP 请求并处理响应,提高代码的可读性和可维护性。而使用原生的HttpClient虽然灵活,但代码量大且容易出错。

2024-07-29 07:38:20 447

原创 反应式编程:原理功能介绍及实践

反应式编程(Reactive Programming)是一种面向数据流和变化传播的编程范式。它强调异步数据流的处理,通过声明性地定义依赖关系,使得系统能够自动响应数据的变化。通过这种方式,你可以利用反应式编程来简化异步操作的处理,使代码更加简洁和易于维护。

2024-07-14 08:44:04 246

原创 异常解决:注册和解析服务时生命周期问题

ASP.NET Core 的内置依赖注入容器不允许从根服务提供者解析作用域服务,是为了确保生命周期管理、资源管理的一致性和正确性,避免潜在的并发问题,并确保应用程序行为的一致性。

2024-07-14 08:43:45 838

原创 .NET使用Scrutor增强内置依赖注入容器功能

Scrutor 是一个非常强大的工具,可以大大简化依赖注入的配置工作,特别是在大型项目中。它提供了灵活的扫描和注册机制,使得服务注册更加简洁和可维护。如果你在项目中遇到大量的服务注册需求,Scrutor 会是一个很好的选择。

2024-07-14 08:38:56 369

原创 .NET 开源库技术栈汇总

ASP.NET Core:Entity Framework Core:Serilog:AutoMapper:MediatR:Polly:Dapper:Hangfire:NLog:FluentValidation:Swashbuckle (Swagger for .NET):MassTransit:IdentityServer:SignalR:xUnit:Quartz.NET:MiniProfiler:Mapster:Refit:NSubstitute:Bogus:Ocelot:Blazor:Elsa Wor

2024-07-14 08:37:46 648

原创 服务部署:解决Docker容器与虚拟机主机之间MySql连接访问问题

通过以上步骤,你可以解决 MySQL 远程连接的问题。确保防火墙和网络配置正确,MySQL 配置允许远程连接,并且用户具有适当的权限。如果仍然遇到问题,请检查 MySQL 日志文件(通常位于)以获取更多信息。

2024-06-11 07:48:00 1934

原创 服务部署:使用docker部署开源Xxl-Job任务调度平台项目

xxl-job: 一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。这样,你就完成了使用 Docker 部署本地构建的 Xxl-Job 任务调度平台的过程。2、本地使用ieda修改配置并构建启动运行。3、将项目文件压缩上传虚拟机上。4、在虚拟机上解压到某一路径。5、使用docker部署。

2024-06-11 07:47:04 917

原创 Linux系统操作命令与docker操作命令

移动文件或文件夹,也可用于重命名。:列出当前目录下的文件和文件夹。:显示当前所在的目录的路径。:创建新的空白文件。:复制文件或文件夹。:删除文件或文件夹。

2024-06-09 20:41:08 492 1

原创 服务部署:.NET项目使用Docker构建镜像与部署

这将会在后台运行你的容器,并将主机的5000端口映射到容器的80端口。:确保你的Linux系统上已经安装了Docker。,你应该能够看到你的.NET应用程序正在运行。在你的.NET项目根目录下创建一个名为。

2024-06-09 20:38:54 1044 1

原创 服务部署:Linux系统环境部署java的jar包步骤

首先,确保你的系统上已经安装了 Java Runtime Environment (JRE)。导航到存放 JAR 包的目录并运行它。假设你的 JAR 包名为。如果你的应用提供了 Web 界面或 API,可以通过浏览器或。将你的 JAR 包上传到服务器上的某个目录。命令将本地的 JAR 包上传到服务器的。如果你的应用需要后台运行,可以使用。查看应用生成的日志文件(例如。

2024-06-09 08:35:29 509 2

原创 服务部署:Linux系统部署C# .NET项目

这个命令更新本地的包列表,从而使系统知道所有可用的软件包及其版本信息。因为我们刚刚添加了一个新的包仓库,所以需要更新包列表。打开浏览器,访问你的服务器 IP 地址和端口(默认情况下是 5000),验证你的 .NET MVC 应用是否成功运行。这会将 Microsoft 包仓库添加到你的系统中,使你能够从该仓库安装软件包。在你的 Linux 服务器上,导航到你上传发布文件的目录,并运行应用。首先,你需要在你的 Linux 系统上安装 .NET SDK。或其他工具将发布的文件复制到你的 Linux 服务器上。

2024-06-09 08:33:26 1397 2

原创 服务部署:Ubuntu安装搭建docker

为了加快 Docker 镜像的下载速度,可以配置国内的镜像加速器。替换为实际的镜像加速器 URL,例如阿里云的 URL;为了方便操作,你可以将当前用户添加到。然后重新登录或重启系统使更改生效。组,这样就不需要每次都使用。

2024-06-09 08:31:42 782

原创 SQL Server 事务、进程、锁

【代码】SQL Server 事务、进程、锁。

2024-06-08 22:58:38 80

原创 C# .NET 异步实现方式

不同的方法模式各有各的好处,应视情况和场景而定。

2024-06-08 22:57:45 996 1

原创 什么是多租户

在上述代码中,我们定义了一个接口,以及一个实现了该接口的类。类负责与特定租户的数据库进行交互,例如获取客户列表。然后,我们创建了一个类,它依赖于接口。在方法中,我们根据租户 ID 获取对应的连接字符串,并使用该连接字符串创建一个针对特定租户的实例。最后,我们使用租户仓储获取该租户的客户列表。通过这种方式,我们可以在一个应用程序中为多个租户提供服务,每个租户都有自己的数据存储和操作逻辑,但共享相同的应用程序代码和基础设施。

2024-05-07 06:49:57 354

原创 Asp.Net Core 6整合Autofac容器实现IOC和AOP

Autofac是一个开源的依赖注入(DI)容器,用于.NET应用程序的组件解耦和管理。它提供了一种简单而强大的方式来实现依赖注入,并且可以与各种.NET框架和库无缝集成。Autofac的原理是基于反射和动态代理技术。它通过扫描应用程序中的类型,自动发现和创建对象的实例,并将这些实例注入到需要它们的地方。这样可以实现组件之间的松耦合,提高代码的可测试性、可维护性和可扩展性。内置DI容器与第三方容器各有优缺点,具体的选择还应视实际应用场景而定。

2024-05-07 06:45:52 1314

原创 ASP.NET Core 6使用RabbitMQ实现RPC远程通信

RPC(Remote Procedure Call,远程过程调用)是一种通信协议和编程模型,用于实现分布式系统中的远程调用。它允许一个计算机程序通过网络请求另一个计算机上的服务或方法,就像调用本地方法一样。在 RPC 中,客户端应用程序可以调用位于远程服务器上的方法,而无需了解底层网络细节。客户端将请求参数传递给服务器,并等待服务器返回结果。服务器执行相应的方法,并将结果返回给客户端。

2024-05-04 08:43:17 914 1

原创 ASP.NET 项目里同时创建DbContext上下文实例和工厂的探索

这是因为在使用AddDbContextFactory方法时,它会默认将上下文工厂注册为单例服务。而在代码中,同时又将ApplicationDbContext作为作用域服务注入到了上下文工厂中。要解决这个问题,可以将上下文选项配置为单例服务,以便在上下文工厂中使用AddDbContext方法用于将上下文注册为服务,并且可以在需要直接使用上下文的地方进行依赖注入。它还负责管理上下文的生命周期。AddDbContextFactory方法用于注册上下文工厂,它可以在需要创建多个上下文实例的地方使用。上下文工厂可以在

2024-05-04 08:42:20 898

原创 .NET 6 项目整合RabbitMQ实现-应用场景与模式结合实战

RabbitMQ是一个开源的消息中间件,用于在分布式系统中传递和存储消息。它实现了高级消息队列协议(AMQP),提供了可靠的消息传递机制。RabbitMQ基于生产者-消费者模型,其中生产者将消息发送到队列中,而消费者从队列中接收并处理消息。它支持多种消息传递模式,包括点对点、发布/订阅和请求/响应模式。一次向许多消费者发送消息,一个生产者发送的消息会被多个消费者获取,也就是将消息将广播到所有的消费者中。

2024-04-22 07:19:48 1673

原创 C# ASP.NET Core 学习路线

当学习 C# ASP.NET Core 时,以下是一个详细的学习路线建议、C# 基础知识、.NET 平台基础、ASP.NET Core 基础、数据库与 Entity Framework Core、身份验证与授权、测试与调试

2024-04-22 07:18:33 488

原创 asp .net core 异步编程:Async与Await的理解与运用

async、await其实是一种语法糖,await必须搭配async一起使用。

2024-04-21 08:30:54 143 1

原创 .NET6 项目使用RabbitMQ实现基于事件总线EventBus通信

通常通过使用事件总线实现来执行此发布/订阅系统。事件总线可以设计为包含 API 的接口,该 API 是订阅和取消订阅事件和发布事件所需的。它还可以包含一个或多个基于跨进程或消息通信的实现,例如支持异步通信和发布/订阅模型的消息队列或服务总线。本问介绍如何使用RabbitMQ通用事件总线接口实现这种与 .NET 的通信,并结合项目代码实践演示。存在多种可能的实现,每种实现使用不同的技术或基础结构,例如 RabbitMQ、Azure 服务总线或任何其他第三方开源或商用服务总线。

2024-04-21 08:25:46 1372 3

原创 ASP.Net Core 性能优化系列之缓存--分布式缓存

对于集群式应用部署的场景,需要将缓存数据存在到一个或多个缓冲中心,以便不同的客户端可以请求访问、共享到同一份缓存数据,这就是分布式欢唱的概念。ASP .NET CORE 有多种分布式缓冲的方案:包括Redis、SqlServer、MomgDB、NCache等。

2024-03-20 20:39:36 202 2

原创 ASP.Net Core 性能优化系列之缓存--CPU缓存

ASP.Net Core 性能优化系列之缓存--CPU缓存,滑动到期时间,绝对到期时间

2024-03-20 20:24:44 769 1

转载 .net 试题汇总

可修改为s1 =(short)(s1 + 1)。答:short s1 = 1;有错,s1是short型,s1+1是int型,不能显式。122.在C#中,string str = null 与 string str = " " 请尽量使用文字或图。24.在C#中,string str = null 与 string str = “” 请尽量使用文字或图。答:string str = null 是不给他分配内存空间,而string str = "" 给它分配。

2024-01-13 16:18:31 181 1

原创 .NET常见面试题汇总

首先,汇总一共分为三部分:一是关于.NET技术的面试问题,二是关于.NET项目中的实际问题,三是历年出现过一些面试题汇总。

2024-01-13 16:10:27 1666 1

原创 C#、.NET面试基础知识点与项目难点问题

答案:可以使用System.IO命名空间中的文件操作类(如File和Directory)来实现文件的读写和删除等操作,以及路径解析和过滤器等功能来提高文件操作的灵活性。答案:可以使用Git或SVN等版本控制系统来进行代码的版本管理和协作开发,以及持续集成和部署工具(如Jenkins或TeamCity)来实现自动化构建和部署。同时,还需要对异常进行日志记录和通知。答案:可以使用日志库(如log4net或NLog)来实现日志的记录和管理,以及日志级别和格式化等功能来满足不同的日志需求。

2024-01-13 15:49:06 686 1

原创 .NET、C#、SQL面试知识点题集及答案详解

在SQL Server中,可以通过设置事务隔离级别和使用T-SQL中的BEGIN TRANSACTION、COMMIT和ROLLBACK语句来保证事务的一致性。LINQ是一种在C#和VB.NET中查询数据的技术,它允许开发者以声明性的方式编写查询。CTS是所有.NET编程语言共享的一套类型系统,它定义了所有的值类型、引用类型和枚举类型的规范。CLR是.NET框架的核心,它负责管理代码的执行,包括内存管理、线程管理和异常处理等。C#是一种面向对象的、类型安全的编程语言,它是.NET框架的主要开发语言。

2024-01-13 11:08:29 922 1

原创 深入理解ADO.NET:主要对象、区别、使用步骤与案例

ADO.NET的主要优点是它的灵活性和可扩展性,可以根据应用程序的需求选择最适合的数据访问技术。总结:ADO.NET是一个强大的数据访问框架,通过掌握其主要对象、区别和使用步骤,我们可以更有效地访问和管理各种数据源。在实际开发中,我们可以根据应用程序的需求选择合适的数据访问技术,以提高程序的性能和可维护性。1. Connection对象用于建立与数据源的连接,Command对象用于执行SQL命令或存储过程,两者都是执行数据操作的基础。8. Error对象表示在数据访问过程中发生的错误,用于处理异常情况。

2023-11-21 16:33:07 179

原创 C#委托的深入理解与应用

C#委托

2023-11-21 16:22:59 216

原创 C# 冷门定义的讲解(装箱、拆箱、部分类、抽象类、虚方法)

装箱、拆箱、部分类、抽象类、虚方法

2023-07-16 20:37:31 503 1

原创 .NET 生态核心简介

.NET .NET Framework .NET Core Xamarin

2023-07-15 16:57:14 341 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除