.NET Core

C# 数据操作系列

你。 提交于 2020-08-19 20:43:50
0. 前言 前言,暂时挥别NHibernate(虽然我突然发现这玩意还挺有意思的,不过看得人不多)。大步进入了有很多小伙伴向我安利的SQLSugar,嗯,我一直叫SugarSQL,好像是这个吧? 这是一个由国内开发者开发的ORM框架,是一个轻量级框架(最新版的sqlSugarCore大概只有290kb)。下图是sqlSugar的功能描述: 从图中我们能够大概看出,SqlSugar的使用需要预先创建一个SqlSugarClient对象。SqlSugar在此基础上添加了CRUD、实体信息维护(映射关系)、配置(AOP/过滤器等)、模式(DbFirst、CodeFirst)还有一些工具类等。可以看到这是一个简而全的框架。 同时,SqlSugar也为查询进行了进一步的扩展,以下是它支持的功能,以及在查询上的增强: 好了,废话不多说,先来试一下如何使用吧。 1. 安装 本节环境是dotnet + vscode。因为我的Rider过期了,懒得折腾。系统又是Linux,所以选择这种方式。至于Visual Studio和Rider的操作,十分简单,而且之前《C#基础系列16》里有过介绍。 先建一个解决方案,名字为DataProvider: dotnet new sln --name DataProvider 然后创建一个SqlSugarDemo的控制台项目: dotnet new console

C#多线程(12):线程池

血红的双手。 提交于 2020-08-19 12:41:49
目录 线程池 ThreadPool 常用属性和方法 线程池说明和示例 线程池线程数 线程池线程数说明 不支持的线程池异步委托 任务取消功能 计时器 线程池 线程池全称为托管线程池,线程池受 .NET 通用语言运行时(CLR)管理,线程的生命周期由 CLR 处理,因此我们可以专注于实现任务,而不需要理会线程管理。 线程池的应用场景:任务并行库 (TPL)操作、异步 I/O 完成、计时器回调、注册的等待操作、使用委托的异步方法调用和套接字连接。 很多人不清楚 Task、Task<TResult> 原理,原因是没有好好了解线程池。 ThreadPool 常用属性和方法 属性: 属性 说明 CompletedWorkItemCount 获取迄今为止已处理的工作项数。 PendingWorkItemCount 获取当前已加入处理队列的工作项数。 ThreadCount 获取当前存在的线程池线程数。 方法: 方法 说明 BindHandle(IntPtr) 将操作系统句柄绑定到 ThreadPool。 BindHandle(SafeHandle) 将操作系统句柄绑定到 ThreadPool。 GetAvailableThreads(Int32, Int32) 检索由 GetMaxThreads(Int32, Int32) 方法返回的最大线程池线程数和当前活动线程数之间的差值。

.Net Core3.0 WebApi 项目框架搭建 十四:自定义返回Json大小写格式

亡梦爱人 提交于 2020-08-19 05:40:03
默认格式 在.net core 3中,默认的json返回格式为驼峰命名法 有的时候,我们希望返回的全小写或者全大写等。当然微软爸爸已经提供了拓展的接口。 设置返回Json名称全小写 新建JsonConv文件夹,新建LowercasePolicy.cs,继 JsonNamingPolicy /// <summary> /// 返回对象全小写 /// </summary> public class LowercasePolicy : JsonNamingPolicy { public override string ConvertName( string name) => name.ToLower(); } startup.cs的ConfigureServices方法新加AddJsonOptions services.AddControllers(option => { option.Filters.Add( typeof (GlobalExceptionsFilter)); }).AddJsonOptions(option => { // 空的字段不返回 option.JsonSerializerOptions.IgnoreNullValues = true ; // 返回json小写 option.JsonSerializerOptions.PropertyNamingPolicy

《ASP.NET Core应用开发入门教程》与《ASP.NET Core 应用开发项目实战》正式出版

穿精又带淫゛_ 提交于 2020-08-19 04:26:40
“全书之写印,实系初稿。有时公私琐务猬集,每写一句,三搁其笔;有时兴会淋漓,走笔疾书,絮絮不休;有时意趣萧索,执笔木坐,草草而止。每写一段,自助覆阅,辄摇其首,觉有大不妥者,即贴补重书,故剪刀浆糊乃不离左右。个中甘苦,只自知之。”董作宾先生的这段文字正好描述我写作此书的状态。 《ASP.NET Core应用开发入门教程》与《ASP.NET Core 应用开发项目实战》于2020年1月正式出版。 《ASP.NET Core应用开发入门教程》是作者潜心研究ASP.NET Core 技术的心血之作,书如其名,整本书的内容深入浅出地介绍了ASP.NET Core应用开发所需要的基础知识,并对其底层框架进行了剖析,力求将ASP.NET Core的整个运行机制完整而清晰地呈现在读者面前。主要包括.NET Core的基础知识及其安装、dotnet命令、Visual Studio开发工具的安装和使用、ASP.NET Core的原理及其组件介绍、Entity Framework Core框架、ASP.NET Core MVC框架和依赖注入等。 《ASP.NET Core 应用开发项目实战》主要是在《ASP.NET Core应用开发入门教程》的基础上,通过开发一个经过简化的物流管理信息系统(TPLMS),来实践ASP.NET Core MVC应用程序框架的开发技术

基于 ONNX 在 ML.NET 中使用 Pytorch 训练的垃圾分类模型

对着背影说爱祢 提交于 2020-08-19 04:26:08
ML.NET 在经典机器学习范畴内,对分类、回归、异常检测等问题开发模型已经有非常棒的表现了,我之前的 文章 都有过介绍。当然我们希望在更高层次的领域加以使用,例如计算机视觉、自然语言处理和信号处理等等领域。 图像识别是计算机视觉的一类分支,AI研发者们较为熟悉的是使用TensorFlow、Pytorch、Keras、MXNET等框架来训练深度神经网络模型,其中会涉及到CNN(卷积神经网络)、DNN(深度神经网络)的相关算法。 ML.NET 在较早期的版本是无法支持这类研究的,可喜的是最新的版本不但能很好地集成 TensorFlow 的模型做 迁移学习 ,还可以直接导入 DNN 常见 预编译模型 :AlexNet、ResNet18、ResNet50、ResNet101 实现对图像的分类、识别等。 我特别想推荐的是,ML.NET 最新版本对 ONNX 的支持也是非常强劲,通过 ONNX 可以把众多其他优秀深度学习框架的模型引入到 .NET Core 运行时中,极大地扩充了 .NET 应用在智能认知服务的丰富程度。在 Microsoft Docs 中已经提供了一个基于 ONNX 使用 Tiny YOLOv2 做对象检测的例子。为了展现 ML.NET 在其他框架上的通用性,本文将介绍使用 Pytorch 训练的垃圾分类的模型,基于 ONNX 导入到 ML.NET 中完成预测。

.Net core+Reds如何实现Aop缓存

匆匆过客 提交于 2020-08-18 23:28:37
.Net core+Reds如何实现Aop缓存 前言 在实际开发的场景中,有很多需要缓存的数据,为了减少重复代码的编写,想采用Aop的方式来实现切面编程减少对以有业务代码的改动和侵入性。 在传统的 .Net Framework项目中实现Aop有很多简单的方式,但是在 .Net Core中尤其是1.X版本笔者没有找到比较好的解决方案采用了一个三方开源的Aop库,下面会写出来。 准备 本次采用的环境是 .Net Core 1.1版本 本次使用的Aop 开源库是 AspectCore 0.1.2版本 实践 Aop顾名思义面向切面编程,是一种通过预编译和运行时动态代理来实现的一种技术,本文中采用了三方开源的Aop库 AspectCore 是.Net Core 中一个轻量级和模块化的Aop 解决方案 首先创建一个 缓存特性 CacheAttribute 继承 AspectCore中的 InterceptorAttribute并且重写 InterceptorAttribute中的 Invoke方法 代码 如下 1 public async override Task Invoke(AspectContext context, AspectDelegate next) 2 { 3 try 4 { 5 // 用方法名称+入参 生成Key 6 string key = context.Proxy

api.versioning 版本控制 自动识别最高版本

感情迁移 提交于 2020-08-18 21:26:03
Microsoft.AspNetCore.Mvc.Versioning //引入程序集 .net core 下面api的版本控制作用不需要多说,可以查阅 https://www.cnblogs.com/dc20181010/p/11313738.html 普通的版本控制一般是通过链接、header此类方法进行控制,对ApiVersionReader进行设置,例如 services.AddApiVersioning(o => { //o.ReportApiVersions = true ; // 返回版本可使用的版本 o.ApiVersionReader = ApiVersionReader.Combine( new HeaderApiVersionReader( " api-version " ), new QueryStringApiVersionReader( " api-version " ));//通过 Header或QueryString 进行传值来判断api的版本 //o.DefaultApiVersion = new ApiVersion( 1 , 0 ); // 默认版本号 }); 或者使用 https://www.cnblogs.com/tdfblog/p/asp-net-core-api-versioning.html 这种方式

用命令行执行 .NET 单元测试时,如何仅执行符合某些条件的单元测试

吃可爱长大的小学妹 提交于 2020-08-18 21:18:09
本文介绍使用 dotnet test 命令进行单元测试的时候,过滤出被测项目中的一部分测试出来,仅测试这一部分。 @ TOC 背景 建一个 .NET Core 的单元测试项目,例如项目名字是 Walterlv.Demo.Tests。举例其中的一个测试类如下: using Microsoft.VisualStudio.TestTools.UnitTesting; namespace Walterlv.Demo.Tests { [TestClass] public class FooTest { [TestCategory("CategoryA")] [Priority(1)] [TestMethod] public void TestMethod1() { } [Priority(2)] [TestMethod] public void TestMethod2() { } } } 使用 Visual Studio 的话,直接在测试资源管理器中点击运行全部测试,或者选择想要测试的项点运行所选测试即可。 而使用 GUI 工具的话不利于 CI 集成和自动化测试,所以必然需要用到命令: > dotnet test .\Walterlv.Demo.Tests.dll 有时为了调试方便或输出分类数据等,要求执行一部分单元测试,这就需要过滤了。 dotnet test 的过滤使用 --filter

.NET Core IdentityServer4实战 第二章-OpenID Connect添加用户认证

不打扰是莪最后的温柔 提交于 2020-08-18 14:47:33
内容:本文带大家使用IdentityServer4进行使用OpenID Connect添加用户认证 作者:zara(张子浩) 欢迎分享,但需在文章鲜明处留下原文地址。   在这一篇文章中我们希望使用OpenID Connect这种方式来验证我们的MVC程序,我们首先需要干什么呢?那就是搞一个UI,这样非常美观既可以看到我们的身份验证效果,那么IdentityServer官方已经给我们提供了一套UI了,我们从哪里可以获取呢?   可以通过这个地址就行克隆安装到本地并附加到你的MVC程序中, 地址 。当然我们可以根据PowerShell 进行远程拉取(以下命令在项目根目录进行Code) 在Windows中我们的命令如下: iex ((New-Object System.Net.WebClient).DownloadString( ' https://raw.githubusercontent.com/IdentityServer/IdentityServer4.Quickstart.UI/master/getmaster.ps1 ' )) 或者在macOS或Linux上使用bash one-line: \curl -L https: // raw.githubusercontent.com/IdentityServer/IdentityServer4.Quickstart.UI

[开源] .Net ORM FreeSql 1.8.0-preview 最新动态播报(番号:我还活着)

倖福魔咒の 提交于 2020-08-18 12:23:59
写在开头 FreeSql 是 .NET 开源生态下的 ORM 轮子,在一些人眼里属于重复造轮子:不看也罢。就像昨天有位朋友截图某培训直播发给我看,内容为:“FreeSQL(个人产品),自己玩可以,不要商用。ORM框架:1.安全、稳定(更新稳定、有BUG有人修复,有人升级)”。 这突出其来的“关爱”,让我的内心毫无波澜,确实是毫无波澜,比起当初 FreeSql 初出茅庐之时的讽刺友好得多。写在开头的这些内容并不祈求这部分人改变观念,该黑的请继续黑,黑总比没有关注好,是吧?我无所谓你,但是别人呢?麻烦你们不要无脑抨击,你们这种行为不知道挽杀了多少社区项目。 2018 年 12 月份开发 FreeSql 到现在,1859 颗星,412 Issues,18 PR,170K 包下载量。说明还是有开发者关注和喜爱,只要有人关注,就不会停更不修 BUG 一说。大家有兴趣可以看看更新记录,看看我们的代码提交量,4700+ 单元测试不说非常多,我个人觉得已经超过很多国产项目,有兴趣的再去隔壁“国产第一” ORM 上看看,对比对比!如果不更新了,请把位置让出来;如果有BUG修复不了,请让 FreeSql 来;如果不好用,就不要搞一堆 SEO 害人入坑;如果。。。如果。。。 这不是挑衅,看到对方的 issues 实在不忍,看到对方的源码,哇哦,单元测试在哪里?好了不废话了。。 20个月了,FreeSql