真爱无限的知识驿站

学习积累技术经验,提升自身能力

asp.net core 中间件的开发、使用

一、ASP.NET Core 中间件简介

中间件是一种装配到应用程序管道以处理请求和响应的软件。 每个组件可进行以下操作:

选择是否将请求传递到管道中的下一个组件。

可在调用管道中的下一个组件前后执行工作。


中间件在请求过程中执行顺序示意图:

abp asp.net core框架初步使用

记录一下怎么运行abp下载的netcore模版,刚开始学习netcore,不记录还真不知道怎么弄,比较尴尬。

而且这个刚下载的模版运行还报错,有点小麻烦。

先得下载安装vscode软件,我是这个:VSCodeSetup-x64-1.18.0.exe

[转载].Net相对更加完美的汉字转拼音


微软PinYinConverter


微软PinYinConverter很强大,但在多音字面前,犯了传统的错误,按拼音字母排序。如【强】微软居然优先【jiang】而不是】【qiang】

所以不能优选 PinYinConverter。


Npinyin


很人性,很不错的第三方库,在传统多音字前优先使用率较高的,但在生僻字面前有点无法转换。(GetInitials(strChinese)  有Bug  如【洺】无法识别,但GetPinyin可以正常转换。)

[分享]酷Q机器人二次开发(.Net插件)


酷Q原理简介

酷Q插件问题

演示



1、酷Q原理简介


百科

https://baike.baidu.com/item/%E9%85%B7Q%E6%9C%BA%E5%99%A8%E4%BA%BA/4111789?fr=aladdin

ABP框架UnitOfWork事务使用注意事项

更新接口代码

/// <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();
        }
        ……………………………………………………………………………………………………………………………………………………………………………
}


调用钉钉机器人SDK示例

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

excel文件导出时内容还可以直接用table表示减少文件大小

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命令行编译参考

打开:

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


.Net函数Math.Round你会用吗?

一直以为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();
}

输出内容:

.Net中偶尔需要使用异步的处理

我们知道程序中使用异步、多线程会提高程序的响应速度,但也不能无限使用多线程,这在高峰会造成系统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;
            }
        }

这样就能控制线程数据了

<< 1 2 3 4 5 6 7 8 9 10 > >>

Powered By Z-BlogPHP 1.7.3

Copyright 2024-2027 pukuimin Rights Reserved.
粤ICP备17100155号