202303-28 运用.net core中实例讲解RabbitMQ 目录一、RabbitMQ简介(1) AMQP协议(2)AMQP专业术语(3)RabbitMQ整体架构二、安装RabbitMQ三、RabbitMQ六种队列模式在.NetCore中使用(1)简单队列(2)工作队列模式(3)发布订阅模式(4)路由模式(推荐使用)(5)主题模式(6)RPC模式总结一、RabbitMQ简介是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据,RabbitMQ是使用Erlang(高并发语言)语言来编写的,并且RabbitMQ是基于AMQP协议的。(1) AMQ... 继续阅读 >
202301-13 .NET Core对象池的应用:扩展篇 目录一、池化集合二、池化StringBuilder三、ArrayPool<T>四、MemoryPool<T> 原则上所有的引用类型对象都可以通过对象池来提供,但是在具体的应用中需要权衡是否值得用。虽然对象池能够通过对象复用的方式避免GC,但是它存储的对象会耗用内存,如果对象复用的频率很小,使用对象池是不值的。如果某个小对象的使用周期很短,能够确保GC在第0代就能将其回收,这样的对象其实也不太适合放在对象池... 继续阅读 >
202301-03 .NET Core对象池的应用:设计篇 目录一、IPooledObjectPolicy<T>二、ObjectPool<T>DefaultObjectPool<T>DisposableObjectPool<T>三、ObjectPoolProvider《编程篇》已经涉及到了对象池模型的大部分核心接口和类型。对象池模型其实是很简单的,不过其中有一些为了提升性能而刻意为之的实现细节倒是值得我们关注。总的来说,对象池模型由三个核心对象构成,它们分别是表示对象池的ObjectPool<T>对象、对象值提供者的ObjectPoolProvider对象,已及控制池化对象创建与... 继续阅读 >
202301-03 .NET Core对象池的应用:编程篇 目录一、对象的借与还二、依赖注入三、池化对象策略四、对象池的大小五、对象的释放借助于有效的自动化垃圾回收机制,.NET让开发人员不在关心对象的生命周期,但实际上很多性能问题都来源于GC。并不说.NET的GC有什么问题,而是对象生命周期的跟踪和管理本身是需要成本的,不论交给应用还是框架来做,都会对性能造成影响。在一些对性能比较敏感的应用中,我们可以通过对象复用的方式避免垃圾对象的产生,进而避免GC因对象回收导致的... 继续阅读 >
202209-20 .NET关于API 句柄泄漏分析 目录一:背景1.讲故事2.什么是句柄二:windbg分析1.看问题表象2.查看句柄表3.从托管堆找OverlappedData的徒孙辈4.寻找最终答案三:总结一:背景1.讲故事上上周有位朋友找到我,说他的程序CPU和句柄都在不断的增长,无回头趋势,查了好些天也没什么进展,特加wx寻求帮助,截图如下:看的出来这位朋友也是非常郁闷,出问题还出两个,气人哈,关于cpu爆高的问题我准备单独用一篇文章去侦读,这篇就先聊聊句柄泄漏的问... 继续阅读 >
202209-18 .Net Framework .Net .NET Standard的概念及区别 目录.NetFramework.Net .NETStandard的区别一、.NETFramework二、.Net三、.NETStandard三、实际操作说明.NetFramework.Net .NETStandard的区别一、.NETFramework在未来.NETFramework或许成为过去时,目前还是有很多地方在使用的。这一套体系对于做C#的老coder应该是再熟悉不过了,新入坑的也就用不着费力去学习。.NETFramework是一种技术,支持生成和运行Windows应用及Web服务。.NETFramework包括公... 继续阅读 >
202209-18 .Net Framework .Net .NET Standard的概念及区别 目录.NetFramework.Net .NETStandard的区别一、.NETFramework二、.Net三、.NETStandard三、实际操作说明.NetFramework.Net .NETStandard的区别一、.NETFramework在未来.NETFramework或许成为过去时,目前还是有很多地方在使用的。这一套体系对于做C#的老coder应该是再熟悉不过了,新入坑的也就用不着费力去学习。.NETFramework是一种技术,支持生成和运行Windows应用及Web服务。.NETFramework包括公... 继续阅读 >
202204-20 详解.NET数据库连接池 目录前置知识背景1..NET数据库连接池的背景2..NET数据库连接池的表现3..NET是如何形成数据库连接池的?4.连接池中的连接什么时候被移除?.NET如何清空连接池?一般我们的项目中会使用1到2个数据库连接配置,同程艺龙的数据库连接配置被收拢到统一的配置中心,由DBA统一配置和维护,业务方通过某个字符串配置拿到的是Connection对象。DBA能在对业务方无侵入的情况下,给业务方切换备份数据库,之后DBA要求旧连接池必须立即... 继续阅读 >
202111-05 .NET中创建对象的几种方式和对比 目录使用标准反射的Invoke方法使用Activator.CreateInstance使用Microsoft.Extensions.DependencyInjectionNatasha使用表达式Expression使用Emit基准测试相关链接在.net中,创建一个对象最简单的方法是直接使用new(),在实际的项目中,我们可能还会用到反射的方法来创建对象,如果你看过Microsoft.Extensions.DependencyInjection的源码,你会发现,为了保证在不同场景中的兼容性和性能,内部使用了多种反射机制。在本... 继续阅读 >
202110-29 .net core 基于Hangfire+Mysql持久化实现定时任务配置方法 1.negut引入hangfire相关包Hangfire.AspNetCore,Hangfire.Core,Hangfire.Dashboard.BasicAuthorization,Hangfire.MySqlStorage2.Appsetting配置hangfire资源"HangFire":{"Connection":"Server=127.0.0.1;uid=root;pwd=wakamysql666;database=Hangfire_DB;AllowLoadLocalInfile=true;AllowUserVariables=True;","pathMatch":"/hangfire","Login":"login","PasswordClear":"pwd"},3.自定义扩展类///<s... 继续阅读 >
202110-21 .Net Core 使用NLog记录日志到文件和数据库的操作方法 NLog记录日志是微软官方推荐使用。接下来,通过配置日志记录到文件和SqlServer数据库。第一步:首先添加包NLog.Config(可通过微软添加包命令Install-Package包名进行添加,也可以通过管理NuGet程序包进行添加),添加成功后会生成NLog.config配置文件。并对该配置文件进行配置。详细配置可参考Git上NLog说明。一下是我个人配置。<?xmlversion="1.0"encoding="utf-8"?><nlogxmlns="http://www.nlog-project.or... 继续阅读 >
202110-17 .NET Core中如何实现或使用对象池? 目录前言池化策略对象池的使用指定对象池容量在ASP.NETCore中使用总结前言池这个概念大家都很熟悉,比如我们经常听到数据库连接池和线程池。它是一种基于使用预先分配资源集合的性能优化思想。简单说,对象池就是对象的容器,旨在优化资源的使用,通过在一个容器中池化对象,并根据需要重复使用这些池化对象来满足性能上的需求。当一个对象被激活时,便被从池中取出。当对象被停用时,它又被放回池中,等待下一个请求。对象池一... 继续阅读 >
202110-17 .NET Core授权失败自定义响应信息的操作方法 前言在.NET5之前,当授权失败即403时无法很友好的自定义错误信息,以致于比如利用Vue获取到的是空响应,不能很好的处理实际业务,同时涉及到权限粒度控制到控制器、Action,也不能很好的获取对应路由信息。本文我们来看看在.NET5中为何要出现针对授权失败的中间件接口?它是如何一步步衍生出来的呢?以及对于授权失败根据实际需要如何自定义响应错误,以及如何获取对应路由信息等等授权失败自定义响应信息如下是在.NET5之前,对... 继续阅读 >
202110-15 在运行时编辑代码的 .NET 热重载的操作方法 今天,我们很高兴向你介绍VisualStudio2019中16.11(预览版1)中的.NET热重载(通过.NET6(预览版4)中的dotnetwatch命令行工具)。在这篇文章的其余部分,我们会介绍什么是.NET热重载,您如何开始使用这个特性,我们对未来计划改进的设想,以及目前支持哪种编辑和语言的明确性。今天,我们很高兴向你介绍VisualStudio2019中16.11(预览版1)中的.NET热重载(通过.NET6(预览版4)中的dotnetwatch命... 继续阅读 >
202110-12 .Net Core限流的实现示例 目录一、环境二、基础使用1.设置2.规则设置3.特殊规则的启用 三、请求返回头四、使用Redis存储1、访问计数 2、ip特殊规则3、客户端特殊规则 五、修改规则一、环境1.vs20192..NetCore3.13.引用AspNetCoreRateLimit4.0.1二、基础使用1.设置在Startup文件中配置如下,把配置项都放在前面:publicvoidConfigureServices(IServiceCollectionservices){//从appsettings.json中加载ip限流配置通用规则se... 继续阅读 >
202109-16 .Net Core中使用Autofac替换自带的DI容器的示例 目录项目创建方案演示.NetCore自带DI不同的特性批量注入属性注入存储并提取容器实例为什么叫浅谈呢?就是字面上的意思,讲得比较浅,又不是不能用(这样是不对的)!!!Aufofac大家都不陌生了,说是.Net生态下最优秀的IOC框架那是一点都过分。用的人多了,使用教程也十分丰富,官网教程也比较详细(如果英文功底还不错的话)。那我为什么还要写这样一篇博客呢,一是用作学习笔记,二就是闲的。废话不多说,开始正文项目创建云创... 继续阅读 >