c#
文章平均质量分 77
猿长大人
一专多精 触类旁通
展开
-
C# | WinForm控件常用方法——DataGridView数据网格控件(表头/数据居中 、整行选中 、单选限制 、获取数据 、监听改变 、行高列宽 、条件筛选)
表头居中 、数据居中 、整行选中 、单选限制 、获取数据 、监听改变 、行高列宽 、条件筛选 在WinForm开发中,DataGridView控件是一个功能强大且常用的数据展示和交互控件。本文将分享DataGridView控件的常用的方法和技巧。原创 2024-06-28 10:01:50 · 1051 阅读 · 3 评论 -
C# | Type类型方法速查一览表(带你解读Type方法的作用)
经常写BUG的同学都知道,Type类型非常重要,因为它代表了一个对象的类型信息,通过它我们可以动态地获取和操作类型信息。熟悉它的属性和方法可以使我们更加灵活地进行反射。反射是一个非常强大的特性,它允许我们在程序运行时动态地获取类型的信息、调用对象的方法和属性、创建实例等操作,这种灵活性使我们能够在运行时对类型进行操作,这对于一些框架和库的开发来说是非常重要的,我们可以实现很多在静态编译时无法实现的功能,比如动态地加载组件、实现插件系统、生成代码等。本文整理了C#中Type类型的方法、返回类型、说明和备注。原创 2024-01-01 23:58:30 · 1888 阅读 · 0 评论 -
C# | CountdownEvent使用教程 (通过与ManualResetEvent对比,快速了解其特性)
CountdownEvent也是一个线程同步原语,但它与ManualResetEvent有着不同的特点。CountdownEvent维护一个计数,当计数为零时,所有等待的线程会被释放。我们可以通过AddCount方法增加计数,通过Signal方法减少计数。特点状态有信号或无信号计数减为零释放方式调用Set方法释放线程计数减为零时自动释放线程增加计数方式无调用AddCount方法增加计数。原创 2023-12-13 14:11:13 · 423 阅读 · 0 评论 -
C# | 对比不同种类的锁
在C#编程中,想要保护共享资源,通常会用到各种类型的锁。今天我们就来一起看看C#中不同种类的锁,包括它们的异同点和使用方法。原创 2023-12-09 16:30:29 · 325 阅读 · 0 评论 -
C# | 使用AutoResetEvent和ManualResetEvent进行线程同步和通信
在多线程编程中,AutoResetEvent 和 ManualResetEvent 是两个常用的同步原语。它们用于线程间的通信和协调,以确保线程按照特定的顺序执行。本篇博客将介绍这两种同步原语的概念、用法和区别。原创 2023-12-04 17:27:28 · 948 阅读 · 0 评论 -
C# | Chaikin算法 —— 计算折线对应的平滑曲线坐标点
本文将介绍一种计算折线对应的平滑曲线坐标点的算法。该算法使用Chaikin曲线平滑处理的方法,通过控制张力因子和迭代次数来调整曲线的平滑程度和精度。通过对原始点集合进行切割和插值操作,得到平滑的曲线坐标点集合。实验结果表明,该算法能够有效地平滑折线,并且具有较高的精度和可控性。原创 2023-10-28 18:03:33 · 1118 阅读 · 0 评论 -
C# | Linq基本功 —— 必学的必熟的10个方法
Linq(Language Integrated Query)是C#语言中的一种查询语言,它提供了一种统一的方式来查询和操作各种数据源,如集合、数据库、XML等。Linq的出现使得开发者能够以一种更简洁、更直观的方式来处理数据,提高了代码的可读性和可维护性。本文介绍了C# Linq中一些作为基本的扩展方法的使用。掌握这些方法可以帮助开发者更加高效地处理数据。不夸张的说作为一个.NET工程师,不熟练掌握Linq的使用便是不合格。原创 2023-10-24 18:05:08 · 1606 阅读 · 0 评论 -
C# | DBSCAN聚类算法实现 —— 对直角坐标系中临近点的点进行聚类
聚类算法是一种通过对数据对象进行分组,使得同一组内的对象彼此相似,而不同组之间的对象差异较大的算法。聚类算法的目标是发现数据中的内在结构,并根据对象之间的相似性进行分类。DBSCAN算法是一种基于密度的聚类算法,其核心思想是将高密度区域划分为簇,并将低密度区域视为噪声。DBSCAN算法不需要预先指定聚类数量,能够自动发现不同形状和大小的簇,并且对数据分布的要求较低。原创 2023-08-31 01:13:24 · 1143 阅读 · 0 评论 -
C# | [极坐标] 与 [平面直角系坐标] 的相互转换
极坐标和平面直角系坐标是常见的坐标系统,它们在不同的应用场景中都有重要的作用。而在计算机图形学、物理模拟和机器人控制等领域,我们经常需要在极坐标和平面直角系坐标之间进行转换。极坐标使用极径和极角来表示点的位置,而平面直角系坐标使用x和y坐标表示点的位置。本文将介绍如何进行这两种坐标系统的相互转换,并提供了使用C#编写的代码示例。原创 2023-07-21 14:10:06 · 1059 阅读 · 0 评论 -
C# | 二分查找算法的实现
二分查找法一种在有序数组中查找目标值的算法。划重点——“有序”,与需要遍历整个数组的查询算法不同,二分查找法通过将数组分成两部分来快速定位目标值所在的位置。二分查找法有什么用呢?它的主要好处在于它的效率很高。因为它能够通过每次排除一半的元素来快速缩小搜索范围,因此在大型数据集上使用二分查找法可以显著提高查找速度。比较一下二分查找法和其他常见的查找算法的效率。相比于顺序查找法,它的平均时间复杂度更低,可以达到O(log n)。原创 2023-06-04 23:58:17 · 801 阅读 · 1 评论 -
C# | 【完全开源】手机号码归属地查询,一秒内百万次查询
这个开源项目是一个.NET库,可以通过手机号码获取号码归属地信息,包括运营商、国家、省份、城市、邮政编码、区号等信息。该库加载了一个包含46万条数据的“中国手机号归属地信息”数据集,并实现了高速查询。在我的7年老笔记本上执行一百万次查询耗时不足一秒。原创 2023-06-04 22:37:40 · 1215 阅读 · 0 评论 -
C# | 使用Memory<T>高效地读写内存数据
Memory是C# 7.2版本中引入的一种新类型,可以更加高效地读写内存数据。本文将介绍它的用途以及如何使用它来优化代码。PS:由于微软的文档实在是太简约,故写此篇。Memory是什么?它是一种可变大小、可读写的内存块,可以安全地暴露给用户代码进行操作。为什么要使用Memory?使用它有许多好处。最主要的是善用它可以提高代码的性能。因为Memory是可变的,所以我们可以直接在内存中操作数据,而不需要进行额外的拷贝操作。原创 2023-05-30 23:53:42 · 2518 阅读 · 1 评论 -
C# | 凸包算法之Andrew‘s,获取围绕一组点的凸多边形的轮廓点
这篇关于凸包算法的文章,本文使用C#和Andrew’s算法来实现凸包算法。什么是凸包呢?凸包是一个包围一组点的凸多边形。凸多边形是指多边形中的每个内角都小于180度的多边形。凸包算法有什么用呢?凸包算法的作用是找到这个凸多边形,并且使用最少的点来绘制出它的轮廓。凸包算法在计算机图形学、计算几何和机器学习等领域中有着广泛的应用。原创 2023-05-28 22:56:16 · 1349 阅读 · 2 评论 -
C# | 凸包算法之Jarvis,寻找一组点的边界/轮廓
这篇关于凸包算法的文章,本文使用C#和Jarvis算法来实现凸包算法。什么是凸包呢?凸包是一个包围一组点的凸多边形。凸多边形是指多边形中的每个内角都小于180度的多边形。凸包算法有什么用呢?凸包算法的作用是找到这个凸多边形,并且使用最少的点来绘制出它的轮廓。凸包算法在计算机图形学、计算几何和机器学习等领域中有着广泛的应用。原创 2023-05-28 22:39:45 · 1031 阅读 · 0 评论 -
C# | 凸包算法之Graham,快速找到一组点最外侧的凸多边形
这篇关于凸包算法的文章,本文使用C#和Graham算法来实现凸包算法。什么是凸包呢?凸包是一个包围一组点的凸多边形。凸多边形是指多边形中的每个内角都小于180度的多边形。凸包算法有什么用呢?凸包算法的作用是找到这个凸多边形,并且使用最少的点来绘制出它的轮廓。凸包算法在计算机图形学、计算几何和机器学习等领域中有着广泛的应用。原创 2023-05-28 22:28:35 · 1119 阅读 · 0 评论 -
C# | 线性回归算法的实现,只需采集少量数据点,即可拟合整个数据集
什么是线性回归呢?简单来说,线性回归是一种用于建立两个变量之间线性关系的统计方法。在我们的软件开发中,线性回归可以应用于数据分析、预测和优化等领域。什么情况下会用到线性回归呢?举个例子,假设你需要采集0-100之间的十个值,并使用这十个值来拟合出所有的值。这样做的好处是,我们可以通过少量的数据点来得到一个可以描述整个数据集的模型。原创 2023-05-28 21:34:58 · 2344 阅读 · 0 评论 -
C# | KMeans聚类算法的实现,轻松将数据点分组成具有相似特征的簇
本章分享一下如何使用C#实现KMeans算法。在讲解代码前先清晰两个小问题:什么是聚类?聚类是将数据点根据其相似性分组的过程,它有很多的应用场景,比如:图像分割、文本分类、推荐系统等等。在这些应用场景里面我们需要将数据点分成多个簇,每个簇内的数据点具有相似的特征,以便于我们能够更简单的处理数据。什么是KMeans?KMeans算法是一种常用的聚类算法,它可以将数据点分组成具有相似特征的簇。原创 2023-05-21 22:54:49 · 1372 阅读 · 0 评论 -
C# | [二进制字符串] 与 [字节数组] 互相转换,一行代码就搞定! - CodePlus系列
开发中有时需要将二进制数据转换为字符串或相反。虽然.NET提供了一些用于二进制数据操作的类库,但是它们的使用有时候会比较繁琐。是一个.NET扩展库,它提供了很多实用的扩展方法,可以帮助我们更方便地进行二进制数据操作。在本文中,我们将介绍如何使用扩展库实现二进制字符串和字节数组的快速互相转换。原创 2023-05-19 14:51:20 · 1707 阅读 · 0 评论 -
C# | 内存池
在上一篇文章中,我们介绍了对象池的概念和实现方式。对象池通过重复利用对象,避免了频繁地创建和销毁对象,提高了系统的性能和稳定性。今天我们继续上一章的内容,当我们在某些场景下需要频繁地分配和释放内存的场景,我们可以继续开发一个内存池。内存池是一种管理内存分配和释放的机制。它通过在程序启动时预先分配一定数量的内存块,然后在需要使用内存时,从内存池中分配一块空闲内存,而不是每次都通过系统调用申请新的内存。当内存不再需要时,将其归还到内存池中,而不是直接释放内存。原创 2023-05-15 23:50:03 · 965 阅读 · 0 评论 -
C# | 对象池
当我们开发一个系统或者应用程序时,我们通常需要创建很多的对象,这些对象可能是线程、内存、数据库连接、文件句柄等等。在某些情况下,我们需要频繁地创建和销毁这些对象,这样会导致系统的性能下降和资源的浪费。这时,我们就可以使用对象池来管理这些对象,让它们可以被重复使用,从而提高程序的运行效率。那么,什么是对象池呢?简单来说,对象池就是预先创建一定数量的对象,并将它们存储在一个池中,当需要使用对象时,从对象池中获取一个对象,并在使用完毕后将其放回池中,以便可以多次重复使用。原创 2023-05-14 23:59:43 · 2422 阅读 · 1 评论 -
NetMQ | 实现TCP的发布订阅模式
NetMQ是一个轻量级、可扩展的消息队列库,支持多种消息传递模式和传输协议,包括TCP、InProc、IPC、Pipes等。本文我们将介绍如何使用NetMQ实现TCP的发布订阅模式。发布订阅模式是一种常用的消息传递模式,其中发布者向订阅者发送消息,订阅者可以选择订阅自己感兴趣的消息。在NetMQ中,TCP的发布订阅模式是通过使用和实现的。原创 2023-04-27 01:05:46 · 1407 阅读 · 0 评论 -
C#调试与测试 | DebuggerDisplay使用技巧
当你在开发一个大型的应用程序时,调试是一个不可避免的任务。调试器是你的好朋友,但是有时候它并不能直接给你所需的信息。。关于AttributeAttribute 是 C# 中一种特殊的类,它可以在编译时为类、方法、属性等元素添加元数据。在运行时,这些元数据可以被反射机制使用。它是一种很强大的元编程工具,可以让你在运行时获取更多的信息。DebuggerDisplay可以让你在调试器中显示你自己定义的字符串,代替默认的显示方式。换句话说,它可以让你在调试器中更加方便地查看对象的信息。原创 2023-04-14 00:45:32 · 986 阅读 · 0 评论 -
C# | 二进制字符串(“101010101”)、字节数组(byte[])互相转换
当我们在计算机中处理数据时,经常需要将数据从一种格式转换为另一种格式。而本文的将二进制字符串转换为字节数组听起来很稀松平常但实际又不是那么常见的特殊的转换方式。二进制字符串是由 0 和 1 组成的字符串,比如:“0111010010101000”。字节数组常用于读取和写入二进制文件、网络通信等。原创 2023-04-12 01:46:10 · 2849 阅读 · 0 评论 -
C# | 导出DataGridView中的数据到Excel、CSV、TXT
导出中的数据到是开发中经常遇到的需求。而将DataGridView中的数据先转换为DataTable格式,再进行导出,是一种常见的实现方式。本文将介绍如何将DataGridView中的数据转换为DataTable格式,并提供将DataTable转换为Excel、CSV、TXT三种格式的例子。将DataGridView中的数据转换为DataTable格式,有助于我们更方便地对数据进行处理和操作。原创 2023-04-11 00:06:54 · 6226 阅读 · 1 评论 -
C# | System.IO.Pipelines 很酷的读写数据流方式!
文本分享一种新的读写数据流方式 —— System.IO.Pipelines。这个东西在 .NET Core 2.1 中出现了,它能够帮助你更高效地处理数据流。原创 2023-04-10 00:16:50 · 1778 阅读 · 0 评论 -
C# | 上位机开发新手指南(六)摘要算法
你知道摘要算法么?它在保障数据安全方面非常有用!它能够将任意长度的数据转换成固定长度的消息摘要,从而确保数据的完整性和可靠性。比如说,我们下载软件的时候,就可以用摘要算法来检验软件是否被篡改,保障我们的电脑安全。那这个算法的工作原理是怎样的呢?大致就是通过一系列复杂的计算,将原始数据转换为一个固定长度的摘要信息。而且无论输入的数据大小,输出的摘要信息长度都是一样的。那么摘要算法有什么用处呢?比如数字签名,确保数据的来源和内容没有被篡改。还有密码学等领域的应用,可以说是非常厉害了!原创 2023-04-05 01:50:57 · 993 阅读 · 0 评论 -
C# | 上位机开发新手指南(五)校验算法——CRC
当我们在进行数据传输时,可能会因为信道噪声、干扰等因素导致数据出现错误,从而影响传输的可靠性和准确性。此时,我们需要一种方法来检测数据是否出现错误,并尽可能快速地发现和纠正错误。CRC(Cyclic Redundancy Check)校验算法就是一种常用的数据校验方法,它通过对数据进行处理生成校验码,从而实现对数据的完整性和准确性进行验证。使用CRC校验的意义在于能够提高数据传输的可靠性,降低数据传输错误率,确保数据的完整性和准确性。在各个领域中,如通信、网络、存储等,CRC校验都得到了广泛的应用。原创 2023-04-04 14:43:31 · 3149 阅读 · 2 评论 -
C# | 使用Chart动态展示实时折线图数据
实时折线图是展示数据变化趋势的有效方式,可以用于监控系统性能、物理实验、股票走势等多个领域。在C#中,我们可以使用Chart控件来实现实时折线图的展示,其动态性和可交互性可以帮助用户更好地理解数据。本文将介绍如何使用Chart控件展示实时折线图数据,希望能帮助读者快速掌握这个技能,应用于实际场景中。原创 2023-04-04 01:04:12 · 7726 阅读 · 7 评论 -
C# | 通过反射将对象属性展示在TreeView中
在编程过程中,我们经常需要处理复杂的对象和数据结构。将这些数据结构展示在UI界面上是很有用的,可以帮助开发者更好地理解和分析数据。而TreeView作为一种常见的控件,可以以树状结构的方式展示数据,非常适合用于展示层次化的对象。本文将介绍如何使用TreeView控件展示一个对象,并且可以动态处理对象中的属性和子对象。通过本文的学习,您将学会如何更好地理解和展示数据,提高编程效率。原创 2023-04-04 00:38:13 · 328 阅读 · 0 评论 -
C# | 使用DataGridView展示JSON数组
你想展示一个复杂的JSON数组数据吗?但是你却不知道该如何展示它,是吗?没问题,因为本文就是为解决这个问题而生的!使用DataGridView轻松地将JSON数组数据以表格的形式呈现出来,这样你就可以更加清晰地了解和处理数据了。让我们一起来探索如何实现吧!原创 2023-04-04 00:32:47 · 1396 阅读 · 0 评论 -
C# | DataGridView数据转存为Json、XML格式
DataGridView是常用的数据展示组件,而将其转存为Json或XML格式,则可以方便地进行数据的传输和存储。Json格式具有轻量、易读、易解析等优点,广泛应用于Web开发、API接口传输等场景。XML格式则具有良好的结构化特性,支持命名空间、数据类型等复杂数据表示方式,被广泛应用于数据交换、配置文件等领域。因此,将DataGridView数据转存为Json、XML格式,不仅能够方便地进行数据的传输和存储,还能够满足不同场景下的数据需求。原创 2023-04-04 00:16:10 · 1913 阅读 · 0 评论 -
C# | JSON格式与XML格式互相转换
JSON格式与XML格式是目前互联网上使用最为广泛的数据交换格式之一,而两种格式各自有着自己的特点和优势。在实际开发中,我们经常需要将数据在不同的系统或模块之间进行传递和转换,而JSON格式和XML格式的互相转换是一项非常基础和必要的技能。同时,对于需要将数据存储在不同的介质中的应用场景,比如在移动端本地存储数据,或者在服务器端将数据保存到文件或数据库中,也需要将JSON或XML格式进行相应的转换。因此,熟练掌握JSON与XML格式互相转换的方法对于开发人员来说是非常重要的。原创 2023-04-04 00:03:40 · 5242 阅读 · 9 评论 -
C# | 实现QUIC协议的客户端与服务端
QUIC(Quick UDP Internet Connections)是一种基于UDP协议的可靠、安全、高效的传输协议,由Google开发。它是HTTP/3协议的基础,并被视为未来互联网传输层协议的重要候选者之一。原创 2023-03-31 23:33:48 · 1143 阅读 · 0 评论 -
C# | 比较IEnumerable、List、数组
如果需要高效地访问元素,并且元素数量固定,可以使用数组。由于数组的大小是固定的,当需要添加或删除元素时,需要重新创建一个新数组,将原数组中的元素复制到新数组中,并添加或删除元素。但是,当数组大小固定时,可能会浪费一部分内存空间,而 List 可以自动扩展或缩小容量,使用内存更加灵活。: 一个基于动态数组的集合类,提供了一些方便的方法,可以方便地操作集合中的元素。: 一种基本数据类型,在内存中开辟了一段连续的空间,可以存储相同类型的元素。: 一个接口,定义了一个可枚举的集合,并提供了一些用于枚举集合的方法。原创 2023-03-30 21:59:23 · 2756 阅读 · 0 评论 -
Xamarin.Android | 获取常见的10种系统权限
在 Xamarin.Android 中获取权限的方法与 Android 原生开发类似。可以通过请求运行时权限来获取需要的权限。本文将演示 10 个常见权限的示例代码。原创 2023-03-30 22:39:51 · 682 阅读 · 0 评论 -
C# | 将DataGridView中的数据保存到Accesss数据库
如何把WinForm的DataGridView中的数据保存到Accesss数据库原创 2023-03-30 13:41:45 · 2029 阅读 · 1 评论 -
WinForm | C# 窗体控件平滑减速运动
在桌面软件开发中,有时会需要控制窗体或控件移动以实现某些界面效果,比如幻灯片换页、侧面的展开栏等。匀速运动效果生硬;运动过程中不便灵活改变运动状态(如侧栏展开一半时令其收起);动效多时需要创建多个Timer对象,不易管理且占用资源;ApeForms中为控件和窗体提供了平滑运动的扩展方法,很好的解决了这些问题。不仅是坐标的平滑运动,还有控件\窗体尺寸的平滑变化、透明度的平滑变化。允许在变化的中途随时更改目标坐标\尺寸\透明度,且使用共享的Timer,减少了系统资源的消耗。原创 2023-03-28 00:35:47 · 1420 阅读 · 0 评论 -
WinForm | C# 弹出简易的消息提示框 (仿Android Toast消息提示)
在使用手机的时候经常会见到屏幕的中下方会弹出消息提示框,它就是Toast。ApeForms中也实现了非常简洁易用Toast,与Android的Toast不同的是,ApeForms允许开发者设置不同的弹出模式。此外还针对PC端有鼠标的情况进行了改进,当鼠标悬停于消息弹出框之上时弹出框不会消失。原创 2023-03-25 00:20:29 · 4421 阅读 · 0 评论 -
WinForm | C# 界面弹出消息通知栏 (仿Win10系统通知栏)
消息通知栏(Notification)在桌面开发中有非常重要的作用,它是一种全局的、强制的交互方式。它可以在活动窗体之外的区域向用户发出醒目的消息提示,允许用户在指引下通过简易的操作完成交互。ApeForms中提供的消息通知栏是在系统通知栏之外单独实现的一套通知功能,开发者可以自定义通知栏的内容、添加自定义的选项并设置动作回调、设置消失时间等。原创 2023-03-24 00:27:10 · 4881 阅读 · 1 评论 -
ApeForms | C# - WinForm临时对话框(消息框、提示框、输入框、密码框、单选框、多选框等)
ApeForms一款基于WinForm实现的开源免费商用的UI库,其中提供了一套便于用户交互的临时对话框组件(Dialog),可用于快速创建开发中常见的交互对话框,例如:消息框、提示框、输入框、单选框、多选框等。ApeFree.ApeDialogs并不是一个包含Dialog实现的UI库,而是一套Dialog标准(提供了一套临时弹出对话框的实现标准)。原创 2023-03-14 00:03:48 · 3966 阅读 · 5 评论