C# 中级知识汇总
文章平均质量分 68
对开发3年以上的需要对C#知识点进行梳理掌握,强化并应用到实际的开发中。
是刘彦宏吖
1.我能做什么 2.我想要的 ---全新的选择 我能干什么?当你不能知道要做什么的时候?就把现在的事做好!
知识零碎、浅尝辄止,未成体系、温故知新、夯实基础、努力学习、积累量变、期待质变。
掌握人、技术、方法的不断协调与相互作用,才能事半功倍。悟以往之不谏,知来者之可追。
展开
-
Unit Test TDD 系列如何基于Tasking任务列表实施测试驱动开发、极限编程中的简单设计、重构、系统隐喻
你是否在线上编程环节中遇到问题?是否在编程中反反复复的出现BUG?是否很好奇如何结对编程完成题目?ThoughtWorks官方攻城狮将进行结对coding直播,解答你的疑问!原创 2024-01-29 13:38:21 · 919 阅读 · 0 评论 -
19 个必须知道的Visual Studio 快捷键
主要为大家详细介绍了19个必须知道的Visual Studio快捷键,具有一定的参考价值,感兴趣的小伙伴们可以参考一下本文将为大家列出在 Visual Studio 中常用的快捷键,正确熟练地使用快捷键,将大大提高你的编程工作效率。项目相关的快捷键 Ctrl + Shift + B = 生成项目 Ctrl + Alt + L = 显示 Solution Explorer(解决方案资源管理器) Shift + Alt+ C = 添加新类 Shift + Alt + A = 添加新项目到项原创 2024-01-29 13:37:58 · 620 阅读 · 0 评论 -
EF Core -- 关系
EF Core – 关系一对多// Dependent Entity 主表public class Blog{ // Principal Key 标识键/可能是主键或者备用键(唯一性约束) public int BlogId { get; set; } public string Url { get; set; } // Collection navigation property 关联多个从表的属性集合(集合属性) public List<原创 2024-01-29 13:34:24 · 397 阅读 · 0 评论 -
ApiUrls
【代码】ApiUrls。原创 2023-11-15 07:30:20 · 192 阅读 · 0 评论 -
WindowsHelper
【代码】WindowsHelper。原创 2023-11-15 07:29:22 · 137 阅读 · 0 评论 -
APIHelper
【代码】APIHelper。原创 2023-11-14 22:02:25 · 303 阅读 · 0 评论 -
MemoryManagement.FlushMemory();
【代码】MemoryManagement.FlushMemory();原创 2023-11-14 21:50:34 · 105 阅读 · 0 评论 -
.net 线程粗解
做早餐,我们点火热平底锅后就去烤面包,但平底锅什么时候好,我们什么时候切换回来煎鸡蛋,还是去倒橙汁。异步方法同步运行,直至到达其第一个 await 表达式,此时会将方法挂起,直到等待的任务完成。至此,关于 C# 中异步编程的三个知识点 async,await,Task 讲解完毕。本人以前看到 同步 这个词,错误地顾名思义,以为是同一刻时间做几件事,错错错!这个时候方法虽然被声明为异步的,但现在执行过程还是同步的!// 这代码是有问题的,我有意为之,用来和接下来的更完善的代码做比较~原创 2023-10-27 23:17:42 · 109 阅读 · 0 评论 -
JsonToDataset
【代码】JsonToDataset。原创 2023-10-27 23:13:36 · 489 阅读 · 0 评论 -
Microsoft.Extensions 简介
Microsoft.Extensions 简介一、Microsoft.Extensions 简介.NET Extensions 是一套官方的、开源的、跨平台的 API 集合,提供了一些常用的编程模式和实用工具,例如依赖项注入、日志记录、缓存、Host以及配置等等。该项目的大多数 API 都被用在 .NET 平台的各个应用框架上,如 http://ASP.NET Core,Xamarin 等等。虽然 http://ASP.NET 使用了很多这些 API 但 http://ASP.NET 并没有与它们紧密耦原创 2023-10-27 23:06:11 · 1846 阅读 · 0 评论 -
Dynamic Expresso的应用
Dynamic Expresso 是用 .NET Standard 2.0 编写的简单 C# 语句的解释器。Dynamic Expresso 嵌入了自己的解析逻辑,通过将 C# 语句转换为 .NET lambda 表达式或委托来真正解释 C# 语句。使用 Dynamic Expresso 开发人员可以创建可编写脚本的应用程序,无需编译即可执行 .NET 代码或创建动态 linq 语句。语句是使用 C# 语言规范的子集编写的。全局变量或参数可以在表达式中注入和使用。原创 2022-08-20 13:42:11 · 936 阅读 · 0 评论 -
商业智能(BI)数据分析挖掘概念
在数据立方体上的操作有:切片、切块、旋转、上卷和下钻。原创 2022-12-11 15:22:11 · 2419 阅读 · 0 评论 -
解决Winform应用程序中窗体背景闪烁的问题
这是一个Winform窗体,里面放置了一个Panel,Dock属性为Fill,BackgroundImage使用了《少年电世界》2003年第02期的封面图片,BackgroundImageLayout使用了Stretch。最近对代码作了一些优化,试验后效果还可以,但是发现界面会闪烁,具体是TreeView控件会闪烁,语言为C#,IDE为VS2005。将之前我们建立窗体中的Panel容器换为我们新封装的PanelEnhanced容器,将程序的背景图片放到里面,再运行程序,程序背景闪烁的问题就完美解决了!原创 2022-12-01 21:36:42 · 1559 阅读 · 0 评论 -
c# 异步处理 socket TCP转UDP服务
【代码】c# 异步处理 socket TCP转UDP服务。转载 2022-12-01 21:34:08 · 465 阅读 · 0 评论 -
InvokeHandler
【代码】InvokeHandler。原创 2022-12-01 21:34:56 · 307 阅读 · 0 评论 -
正则表达式 用给定字符掩码字符串中的出现的单词
【代码】用给定字符掩码字符串中的出现的单词。原创 2022-11-30 19:04:40 · 207 阅读 · 0 评论 -
将XML实例化为对象。
【代码】将XML实例化为对象。原创 2022-11-26 11:27:41 · 851 阅读 · 0 评论 -
基于多线程的高性能异步日志管理机制与实现
为了解决这个问题,本文设计了一套基于多线程的在内存中追加日志后再写入文件的缓冲机制,从而解决这个问题。经测试,在没有任何特别文件读写优化的情况下,每秒可以实现20万条长度为30字节的日志的硬盘(SSD)写入。通常在日志写的过程,每次写日志时,都是直接写入文件中。多线程用于日志数据的收集和写入文件。本机制采用一个独立的线程,每隔一定的时间,根据日志列表中是否有新的数据,再决定向指定的文件追加日志信息。当日志在生成以后,先写入缓冲中,从而利用高速的内存可以以极高的速度写入数据。LogManager 类。原创 2022-11-04 16:14:50 · 317 阅读 · 0 评论 -
.net异常处理
3、非可等待的Task内部异常会触发TaskScheduler_UnobservedTaskException事件,导致系统崩溃,所以建议Task内部自行处理根异常或将异常封装为事件推到主线程。2、 组件或控件抛出异常时可以根据需要自定义一些异常,不要抛出根异常,可以直接使用的常用异常有:FormatException、IndexOutOfRangException、InvalidOperationException、InvalidEnumArgumentException;在发生未捕获线程异常时发生。原创 2022-11-04 16:07:58 · 961 阅读 · 0 评论 -
泛型+自定义属性 实现 DataTable转换成实体类
【代码】泛型+自定义属性 实现 DataTable转换成实体类。原创 2022-11-02 11:19:17 · 252 阅读 · 0 评论 -
RESTful 服务和 HTTP 操作谓词的基础知识
Restful的本质一种基于资源的软件架构风格.核心面向资源设计API解决的问题降低开发的复杂性提供系统的可伸缩性只需设计一套相同的后端处理接口,就可以为不同类型的终端(PC、Mobile等)提供服务。设计概念和准则网络上的所有事物都可以被抽象为资源;每一个资源都有唯一的资源标识,对资源的操作不会改变这些标识;所有的操作都是无状态的(每次操作都是独立的,互不关联)资源网络上的一个实体,或网络上的一个具体信息(文字、图片、视频、音频等)。Restful API从定义上来说原创 2021-06-20 12:39:31 · 872 阅读 · 0 评论 -
winform客户端发送POST请求调用API接口传递参数
API接受POST请求,原创 2022-02-14 18:30:01 · 3997 阅读 · 0 评论 -
BackgroundWorker 类-如何:在后台下载文件
若要尝试此代码,请创建Windows 窗体应用程序。添加一个名为resultLabel的控件,并添加两Button个名为LabelstartAsyncButton和 cancelAsyncButton. 为这两个按钮创建 Click 事件处理程序。原创 2022-11-01 12:23:37 · 257 阅读 · 0 评论 -
C#中Linq用法汇集
在From子句之后,可以使用不同的标准查询运算符来过滤,分组和集合的元素。在上图中,我们使用了“where”运算符(aka子句)后跟一个条件。版权声明:本文为CSDN博主「Hi-Sunshine」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。方法语法(也称为流利语法)使用Enumerable或Queryable静态类中包含的扩展方法,类似于您将如何调用任何类的扩展方法。查询语法从一个From子句开始,然后是一个Range变量。在从子句结构类似,意味着从集合中的每个对象。转载 2022-06-28 17:51:00 · 6322 阅读 · 0 评论 -
长连接,短连接,Socket通讯ping pong(长连接)
1.Socket读写数据:流Socket,数据包Socket?流套接字(SOCK_STREAM):(1)流套接字用于提供面向连接、可靠的数据传输服务。(2)该服务将保证数据能够实现无差错、无重复发送,并按顺序接收。(3)流套接字之所以能够实现可靠的数据服务,原因在于其使用了传输控制协议,即TCP(The Transmission Control Protocol)协议。数据报套接字(SOCK_DGRAM):(1)数据报套接字提供了一种无连接的服务。(2)该服务并不能保证数据传输的可靠性,数据有原创 2022-10-24 23:12:27 · 1651 阅读 · 0 评论 -
聊聊分布式事务,再说说解决方案
数据库进行任何写入操作的时候都是要先写日志的,同样的道理,我们在执行事务的时候数据库首先会记录下这个事务的redo操作日志,然后才开始真正操作数据库,在操作之前首先会把日志文件写入磁盘,那么当突然断电的时候,即使操作没有完成,在重新启动数据库时候,数据库会根据当前数据的情况进行undo回滚或者是redo前滚,这样就保证了数据的强一致性。为什么要提到这个知识点呢?错了,你随便打开其中任意一个节点的Dashboard,点一下就可以切换到你想看的节点的控制台界面了,就像你看本地的数据一样,他们是完全去中心化的。原创 2022-10-24 23:06:17 · 101 阅读 · 0 评论 -
面向过程、面向对象、泛型程序设计的对比分析
泛型比较原创 2022-10-24 23:03:07 · 111 阅读 · 0 评论 -
为什么要使用LINQ
虽然使用delegate可以使程序的可读性增加了,但是C#团队认为他们仍然需要使代码更加紧凑和可读,所以他们在C#3.0中引入了扩展方法、Lambda表达式、匿名类型等新特性,你可以使用C#3.0的这些新特性,这些新特性的使用LINQ的前提,可以用来查询不同类型的集合,并返回需要的结果。在上面的例子中可以看到,我们在单个语句中使用LINQ和Lambda表达式指定不同的查询条件,因此,LINQ使代码更加紧凑和可读,并且它也可以用于查询不同的数据源。假设有一个整数类型的数组,找到里面的偶数并进行降序排序。原创 2022-10-24 23:01:57 · 273 阅读 · 0 评论 -
.Net中的锁的概念
与自旋锁一样,操作系统提供的互斥锁内部有一个数值表示是否已经被获取,不同的是当获取锁失败时,它不会反复重试,而是安排获取锁的线程进入等待状态,并把线程对象添加到锁关联的队列中,另一个线程释放锁时会检查队列中是否有线程对象,如果有则通知操作系统唤醒该线程。读写锁分为读取锁和写入锁,线程可以根据对共享资源的操作类型选择获取读写锁还是写入锁,读取锁可以被多个线程同时获取,写入锁不可以被多个线程同时获取,而且读取锁和写入锁不可以被不同的线程同时获取。原创 2022-10-24 22:57:51 · 473 阅读 · 0 评论 -
Singleton单例模式最佳实践
单例模式最佳实践饿汉式实现很简单,在静态构造函数中立即进行实例化:public class Singleton{ private static readonly Singleton _instance; static Singleton() { _instance = new Singleton(); } public static Singleton Instance { get {原创 2022-10-24 22:54:56 · 125 阅读 · 0 评论 -
C#中HttpWebRequest、WebClient、HttpClient的使用详解
命名空间System.Net,WebClient是一种更高级别的抽象,是HttpWebRequest为了简化最常见任务而创建的,使用过程中你会发现他缺少基本的header,timeoust的设置,不过这些可以通过继承httpwebrequest来实现。相对来说,WebClient比WebRequest更加简单,它相当于封装了request和response方法,不过需要说明的是,Webclient和WebRequest继承的是不同类,两者在继承上没有任何关系。单例创建步骤:1、定义静态私有对象;原创 2022-10-24 22:53:58 · 4481 阅读 · 0 评论 -
微软线程发展历史
1、使用多线程的时候,尽量不要是用Thread,ThreadPool2、最好使用Task,Parallel,async/await3、使用委托进行异步操作的时候,尽量不要自己声明委托了,因为微软已经提供了Action 、Func两种委托,足够使用了4、使用线程的时候要注意异常的捕获,和线程安全问题异步方法旨在成为非阻塞操作。当等待的任务正在运行时,异步方法中的await表达式不会阻塞当前线程。相反,表达式将方法的其余部分注册为延续,并将控制权返回给异步方法的调用者。原创 2022-10-24 22:52:24 · 115 阅读 · 0 评论 -
IEnumerable & IEnumerator
【代码】IEnumerable & IEnumerator。原创 2022-10-24 20:01:08 · 123 阅读 · 0 评论 -
多线程、并行、异步编程
ThreadStart 指向的方法没有参数和返回值的方法。 局限性是用户无法给过程传递参数。ParameterizedThreadStart 有参数无返回值。 参数可以通过结构或者类传递参数。System.oBJECT.ParameterizedThreadStart 委托TimerCallback 委托ThreadPool线程池的好处:线程的好处:AutoResetEvent 类概念#AutoResetEvent对象用来进行线程同步操作,AutoResetEvent类继承原创 2022-10-23 23:12:26 · 427 阅读 · 0 评论 -
Delegate、Event、Lambda
除了回调意外,委托的另一个用处就是和事件绑定,事件和回调差不多,但事件可以做到一对多,比如说:一个班级 = 命名空间,班级里的学生 = 类 ,老师 = 事件发布者,上课= 事件,起立=事件发生时学生类应该执行的函数,一个一个调用还是太傻了,事件的优势就在这里,只需要判断事件是否发生,如果发生,就告诉所有订阅者执行绑定在事件上的函数。原创 2022-10-23 00:03:00 · 615 阅读 · 0 评论 -
ICloneable和IComparable
对于所有面向对象的语言,复制永远是一个容易引发讨论的题目,C#中也不例外。此类问题在面试中极其容易被问到,我们应该在了解浅拷贝和深拷贝基本概念的基础上,从设计的角度进一步考虑如何支持对象的拷贝。原创 2022-10-22 12:50:00 · 688 阅读 · 0 评论 -
集合和泛型
更专业的解析强点击上面蓝色文字。原创 2022-10-21 22:15:18 · 331 阅读 · 0 评论 -
.NET中的泛型集合
.NET中的泛型集合近对集合相关的命名空间比较感兴趣,以前也就用下List, Dictionary<Tkey, TValue>之类,总之,比较小白。点开N多博客,MSDN,StackOverflow,没找到令我完全满意的答案,本打算自己总结下写出来,工作量好大的感觉……直到昨晚随意翻到看了一些又放下的《深入理解C#》-附录B部分,高兴地简直要叫出来——“这总结真是太绝了,好书不愧是好书”。真是“踏破铁鞋无觅处,得来全不费工夫”,最好的资源就在眼下,而自己居然浑然不知。或许只有深入技术细节的时候原创 2022-02-16 07:21:53 · 1129 阅读 · 0 评论 -
C#面向对象类的简议
就.net平台而言,最基本的编程结构就是类类型。类是由字段数据(通常叫成员或者变量)和操作这些数据的成员(函数、属性、事件、方法)所构成的自定义类型。字段数据用来表示类的实例(或称为对象)的“状态”。通过将数据和相关功能集合在类定义中,我们就可以仿照现实生活中的实体来设计软件。原创 2022-10-21 20:17:38 · 397 阅读 · 0 评论 -
System.Object的核心成员解析
【代码】System.Object的核心成员解析。原创 2022-10-21 11:55:51 · 136 阅读 · 0 评论