一、ASP.NET Core 中间件简介
中间件是一种装配到应用程序管道以处理请求和响应的软件。 每个组件可进行以下操作:
选择是否将请求传递到管道中的下一个组件。
可在调用管道中的下一个组件前后执行工作。
中间件在请求过程中执行顺序示意图:
一、ASP.NET Core 中间件简介
中间件是一种装配到应用程序管道以处理请求和响应的软件。 每个组件可进行以下操作:
选择是否将请求传递到管道中的下一个组件。
可在调用管道中的下一个组件前后执行工作。
中间件在请求过程中执行顺序示意图:
记录一下怎么运行abp下载的netcore模版,刚开始学习netcore,不记录还真不知道怎么弄,比较尴尬。
而且这个刚下载的模版运行还报错,有点小麻烦。
先得下载安装vscode软件,我是这个:VSCodeSetup-x64-1.18.0.exe
微软PinYinConverter
微软PinYinConverter很强大,但在多音字面前,犯了传统的错误,按拼音字母排序。如【强】微软居然优先【jiang】而不是】【qiang】
所以不能优选 PinYinConverter。
Npinyin
很人性,很不错的第三方库,在传统多音字前优先使用率较高的,但在生僻字面前有点无法转换。(GetInitials(strChinese) 有Bug 如【洺】无法识别,但GetPinyin可以正常转换。)
酷Q原理简介
酷Q插件问题
演示
1、酷Q原理简介
百科
https://baike.baidu.com/item/%E9%85%B7Q%E6%9C%BA%E5%99%A8%E4%BA%BA/4111789?fr=aladdin
更新接口代码
/// <summary> /// 更新库存量 /// </summary> /// <param name="input"></param> /// <returns></returns> [UnitOfWork(isTransactional: false)] public SaveStockOutput SaveStock(SaveStockInput input) { using (var unitOfWork = _unitOfWorkManager.Begin()) { ……………………………………………………………………………………………………………………………………………………………… _preventDuplicationRealtimeRepository.InsertAndGetId(dupModel);//插入防重key _itemContractStockRepository.InsertAndGetId(itemContractStock);//插入库存数据 ………………………………………………………………………………………………………………………………………………………………… _unitOfWorkManager.Current.SaveChanges(); unitOfWork.Complete(); } …………………………………………………………………………………………………………………………………………………………………………… }
1、安装SDK
Install-Package DingtalkChatbotSdk
更多类型的消息发送方式:https://open-doc.dingtalk.com/docs/doc.htm?spm=a219a.7629140.0.0.karFPe&treeId=257&articleId=105735&docType=1
2、Code:
DingDingHelper.cs
code:
var data = GetDataList(); string fileName = string.Format("export{0}", DateTime.Now.ToString("yyyyMMddHHmmssff")); Response.AppendHeader("Content-Disposition", "attachment;filename=" + fileName + ".xls"); //Response.Charset = "gb2312"; Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312"); Response.ContentType = "application/ms-excel";
打开:
MSBuild Command Prompt for vs2015/VS2015 的 MSBuild 命令提示符
msbuild F:StockServicesrc runkYCF.Stock.Task.sln /p:OutDir=D:jenkins;Configuration=Release;DebugType=none;AllowUntrustedCertificate=True;VisualStudioVersion=14.0
一直以为Math.Round就是四舍五入,谁知道没加参数,得到的结果就是有问题
测试代码:
void Main() { string.Format("Round {0} = {1}",2.4M,Math.Round(2.4M,0)).Dump(); string.Format("Round {0} = {1}",2.5M,Math.Round(2.5M,0)).Dump(); string.Format("Round {0} = {1}",2.6M,Math.Round(2.6M,0)).Dump(); string.Format("Round {0} = {1}",3.4M,Math.Round(3.4M,0)).Dump(); string.Format("Round {0} = {1}",3.5M,Math.Round(3.5M,0)).Dump(); string.Format("Round {0} = {1}",3.6M,Math.Round(3.6M,0)).Dump(); }
输出内容:
我们知道程序中使用异步、多线程会提高程序的响应速度,但也不能无限使用多线程,这在高峰会造成系统cpu上升,系统卡顿,这就需要我们自己来控制开启的线程数,不多说看代码。
private static int threadCountByOrderId = 0; private static int maxThreadCountByOrderId = 30; public bool dealorder(int OrderId) { var threadNumber = Interlocked.Exchange(ref threadCountByOrderId, threadCountByOrderId); if (threadCountByOrderId > maxThreadCountByOrderId) { return OrderChangePushToBigDataImpService.PushOrderToBigData(OrderId, Logger); } else { Task.Factory.StartNew(() => { Interlocked.Increment(ref threadCountByOrderId); try { using (var context = MefInjectionProvider.CreateContext()) { var NewOrderChangePushToBigDataImpService = context.Value.GetExport<IOrderChangePushToBigDataImpService>(); NewOrderChangePushToBigDataImpService.PushOrderToBigData(OrderId, Logger); } } finally { Interlocked.Decrement(ref threadCountByOrderId); } }); return true; } }
这样就能控制线程数据了
Powered By Z-BlogPHP 1.7.3
Copyright 2024-2027 pukuimin Rights Reserved.
粤ICP备17100155号