在前面的一篇文章中,我们对.NET 中的配置Configuration进行了一个详细的介绍,并且从整个源码的解读解释了配置中的核心接口以及主要的实现类。文章链接为:https://cshelloworld.com/home/detail/1912874623360438272。这篇文章我们主要来介绍每种配置如何使用。基于内存的配置程序基于内存的配置程序主要是在内存中维护了一个Key-Value键值
在前面的一篇文章中,我们对.NET 中的配置Configuration进行了一个详细的介绍,并且从整个源码的解读解释了配置中的核心接口以及主要的实现类。文章链接为:https://cshelloworld.com/home/detail/1912874623360438272。这篇文章我们主要来介绍每种配置如何使用。基于内存的配置程序基于内存的配置程序主要是在内存中维护了一个Key-Value键值
什么是配置.NET中的配置,本质上就是key-value键值对,并且key和value都是字符串类型。在.NET中提供了多种配置提供程序来对不同的配置进行读取、写入、重载等操作,这里我们以为.NET 的源码项目为例,来看下.NET中的配置主要是有那些类库。下面这个截图是.NET 源码中和配置相关的所有类库,所有配置相关的类库都是都是以Microsoft.Extensions.Configurati
1、谈谈你对协变和逆变的理解协变和逆变能够实现数组类型、委托类型和泛型类型参数的隐式引用转换。协变(out):适用于返回值,允许派生类型赋值给基类型。逆变(in):适用于方法参数,允许基类型赋值给派生类型。它们主要用于接口和委托,提供了更灵活的泛型类型兼容性。static void Main(string[] args){ //协变委托 Func<out T> 只能作为返回值,子
协变Covariance和逆变Contravariance在 C# 中,协变和逆变能够实现数组类型、委托类型和泛型类型参数的隐式引用转换。简单掉说,协变和逆变有一个基本的公式:协变:IFoo<父类> = IFoo<子类>; 简单点说:从儿子变成老子,年龄自然长大,顺理成章,叫做协变。逆变:IBar<子类> = IBar<父类>; 简单点说:从老子变成
什么叫WPF的资源(Resource)资源是保存在可执行文件中的一种不可执行数据。WPF中资源用ResourceDictionary类表示,这个类就是一个字典,字典的key和value都是object类型。所以在WPF中,资源可以可以是图像、字符串等所有的任意CLR对象,只要对象有一个默认的构造函数和独立的属性。 也就是说,应用程序中非程序代码的内容,比如点阵图、颜色、字型、动画/影片档以及字符串
in、out 和 ref 关键字首先我们来说in、out 和 ref ,在 C# 中,in、out 和 ref 是用于方法参数的引用传递。在引用传递过程中,形参和实参都是指向相同的引用地址。名称作用使用场景是否需要提前初始化in只读参数,按引用传递 高效传递大对象但不希望修改其值 不需要ref输出参数,按引用传递方法内部可以读取和修改参数值,调用前必须初始化 需要out输出参数,按引用传
字符串消息的序列化在上一篇文章中,我们使用MQTTnet 框架,实现了一个MQTT服务器、MQTT发布者进程、MQTT订阅者进程。在消息传递过程中,我们将控制台的字符串直接传递。因为MQTT是应用层协议,它是基于TCP协议进行数据传输。我们 直到TCP本身是基于字节流的传输协议。所以我们的字符串最终会 序列化成自己数组进行数据传输。我们先来看下发布者发送消息的代码:string msg;while
MQTT协议MQTT协议是基于TCP传输协议之上的应用层协议,全程Message Queuing Telemetry Transport。主要用于物联网设备间的通信,在低带宽、不稳定网络环境下的优势非常明显。 当然普通的通信业务开发也是完全可以使用的。MQTT协议采用客户端-服务端架构模式,实现了发布/订阅模式。本篇文章的代码,我们也是主要来实现MQTT的发布订阅功能。本片文章的实现代码已经上传到
单例模式是一种创建型设计模式,确保一个类只有一个实例,并提供一个全局访问点。单例模式有多种实现方式,在 C# 中,单例模式有多种实现方式。尽管在.NETCore中已经内置了Ioc容器,容器可以确保 1、饿汉式public sealed class Singleton{ private static readonly Singleton instance = new Singleton();
PowerShell脚本的后缀名为ps1,脚本文件本质上还是一个文本文件。所以在windows下新建一个txt文本,将后缀改为ps1,就是一个标志的PowerShell脚本文件,就可以在PowerShell控制台执行。PS脚本主要用于系统管理和自动化任务。以下是 PowerShell 的一些基本语法和概念:注释每个PS脚本中避免不了一些注释和说明。在PowerShell脚本中使用 # 进行单行注释
之前我们给大家介绍过用户模式下的线程同步方案。主要有Interlocked系列函数、关键段、旋转锁、读写锁和条件变量。用户模式的优点是同步速度非常快,性能优异,只需要非常短的CPU周期即可完成同步。但是也有其局限性,就是用户模式下的线程同步只能在局限在单进程,无法跨进程同步线程。为了实现跨进程的线程同步,Windows允许我们通过内核对象的方式实现同步。可以用来同步的内核对象主要有事件、可等待定时
线程同步和原子操作是windows开发中必不可少的一个话题,线程同步一般分为用户模式下的线程同步和内核模式下的线程同步。其中用户模式下的线程同步方案一般无法跨进程使用,所以性能也是最好的,如果没有跨进程线程同步的需求,推荐使用用户模型下的线程同步方案。用户模式下的线程同步方案主要有以下几种:Interlocked系列函数同步、关键段同步、旋转锁同步、关键段同步Interlocked系列函数Inte
原子访问通过Interlocked系列函数是 Windows API 提供的一组原子操作函数,用于在多线程环境中安全地操作共享变量。当我们执行这些Interlocked系列函数的时候 ,函数会对总线发出一个硬件信号,这个硬件信号可以防止CPU同一时刻访问同一个内存地址,从而大打到原子访问的目的。以下是一些常用的 Interlocked 系列函数:1.
状态模式状态模式是设计模式中的一种行为设计模式,对很多人来说,这个模式平时可能用不到。但是如果你做游戏开发的话,我相信你应该对这个模式有一个很深刻的理解。状态模式在游戏中开发中还是比较常见的。状态模式将状态的行为封装在独立的状态类中,使得状态转换变得更加清晰和易于管理。这样的话,对象只负责状态的切换,不负责具体的行为。比如射击类游戏:玩家模式是原地站立状态,当用户按下前进的时候,玩家的状态切换为前
猫霸,一个热爱windows c++开发和dotnet开发的骨灰程序员