经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
 C#
C#中WPF内存回收与释放LierdaCracker的实现

C#中WPF内存回收与释放LierdaCracker的实现

使用wpf程序常常会出现一个问题,那就是内存占用过高,使用wpf的程序功能越复杂往往用着用着内存就本着90往上去了。 一方面wpf本身是一个ui框架,对图像以及界面的渲染虽然提高了软件的美观性,但实际使用过程中调用和消耗了大量的内存来进行协同处理;另一方面这些调用的内存的确在使用完成之后并没有...[2022/7/4]

C#实现万物皆可排序的队列方法详解

C#实现万物皆可排序的队列方法详解

需求 产品中需要向不同的客户推送数据,原来的实现是每条数据产生后就立即向客户推送数据,走的的是HTTP协议。因为每条数据都比较小,而数据生成的频次也比较高,这就会频繁的建立HTTP连接,而且每次HTTP传输中携带的业务数据都很小,对网络的实际利用率不高。希望能够提高网络的利用率,并降低系统的负载...[2022/7/4]

C#对桌面应用程序自定义鼠标光标

有的时候,一个自定义的鼠标光标能给你的程序增色不少。本文这里介绍一下如何在.net桌面程序中自定义鼠标光标。由于.net的桌面程序分为WinForm和WPF两种,这里分别介绍一下。 WinForm程序 对于WinForm程序,可以通过修改Control.Cursor属性来实现光标的修改,如果...[2022/6/27]

C# Unicode编码解码的实现

Unicode是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。 在表示一个Unicode的字符时,通常会用&ldqu...[2022/6/21]

C#中使用Cache框架快速实现Cache操作

.NET 4.0中新增了一个System.Runtime.Caching的名字空间,它提供了一系列可扩展的Cache框架,本文就简单的介绍一下如何使用它给程序添加Cache。 一个Cache框架主要包括三个部分:ObjectCache、CacheItemPolicy、ChangeMonitor...[2022/6/20]

C#实现快速查询文件的方法

相信使用过Everything的人都对其超快的搜索速度印象非常深刻,它的主要原理是通过扫描NTFS磁盘的USN Journal读取的文件列表,而不是磁盘目录,由于USN Journal非常小,因此能实现快速搜索。 由于.Net程序的Dll基本上是通用的,在C#中也可以直接使用它。 ...[2022/6/20]

C#中的composite模式示例详解

目录写在前面一个简单例子基层员工类经理类公司架构类客户端代码再想一下使用组合模式进行重构透明型安全型重构后的代码(透明型) 写在前面 Composite组合模式属于设计模式中比较热门的一个,相信大家对它一定不像对访问者模式那么陌生,毕竟谁又没有遇到过树形结构呢。不过所谓温故而知新,我们还是从一个...[2022/6/20]

C#集合查询Linq在项目中使用详解

目录Linq LambdaLinq项目中的一次使用经历Linq to js [在前端的应用] 要说哪门后端语言的语法优雅,那就不得不提C#,而在我看来,LINQ语法可以说是其优雅的重要一环! 通常后端从数据库查询出来的数据并不是直接返回给前端使用的(不然前端....),而是需要进行二次的加工筛选...[2022/5/30]

C#?泛型集合类List<T>使用总结

目录为什么选择使用List,而不是使用Array,或者ArryList去重、交集、并集、差集操作重写Equals() 和 GetHashCode()简单使用 C#中List可谓是使用最广泛的一种数据类型了,使用他来规范数据时,往往会涉及到对数据的处理操作,相关处理数据方法也非常丰富,本文将简单介绍为...[2022/5/30]

C#并行编程之Task任务

C#并行编程之Task任务

任务,基于线程池。其使我们对并行编程变得更简单,且不用关心底层是怎么实现的。System.Threading.Tasks.Task类是Task Programming Library(TPL)中最核心的一个类。 一、任务与线程 1:任务是架构在线程之上的,也就是说任务最终还是要抛给线程去执行...[2022/5/9]

C#使用SharpZipLib压缩解压文件

一、介绍 SharpZipLib是一个完全由C#编写的ZIP,GZIP,Tar和BZIP2 Library,可以方便的支持这几种格式的压缩和解压缩。 https: github.com/icsharpcode/SharpZipLib 下载解压SharpZipLib ,将 ICSha...[2022/5/9]

事务在c#中的使用

目录一、概述1、事务ACID特性2、.NET开发者用到的5种事务机制:二、数据库事务1、不同数据库的事务规则2、数据库事务的优势和限制(1)优势:(2)限制:三、ADO.Net事务四、System.EnterpriseServices自动事务处理五、System.Transactions事务1、显式...[2022/5/9]

C#使用读写锁解决多线程并发问题

C#使用读写锁解决多线程并发问题

一、简介 在开发程序的过程中,难免少不了写入错误日志这个关键功能。实现这个功能,可以选择使用第三方日志插件,也可以选择使用数据库,还可以自己写个简单的方法把错误信息记录到日志文件。现在我们来讲下最后一种方法: 在选择最后一种方法实现的时候,若对文件操作与线程同步不熟悉,问题就有可能出现了,因...[2022/4/18]

C#集合之列表的用法

目录1.创建列表2.添加元素3.插入元素4.访问元素5.删除元素6.搜索7.排序8.类型转换9.只读集合 .NET Framework为动态列表List提供泛型类List<T>。这个类实现了IList,ICollection,IEnumerable,IList<T>,ICol...[2022/4/12]

c#之事件用法

c#之事件用法

事件基于委托,可以为任何一种委托类型提供一种发布\订阅机制。使用event关键字将一个委托类型定义为事件。下面通过一个例子介绍事件: 事件发布类 public cla PublishEvent { public delegate...[2022/4/11]

C#中的数组用法详解

目录一.简单数组(一维数组)1.数组的声明2.数组的初始化3.访问数组元素4.数组中使用引用类型二.多维数组三.锯齿数组四.Array类1.创建数组2.复制数组3.排序五.数组作为参数1.数组协变2.ArraySegment<T>六.枚举集合1.IEnumerator接口2.foreac...[2022/4/11]

C#中的委托详解

C#中的委托详解

如果要给方法传递一个方法参数时,就可以使用委托。要传递方法,就必须把方法的细节封装在一钟新类型的对象中,即委托。委托是一种特殊类型的对象,其特殊之处在于,我们以前定义的所有对象都包含数据,而委托只包含一个或多个方法的地址。.NET版本中,委托指向方法的地址。在C++中,函数指针是一个指向内存位置的...[2022/4/11]

C#泛型接口的协变和逆变

1、什么是协变、逆变? 假设:TSub是TParent的子类。协变:如果一个泛型接口IFoo<T>,IFoo<TSub>可以转换为IFoo<TParent>的话,我们称这个过程为协变,IFoo支持对参数T的协变。逆变:如果一个泛型接口IFoo<T>...[2022/4/11]

C#之继承实现

目录一.继承的类型1.实现继承和接口继承2.多重继承3.结构的继承二.继承的实现1.虚方法2.隐藏方法3.调用函数的基类版本4.抽象类和抽象函数5.密封类和密封方法6.派生类的构造函数三. 修饰符1.可见性修饰符2.其它修饰符四.接口 一.继承的类型 在面向对象的编程中,有两种截然不同继承类型:...[2022/4/11]

浅谈C#多线程下的调优

目录一、原子操作1.基于Lock实现2.基于CAS实现3.自旋锁SpinLock4.读写锁ReaderWriterLockSlim二、线程安全1.线程安全集合2.线程安全字典三、线程池1.通过QueueUserWorkItem启动工作者线程2.线程池等待(信号量)3.Task4.线程池调度原理四、并...[2022/4/7]

C#基于Socket的网络通信类你了解吗

目录摘要代码总结 摘要 之所以要进行Socket套接字通信库封装,主要是直接使用套接字进行网络通信编程相对复杂,特别对于初学者而言。实际上微软从.net 2.0开始已经提供了TCP、UDP通信高级封装类如下: TcpListener TcpClient UdpClient 微软从.n...[2022/3/29]

C#类型转换之自定义隐式转换和显式转换

目录前言基础知识示例代码实际应用问题答案报错其他应用和设计读音 前言 有时我们会遇到这么一种情况:在json数据里,数组里的数据类型不一致,导致我们不能直接反序列化为目标类型。最终我们只能反序列化为JObject类型,然后通过字符串取值的方式来取出数据。 下面介绍一种新方式:通过自定义隐式转...[2022/3/29]

C#开发WinForm根据条件改变DataGridView行颜色

根据条件改变DataGridView行的颜色可以使用RowPrePaint事件。 示例程序界面如下: 示例程序代码如下: using System; using System.Collections.Generic; using System.ComponentModel; ...[2022/3/7]

C#开发WinForm清空DataGridView控件绑定的数据

C#开发WinForm清空DataGridView控件绑定的数据

使用DataGridView控件绑定数据后有时需要清空绑定的数据,在清除DataGridView绑定的数据时: 1、设置DataSource为null this.dgvDemo.DataSource = null 这样虽然可以清空DataGridView绑定的数据,但是DataGrid...[2022/3/7]

C#反射机制介绍

先看下面一个动物点名系统的简单例子: 有一个Animal的抽象动物父类,里面定义了Name、Age两个属性和一个Shout()方法,Animal类定义如下: using System; using System.Collections.Generic; using System.Lin...[2022/3/7]

C#面向对象设计原则之里氏替换原则

里氏替换原则(LSP) 定义:在任何父类出现的地方都可以用它的子类类替换,且不影响功能。解释说明:其实LSP是对开闭原则的一个扩展,在OO思想中,我们知道对象是由一系列的状态和行为组成的,里氏替换原则说的就是在一个继承体系中,对象应该具有共同的外在特性,使用LSP时,如果想让我们的程序达到一个父...[2022/3/2]

C#面向对象设计原则之接口隔离原则

C#面向对象设计原则之接口隔离原则

接口隔离原则(ISP)  定义:使用多个专门的接口比使用单一的总接口要好。即不要把鸡蛋都放到一个篮子里。  好处:比较灵活、方便,不想实现的或不用实现的可以不实现。解释说明:  大部分人都喜欢用一个接口把需要用到的方法全部声明出来,但是ISP建议我们使用多个专门的接口比使用单一的总接口要好,也就是...[2022/3/2]

用?FieldMask?提高?C#?gRpc?的服务性能

目录前言:一.FieldMask二、Demo?1.定义.proto文件??2.实现服务端??3.实现客户端??4.修改服务端? 前言: 想象一下,有一个服务提供个多个客户端调用,但不是所有客户端都需要全部的返回参数: ?比如商品列表服务返回商品的所有信息,而订单服务调用商品列表服务,但它其实...[2022/3/2]

C#面向对象设计原则之组合/聚合复用原则

C#面向对象设计原则之组合/聚合复用原则

组合/聚合复用原则(LSP) 定义:优先使用组合,使系统更灵活,其次才考虑继承,达到复用的目的。重用的方式:继承、组合、聚合解释说明: 继承:在我们想复用代码时,我们一般会优先想到继承,但是具有继承关系的两个类是耦合度最高的两个类。(父类改了子类可能会受影响,子类改了父类也可能会受影响)如果父...[2022/3/2]

简单聊聊C#字符串构建利器StringBuilder

目录前言简单示例源码探究构造入手无参构造带参数的构造构造小结核心方法转换成字符串对比java实现总结 前言 在日常的开发中StringBuilder大家肯定都有用过,甚至用的很多。毕竟大家都知道一个不成文的规范,当需要高频的大量的构建字符串的时候StringBuilder的性能是要高于直接对字符...[2022/3/2]

C#实现提取Word中插入的多媒体文件(视频,音频)

目录dll文件安装(3种方法)提取文件完整代码C#VB.NET 在Word中可将文件通过OLE对象嵌入的方式插入到文档,包括Word、excel、PDF、PPT、图片、宏文件、文件包等在内的多种文件类型。对文档中已插入的文档对象,也可通过本文中的方法提取出来另存到指定路径。本文将通过C#程序代码示例...[2022/2/28]

LINQ排序操作符用法

Linq中的排序操作符包括OrderBy、OrderByDescending、ThenBy、ThenByDescending和Reverse,提供了升序或者降序排序。 一、OrderBy操作符 OrderBy操作符用于对输入序列中的元素进行排序,排序基于一个委托方法的返回值顺序。排序过...[2022/2/28]

C#使用log4net打日志

首先打开vs,右击解决方案,点击管理解决方案的Nuget包管理 然后我们点击浏览,搜索log4net,进行安装 然后我们需要新建一个名为log4net.config的配置文件,在配置文件中,加入以下代码 <configSections> <s...[2022/2/28]

C#元组类型ValueTuple用法详解

System.Tuple 类型是在.NET 4.0中引入的,但是有两个明显的缺点:(1) Tuple 类型是引用类型。(2) 没有构造函数支持。 为了解决这些问题,C# 7 引入了新的语言功能以及新的类型。 现在,如果您需要从函数中返回两个值的合并结果,或者把两个值合并到一个哈希...[2022/2/22]

c#中token的使用方法实例

目录token的存在意义使用方法 token的存在意义 这是我初略了解的token的存在意义 用户使用用户名密码来请求服务器服务器进行验证用户的信息服务器通过验证发送给用户一个token客户端存储token,并在每次请求时附送上这个token值服务端验证token值,并返回数据 使用方法 ...[2022/2/14]

C#中IntPtr类型的具体使用

什么是IntPtr 先来看看MSDN上说的:用于表示指针或句柄的平台特定类型。这个其实说出了这样两个事实,IntPtr 可以用来表示指针或句柄、它是一个平台特定类型。 C#中的IntPtr类型称为“平台特定的整数类型”,它们用于本机资源,如窗口句柄。资源的大小取决于使...[2022/2/14]

C#中Task.ContinueWith连续任务使用实例

通过任务,可以指定在任务完成之后,应开始运行之后另一个特定任务。例如,一个使用前一个任务的结果的新任务,如果前一个任务失败了,这个任务就应执行一些清理工作。任务处理程序都不带参数或者带一个对象参数,而任务的连续处理方法都有一个Task类型的参数,这里可以访问起始任务的相关信息: 如下面的示例代...[2022/2/14]

c#中task与thread区别及其使用的方法示例

目录1.什么是thread2.什么是task3.创建一个task任务有两种模式: 1.什么是thread 当我们提及多线程的时候会想到thread和threadpool,这都是异步操作,threadpool其实就是thread的集合,具有很多优势,不过在任务多的时候全局队列会存在竞争而消耗资源。...[2022/2/14]

C#中HttpClient使用注意(预热与长连接)

最近在测试一个第三方API,准备集成在我们的网站应用中。API的调用使用的是.NET中的HttpClient,由于这个API会在关键业务中用到,对调用API的整体响应速度有严格要求,所以对HttpClient有了格外的关注。 开始测试的时候,只在客户端通过HttpClient用PostAsyn...[2022/2/14]

C#多线程系列之读写锁

本篇的内容主要是介绍 ReaderWriterLockSlim 类,来实现多线程下的读写分离。 ReaderWriterLockSlim ReaderWriterLock 类:定义支持单个写线程和多个读线程的锁。 ReaderWriterLockSlim 类:表示用于管理资源访问的锁定状...[2022/2/14]

c#互斥锁Mutex类用法介绍

c#互斥锁Mutex类用法介绍

什么是Mutex “mutex”是术语“互相排斥(mutually exclusive)”的简写形式,也就是互斥量。互斥量跟临界区中提到的Monitor很相似,只有拥有互斥对象的线程才具有访问资源的权限,由于互斥对象只有一个,因此就决定了...[2022/2/14]

C#多线程系列之进程同步Mutex类

Mutex 中文为互斥,Mutex 类叫做互斥锁。它还可用于进程间同步的同步基元。 Mutex 跟 lock 相似,但是 Mutex 支持多个进程。Mutex 大约比 lock 慢 20 倍。 互斥锁(Mutex),用于多线程中防止两条线程同时对一个公共资源进行读写的机制。 Window...[2022/2/14]

C#多线程系列之资源池限制

Semaphore、SemaphoreSlim 类 两者都可以限制同时访问某一资源或资源池的线程数。 这里先不扯理论,我们从案例入手,通过示例代码,慢慢深入了解。 Semaphore 类 这里,先列出 Semaphore 类常用的 API。 其构造函数如下: 构造函数说明Sema...[2022/2/14]

C#多线程系列之线程通知

AutoRestEvent 类用于从一个线程向另一个线程发送通知。 微软文档是这样介绍的:表示线程同步事件在一个等待线程释放后收到信号时自动重置。 其构造函数只有一个: 构造函数里面的参数用于设置信号状态。 构造函数说明AutoResetEvent(Boolean)用一个指示是否将初...[2022/2/14]

C#多线程系列之手动线程通知

区别与示例 AutoResetEvent 和 ManualResetEvent 十分相似。两者之间的区别,在于前者是自动(Auto),后者是手动(Manua)。 你可以先运行下面的示例,再测试两者的区别。 AutoResetEvent 示例: cla Program ...[2022/2/14]

C#多线程系列之线程完成数

解决一个问题 假如,程序需要向一个 Web 发送 5 次请求,受网路波动影响,有一定几率请求失败。如果失败了,就需要重试。 示例代码如下: cla Program { private static int count = 0; st...[2022/2/14]

C#多线程系列之多阶段并行线程

前言 这一篇,我们将学习用于实现并行任务、使得多个线程有序同步完成多个阶段的任务。 应用场景主要是控制 N 个线程(可随时增加或减少执行的线程),使得多线程在能够在 M 个阶段中保持同步。 线程工作情况如下: 我们接下来 将学习C# 中的 Barrier ,用于实现并行协同工作...[2022/2/14]

如何用C#实现SAGA分布式事务

目录背景成功的 SAGA异常的 SAGA子事务屏障写在最后 背景 银行跨行转账业务是一个典型分布式事务场景,假设 A 需要跨行转账给 B,那么就涉及两个银行的数据,无法通过一个数据库的本地事务保证转账的 ACID ,只能够通过分布式事务来解决。 市面上使用比较多的分布式事务框架,支持 SAG...[2022/1/24]

C#实现NPOI的Excel导出详解

技术点: 1.自定义attribute属性 2.通过反射取类及其属性的attribute属性值 3.NPOI包常用属性及方法(我也仅仅知道用到过的,陌生的要么见名知意,要么百度查) 实现功能点: List类对象的模板导出,实用场景例子见最后代码块(emm...还是比较抽象,代码...[2022/1/19]

C#中逆变的实际应用场景详解

目录前言协变的应用场景逆变的应用场景讨论总结 前言 早期在学习泛型的协变与逆变时,网上的文章讲解、例子算是能看懂,但关于逆变的具体应用场景这方面的知识,我并没有深刻的认识。本文将在具体的场景下,从泛型接口设计的角度出发,逐步探讨逆变的作用,以及它能帮助我们解决哪方面的问题? 这篇文章算是协变...[2022/1/19]

147
2
记录数:2386 页数:1/4812345678910下一页尾页
 友情链接: NPS
加载更多