C#
文章平均质量分 69
三境界
九层之台起于垒土
展开
-
编译原理2---A Power Tool 正则表达式
个人理解正则表达式,重在表达,计算机领域有很多字符或字符串需要被表达(或者说描述),如果能有一种特殊语言能够通用地描述一种形式的字符串,那么计算机在查找,匹配,处理等操作时会变得更加方便。使用regular expression做示例1.先来个简单的:要在一个字符串中找到string被搜索字符串:000asdkljl000kasdjlkastringsjdlkajskd000目标字符串:string右下角MATCH INFORMATION中标记了string子串所在的位置这种匹配就是 匹配之原创 2022-04-07 18:56:53 · 641 阅读 · 0 评论 -
C#---HylicServer 轻量级服务器 (更新中)
概念想将并发量做的更大一点,思路是维护一个请求队列,一个线程用于登记并收集客户端请求,缓存到队列中。另一个线程用于处理队列中的请求。目前在考虑是否换一种数据结构,因为我想让此服务器支持长连接(可能要设置服务器查询客户端存活情况,或者在客户端主动断开时能够选择到该客户端并删除套接字)设计过程单例基类线程安全,目前没有使用反射创建实例,后期更新中修改。namespace HylicServer{ /// <summary> /// 用于制作单例的抽象类,继承后访问静态的I原创 2022-03-31 17:49:35 · 836 阅读 · 0 评论 -
C#---并发编程
今天不讲细节,重在把概念理清,要不然看别人文章总是会混淆。一,并发的概念能够同时做多件事情。二,并发的实现形式:多线程异步编程响应式编程1.多线程采用多个线程来执行程序可以把大量的任务分割成小块,分配给多个同时运行的线程。线程是一个独立的运行单元,每个进程内部有多个线程,每个线程可以各自同时执行指令。每个线程有自己独立的栈,但是与进程内的其他线程共享内存。对某些程序来说,其中有一个线程是特殊的,例如用户界面程序有一个UI线程,控制台程序有一个main线程。.NET程序会维护一个线程原创 2022-03-29 18:48:06 · 2287 阅读 · 0 评论 -
C# 异步编程Await Async
原创 2022-03-27 13:57:01 · 196 阅读 · 0 评论 -
C# ---再谈接口
接口的理解接口其实无处不在比如这个网关上的网口就是一种接口,我的网线可以插上去而使用苹果的充电线就无法连接,也就是说我这个接口在设计时就规定了:想连接上我你们必须满足我的接口规格规范满足了规范的数据线才能被这个网口所接受面向对象中的接口也是一样的接口里写着"规范"(要是什么样的,能满足哪些行为)继承接口的对象必须实现接口里所规定的,也就是说要把数据线制作成网口设计时所规定的规格实现了接口的对象才能被某种需求所接受int[] myVal = {...};Array.Sort(myVal)原创 2022-03-07 10:09:50 · 1347 阅读 · 0 评论 -
C#---特性与反射
所有 .NET 支持的语言编写出来的程序,在对应的编译器编译之后,会先产出程序集,其主要内容是中间语言 IL 和元数据。之后,JIT 再将 IL 翻译为机器码(不同机器实现方式不同)。IL 使得跨平台成为可能,并且统一了各个框架语言编译之后的形式,使得框架实现的代价大大降低了。比如,.NET 框架有N种语言,那么每种语言都必须有自己的编译器。而 .NET 框架又决定跨 M 种平台,那么,就需要有 M 种 JIT。如果不存在 IL,则 .NET 框架为了支持 N 种语言跨 M 种平台,需要 MxN .原创 2021-12-02 09:52:18 · 1221 阅读 · 0 评论 -
C#---依赖注入
依赖注入一,依赖注入的正式定义:依赖注入(Dependency Injection),是这样一个过程:由于某客户类只依赖于服务类的一个接口,而不依赖于具体服务类,所以客户类只定义一个注入点。在程序运行过程中,客户类不直接实例化具体服务类实例,而是客户类的运行上下文环境或专门组件负责实例化服务类,然后将其注入到客户类中,保证客户类的正常运行。二,依赖注入的类别1.Setter注入Setter注入(Setter Injection)是指在客户类中,设置一个服务类接口类型的数据成员,并设置一个Set方转载 2021-12-01 15:25:20 · 6125 阅读 · 0 评论 -
C#---单元测试
假设场景电扇依赖于电源,电源电流值不同电扇工作效果不同using System;namespace ConsoleApp1{ class Program { static void Main(string[] args) { var power = new PowerSupply(); var fan = new DeskFan(power); Console.WriteLine原创 2021-11-29 17:19:42 · 1613 阅读 · 0 评论 -
C#面向对象编程---SOLID原则
耦合:我们可以把它定义为一个类、方法或者任何一个实体直接与另一个实体连接的度。这个耦合的度也可以被看作依赖的度。当一个Class中使用了另一个Class实例化出来的对象,就代表产生了依赖一个项目中有20个方法调用良好,但是要修改了其中一个,另外的19个都要进行修改,这就是高耦合!独立性太差!内聚:一个模块中各个元素之间的联系的紧密程度,如果各个元素(语句、程序段)之间的联系程度越高,则内聚性越高,即‘高内聚’ !高内聚,低耦合内部之间严格依赖,到外部就各扫门前雪,每个模块都要做的像大清闭关锁国原创 2021-11-26 19:01:28 · 584 阅读 · 0 评论 -
C/CPP过渡到C#的简易教程2
委托类似于C/Cpp中的函数指针,可以存有对某个方法的引用,它是 一种引用类型变量。引用可在运行时被改变特别用于实现事件和回调方法。所有的委托(Delegate)都派生自 System.Delegate 类。 public delegate int MyDelegate (string s);MyDelegate Refed_object1 = new MyDelegate(specified_func);Refed_object1.Invoke();事件—windows图形界面与用户交互的基原创 2021-11-21 00:21:31 · 733 阅读 · 3 评论 -
C/Cpp过渡到C#的简易教程1
很迷幻啊,大学一直做MCU,也学C/Cpp,python,幻想过有一天能成为一名后端程序员,但是其实没抱太大希望,秋招找工作也是一直找的MCU/Linux方向。没想到最后也拿了个后端的offer,不过Linux还得做,offer上直接给我整了个嵌入式全栈,还挺看得起我233。不过要学的就多了,由于公司是做工业物联网,当前了解到的主要解决方案就是在win上开发ASP.NET,然后迁移到Linux环境下去。嵌入式全栈可不能松懈,好好学习,提高学习能力,项目中才能事半功百。于是我得改掉往日的风格,基础的一些太语.原创 2021-11-20 23:22:15 · 2338 阅读 · 0 评论