![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
.net Core
文章平均质量分 57
Bear Coding
这个作者很懒,什么都没留下…
展开
-
C# 自定义常用的代码片段
配置路径:工具=》代码片段管理器=》语言选择CSharp 和 VisualC#;就能看到代码片段的配置文件夹。可以复制一个到桌面来作为模板修改。配置路径:左上角=》文件=》首选项=》配置用户代码片段;在拉下框中选择csharp就会自动生成代码片段配置文件。class_ctor.snippet 带构造函数的class代码块。class.snippet 已经有默认的了,不过可以替换掉。原创 2023-03-03 17:22:46 · 478 阅读 · 0 评论 -
C# 使用foreach遍历自己的实现类(迭代器)
要使用foreach的类需要实现方法:IEnumerator GetEnumerator()以下使用“T泛型=int”类型来实现一个迭代,也可以改成泛型的迭代器。原创 2023-01-03 11:49:08 · 568 阅读 · 0 评论 -
.Net Core 6.0 依赖注入的方式使用AutoMapper
AutoMapper是一款单向映射器,是基于对象到对象约定的映射工具,常用于(但并不仅限制于)把复杂的对象模型转为DTO,一般用于ViewModel模式和跨 服务范畴。AutoMapper给用户提供了便捷的配置API,就像使用约定来完成自动映射那样。AutoMapper包含以下功能:平展、投影、配置验证、列表和数组、嵌套映射、自定义类型转换程序、自定义值转换程序 、自定义值格式程序 、Null值替换。Nuget:AutoMapper1、入口配置...原创 2022-05-24 10:44:16 · 5045 阅读 · 1 评论 -
Abp VNext 本地化Location(多语言)
1、新建Common类库CommonModule.cs [DependsOn( typeof(AbpLocalizationModule), typeof(AbpVirtualFileSystemModule) )] public class CommonModule : AbpModule { public override void ConfigureServices(ServiceConfigurationC原创 2022-05-12 16:45:45 · 3054 阅读 · 3 评论 -
Asp.Net Core swagger接口文档添加Header
1、添加Filter类 public class JwtHeaderFilter : IOperationFilter { public void Apply(OpenApiOperation operation, OperationFilterContext context) { var isAuthorized = context.MethodInfo.GetCustomAttributes(typeof(Authorize.原创 2022-05-12 11:23:38 · 2778 阅读 · 1 评论 -
C# 性能诊断工具 dotnet-counters 的使用
官问地址:dotnet-counters 诊断工具 - .NET CLI | Microsoft Docs安装:dotnet tool install --global dotnet-counters 或在官网直接下载工具命令:1、dotnet-counters ps 查看服务器上运行中的Dotnet进程列表2、dotnet-counters list 显示按提供程序分组的计数器名称和说明的列表。3、dotnet-counters collect 定期收集所选计数器的值...原创 2022-05-05 14:39:20 · 5014 阅读 · 0 评论 -
C# async函数慎用void返回值,小心被开除
假如你写了类似以下的代码,那你得小心了, 他有可能会使得你整个程序崩溃,除非你用try catch将整个函数保护起来。 private async void Test() { using DbController controller= new DbController(); var re = await controller.GetRecordsAsync(8888); throw new Exce原创 2021-12-30 10:41:08 · 2243 阅读 · 0 评论 -
C# 全局捕获async的异常
在调用异步函数的时候,如果不await等待,异步函数里面出现异常我们也不知道, 除非将整个函数try catch。但我们一般也不会这样做。假如出现了未观察到的异常怎么办呢。以下代码出现异常是捕获不到的: private async Task Test() { using DbController controller= new DbController(); var re = await controller.GetRe原创 2021-12-30 10:21:37 · 2093 阅读 · 0 评论 -
.Net Core 使用 Dapr 实现服务调用
微软官方文档:https://docs.microsoft.com/zh-cn/dotnet/architecture/dapr-for-net-developers/foreword一、安装环境和工具环境和工具:Linux、.Net Core5.0、Docker、Dapr 1.0安装步骤:1.1 在Linux上安装Dockerhttps://blog.csdn.net/qq_26900081/article/details/885940381.2 在Linux上安装.Net Cor原创 2021-10-31 20:44:19 · 2005 阅读 · 0 评论 -
Netty编码解码器
1、解码器Decoder解码器Decoder主要是将字节数组转换为消息对象。也是继承自消息处理ChannelHandler。解码器主要函数:decode(一般用这个)和decodeLast(常用于处理最后的几个字节,也就是Channel关闭的时候所产生的最后一个消息)抽象解码器: ByteToMessageDecoder:用于将字节转换为消息,需要自己检查缓冲区是否有足够的字节。 ReplayingDecoder:继承自ByteToMes...原创 2021-02-26 15:30:57 · 1501 阅读 · 0 评论 -
Netty常用类库和基础入门
1、EventLoop和EventLoopGroup1.1EventLoop相当于一个线程,一个EventLoop可以服务多个Channel,一个Channel只对应一个EventLoop。 可以创建多个EventLoop来优化资源的利用,也就是EventLoopGroup。1.2EventLoopGroup负责分配EventLoop到新创建的Channel,它包含了多个EventLoop,一个EventLoop维护一个Selector。 默认创建的EventLoo...原创 2021-02-25 09:38:36 · 1541 阅读 · 0 评论 -
.Net Core微服务使用SkyWalking实现链路监控
SkyWalking是基于Java开发的,对Asp.net Core支持比较完善,且使用简单,代码量少。SkyWalking的几个重要组成部分:1、Agent:客户端,用于发送链路数据;2、Collector:服务端,用于收集链路数据,并持久化;SkyWalking-APM3、Storage:存储段,用于存储链路数据;(mysql / h2 / es)4、UI:用于展示链路数据(java web)...原创 2020-09-15 14:17:24 · 2701 阅读 · 0 评论 -
.Net Core 使用CAP框架实现异步化分布式事务
CAP是一款基于.net标准的库,该库是处理分布式事务的解决方案;它具有轻量级的、开源、易于使用、具有EventBus(事件总线)功能、持久化等特点。官方中文文档:https://cap.dotnetcore.xyz/user-guide/zh/getting-started/quick-start/基础核心Nuget包:DotNetCore.CAPEventBus(事件总线)Nuget包:DotNetCore.CAP.RabbitMQ、DotNetCore.CAP.Kafka、DotNetCore原创 2020-09-10 11:32:14 · 6699 阅读 · 0 评论 -
分布式事务处理方案(CAP、Base、2PC、3PC、TCC、Saga)
一、CAP:一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。一致性:在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)。 可用性:在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)。 分区容忍性:以实际效果而言,分区相当于对通信的时限要求。系统如果不能...原创 2020-09-07 10:32:05 · 3156 阅读 · 4 评论 -
.Net Core 微服务使用Polly实现熔断、降级、超时、重试
说明:1、Polly官网:http://www.thepollyproject.org/2、Polly安装:Nuget Microsoft.Extensions.Http.Polly熔断:熔断开启之后,在熔断过程中将不再发送http请求,而是直接抛异常出来。等到熔断被自动关闭后再正常请求。降级:熔断开启之后会抛出异常,降级机制则会捕获异常,然后可以进行自定义处理异常。超时:Http请求的超时时间。重试:Http请求失败后的重试,可以重试N次。一、基本使用1、在Startup.原创 2020-08-19 11:32:56 · 4753 阅读 · 2 评论 -
三种常用的负载均衡算法C#(随机、轮询、权重)
入参实体: internal class ServiceCenterModel { public string Url { get; set; } public string[] ServiceTags { get; set; } }1、随机 /// <summary> /// 随机 /// </summary> internal class RandomAlgorithm {原创 2020-08-17 11:49:21 · 3706 阅读 · 0 评论 -
Docker容器中通过域名访问服务器局域网内的Web站点
之前公司的多个站点都是部署在两台外网服务器中, 并通过域名进行相互调用。最近要将这些站点迁移到两台处于同一局域网内的服务器中。在代码中通过Http请求另一局域网的站点时报错。请求外网第三方应用一切正常。服务器A:CentOS系统,Docker部署,Asp.Net Core Web应用,内网IP: 192.168.1.10服务器B:Windows server系统,IIS部署,Asp.Net Core Web应用,内网IP: 192.168.1.11现在需要在服务器A,Docker容器中的W.原创 2020-07-14 13:40:25 · 3957 阅读 · 0 评论 -
C#线程锁(自旋锁SpinLock、互斥锁Mutex、混合锁Monitor | lock)
一、自旋锁自旋锁是指当一个线程在获取锁对象的时候,如果锁已经被其它线程获取,那么这个线程将会循环等待,不断的去获取锁,直到获取到了锁。适合于原子操作时间非常短的场景优点:避免了线程上下文切换。性能较高。缺点:如果长时间等待,将消耗大量的CPU资源。而且多个等待中的线程,并不是等待时间越长就先获取到锁,有可能会一直等待下去。两种实现方式如下:实现代码一:private static int _SpinLock = 0;//锁对象private static int incrValu原创 2020-06-15 09:35:13 · 6550 阅读 · 0 评论 -
修改NuGet包缓存位置
NuGet包太大了,占用了大量的C盘空间。将他们迁移到D盘去才好呀。NuGet包默认缓存位置:C:\Users\{username}\.nuget\packages本地包的默认位置:C:\Program Files (x86)\Microsoft SDKs\NuGetPackages //使用VS 工具 选项 Nuget包管理器 这里面也可以看到配置文件地址:C:\Program Files (x86)\NuGet\Config 1、修改本地包的默认位置将C:\Progra...原创 2020-06-11 14:18:40 · 7299 阅读 · 0 评论 -
.Net Core DI依赖注入:一个接口注入多个实现类
方式一、默认就可以注入多个实现类例如接口IShow,注入ShowA和ShowB两个实现类:services.AddTransient<IShow, ShowA>();services.AddTransient<IShow, ShowB>();获取的时候默认是获取到最后一个,如下所示:可以使用"IEnumerable<IShow> showList" 的方式来获取所有注入的实现类,如下所示:方式二、使用注入方法”AddTransient&l.原创 2020-05-21 10:56:02 · 5052 阅读 · 2 评论 -
EF Core 3.1 DB First的使用
一、DB First二、Code First三、Model First原创 2020-05-20 09:17:27 · 2255 阅读 · 0 评论 -
Lock(this)的可行性研究
首先要知道this指的是当前实例。比如Demo demo=new Demo(); 那么this指的就是demo这个实例,所以new 多次是会产生多个this的。而我们知道Lock必须锁住同一个对象实例,且该实例不发生改变。那么如果在单例的情况下使用this行不行呢, 答案是可以的。接下来看看非单例和单例下的运行结果。...原创 2020-05-18 15:07:58 · 1805 阅读 · 0 评论 -
lucene.net全文检索简介
lucene.net是.Net下的全文检索的工具包,不是应用,只是个类库,完成了全文检索的功能;预先把数据拆分成原子(字/词),保存到磁盘中;查询时把关键字也拆分成原子(字/词),再根据(字/词)进行匹配,返回结果。Nuget安装“Lucene.Net”和“Lucene.Net.Analysis.PanGu”(盘古分词,一个第三方的分词器)一、lucene.net七大对象1、Analysis:分词器,负责把字符串拆分成原子,包含了标准分词,直接空格拆分。项目中用的是盘古中文分词,2、Docum原创 2020-05-14 14:56:53 · 1788 阅读 · 0 评论 -
.Net Core GDI+ 在docker环境中找不到dll
场景:在.Net Core 2.1项目中使用BitMap画图 , 在windows服务器下没问题,但发布到linux下的Docker容器中会报错。在dockerfile文件中加入以下代码,或者创建好docker 容器之后进入容器,执行以下操作。 RUN ln -s /lib/x86_64-linux-gnu/libdl-2.24.so /lib/x86_64-linux-gnu/lib...原创 2020-04-29 16:15:42 · 1876 阅读 · 0 评论 -
C# 多线程的几种操作方式(异步委托、Thread、ThreadPool、Task【async/await】)
多线程主要多个任务并发执行,可以异步执行任务,提高响应速度,不阻塞当前线程(如C/S窗口)。使用异步来调用以下代码: //用于委托调用 private void DoSomething(string name) { Console.WriteLine($"DoSomething被调用 {name}"); }一、委托异步调用...原创 2020-04-28 15:15:04 · 5756 阅读 · 0 评论 -
.Net Core gRPC入门实践(webapi集成gRPC客户端)
1、新建Asp.Net Core WebApi项目2、在webapi项目中集成gRPC环境2.1 添加nuget依赖包:Google.Protobuf 、 Grpc.Net.Client 、 Grpc.Tools webapi中多添加一个【可选】:Grpc.AspNetCore (用于在startup.cs配置IOC)。2.2 新建Protos文件夹。...原创 2020-04-15 11:41:57 · 4086 阅读 · 1 评论 -
.Net Core gRPC入门实践(protobuf .proto说明)
repeated: 可重复变长字段,类似数组/list集合; 例如:repeated int32 Name=1;引入其它proto文件:import "Protos/greet.proto"; #greet.proto与当前文件在同一个目录下,必须带上”Protos/“;枚举的使用:enum UserType{ type1=0; type2=1;}类型嵌套:...原创 2020-04-13 15:53:25 · 2464 阅读 · 2 评论 -
.Net Core gRPC入门实践(服务端)
1、新建gRPC项目2、目录结构如下3、greet.proto说明4、实现类GreeterService.cs说明5、手写一个服务5.1 新建一个.proto文件(vs中叫”协议缓冲区文件“):demo.protosyntax = "proto3";option csharp_namespace = "GrpcService1";package...原创 2020-04-13 14:53:54 · 1565 阅读 · 1 评论 -
.Net Core 3.1下完成Consul服务注册
1、ConsulRegister .csnamespace ConsulClientExtension.config{ public class ConsulRegister { /// <summary> /// Consul服务注册地址 /// </summary> public...原创 2020-04-03 14:41:57 · 2964 阅读 · 3 评论 -
EF(EFCore)性能优化与高级用法
1原创 2020-05-18 11:48:13 · 9227 阅读 · 0 评论 -
Consul安装
一、Consul安装下载地址:https://www.consul.io/downloads.html1、windowsconsul agent -dev2、linux(CentOS 7.6)#拉取安装包wget https://releases.hashicorp.com/consul/1.6.2/consul_1.6.2_linux_amd64.zip#解压;安装...原创 2020-03-25 08:44:29 · 1707 阅读 · 0 评论 -
Core2.0_EF_CodeFirst的使用
环境:Vs2017、SqlServer20121、新建asp.net Core Web项目2、创建Model模块作为实体层3、添加NuGet依赖。安装install-packageMicrosoft.EntityFrameworkCoreinstall-packageMicrosoft.EntityFrameworkCore.SqlServeri原创 2017-12-10 16:27:51 · 6657 阅读 · 4 评论 -
Core2.0_EF_DbFirst的安装
环境:Vs2017、SqlServer2012、FrameworkCore2.0.1版本1、新建asp.net Core Web项目2、新建一个core类库Model作为实体层3、安装NuGet依赖。 工具=》NuGet包管理器=》程序包管理控制台install-packageMicrosoft.EntityFrameworkCoreinstall-pa...原创 2017-12-17 09:37:19 · 3075 阅读 · 0 评论 -
Asp.Net Core3.1 使用bundle来绑定和压缩静态文件(css/js)
1、nuget安装包:BuildBundlerMinifier2、 在MVC项目下添加json配置文件:bundleconfig.json; 注意:每次更新静态文件(css/js)之后需要“重新生成”项目,“生成”不起作用 配置方式如下:...原创 2020-03-01 10:33:14 · 3778 阅读 · 3 评论 -
设计模式之单例模式(七)
单例模式保证整个程序运行期间最多只有一个实例;可以实现对象的复用,减少对象多次构造所带来的时间损耗和占用资源。一般只有在必须保证只有一个实例,多个实例反而会出问题的情况下使用, 也可以直接利用IOC容器来实现单例的效果。以下是单例模式(C#)的三种实现方式: public class Singletion { private Singletion() { }...原创 2020-01-21 14:32:21 · 1728 阅读 · 0 评论 -
设计模式之代理模式(六)
代理模式顾名思义,就是“代理者”帮别人去做事,但是在帮人做事的前后,这个“代理者”可以做一些其它的逻辑。比如日志代理、缓存代理、权限代理。也属于AOP的思想,可以在不改变原始类的情况下进行功能扩展。如有以下原始类: public abstract class StudentBase { public string name { get; set; } ...原创 2020-01-20 10:41:31 · 1650 阅读 · 0 评论 -
设计模式之装饰器模式(五)
装饰器模式可以在不修改原有代码的情况下给它增加一个或多个顺序可变的扩展功能,且不破环原有代码的封装性,使用了OOP的组合+继承的方式来实现,是一种AOP编程思想的设计模式。现有如下代码: //学生基类 public abstract class StudentBase { public string name { get; set; } ...原创 2020-01-19 14:30:59 · 1690 阅读 · 0 评论 -
.net core 3.1 使用jwt完成登录验证
nuget安装:Microsoft.AspNetCore.Authentication.JwtBearer 3.1.0 版本一、添加配置文件 "Authentication": { "JwtBearer": { "IsEnabled": "true", "SecurityKey": "Demo_C421AAEE0D114E9C1", "Iss...原创 2020-01-14 16:20:13 · 11620 阅读 · 2 评论 -
.net core 3.1使用swagger生成接口文档
1、安装Nuget依赖包Install-Package Swashbuckle.AspNetCore -Version 5.0.0-rc42、配置Startuppublic void ConfigureServices(IServiceCollection services){ services.AddSwaggerGen(options =...原创 2020-01-14 15:09:10 · 4097 阅读 · 0 评论 -
.net Core管道处理模型中创建自己的中间件
.net Core管道处理模型中可以包含N个中间件,咱们可以构建自己的中间件并在其中处理HttpConetxt请求上下文;例如:记录请求日志,权限过滤,记录请求-响应耗时时间,缓存数据 等。如下图:代码如下 :在Startup类中的Configure函数中使用:app.UseHttpProcess(); public static class HttpMiddle ...原创 2019-12-12 11:09:21 · 2183 阅读 · 0 评论