
C#
文章平均质量分 65
biyusr
qq:280905365
展开
-
C#开发实战1200例(第I卷)目录
实例344 从DataGridView中拖放数据到 TreeView 443。实例445 实时读取Word文档中表格数据到 SQL Server数据库 630。实例339 在DataGridView控件中添加“合计”和“平均值” 433。实例467 将多个Excel文件输出到同一SQL Server数据库 674。实例292 设置OpenFileDialog组件中只能选择图片文件 374。实例444 读取Word文档中表格数据到SQL Server数据库 629。转载 2023-01-30 13:54:00 · 1839 阅读 · 0 评论 -
C#的DataGridView单元格合并
3.让列表显示为合并单元格的样式。2.重新绘制样式和字符串。1.清楚单元格样式。原创 2022-10-21 17:26:31 · 3053 阅读 · 0 评论 -
C#编写组件类TextBox
2.显示组件的属性窗口,看下组件新添加的属性。1.写好后组件类后,拖动到Form上。原创 2022-10-21 17:20:06 · 529 阅读 · 0 评论 -
C#的ListView拖动文件显示列表
1.listView1_DragEnter函数为拖动的事件。2.Data_List为显示数据到列表中。原创 2022-10-21 17:01:04 · 726 阅读 · 0 评论 -
.net普通下载
【代码】.net普通下载。原创 2022-10-20 18:25:27 · 177 阅读 · 1 评论 -
如何在C# 中使用 FFmpeg.NET
FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用 LGPL 或 GPL 许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库 libavcodec,为了保证高可移植性和编解码质量,libavcodec 里很多 code 都是从头开发的。这篇文章主要介绍如何在 C# 中使用 FFmpeg。在项目中使用包管理器控制台安装 nuget 包:1。原创 2022-10-11 15:45:52 · 1237 阅读 · 0 评论 -
如何在C# 中使用 FFmpeg.NET
FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用 LGPL 或 GPL 许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库 libavcodec,为了保证高可移植性和编解码质量,libavcodec 里很多 code 都是从头开发的。这篇文章主要介绍如何在 C# 中使用 FFmpeg。在项目中使用包管理器控制台安装 nuget 包:1。原创 2022-10-11 10:55:46 · 3784 阅读 · 0 评论 -
聊聊八种架构模式
什么是架构我想这个问题,十个人回答得有十一个答案,因为另外的那一个是大家妥协的结果。哈哈,我理解,架构就是骨架,如下图所示:人类的身体的支撑是主要由骨架来承担的,然后是其上的肌肉、神经、皮肤。架构对于软件的重要性不亚于骨架对人类身体的重要性。什么是设计模式这个问题我问过的面试者不下于数十次,回答五花八门,在我看来,模式就是经验,设计模式就是设计经验,有了这些经验,我们就能在特定情况下使用特定的设计、组合设计,这样可以大大节省我们的设计时间,提高工作效率。原创 2023-01-05 13:46:38 · 194 阅读 · 0 评论 -
进了架构平台部,终于成了大佬
比如排查一个有技术含量的bug可以总结记录下;做了一个比较好的设计方案,也可以总结下,顺便分析分析自己用到了哪些设计原则;平时遇到技术盲区,也可以把对应的技术知识再系统学习总结下。写文章总结的时候你会发现自己可能对这个问题理解的还是不够,这样就会再去学习解惑,让输出带动输入。这样时间长了,你会发现自己持续在积累,不仅能把自己的工作做的更好,即便有想跳槽的时候,因为你都有在总结,表达起来也会更流畅,甚至可以把你的总结博客发给面试官看看,我相信这是会加分的。原创 2022-09-21 23:02:32 · 267 阅读 · 0 评论 -
一个简单的模拟实例说明Task及其调度问题
编者荐语:蒋老师只用短短的几百行样例代码就为大家解释清楚了在C#中至关重要的Task和其调度的原理,这是不可多得的高质量文章。以下文章来源于大内老A ,作者大内老A转存失败重新上传取消Task对于.NET的重要性毋庸置疑。通过最近的一些面试经历,发现很多人对与Task及其调度机制,以及线程和线程池之间的关系并没有清晰的认识。本文采用最简单的方式模拟了Task的实现,旨在说明Task是什么?它是如何被调度执行的?源代码从这里下载。一、Task(Job)原创 2022-09-21 22:58:37 · 633 阅读 · 0 评论 -
使用GZipStream实现压缩和解压缩
之前做项目,涉及到存入到数据库或者http传输的数据量比较大,这个时候,就需要考虑在存入数据库或者发送传输之前,将数据压缩下,当从数据库中取出时,再解压还原数据。特地找了下发现有GZipStream可以实现这个功能。此类表示gzip数据格式,该格式使用行业标准算法进行无损文件压缩和解压缩。该格式包括用于检测数据损坏的循环冗余校验值。gzip数据格式使用与DeflateStream类相同的算法,但可以扩展为使用其他压缩格式。该格式很容易以专利未涵盖的方式实施。原创 2022-09-21 22:55:47 · 461 阅读 · 0 评论 -
ASP.NET Core 奇淫技巧之动态WebApi
接触到动态WebApi(Dynamic Web API)这个词的已有几年,是从ABP框架里面接触到的,当时便对ABP的这个技术很好奇,后面分析了一波,也尝试过从ABP剥离一个出来作为独立组件来使用,可是后来因与ABP依赖太多而放弃。原创 2022-09-21 22:55:02 · 924 阅读 · 0 评论 -
跨语言调用C#代码的新方式-DllExport
上一篇文章使用C#编写一个.NET分析器文章发布以后,很多小伙伴都对最新的NativeAOT函数导出比较感兴趣,今天故写一篇短文来介绍一下如何使用它。在以前,如果有其他语言需要调用C#编写的库,那基本上只有通过各种RPC的方式(HTTP、GRPC)或者引入一层C++代理层的方式来调用。自从微软开始积极开发和研究Native AOT以后,我们有了新的方式。那就是直接使用Native AOT函数导出的方式,其它语言(C++、Go、Java各种支持调用导出函数的语言)就可以直接调用C#导出的函数来使用C#库。原创 2022-09-21 22:52:17 · 492 阅读 · 0 评论 -
.NET Word模板引擎--MiniWord,继MiniExcel后又一开源作品!
目前来说MiniWord功能还比较少,达不到商用的程度,但是我相信 在不久的将来,MiniWord会越来越好!如果对MiniWord感兴趣的可以去Gitee或者Github点个Star。原创 2022-09-21 22:51:11 · 331 阅读 · 0 评论 -
.NET Word模板引擎--MiniWord,继MiniExcel后又一开源作品!
目前来说MiniWord功能还比较少,达不到商用的程度,但是我相信 在不久的将来,MiniWord会越来越好!如果对MiniWord感兴趣的可以去Gitee或者Github点个Star。原创 2022-09-21 22:50:35 · 1122 阅读 · 1 评论 -
C# 客户端程序调用外部程序的3种实现方法
第一种是利用 shell32.dll,实现 ShellExecute 方法,该方法可同时打开本地程序、文件夹或者访问网站,只要直接输入路径字符串即可, 如 C:\Users\Desktop\xx.exe 或者 https://cn.bing.com/,可以根据返回值判断是否调用成功 (成功0x00000002a , 失败0x00000002)第三种方法是利用 Process 类,Process 类具体应用可以看类的定义,这里只实现它打开文件和访问网站的用法,调用失败会抛出异常。原创 2022-09-21 22:51:28 · 1048 阅读 · 0 评论 -
计算机为什么需要十六进制?
使用32进制,每5个比特位可以用一个32进制数字来表示,由于人类的数字系统只有0~9,因此在16进制中10是字母a来表示的、11:b、12:c、13:d、14:e、15:f,但如果我们使用32进制,那么16:g、17:h.......31:v,这时给一个32进制数字“apple”,你的大脑可能会一团浆糊,但十六进制对人类来说基本可以应付得来,原因就在于16进制中人类熟悉的数字占据了10个,剩下的只借用了6个字母,还算简单。要知道早期的计算机可不是一个字节8比特,那时一个字节4比特、6比特或者7比特的都有。原创 2022-09-20 00:39:02 · 235 阅读 · 0 评论 -
C# dynamic 类型用法举例
与 var 关键字不同,定义为dynamic的对象可以在运行期间改变其类型。类型一旦确定,就不能改变。动态对象的类型可以改变,而且可以改变影次,这不同于把对象的类型事转换为另一种类型。在强制转换对象的类型时,是用另一种兼容的类聚们建一个新对象。动态对象不支持扩展方法,匿名函数(lambda表达式)也不能用作动态方法调用的参数,因此LINQ不能用于动态对象,大多数LINQ调用大都是扩展方法,而lambda表达式用作这些扩展方法的参数.编译器假定,给dynamic类型的对象定义的任操作都是有效的。原创 2022-09-20 00:35:55 · 1384 阅读 · 0 评论 -
还在使用 Windows?我的 70 岁母亲都用了 21 年 Linux
现在,越来越多的人开始从 Windows 迁移到 Linux,为了更好的隐私、更安全、开放源代码,以及避免在 Windows 11 中微软的“废话”等等。我不是在谈论模拟的过时的硬件,然后在上面运行“好的旧游戏”,当然也不是说它在任何方面是“错误的”。游戏是 Linux 上的一大软肋。大型游戏开发公司不想支持 Linux,因为它的市场份额很小,又没有太多的原生游戏,所以游戏玩家并不会在 Linux 上玩游戏。最后我想说的是,转向使用 Linux 预计会存在一个小的学习曲线,这条曲线并不陡峭,但它就在那里。原创 2022-09-20 00:34:39 · 148 阅读 · 0 评论 -
Chisel-Strike:一款功能强大的.NET异或XOR加密CobaltStrike Aggressor实现
在该工具的帮助下,我们可以实现更快速的代理以及更加高级的Socks5功能。在常规执行流中,我们首先需要在CS Teamserver客户端中搭建一台Chisel服务器,然后在Beacon中创建一个客户端,并回连CS Teamserver客户端。Chisel-Strike是一款功能强大的.NET异或XOR加密CobaltStrike Aggressor实现,该工具主要针对的是Chisel(一个通过HTTP实现的快速TCP/UDP信道),旨在实现运行速度更快的代理以及更加高级的Socks5功能。原创 2022-09-20 00:31:05 · 409 阅读 · 0 评论 -
Chisel-Strike:一款功能强大的.NET异或XOR加密CobaltStrike Aggressor实现
在该工具的帮助下,我们可以实现更快速的代理以及更加高级的Socks5功能。在常规执行流中,我们首先需要在CS Teamserver客户端中搭建一台Chisel服务器,然后在Beacon中创建一个客户端,并回连CS Teamserver客户端。Chisel-Strike是一款功能强大的.NET异或XOR加密CobaltStrike Aggressor实现,该工具主要针对的是Chisel(一个通过HTTP实现的快速TCP/UDP信道),旨在实现运行速度更快的代理以及更加高级的Socks5功能。原创 2022-09-20 00:39:18 · 315 阅读 · 0 评论 -
使用C#编写一个.NET分析器(一)
NET具有非常强大的分析器API(Profiler API,它类似于Java Agent提供的API,但能做的事情比Java Agent多),我们可以通过它密切的监视.NET运行时、在程序运行期间动态的重写方法、在任意时间点遍历线程调用栈等等。但是学习如果使用该API的入门成本非常高。第一个原因是,你必须要你充分了解.NET元数据系统以及工作原理才能实现一些分析器功能。第二个原因是,它所有的文档和示例都是使用C++编写的,而且目前也没有C#的示例。从理论上来说,大多数语言都可以来编写.NET分析器。原创 2022-09-20 00:29:25 · 111 阅读 · 0 评论 -
使用C#编写一个.NET分析器(一)
NET具有非常强大的分析器API(Profiler API,它类似于Java Agent提供的API,但能做的事情比Java Agent多),我们可以通过它密切的监视.NET运行时、在程序运行期间动态的重写方法、在任意时间点遍历线程调用栈等等。但是学习如果使用该API的入门成本非常高。第一个原因是,你必须要你充分了解.NET元数据系统以及工作原理才能实现一些分析器功能。第二个原因是,它所有的文档和示例都是使用C++编写的,而且目前也没有C#的示例。从理论上来说,大多数语言都可以来编写.NET分析器。原创 2022-09-20 00:27:45 · 260 阅读 · 0 评论 -
单核CPU如何执行多线程
在单处理器系统中,多个线程执行一个接一个的执行,或者等到一个线程完成或被操作系统抢占,这取决于线程的优先级和操作系统策略。由于现在大多计算机都是多核CPU,多线程往往会比单线程更快,更能够提高并发,但提高并发并不意味着启动更多的线程来执行。更多的线程意味着线程创建销毁开销加大、上下文非常频繁,你的程序反而不能支持更高的TPS。线程上下文是指某一时间点 CPU 寄存器和程序计数器的内容,CPU通过时间片分配算法来循环执行任务(线程),因为时间片非常短,所以CPU通过不停地切换线程执行。原创 2022-09-20 00:24:46 · 3874 阅读 · 0 评论 -
C# 控制台设置
我们经常使用控制台做一些代码的测试、调试,这样方便又快捷,但是控制台的相关用法我们日常可能使用到的很少,这节就展示一些你可以很少用到但是有很使用的控制台设置方法.//将控制台的前景色和背景色设为默认值。Console.ReadLine():读取一行的输入内容,返回string类型。是要求用户输入不换行,这里是用来固定控制台的,否则他很快就会闪掉。Console.Read():读取一个字符的输入,返回int类型。3. 获取或设置要显示在控制台标题栏中的标题。是输出文字并换行,Line是换行的意思;原创 2022-09-18 22:13:26 · 1160 阅读 · 0 评论 -
开发者说PaddleOCR的.NET封装与应用部署
包含文本识别、文本检测、基于文本检测结果的统计分析的表格识别功能,同时针对小图识别不准的情况下,做了优化,提高识别准确率。项目包含总模型仅8.6M的超轻量级中文OCR,单模型支持中英文数字组合识别、竖排文本识别、长文本识别。项目封装极其简化,实际调用仅几行代码,极大的方便了中下游开发者的使用和降低了PaddleOCR的使用入门级别,同时提供不同的.NET框架使用(net35;.NET开发、WPF、图像处理、OpenCV、PaddleOCR,RPA、UI自动化等开发技术分享。原创 2022-09-18 22:12:22 · 293 阅读 · 0 评论 -
.NET下如何拦截鼠标、键盘消息?Win32NET来帮你
键盘钩子与鼠标钩子使用类似,首先实例化一个键盘钩子对象,然后定义键盘事件回调方法,启动监听即可。当不需要继续监听键盘信息,则可以取消监听。//实例化鼠标钩子对象。//鼠标左键按下的事件监听回调方法。首先实例化一个鼠标钩子对象,然后定义鼠标事件回调方法,启动监听即可。当不需要继续监听鼠标信息,则可以取消监听。3:模拟键盘输入文字(支持各种字符文字、不同语言的文字)、模拟鼠标点击移动滚动等操作。原创 2022-09-18 22:06:53 · 242 阅读 · 0 评论 -
.NET下如何拦截鼠标、键盘消息?Win32NET来帮你
键盘钩子与鼠标钩子使用类似,首先实例化一个键盘钩子对象,然后定义键盘事件回调方法,启动监听即可。当不需要继续监听键盘信息,则可以取消监听。//实例化鼠标钩子对象。//鼠标左键按下的事件监听回调方法。首先实例化一个鼠标钩子对象,然后定义鼠标事件回调方法,启动监听即可。当不需要继续监听鼠标信息,则可以取消监听。3:模拟键盘输入文字(支持各种字符文字、不同语言的文字)、模拟鼠标点击移动滚动等操作。原创 2022-09-18 22:02:40 · 190 阅读 · 0 评论 -
.NET下如何拦截鼠标、键盘消息?Win32NET来帮你
键盘钩子与鼠标钩子使用类似,首先实例化一个键盘钩子对象,然后定义键盘事件回调方法,启动监听即可。当不需要继续监听键盘信息,则可以取消监听。//实例化鼠标钩子对象。//鼠标左键按下的事件监听回调方法。首先实例化一个鼠标钩子对象,然后定义鼠标事件回调方法,启动监听即可。当不需要继续监听鼠标信息,则可以取消监听。3:模拟键盘输入文字(支持各种字符文字、不同语言的文字)、模拟鼠标点击移动滚动等操作。原创 2022-09-18 21:58:14 · 155 阅读 · 0 评论 -
你必须知道的.NET] 第四回:后来居上:class和struct
我们重点强调的是.NET中,所有的类都最终继承自System.Object类,因此是一种引用类型,也就是说,new一个类的实例时,对象保存了该实例实际数据的引用地址,而对象的值保存在托管堆(managed heap)中。本文关于class和struct的讨论就是如此,在.NET框架中,关于class和struct的讨论将涉及到对引用类型和值类型的认识,并且进一步将触角伸向变量内存分配这一高级主题,所以我们有必要来了解其运行机制,把握区别和应用场合,以便在平常的系统设计中把握好对这一概念层次的把握。原创 2022-09-18 21:47:40 · 164 阅读 · 0 评论 -
关于 C++ 中的 extern “C“,你真的了解吗
因为, C 库的编译当然是用 C 的方式生成的,其库中的函数标号一般也是类似前面所说的 _foo 之类的形式,没有任何参数信息,所以当然在 C++ 中,要指定使用 extern "C" ,进行 C 方式的声明(如果不指定,那么 C++ 中的默认声明方式当然是 C++ 方式的,也就是编译器会产生 _foo_int_int 之类包含参数信息的、 C++ 形式的函数标号,这样的函数标号在已经编译好了的、可以直接引用的 C 库中当然没有)。所以,函数被 C++ 编译后在符号库中的名字与 C 语言的有所不同。原创 2022-09-15 09:43:21 · 1550 阅读 · 0 评论 -
C# 利用.NET 升级助手将.NET Framework项目升级为.NET 6
NET6 正式版本已经发布有一阵子了,今天我就体验一下如何将.NET Framework的项目升级为.NET 6.Dotnet讲堂这里是Dotnet编程的乐园,如果你对C# Winfom感兴趣,你想学习wpf编写酷炫的界面通过mvvm模式实现前后端解耦,你热衷于智能制造、工控上位机,资深高工带你入坑。25篇原创内容公众号升级条件:Windows 操作系统.NET 6 SDKVisual Studio 2022 17.0 或更高版本。原创 2022-09-15 09:42:37 · 1199 阅读 · 0 评论 -
如何在C#中使用Channels进行异步排队
相信你的第一个想法是使用一些外部的消息队列来实现,如 RabbitMQ 或Kafka,这对于这样的一个简单任务来说这些组件都有点重了。当我搜索示例时,我发现了很多控制台应用程序示例,但没有针对 Web API的,因此我决定尝试以 ASP.Net Core Web API 项目为例来进行演示。一个 Channel 是一个 . NET 数据结构或集合,我们可以在其中存储来自生产者的数据,同时消费者可以检索它,而无需从我们这边进行任何额外的同步。现在,如果您在我的示例中注意到我使用了无界Channels。原创 2022-09-15 09:41:49 · 725 阅读 · 0 评论 -
话题分享 | .NET文件包含解析图片马
dotNet安全矩阵知识星球 — 聚焦于微软.NET安全技术,关注基于.NET衍生出的各种红蓝攻防对抗技术、分享内容不限于 .NET代码审计、 最新的.NET漏洞分析、反序列化漏洞研究、有趣的.NET安全Trick、.NET开源软件分享、. NET生态等热点话题、还可以获得阿里、蚂蚁、字节等大厂内推的机会.星球汇聚了各行业安全攻防技术大咖,并且每日分享.NET安全技术干货以及交流解答各类技术等问题,社区中发布。等配套学习资源,循序渐进的方式引导加深安全攻防技术提高以及岗位内推等等服务。原创 2022-09-15 09:41:12 · 264 阅读 · 0 评论 -
C#中烦人的Null值判断竟然这样就被消灭了
这里我们将去掉用于Null检查的if语句。如何处理csharp中方法参数的赋值?答案是你不能!. 但你可以使用另一种方法来处理隐式运算符的赋值。让我们创建NotNull类并定义一个隐式运算符,然后我们可以处理赋值。{{}set;}{}}现在我们可以使用NotNull对象作为方法参数.{");}{}如您所见,方法的代码比以前更简洁。{// ...}原创 2022-09-15 09:16:57 · 367 阅读 · 0 评论 -
C#10在List, Queue 以及Stack中使用EnsureCapacity方法来提升性能
在今天的文章中,我们将介绍 C# 10 中引入的一项新功能。这是已添加到 List、Queue 和 Stack 集合中的 EnsureCapacity 方法。我们将讨论为什么我们应该使用这个方法以及何时使用它。那么,让我们开始吧。作者:依乐祝译文链接:https://www.cnblogs.com/yilezhu/p/15182566.html。原创 2022-09-15 08:47:30 · 406 阅读 · 0 评论 -
如何在C#中使用Channels进行异步排队
相信你的第一个想法是使用一些外部的消息队列来实现,如 RabbitMQ 或Kafka,这对于这样的一个简单任务来说这些组件都有点重了。当我搜索示例时,我发现了很多控制台应用程序示例,但没有针对 Web API的,因此我决定尝试以 ASP.Net Core Web API 项目为例来进行演示。一个 Channel 是一个 . NET 数据结构或集合,我们可以在其中存储来自生产者的数据,同时消费者可以检索它,而无需从我们这边进行任何额外的同步。现在,如果您在我的示例中注意到我使用了无界Channels。原创 2022-09-15 08:45:58 · 591 阅读 · 0 评论 -
C# 排序的多种实现方式(经典)
方法二: 加入这个学生成绩有重复的,对于重复的成绩按照年龄再排序:这里列举了2种方法,方法一注释了。方法一: 一个集合存放学生的信息,按照学生的成绩升序排列:这里列举了2种方法,方法一注释了。方法三:利用link,这种感觉和方法二是一回事。② 降序排列:先升序排列,然后对数组反转。-. sort也可以用如下方式操作:。① 升序排列:。降序排列:。升序排列:。降序排列:。原创 2022-09-15 08:43:42 · 3080 阅读 · 0 评论 -
如何重写一个万行代码的类文件
可以想象,这样的代码是没有任何架构可言的,完全是意识流式的写法,想到哪里就写到哪里,有新需求就加新代码,复制粘贴,修修改改,常年累月,形成了这样一个庞然大物。第一个问题,使用职责链模式,是为了隔离每个步骤的关注点,降低代码耦合,至于执行顺序是由职责链自己控制还是由外部控制,并不重要,为此,调侃归调侃,能够将一个类拆成一百个类,而且类的功能划分合理,类之间彼此独立,又能相互配合,需要有足够的技术沉淀。第二个问题,数据传递的问题,节点要想访问某个数据,传参是最简单的方式,另一种方式是使用“原创 2022-09-15 09:43:45 · 276 阅读 · 0 评论 -
C#的WebBrowser自动滚动
C#使WebBrowser自动滚动,需要加一个定时控件Timer。这样就完成了滚动条自动滚动的问题。原创 2022-09-14 09:12:33 · 724 阅读 · 0 评论