- 博客(170)
- 资源 (24)
- 收藏
- 关注
原创 概率论中独立事件的讨论
开始之前,我们要明确描述一个问题的概率问题时,必须准确把握这个"样本空间",概率书上一般称这个为所有可能的结果构成的集合为"样本空间"。如果甲在描述的一个问题的样本空间为A,它基于这个A的出一个概率,而乙在另外一个不同的样本空间B中得出一个概率,那么讨论和的关系需要谨慎,要不然就是驴唇不对马嘴。1. 条件概率学习条件概率的时候会碰到下面的条件概率公式: 这个式子...
2022-02-23 08:47:47
17472
4
原创 C# 一行实现byte[]数组转十六进制字符串
byte[] byteArray = new byte[]{0x9E,0xAB,0xE4,0xBD};string str = BitConverter.ToString(msgData, 0).Replace("-", string.Empty);
2020-12-10 15:02:28
970
1
原创 一行搞定List<T>中的成员数量统计
一行搞定List中的成员出现次数的数量统计经常遇到这么一类问题,我们要统计List<T>列表中不同值成员出现的次数。在C#本可以巧用Linq中的**GroupBy(…)**方法。下面我们给一个例子,只需一行代码即可搞定成员出现次数的数量统计: class MySample { public static void Main() { List<int> idList = new List<int>(
2020-10-23 17:17:34
3827
原创 Asp.net Core 主机生命周期的管理
1. 回顾CancellationToken CancellationToken类有个容易被忽视的功能,那就是它包含一个Register()方法,这个方法可以注册一个当这个CancellationToken类对象被Cancel时可以触发的委托。 Asp.net Core的非泛型主机运用了这个原理进行生命周期管理。2. 泛型主机与应用类主机服务 Asp.net Core将主机分为泛型主机(Host)和应用主机服务(Application Host),Web主机就是一个应用主机,应用主机也称为主机
2020-07-30 09:17:38
1799
原创 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.");
2020-07-28 17:47:06
2532
原创 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
2020-07-26 19:54:55
4216
原创 架构原则
通用设计原则1 关注点分离 分离关注点是开发时的指导原则。这一原则主张软件应该根据它所执行的工作的种类进行分离。例如,考虑一个应用程序,该应用程序包含用于标识要显示给用户的值得注意的项目的逻辑,并且该应用程序以特定的方式格式化这些项目以使它们更引人注目。负责选择要格式化哪些项的行为应该与负责格式化项的行为分开,因为这些行为是单独的关注点,它们只是巧合地相互关联。 从架构上讲,通过将核心业务行为与基础设施和用户界面逻辑分离,应用程序可以在逻辑上遵循这一原则。理想情况下,业务规则和逻辑应该驻留在单独的
2020-07-24 11:50:19
403
原创 Asp.net Core WebHost寄宿在Host上
首先,直接上结论:那就是asp.net core Web服务主机的WebHost是寄宿在Host上的。寄宿是靠实现IHostedService接口达到的,证据是:// GenericWebHostBuilder类的构造函数会调用下面这句话services.AddHostedService<GenericWebHostService>();这就是通过依赖注入,往Host上注入了Web服务。我们回到模板代码: public class Program {
2020-07-23 20:37:04
850
原创 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
2020-06-07 10:56:07
32320
原创 vscode 的launch.json文件(一)
启动配置vscode创建的工程往往有一个叫launch.json的文件。这个文件位于.vscode文件夹下。我们有两种方法打开这个launch.json文件:找到.vscode文件夹,从中找到launch.json文件,打开它;选择左侧的Run工具栏,然后点击左上角Run/Debug下拉框右侧的齿轮状按钮。这个文件中的内容是针对调试(debug)和启动(run)的配置项。下面是一个例子:如上图,launch.json文件中"name"项就是显示在左上角Run和Debug下拉菜单中。也就是说
2020-06-06 22:17:52
141994
6
原创 C# 关于依赖注入中的Scpoe概念
依赖注入AddScoped()方法Singleton和transient两种依赖注入方式比较容易懂。今天专门讲一下依赖注入Scope域的概念。直接上例子:using System;using Microsoft.Extensions.DependencyInjection;namespace vscode_test5{ interface IMyInfo { void PrintID(); } public class MyInf
2020-05-28 21:32:55
1614
原创 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
2020-05-27 14:13:16
1774
原创 Asp.net core 3.1利用IHostedService为系统注入自己的主机
IHostedService这个接口只包含两个成员方法:Task StartAsync(CancellationToken cancellationToken);Task StopAsync(CancellationToken cancellationToken);Host中可以包含多个IHostedService服务实例。当然,如果是Web应用其中一个就是WebHost。Host起来之后,会依次启动所有添加的这些IHostedService服务。下面我们给一个例子,如何在Web服务之外注入自己
2020-05-25 16:00:28
5417
原创 ASP.Net Core的UseStartup加载Start类过程
UseStartup加载Start类过程这个过程主要是利用了依赖注入原理。WebHostBuilder类有一个扩展WebHostBuilderExtensions,在这个扩展中对WebHostBuilder的方法进行了扩展,里面就包含UseStartup()方法,这个方法里将Start服务添加进去: /// <summary> /// Specify the startup type to be used by the web host. //
2020-05-22 18:22:07
1894
原创 C# 依赖注入IServiceCollection的AddSingleton方法使用
AddSingleton(IServiceCollection, Type, Func<IServiceProvider,Object>)方法这个方法是通过提供一个Func<IServiceProvider,Object>的delegate委托来实现服务的获取。具体怎么用,下面给一个简单例子:using System;using Microsoft.Extensions.DependencyInjection;class Program{ interface I
2020-05-22 18:05:06
15971
原创 ASP.Net Core WeHost生成过程
WebHost实例化过程ASP.Net Core用户是无法自己直接生成WebHost实例的。ASP.Net Core暴露的WebHost是一个static类,这个类有一个CreateDefaultBuilder()方法:public static IWebHostBuilder CreateDefaultBuilder(string[] args)分析微软开源的源码,这个方法内部调用了下面的语句:var builder = new WebHostBuilder();这个时候生成了一个WebHo
2020-05-22 13:55:26
248
原创 红黑树
《算法导论》一书提到了红黑树。先一股脑给出红黑树的5个性质:1. 每个结点或者是红色的,或者是黑色的。2. 根结点是黑色的。3. 每个NIL结点是黑色的。原《算法导论》中的描述有些混乱。红黑树叶节点可以是黑的也可以是红色的。严格讲是NIL节点是黑色的。这个NIL节点是红黑树额外引入的结点,在计算黑高时NIL结点也会被计算在内。NIL结点指的是叶结点空的左右子结点延伸出...
2020-05-22 08:08:44
213
原创 C# 十六进制输出的代码
// Display the byte array in a readable format. public static void PrintByteArray(byte[] array) { for (int i = 0; i < array.Length; i++) { Console.Write($"{array[i]:X2}"); if ((i % 4) == 3) Console.Wri...
2020-05-21 12:55:14
3923
原创 C# 关于Licensing许可
现在我们给出一个最简单的许可代码(无许可文件)using System;using System.ComponentModel;using System.Diagnostics;namespace Hello{ public class Program { static void Main() { // use the licensed component MyClass. using(MyClas.
2020-05-20 15:29:35
5095
1
原创 ASP.Net Core WebHost类
WebHost类源码地址// Copyright (c) .NET Foundation. All rights reserved.// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.using System;using System.IO;using System.Reflection;using Microsoft.Asp
2020-05-16 11:59:09
330
原创 C# 线程(四)——ThreadPool线程池
线程池概念 每当您启动一个线程时,都会花费几百微秒来组织新的私有局部变量堆栈。每个线程还消耗(默认情况下)大约1 MB的内存。线程池通过共享和回收线程来减少这些开销,从而允许在非常精细的级别上应用多线程,而不会降低性能。这在利用多核处理器以“分而治之”的方式并行执行计算密集型代码时非常有用。 线程池还限制了它将同时运行的工作线程总数。太多的活动线程用管理负担来限制操作系统,并使CPU缓存无效。一旦达到限制,作业将
2020-05-11 12:41:15
756
原创 C# 线程(三)——前台和后台线程
默认情况下,我们显式创建的线程是前台线程。 只要前台线程中的任何一个正在运行,它就可以使应用程序保持活动状态,而后台线程则不会。 一旦所有前台线程完成,应用程序结束,所有仍在运行的后台线程终止。您可以使用其IsBackground属性查询或更改线程的背景状态。 下面给一个例子:class PriorityTest{ static void Main (string[] args) { Thread worker = new Thread ( () => Console.ReadL
2020-05-10 21:39:39
1001
原创 C# 线程(二)——匿名函数给线程Thread传递参数
这里主要讨论用Lambda表达式给Thread传递参数。我们除了用ParameterizedThreadStart委托传递参数,还可以用lambda表达式为Thread传递参数,如下例子所示:static void Main(){ Thread t = new Thread ( () => Print ("Hello from t!") ); t.Start();} static void Print (string message) { Console.WriteLine
2020-05-10 19:54:10
2546
原创 C# 线程(一)——概述
进程和线程 进程是一个执行程序。操作系统使用进程来分离正在执行的应用程序。线程是操作系统分配处理器时间的基本单元。每个线程都有一个调度优先级,并维护一组结构,当线程执行暂停时,系统使用这些结构保存线程上下文。线程上下文包括线程无缝恢复执行所需的所有信息,包括线程的一组CPU寄存器和堆栈。多个线程可以在进程的上下文中运行。进程的所有线程共享其虚拟地址空间。线程可以执行程序代码的任何部分,包括当前由另一个线程执行的部分。举个例子的话,QQ是一个进程,World是一个进程,浏览器也是一个进程,这三个进程
2020-05-10 11:45:09
261
原创 C# 线程(五)——线程原语WaitHandle抽象类
WaitHandle是抽象类。它用来封装操作系统的特定对象(也就是操作系统所提供的某个资源对象),程序中通过等待这个特定操作系统对象来独占式访问某个共享资源(一般是某个用户定义的对象资源)。它一般是用于多线程的环境下。public abstract class WaitHandle : MarshalByRefObject, IDisposable派生自WaitHandle的类包括:MutexEventWaitHandle , AutoResetEvent , ManualResetEvent
2020-05-09 22:35:54
302
原创 C#关于List的线程安全问题(二)
上一期,C#关于List的线程安全问题(一)我们给出了一个线程不安全的例子。这个例子给人的感觉就是总觉得哪里不对,命名插入5000个数据到List中,结果却并不是自己想要的。明明一共插入了1300个数据,结果也不是。这都是因为List默认线程不安全导致的,也就是当某一个线程正在往List中插入数据,结果由于其他线程也正在做插入动作,导致冲突,插入可能失败,并且插入的顺序是不可控的,除非...
2020-04-06 16:11:45
4093
原创 C# 不需要查手册接口代码自动化实现
C#有非常多的接口,如果每次想实现一个接口,都去翻看微软手册,那么耗时耗力,降低效率。实际上VS Code有一个非常人性化的方法,可以通过提示瞬间实现接口模板,仅仅需要鼠标点两下就可以。举个例子,你要实现IEnumerable这个接口,你输入了下面的代码:我们会发现在IEnumerable下方出现红色波浪线,提示这个地方有错。当然有错了,我们还未实现接口。这个时候,我们将鼠标移...
2020-04-05 21:49:35
414
原创 C# IEnumerable接口
C# 中如果需要使用关键字foreach去迭代(轮询)一遍一个集合的内容,那么就需要这个类实现IEnumerable接口。C# 很多官方提供的Collection集合已经实现了IEnumerable接口的,比如ArrayList,Queue,Stack等类都实现了IEnumerable接口,我们可以放心使用foreach。(ArrayList是通过IList接口间接包含了IEnumerable...
2020-04-05 21:21:52
4918
转载 C# 隐式实现接口和显示实现接口
请参考下面这篇文章:https://www.cnblogs.com/lori/archive/2013/05/08/3066233.html
2020-04-05 10:15:37
500
原创 C#关于List的线程安全问题(一)
C# 关于List的线程安全问题首先,List这个集合类是不安全的。直接给例子,讲一下吧:using System;using System.Collections.Generic;using System.Threading;using System.Threading.Tasks;namespace vscode_test2{ class Program {...
2020-03-24 16:43:01
4416
原创 UWB定位系统在展馆中的应用
UWB定位系统在展馆中的应用UWB定位技术是目前市面上精度仅次于激光雷达的定位技术。它广泛应用于厂房物资定位、叉车定位、应急定位等领域。去年展出的苹果手机已经新增了UWB芯片,引起了业内极大的关注。有消息称世界上最大的UWB芯片产商已经被Qorvo收购,而Qorvo公司与苹果公司有着千丝万缕的联系,它的1/3营收来自苹果公司。有分析人士认为,苹果入局UWB芯片,意味着消费级室内定位这一...
2020-03-24 10:58:05
677
原创 Matlab画误差线(Error Bar)
Average=[12,11,7,7,6,5];Variance=[0.5,0.4,0.3,1,0.3,0.5];Time=0:1:5;errorbar(Time, Average,Variance,'-or');xlabel('Time');ylabel('Value');Time是横坐标,Average是○处值,Variance是误差值,有点像蜡烛线的这个就是Variance。...
2020-03-07 14:27:48
18492
2
原创 C# 有了委托(delegate)为什么还需要事件(event)?
delegate void dowork(); // 委托申明class Baby{ public event dowork CryEvent; // 事件成员() public void Play() { System.Console.WriteLine("孩子在玩耍..."); Thread.Sleep(2000); ...
2020-02-14 22:53:14
2390
3
OLS estimator is unbiased.pdf
2019-08-17
2000_Book_IntelligentProblemSolvingMetho.pdf
2019-07-23
The_Horvitz_Thompson_Estimator.pdf
2019-07-21
视差细化,包括立体垫的遮挡处理
2019-01-08
支持串口或udp数据的曲线显示软件
2018-07-17
停车位检测嵌入式软件
2018-03-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人