DotNet

其他

.NET 中构建和运行有限状态机的强大框架

WebSocket实现简易、高性能、集群即时通讯组件看完本文有收获?请转发分享给更多人推荐关注「DotNet」,提升.Net技能
2023年8月31日
其他

.NET 最好的图片工具(裁剪、缩放、加水印)

--新生成的目标图片文件路径返回:(无)加图片水印原图加图片水印后的效果如下:加图片水印的方法使用说明PictureImageWatermark(Async)声明:void
2023年8月30日
其他

【微信自动化】使用 C# 实现微信自动化

前言看到了一个老哥分享的一个微信自动化的一个类库,便下载了他的Demo,其本意就是模拟鼠标来操作UI,实现UI自动化;然后自己在瞎琢磨研究,写了一个简单的例子,用来获取好友列表,获取聊天列表,以及最后一次接收或者发送消息的时间,以及最后一次聊天的内容,还有自动刷朋友圈,获取朋友圈谁发的,发的什么文字,以及配的图片是什么,什么时候发的,再就是一个根据获取的好友列表,来实现给指定好友发送消息的功能。正文话不多说,咱们开始,首先映入眼帘的是界面,左侧是获取好友列表,然后在右边就是一个RichTextBox用来根据左侧选中的好友列表来发送消息,中间是获取聊天列表,好友名称,最后一次聊天的内容,以及最后一次聊天的时间,最右边是获取朋友圈的内容,刷朋友圈,找到好友发的朋友圈内容,以及附带的媒体是图片还是视频,发朋友圈的时间。首先需要在Nuget下载两个包,FlaUI.Core和FlaUI.UIA3,用这两个包,来实现鼠标模拟,UI自动化的,接下来,咱们看代码。上面就是一整个界面的截图,接下来,咱们讲讲代码,在界面被创建的时候,去获取微信的进程ID,然后,给获取好友列表,聊天列表,朋友圈的CancelTokenSource赋值以及所关联的CancelToken,以此来实现中断取消的功能,同时在上面的List是用来存储朋友圈信息的,下面的Content存储聊天列表的内容的,Key是聊天的用户昵称,Value是最后一次的聊天内容,在往下的SendInput是我们用来模拟鼠标滚动的这样我们才可以滚动获取聊天列表,朋友圈内容,好友列表,在下面的FindWindow,GetWindowThreadProcessID是用来根据界面名称找到对应的进程Id的,因为如果双击了朋友圈在弹出界面中,使用Process找不太方便,直接就引用这个来查找朋友圈的弹出界面。private
2023年8月29日
其他

.NET Core WebSocket实现简易、高性能、集群即时通讯组件

获得授权过的地址(ImHelper.PrevConnectServer),伪代码:ajax('/prev-connect-imserver',
2023年8月28日
其他

C# 解压缩开源库,轻松完成解压缩文件

前言在我们项目开发中,经常需要解压缩功能,用来减少网络带宽、磁盘空间等,但是如果自己开发,需要掌握诸多知识,比如:压缩算法、兼容性等。给大家推荐一个解压缩开源库,让你轻松完成解压缩文件的功能。项目简介这个一个完全由C#开发的、具备压缩和解压缩的功能,支持Zip,GZip,Tar和BZip2等格式,方便你集成到各种.NET项目中。项目特点1、完全开源和免费:也可以根据自己的需求,自行编译源码;2、跨平台:支持Windows、Linux和Mac
2023年8月27日
其他

.NET 7+Vue 前后端分离框架Admin.Core

16连接字符串:connectionString默认:admindb.db同步结构syncStructure:true默认启用分布式部署需要注意关闭监听同步结构脚本
2023年8月26日
其他

C# 中如何使用BCrypt 提高用户密码安全性

前言密码是用户身份验证的重要组成部分,因此需要对其进行安全的存储和处理。一种常见的方法是使用哈希算法,将密码转换为不可逆的字符串,然后将其存储在数据库中。这样,即使数据库被泄露,攻击者也无法直接获取用户的明文密码。但是,仅仅使用哈希算法并不足以保证密码的安全性。攻击者可以利用彩虹表或暴力破解等技术,尝试猜测或还原哈希后的密码。为了增加破解的难度,我们需要引入一个额外的参数,称为盐(salt)。盐是一个随机生成的字符串,与密码拼接后再进行哈希,使得相同的密码产生不同的哈希值。盐通常与哈希值一起存储在数据库中,以便在验证用户输入时使用。但是,盐并不能完全防止暴力破解。因为攻击者可以使用相同的盐来猜测密码。为了进一步增加破解的难度,我们需要使用一个计算复杂度较高的哈希算法,比如
2023年8月25日
其他

.NET 使用 Jieba.NET 库实现中文分词匹配

前言在自然语言处理领域,中文分词是一个重要且基础的任务。中文文本通常没有像英文那样的明确分隔符,因此需要使用分词技术将连续的汉字序列切分成有意义的词语。本文将介绍如何使用.NET平台上的Jieba.NET库的PosSegmenter来实现中文分词匹配。一、什么是中文分词中文分词是将连续的中文文本切分成有意义的词语的过程。例如,对于句子"我喜欢使用Jieba分词器",分词结果应该是["我",
2023年8月24日
其他

推荐 3 个 .NET 最流行的 Redis 客户端

前言Redis是一款高性能、开源的键值对存储系统。它支持多种数据结构,比如字符串、列表、哈希、集合等,可以在内存中存储数据,并提供持久化功能以便在断电等情况下保持数据不丢失。Redis提供了丰富的命令和API,可用于快速地读取、写入和操作数据。本文介绍
2023年8月23日
其他

.NET 高级编程高并发必备技巧 - 锁

前言锁最为常见的应用就是高并发的情况下,库存的控制。本次只做简单的单机锁介绍。正文直接看代码每请求一次库存-1.
2023年8月22日
其他

C# 创建安装Windows服务程序(干货)

前言最近在公司要求使用Windows服务作为消息队列的消费者,所以自行研究了一下C#中Windows服务如何创建以及如何使用,以及部署的方式。一、Windows服务概述1.1、Windows服务是什么?Windows服务是在Windows操作系统上,以后台形式运行的应用程序。它们可以在系统启动时自动启动,并且独立于用户登录。Windows服务通常用于执行那些长时间运行、无需用户交互或需要在后台持续执行的任务。1.2、Windows能用来做什么?后台任务和自动化:可以使用Windows服务来执行重复性的计划任务、数据同步、定期备份、报告生成等。网络服务:Windows服务可以作为网络服务器提供网络服务,如Web服务器、FTP服务器、邮件服务器等。定时任务:Windows服务可以创建定时任务并在指定时间间隔或特定事件发生时触发执行操作。数据处理:可以使用Windows服务进行数据处理、数据转换、数据清洗等批量处理任务。消息队列:可以用于消息队列的消费者,后台任务一直和消息队列保持长连接,需要消费时会自动接收到进行业务处理。1.3、Windows服务有什么优势?后台执行:Windows服务在后台运行,不会干扰用户的工作,也无需用户登录即可持续执行任务。系统级别权限:Windows服务可以在系统级别运行,具有更高的权限,可以访问系统资源和执行敏感操作。自动启动:Windows服务可以在系统启动时自动启动,确保任务始终处于运行状态。可靠性和稳定性:Windows服务被设计为长时间运行的应用程序,具有较高的可靠性和稳定性。二、创建Windows服务2.1、创建Windows服务项目打开【Visual
2023年8月21日
其他

一个库让你实现 C#函数式的编程

前言推荐一个C#开源库,让你实现函数式编程。项目简介这个库大量扩展了C#方法,旨在提供一组类型安全且强大的函数式编程扩展,看上去很像C#的扩展,该项目的作者希望,让函数式编程更容易、更简洁、更高效,并且在使用中保持类型安全。项目特点1、高阶函数:提供了对高阶函数的支持,允许你创建和处理函数本身餐位参数或返回值,是的你能够使用高阶函数实现复杂的业务逻辑,而不必编写大量的代码;2、不可变性:这有助于编写更加可靠、可预测的代码,并且可以避免一些常见的错误;3、函数组合:提供了方便的函数组合功能,使你能够将多个函数组合在一起,形成一个新的函数。这使得你可以将复杂的逻辑分解为一系列简单的函数,并按照需要组合它们。4、其他:除了以上核心特点,还提供一些非常有用的扩展方法,比如对可选值(Option)和列表(List)等常见集合类型的操作。使用方法示例代码:using
2023年8月19日
其他

C# 和 WPF 开发,基于深度学习的抠图工具

只保存前景保存的图像和视频都在exe所在路径下。源码编译1、下载源码到本地2、Visual
2023年8月18日
其他

详解C# List<T>的Contains、Exists、Any、Where性能对比

predicate);其中,predicate为一个返回bool类型的函数,表示用来判断元素是否符合检索条件的方法。使用方法如下:List
2023年8月17日
其他

.NET 开发者应掌握的利器CommunityToolkit.HighPerformance

前言MemoryOwner和SpanOwner都可以理解为是对ArrayPool的一个包装,无非一个是在堆栈上,一个是在托管堆上。既然做了包装,那肯定随之而来就是改进和优化。MemoryOwnerMemoryOwner解决的问题1、通过ArrayPool的Api
2023年8月16日
其他

开源的 .NET 二维码生成库

qr.ToSvgString(4,"green","white");File.WriteAllText("qrcode.svg",
2023年8月15日
其他

.NET 8 中的 KeyedService

Microsoft.Extensions.DependencyInjection.ServiceProvider.CreateServiceAccessor(ServiceIdentifier
2023年8月14日
其他

五分钟看完,彻底理解协变逆变

前言其实这是c#的老知识点了,但是发现同事对这个竟然还一知半解,就和他们讲解了下,顺便也回顾了下,同事我也把我对这个的全部理解,融化成几分钟的讲解,保证大家5分钟内全部理解,看不懂来打我。协变、逆变
2023年8月13日
其他

C# 获取文件信息大全

前言在.NET开发中,用C#获取文件信息是比较常见的操作。通过获取文件信息,我们可以了解文件的属性、大小、创建日期、修改日期等各种元数据信息。比如我们网站需要上传文件,可以用扩展名称控制上传的类型,获取文件的大小来限制上传文件等。本文将介绍一系列C#中获取文件信息的方法,帮助你轻松获取所需信息并进行文件处理。1、使用FileInfo类获取文件信息C#中提供了FileInfo类,它封装了文件的信息和操作。通过实例化FileInfo[1]对象,可以轻松获取文件的各种信息。using
2023年8月12日
其他

盘点10个常用的C#简洁语法,你用过几个?

前言喜欢C#的其中一个原因,就是C#的语法非常简洁,C#具有可读性和易写性、高效性、强大的功能性等优点,使得开发人员能够更快速、更高效地开发出高质量的应用程序。下面盘点10个C#常用的简洁语法,你用过几个?一、属性初始化器以下例子,为Name属性设置默认值“John”。public
2023年8月11日
其他

C# 中关于 T 泛型

语言中的另一个强大特性,它允许在定义接口时使用类型参数来表示其中的某些成员。通过使用泛型接口,可以定义通用的接口规范,以适应不同类型的实现。以下示例代码是对泛型接口的一个简单的应用://
2023年8月10日
其他

C# 性能优化-树形结构递归优化

前言最近在工作中遇到一个有趣的问题,同事反馈说WPF中有一个树形结构的集合,在加载时会直接报堆栈溢出,一直没时间(懒得)看,导致很久了也没人解决掉。于是,组长就把这个"艰巨"的任务交给了我。作为新人中的"高手",必然要义不容辞地接受挑战喽,废话不多说,走起。分析由于同事此前已经定位到出现问题的代码段,所以到我手中时要省掉不少功夫。打开代码后看了下,原来是这个树形结构使用了典型的递归操作来对每个节点的数据进行更新,在数据量一般时一切正常,但是当数据量达到几万个节点后,这段代码会直接报堆栈溢出的错误。代码示例如下所示,已简化:using
2023年8月9日
其他

.NET 8 中的 TimeProvider

的示例:Console.WriteLine(TimeProvider.System.GetUtcNow());Task.Delay(TimeSpan.FromSeconds(1),
2023年8月8日
其他

.NET ORM 鉴别器 和 TDengine使用-SqlSugar

数据库,喜欢推荐一下,SqlSugar一直努力的创新和维护转自:果糖大数据科技链接:cnblogs.com/sunkaixuan/archive/2023/08/06/17609338.html-
2023年8月7日
其他

.NET 表达式树

和表达式树IQueryable有两个组件Expression:当前查询的组件的与语言和数据源无关的表示形式,以表达式树的形式表示。Provider:LINQ
2023年8月6日
其他

.NET 开发都应掌握C#泛型的知识点

animal);}八、泛型默认值泛型类型的默认值可以使用default(T)获取,无需了解具体的类型。默认值对于泛型方法或类中可能为null的引用类型或可空值类型非常有用。public
2023年8月5日
其他

C# 12 中的 Primary Constructor

也不需要再变更这个字段,详细可以参考这个讨论:https://github.com/dotnet/csharplang/discussions/7377所以下面的示例也是可以编译通过的file
2023年8月4日
其他

.NET Socket调试工具之Ava.SocketTool

点击标题可跳转五分钟教你使用GitHub寻找优质项目深入理解C#泛型:new与where关键字全解析.NET
2023年8月3日
其他

深入理解C#泛型:new与where关键字全解析

前言C#泛型中new和where是重要的关键字,它们都可以用于约束泛型类型参数的限制;它们都用于提高代码的安全性和可用性,它们的作用在很大程度上提高了代码的可读性和可维护性。这篇文章中,我们将一起了解泛型中的new和where
2023年8月1日
其他

.NET 开源免费功能最全的商城项目

前言给大家推荐一个功能丰富、免费、灵活且可定制的开源电子商务解决方案:nopCommerce。大家假如有商城需求可以直接使用该项目进行二次开发,省时省力。项目介绍nopCommerce在.NET
2023年7月31日
其他

你知道 .NET 字符串在内存中是如何存储的吗?

s);对于上面定义的AsString方法来说,作为输入参数的字节数组字符串实例的内存片段,所以该方法针对同一个数组返回的都是同一个实例,如下的演示代码证明了这一点。var
2023年7月30日
其他

智能制造之路 -从0开始打造一套轻量级MOM平台

一、概述面对数字化浪潮,MOM需求迈入上升期,数字化从“可选项”变成了企业竞争“必选项”。制造行业每个工厂的生产逻辑都不尽相同,流程的梳理、数据统一化都需要调配很长时间。对于制造企业来说一套快速构建业务的平台,看起来是解决制造行业“每个工厂生产逻辑不同”问题的良方。企业的数字化成长之路分为三个阶段:信息化=》数字化=》智能化。目前大多数制造型企业处于第一阶段,应用了ERP/OA等系统,但缺少数字化人才。中小型制造企业如何即经济又快速实现智能制造?选择一套轻量级MOM平台实现数字化转型会是一个不错的选择。企业数字化的发展阶段(来源:网络)二、前景轻量级MOM平台封装并沉淀工业模型、业务与表单模版,为业务场景构建提供开箱即用的能力。平台核心包含两大块:快速开发平台+行业应用。对于制造行业来说,平台功能已经弱化,应用才是核心。图1是智慧工厂的整体架构图,从图中可以看出,主要系统功能比如:PLM,ERP,OA,CRM,SCM,PDM,APS,MES,EMS,WMS,QMS,IOT,BI等。大部分区域都已经被行业各大厂商占据(企业级)。如:ERP有SAP,鼎捷,金蝶,用友等;OA有泛微,蓝凌等;PLM有西门子等国外大厂。留给轻量级MOM平台的机会只剩下车间/产线级管理,比如:APS,MES,WMS,QMS,IOT,BI等。这些区域必须系统与现场业务结合才能落地,行业差异性比较大,也是导致目前行业龙头缺乏,人才匮乏的区域。轻量级MOM平台在车间/产线级管理有用武之地,更加适合中小企业进行数字化转型落地。同时,轻量级MOM平台的强大扩展能力,可以完美打通各大系统之间的壁垒,实现数据互通,最终成为企业业务/数据中台,运行监控决策中心。企业数字化系统分布(来源:网络)三、业务轻量级MOM平台的终极目标是成为企业中台,决策中心。同时可以往工业云方向发展,将制造行业的优秀管理方法思想实体化落地,转换为平台的应用插件,共享给其他企业使用。工业制造领域业务复杂,各工厂的管理模式都有差异,那么我们如何进行标准版化?个人的想法是从上(制造管理方法)往下看,对管理过程的各个节点抽象出模型进行组件化,转换为行业标准方案。首先,我们看工厂的组织架构:制造企业组织架构(来源:网络)与车间这一层级相关的部门主要有:资材部,生产部,工程部,品管部等。这些部门的人员是车间级系统的主要使用用户。从人员架构及职责出发,我们可以整理出如下表格:从上表可以看出,车间级管理我们可以统一抽取出适合平台实现的系统功能:SRM+WMS+APS+MES+QMS+DCC等。四、规划再来看产品制造的主线流程:采购下单=》材料进入仓库=》材料发到产线=》生产加工=》成品产出入库=》发货客户,如下图:对于大多数中小企业实现数字化,可以从这个主线流程入手,往外发散。我们把这个主线流程再细化,可以得到第一阶段系统主要覆盖范围,下图是目前中小制造企业数字化转型比较容易看到效果的系统分布:五、框架限于个人能力本次我们选择一款快速开发平台来搭建系统主框架。此次后台主框架暂定选择:admin.net,ORM选择Sqlsugar,数据库使用sqlserver;大家如果有好的开源框架也可以推荐。后台管理:admin.net移动端APP:uni-app(考虑蓝牙便携打印机支持,可采用离线打包方式)。标签设计:vue-plugin-hiprint平台框架主要开源模块选择如下:六、总结一个平台涵盖了MOM的核心功能,减少了各系统之间的信息孤岛,对于中小型企业来数字化转型来说不仅大大降低了投入成本,同时减少了后续的运营成本。那么,如何进行系统业务搭建?从哪个模块切入?尽请期待下一章:智能制造之路—从0开始打造一套轻量级MOM平台之仓库管理(WMS)名词解释:ERP
2023年7月29日
其他

.NET 静态代码织入 - 轻松实现 AOP

可能会很繁琐切侵入性较大。所以MoAttribute设计为可以应用于方法(method)、类(class)、程序集(assembly)和模块(module),
2023年7月28日
其他

C# 条码识别的解决方案(ZBar)

、https://pan.baidu.com/s/1OxpUv-8ApDWznxtSvbbNWg转自:二次元攻城狮链接:cnblogs.com/timefiles/p/17573031.html-
2023年7月27日
其他

.NET 开源免费的Windows远程桌面管理软件

前言给大家推荐一款由.NET开源且免费的远程桌面管理软件:1Remote。1Remote官方项目介绍1Remote是一款现代的远程会话管理和启动器,它让你能够在任何时候快速开启一个远程会话。目前1Remote已支持
2023年7月26日
其他

.NET 分布式爬虫框架

Request("http://www.ruijihg.com/archives/category/tech/bigdata");var
2023年7月25日
其他

ASP.NET Core 使用最简洁的代码实现登录、认证和注销

context.Response.Redirect("/");}转自:Artech链接:cnblogs.com/artech/p/inside-asp-net-core-6-39.html-
2023年7月24日
其他

.NET 6 开发的轻量级压测工具

www.baidu.com。完成后,会输出到笛卡尔图的测试结果,并且显示每个请求和对应的响应时间。输出结果:Hammer
2023年7月23日
其他

.NET 使用Automapper映射 Record类型

//你的程序集安装完成后,我们可以在项目中引入Automapper的命名空间,以便在代码中使用Automapper相关的功能。接下来,假设我们有一个POCO类Person,具有以下属性:public
2023年7月22日
其他

理解 ASP.NET Core -限流(Rate Limiting)

前言在微服务化的架构设计中,网关扮演着重要的看门人角色,它所提供的功能之一就是限流。而对于众多非微服务化的系统来说,可能并不会部署网关(无论是因为成本还是复杂度),在这种场景下,为了实现限流,微软在
2023年7月21日
其他

.NET 人脸识别认证的离线开源项目

前言推荐一个功能强大、易于集成和扩展的开源人脸识别和情感分析库。项目简介ViewFaceCore是一个基于C#和.NET
2023年7月20日
其他

C# 并发编程 Thread 和 ThreadPool 梳理

等更高效率的并发类,线程和线程池在实际开发中逐渐减少了,但是不能不知道他们的用法,因为总有需要对接的内容,别人用了你也得能看懂。本文将结合示例,简单介绍下
2023年7月19日
其他

.NET 定时任务+代码生成 前后端分离权限框架

EF7,清真!功能全面,包含数据权限、按钮权限、动态菜单、动态任务调度、动态WebApi、定时标记
2023年7月18日
其他

用字符串表达式执行引擎消除掉if else if

break;}代码总体不超过200行,详细请移步Demohttps://github.com/yuzd/FastExpressionEngine/tree/master/Demo字符串表达式执行引擎
2023年7月17日
其他

.NET 6 使用 RabbitMQ 学习

}}运行结构如下能者多劳消费者1比消费者2的效率要快,一次任务的耗时较短消费者2大量时间处于空闲状态,消费者1一直忙碌通过channel.BasicAck(ea.DeliveryTag,
2023年7月16日
其他

C# 提高 Linq 运行效率的 PLinq

只针对内存对象使用。确保并行执行的循环线程是安全的,尽量避免在lock中执行任务等待。使用的时候注意选择。转自:翔星链接:cnblogs.com/xbhp/p/17528227.html-
2023年7月15日
其他

Visual Studio C# 多环境配置 Web.config

dynamic动态类型本质.NET使用EF批量插入数据,一行代码性能飙升!看完本文有收获?请转发分享给更多人推荐关注「DotNet」,提升.Net技能
2023年7月14日
其他

C# 读写 Excel 四种方案(OpenXml、NPOI、EPPlus、Spire.Office)

↓推荐关注↓前言在项目中需要使用C#读写Excel,每天定时将数据输出到Excel表格中。在参考了很多的方案后,找到了4个常用的方案,并提供了一些小Demo。更多功能和示例可以参考官方文档。1、Microsoft.Office.Interop.Excel:不推荐使用。2、OpenXml:微软官方提供的SDK。3、NPOI:第三方开源框架,口碑很好。4、EPPlus:只能用于读写Excel,笔者目前使用最多。5、Spire.Office
2023年7月13日
其他

探究 C# dynamic动态类型本质

False而obj2则是System.Dynamic.ExpandoObject类型的对象,而且从初始化到对象生命周期结束。始终是这个类型。我们对obj2运行同样的代码,发现会报错Type
2023年7月12日
其他

.NET使用EF批量插入数据,一行代码性能飙升!

↓推荐关注↓背景小编最近接到一个任务,批量获取内部网站用TXT生成的日志,在闲时把日志插入到MySql数据库做分析。为了快速开发小编选择了Entity
2023年7月11日