概率论中独立事件的讨论 开始之前,我们要明确描述一个问题的概率问题时,必须准确把握这个"样本空间",概率书上一般称这个为所有可能的结果构成的集合为"样本空间"。如果甲在描述的一个问题的样本空间为A,它基于这个A的出一个概率,而乙在另外一个不同的样本空间B中得出一个概率,那么讨论和的关系需要谨慎,要不然就是驴唇不对马嘴。1. 条件概率学习条件概率的时候会碰到下面的条件概率公式: 这个式子...
C# 一行实现byte[]数组转十六进制字符串 byte[] byteArray = new byte[]{0x9E,0xAB,0xE4,0xBD};string str = BitConverter.ToString(msgData, 0).Replace("-", string.Empty);
一行搞定List<T>中的成员数量统计 一行搞定List中的成员出现次数的数量统计经常遇到这么一类问题,我们要统计List<T>列表中不同值成员出现的次数。在C#本可以巧用Linq中的**GroupBy(…)**方法。下面我们给一个例子,只需一行代码即可搞定成员出现次数的数量统计: class MySample { public static void Main() { List<int> idList = new List<int>(
Asp.net Core 主机生命周期的管理 1. 回顾CancellationToken CancellationToken类有个容易被忽视的功能,那就是它包含一个Register()方法,这个方法可以注册一个当这个CancellationToken类对象被Cancel时可以触发的委托。 Asp.net Core的非泛型主机运用了这个原理进行生命周期管理。2. 泛型主机与应用类主机服务 Asp.net Core将主机分为泛型主机(Host)和应用主机服务(Application Host),Web主机就是一个应用主机,应用主机也称为主机
C# 检测Ctrl+c和其他程序退出 代码using System;using System.Threading;public class Example{ public static void Main() { AppDomain appd = AppDomain.CurrentDomain; appd.ProcessExit += (s, e) => { System.Console.WriteLine("Exit here.");
C# Task的任务取消 Task任务取消取消任务使用CancellationToken这个令牌,这是个struct结构体。看一段代码:using System;using System.Collections.Generic;using System.Threading;using System.Threading.Tasks;public class Example{ public static void Main() { // Define the cancellation t
架构原则 通用设计原则1 关注点分离 分离关注点是开发时的指导原则。这一原则主张软件应该根据它所执行的工作的种类进行分离。例如,考虑一个应用程序,该应用程序包含用于标识要显示给用户的值得注意的项目的逻辑,并且该应用程序以特定的方式格式化这些项目以使它们更引人注目。负责选择要格式化哪些项的行为应该与负责格式化项的行为分开,因为这些行为是单独的关注点,它们只是巧合地相互关联。 从架构上讲,通过将核心业务行为与基础设施和用户界面逻辑分离,应用程序可以在逻辑上遵循这一原则。理想情况下,业务规则和逻辑应该驻留在单独的
Asp.net Core WebHost寄宿在Host上 首先,直接上结论:那就是asp.net core Web服务主机的WebHost是寄宿在Host上的。寄宿是靠实现IHostedService接口达到的,证据是:// GenericWebHostBuilder类的构造函数会调用下面这句话services.AddHostedService<GenericWebHostService>();这就是通过依赖注入,往Host上注入了Web服务。我们回到模板代码: public class Program {
vscode 的launch.json文件(二)——配置launch.json启动用于C#调试 launch.json这个launch.json启动文件用于在Visual Studio Code中配置调试器。Visual Studio Code生成launch.json启动几乎所有需要的信息。如果您的工作区只有一个可启动的项目,则 C# extension将提供自动生成此文件的功能。如果错过此提示,可以通过从VS Code命令选项板执行命令.NET:Generate Assets for Build and Debug来强制生成。生成的launch.json文件包含两个部分,一个用于配置启动lau
vscode 的launch.json文件(一) 启动配置vscode创建的工程往往有一个叫launch.json的文件。这个文件位于.vscode文件夹下。我们有两种方法打开这个launch.json文件:找到.vscode文件夹,从中找到launch.json文件,打开它;选择左侧的Run工具栏,然后点击左上角Run/Debug下拉框右侧的齿轮状按钮。这个文件中的内容是针对调试(debug)和启动(run)的配置项。下面是一个例子:如上图,launch.json文件中"name"项就是显示在左上角Run和Debug下拉菜单中。也就是说
C# 关于依赖注入中的Scpoe概念 依赖注入AddScoped()方法Singleton和transient两种依赖注入方式比较容易懂。今天专门讲一下依赖注入Scope域的概念。直接上例子:using System;using Microsoft.Extensions.DependencyInjection;namespace vscode_test5{ interface IMyInfo { void PrintID(); } public class MyInf
C# 依赖注入简单例子 依赖注入简单例子using System;using Microsoft.Extensions.DependencyInjection;class Program{ interface ITanGuan { void hello(); } class TanGuan:ITanGuan { public int A{get;set;} public int B{get;set;} public
Asp.net core 3.1利用IHostedService为系统注入自己的主机 IHostedService这个接口只包含两个成员方法:Task StartAsync(CancellationToken cancellationToken);Task StopAsync(CancellationToken cancellationToken);Host中可以包含多个IHostedService服务实例。当然,如果是Web应用其中一个就是WebHost。Host起来之后,会依次启动所有添加的这些IHostedService服务。下面我们给一个例子,如何在Web服务之外注入自己
ASP.Net Core的UseStartup加载Start类过程 UseStartup加载Start类过程这个过程主要是利用了依赖注入原理。WebHostBuilder类有一个扩展WebHostBuilderExtensions,在这个扩展中对WebHostBuilder的方法进行了扩展,里面就包含UseStartup()方法,这个方法里将Start服务添加进去: /// <summary> /// Specify the startup type to be used by the web host. //
C# 依赖注入IServiceCollection的AddSingleton方法使用 AddSingleton(IServiceCollection, Type, Func<IServiceProvider,Object>)方法这个方法是通过提供一个Func<IServiceProvider,Object>的delegate委托来实现服务的获取。具体怎么用,下面给一个简单例子:using System;using Microsoft.Extensions.DependencyInjection;class Program{ interface I