随笔分类 -  .net core

Semaphore和SemaphoreSlim实现并发同步
摘要:Semaphore,中文译为信号灯。在C#中,它可以允许指定数量的线程同时访问共享资源,而其他的线程必须等待。 即现在有5个线程同时运行,但Semaphore指定2个线程可以同时访问某一共享资源。当执行Semaphore.Wait()时,只有2个线程可以同时进入访问共享资源,而其他三个线程则阻塞等待 阅读全文
posted @ 2020-10-22 17:25 F风 阅读(590) 评论(0) 推荐(0)
Barrier实现并发同步
摘要:Barrier,中文被译为屏障。在C#中,可以用来实现多任务在多阶段中协同工作。通俗来讲,就是多个线程在执行到某个被共同指定步骤(即Barrier.SignalAndWait())的时候,就像遇到了屏障一样,必须等待其他还未执行到该步骤的线程。如果每个线程都执行到了该步骤,则大家又继续执行各自的逻辑 阅读全文
posted @ 2020-10-22 15:20 F风 阅读(994) 评论(0) 推荐(0)
CountdownEvent实现并发同步
摘要:CountdownEvent,该类包含一个需要被初始化的计数器数字,如果该计数器数字归零之后,就会释放被阻塞的线程。 CountdownEvent.Signal()执行后,计数器会自减1; CountdownEvent.Wait()执行后,如果计数器归零,则会立即释放该线程;否则,就会阻塞当前线程。 阅读全文
posted @ 2020-10-22 10:01 F风 阅读(312) 评论(0) 推荐(0)
AutoResetEvent实现并发同步
摘要:AutoResetEvent,继承自EventWaitHandle,用在多线程中保护对共享资源的访问,保证每次只能有一个线程对共享资源进行访问。 AutoResetEvent最特别之处,在于每次保证只有一个线程执行逻辑,其他的线程只能等待。 AutoResetEvent通过信号量来阻塞和释放线程。其 阅读全文
posted @ 2020-10-21 16:59 F风 阅读(184) 评论(0) 推荐(0)
vscode 创建.net core项目初体验
摘要:微软的virtual studio编辑器那是宇宙第一大编辑器,可惜就是太笨重,遇到性能差一些的电脑设备,简直无法快速的编辑项目。 而vs code编辑器轻便易用,想要编辑哪种项目,只需扩展插件就OK,针对性能差一些的电脑设备也可以安装。 一、下载vscode vscode的下载地址:https:// 阅读全文
posted @ 2018-12-21 14:31 F风 阅读(6665) 评论(4) 推荐(2)
.net core webapi 使用ValidationAttribute对比同一对象的多个参数
摘要:众所周知,在使用DataAnnotations数据验证的时候,特别是针对同一个InputDto的多个属性进行对比的时候,例如起始日期不能大于结束日期,我们需要在Attribute中知道当前InputDto对象的类型和对象值,以便进行两个属性的对比。 做到以上操作,我们需要使用ValidationAt 阅读全文
posted @ 2018-10-25 17:05 F风 阅读(627) 评论(0) 推荐(0)
.net core WebApi ManualResetEvent实现并发同步
摘要:ManualResetEvent,即手动重置事件,通过信号量来判别当前线程是否应该阻塞或继续执行。使用方式与ManualResetEventSlim差不多,ManualResetEventSlim只是针对ManualResetEvent轻量化的使用。 当执行ManualResetEvent.Set( 阅读全文
posted @ 2018-09-29 11:53 F风 阅读(1005) 评论(0) 推荐(0)
.net core WebApi Mutex实现并发同步
摘要:Mutex,中文译为互斥体,在.net中也是作为一种线程或进程之间的互斥体存在。即在同一时刻,一个共享资源只允许被某一个线程或进程访问,其他线程或进程需要等待(直至获取互斥锁为止)。 Mutex的使用方式与Monitor很相似,但绝不相同。Monitor支持线程间并发同步,Mutex不但支持线程也支 阅读全文
posted @ 2018-09-28 16:45 F风 阅读(3247) 评论(2) 推荐(1)
.net core WebApi Monitor实现并发同步
摘要:在.net中,还可以使用Monitor实现线程并发同步。Monitor类是纯托管且完全可移植,并且可能会在操作系统资源需求方面更加高效。 Monitor的锁对象尽可能使用引用对象,如果是字符串或值对象,会出现引发SynchronizationLockException异常。 其实我们日常用的lock 阅读全文
posted @ 2018-09-27 21:47 F风 阅读(844) 评论(0) 推荐(0)
.net Monitor产生SynchronizationLockException异常的原因
摘要:有时在使用Monitor进行并发同步编程时,会产生SynchronizationLockException异常,抛出的异常内容是"Object synchronization method was called from an unsynchronized block of code." 。意思是“ 阅读全文
posted @ 2018-09-27 18:30 F风 阅读(1270) 评论(0) 推荐(0)
.net 表达式返回值和等号赋值的区别
摘要:.net 7.0的新特性中,有一个使用表达式体返回值的操作。请看如下代码: 这样看起来是不是和使用等号(=)获取值一样的方便。 但是,请不要认为使用表达式体(=>)获取值和用等号(=)获取值是一样的概念,那你会被坑惨! 针对引用类型来说,因为使用表达式体(=>)获取的值都不是同一个对象,而使用等号( 阅读全文
posted @ 2018-09-27 18:17 F风 阅读(332) 评论(0) 推荐(0)
.net core WebApi Interlocked配合ManualResetEventSlim实现并发同步
摘要:由于项目有某种需求,在WebApi中,有大量的请求需要操作相同的数据,因此需要用到并发同步机制去操作共享的数据。 本次配合使用Interlocked和ManualResetEventSlim来实现并发同步的目的。 Interlocked实现了原子性的操作,ManualResetEventSlim提供 阅读全文
posted @ 2018-09-25 18:34 F风 阅读(409) 评论(0) 推荐(0)
.net core 使用log4net日志组件
摘要:一个web站点必须要记录日志,否则哪里出错了,完全是黑娃找黑妹,两眼一抹黑。 最常用的就是log4net日志组件。我们可以通过扩展加入日志组件。 第一步:在项目中NuGet log4net包,即 Install-Package log4net; 第二步:添加log4net.config配置文件到项目 阅读全文
posted @ 2018-09-14 18:21 F风 阅读(300) 评论(1) 推荐(0)
.net core Kestrel宿主服务器自定义监听端口配置
摘要:在.net core的web程序中,除了可以在项目中硬编码服务器的监听端口外,还可以在外部通过json文件配置。 方法如下: 第一步:在项目中新建一个名为Hosting.json的文件。当然,文件名可以随便取。然后在其中添加如下内容: 8081就是我们需要监听的端口。如果需要监听多个端口,则可以用半 阅读全文
posted @ 2018-09-14 10:36 F风 阅读(505) 评论(0) 推荐(0)
.net core IIS/Kestrel上传大文件的解决方法
摘要:大文件,就是内容的大小超过了一定数量的文件,比如1个GB的文件。 站点一般会限制上传文件的大小,如果超过了一定限制,则会报错误。 在处理大文件上传的方式上,IIS代理和Kestrel宿主服务器的处理方式是不一样的。 一、Kestrel宿主服务器 解决方法如下: 第一种处理方式:在需要处理大文件的接口 阅读全文
posted @ 2018-09-13 17:08 F风 阅读(783) 评论(0) 推荐(0)
.net 在同步方法中使用拉姆达表达式执行async/await异步操作
摘要:代码如下: 使用上面那种方式,在拉姆达表达式body内直接使用异步方式,可以将一个同步方法直接变为一个异步方法执行,而不用在Main函数前面添加async关键字。 阅读全文
posted @ 2018-09-12 14:30 F风 阅读(278) 评论(0) 推荐(0)
.net core webapi带权限的文件下载方法
摘要:众所周知,在webapi中,如果有个接口需要权限,一般会将带权限的字段塞进header中。但是,在带权限的文档下载接口中,无论是用post,还是get方式,我们无法设置header头信息。苦恼呀?别急,接下来我们慢慢拆解并分析步骤。 带权限的文档下载接口一般分为3个步骤: 1、验证权限; 2、查找数 阅读全文
posted @ 2018-09-03 18:29 F风 阅读(1241) 评论(0) 推荐(0)
.net core json配置相关用法
摘要:在.net core中,配置文件差不多都是json文件。我们在开发程序的时候,可以使用系统默认的appsettings.json,可以自定义json配置文件。当json配置文件里面的参数改变时,程序也会自动重新加载。 接下来我们需要演示的,就是这些相关的功能。 一、使用默认的appsettings. 阅读全文
posted @ 2018-08-15 16:43 F风 阅读(577) 评论(0) 推荐(1)
.net core 之Hangfire任务调度
摘要:Hangfire可用作任务调度,类似延迟任务、队列任务、批量任务和定时任务等。 一、nuget Hangfire包 找到Hangfire.AspNetCore和Hangfire.SqlServer包,可以在nuget面板中找到或直接像如下方式安装: Install Package Hangfire. 阅读全文
posted @ 2018-05-15 18:41 F风 阅读(938) 评论(0) 推荐(0)
.net core 在扩展中使用接口实例之IServiceProvider
摘要:在.net core 2.0中,我们使用的对象实例大多数都是通过构造函数依赖注入进来的,但那是在一般的类中使用。 如果需要在静态/扩展类中使用某些服务类的对象实例,可以使用如下方式: 1、新建一个ServiceLocator,包含一个IServiceProvider的静态对象实例,如下: 2、在St 阅读全文
posted @ 2018-05-14 11:29 F风 阅读(1041) 评论(0) 推荐(3)