关于代码性能优化的总结
2024/5/27 11:43:21

今天同事发开中遇到了一个代码性能优化的问题,原本需求是:从一个数据库中查询某个表数据,存放到datatable中,然后遍历datatable,看这些数据在另一个数据库的表中是否存在,存在的话就要更新,不存在就要插入。就这个需求本身来说很简单,但是随着数据量的增大,之前通过循环遍历的方式就出现了性能问题。我在思索片刻后,给出的建议是分页查询和利用事务批量提交。 1.利用数据库事务批量提交1 using (SqlTransaction transaction = targetConnection.BeginT

.net core微服务之网关
2024/5/27 11:42:37

网关: 一:apisixdoc:https:apisix.apache.gzhdocsapisixgettingstartedREADMEgithub:https:github.comapacheapisix 二:Konggithub:https:github.comKongkong 三:Ocelotgithub:https:github.comThreeMammalsOcelot 四:janusgithub:https:github.commotivlabsjanus 前置条件:docker,yam

FluentFTP实战:轻松操控FTP文件,创造高效传输体验
2024/5/27 11:42:15

概述:通过FluentFTP库,轻松在.中实现FTP功能。支持判断、创建、删除文件夹,判断文件是否存在,实现上传、下载和删除文件。简便而强大的FTP操作,提升文件传输效率。 在.中,使用FluentFTP库可以方便地实现FTP的相关功能。以下是判断文件夹是否存在、文件夹的创建和删除、判断文件是否存在、文件的上传、下载和删除的基本操作。 FluentFTP是一个基于C#的开源FTP操作库,通过其简洁的API设计,使FTP操作更加易用。提供了丰富的功能,包括上传、下载、创建、删除文件和文件夹等。在.平台上,特

浅谈WPF之利用RichTextBox实现富文本编辑器
2024/5/27 11:42:15

在实际应用中,富文本随处可见,如留言板,聊天软件,文档编辑,特定格式内容等,在WPF开发中,如何实现富文本编辑呢?本文以一个简单的小例子,简述如何通过RichTextBox实现富文本编辑功能,主要实现复制,剪切,粘贴,撤销,重做,保存,打开,文本加粗,斜体,下划线,删除线,左对齐,居中对齐,右对齐,两端对齐,缩进,减少缩进,项目符号,数字符号,上标,下标,背景色,前景色,图片,打印等功能,仅供学习分享使用,如有不足之处,还请指正。 什么是RichTextBox? 使用RichTextBox可以显示

C# 实现刘谦春晚魔术
2024/5/27 11:42:14

internal class Program{static Liststring list=new Liststring() { "A""B""C""D""A""B""C""D" }static string hiddenEle1 = string.Empty第一次藏起来的牌static void Main(string[] args){Console.WriteLine($"初始牌组:{string.Join(''list)}")第一趴 名字有几个字Console.WriteLine("请输入你的名字有

C#多线程精解:优雅终止线程的实用方法与技巧
2024/5/27 11:42:14

概述:在C#多线程编程中,合理终止线程是关键挑战。通过标志位或CancellationToken,实现安全、协作式的线程终止,确保在适当时机终止线程而避免资源泄漏。 应用场景: 在C#多线程编程中,有时需要终止正在运行的线程,例如在用户取消操作、程序关闭等情况下。 思路: 线程终止通常涉及到合作式终止而非强制终止,因为强制终止可能导致资源泄漏和不确定的状态。一般采用标志位、信号等方式,让线程自行安全地退出。 方法和步骤: 1.使用标志位控制线程执行: using System using System.T

C#实现异步编程的常用方式总结
2024/5/27 11:42:13

随着现代软件对性能和响应速度的要求越来越高,异步编程已经成为许多开发者必须掌握的技能。C# 提供了多种实现异步编程的方式,每种方式都有其特定的适用场景和优缺点。本文将详细介绍 C# 中实现异步编程的常用方式,帮助读者更好地理解并选择合适的异步编程方法。 一、Task 和 Task C# 5.0 引入了 Task 和 TaskTResult 类型,这两个类型是实现异步编程的基础。Task 表示一个异步操作,不返回结果;TaskTResult 表示一个异步操作,并返回结果。 使用 Task 和 TaskTRe

轻松实现.NET应用自动更新:AutoUpdater.NET教程
2024/5/27 11:42:13

在软件开发中,应用程序的自动更新功能是一个重要的特性,它能让用户在不手动干预的情况下获取最新的软件版本。这不仅提高了用户体验,还有助于开发者及时修复潜在的问题、增加新功能,并确保软件的安全性和稳定性。 对于.开发者来说,实现自动更新功能并不总是那么简单。幸运的是,有一个名为AutoUpdater.的库可以大大简化这个过程。在本篇教程中,我们将介绍如何使用AutoUpdater.为.应用程序添加自动更新功能。 一、安装AutoUpdater. 首先,您需要在项目中安装AutoUpdater.库。您可以通过N

WPF新境界:MVVM设计模式解析与实战,构建清晰可维护的用户界面
2024/5/27 11:42:13

概述:MVVM是一种在WPF开发中广泛应用的设计模式,通过将应用程序分为模型、视图、和视图模型,实现了解耦、提高可维护性的目标。典型应用示例展示了如何通过XAML、ViewModel和数据绑定创建清晰、可测试的用户界面。 什么是MVVM? MVVM(ModelViewViewModel)是一种用于构建用户界面的软件设计模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和视图模型(ViewModel)。MVVM的目标是实现界面逻辑与用户界面的分离,提高代码的可维护性和可测试性。 为什么

利用RSA加密打造强大License验证,确保软件正版合法运行
2024/5/27 11:42:13

概述:C#软件开发中,License扮演着确保软件合法使用的重要角色。采用RSA非对称加密方案,服务端生成带签名的License,客户端验证其有效性,从而实现对软件的授权与安全保障。 License应用场景: License(许可证)在C#软件开发中被广泛应用,以确保软件在合法授权的环境中运行。常见场景包括商业软件、桌面应用、服务端应用等。 Licence实现方案: 一种常见的License实现方案是使用非对称加密技术,将License信息加密,并在软件中内置公钥,从而确保只有使用私钥签名的License

[Blazor WebAssembly] 学习随笔——组件1.微信弹框(WXDialog)
2024/5/27 11:42:11

总有以下的需求:等待用户确认,就是有【确定】和【取消】按钮,有个标题和内容的弹框(比如:您确定要删除吗?) 就是告知一下,就是上面的【取消】按钮不显示(比如:保存成功!) 莫有按钮,几秒钟后自己消失,就是所谓的toast(比如:已完成) 莫有按钮,需要发送命令才能消息(比如:数据加载中)一开始犯了经验主义错误,还想着要调用js啥的,有点头大;后来醒悟过来的,所谓显示与否,不就加一个bool的参数,然后设置true或者false吗so easyso方便! 一、组件(WXDialog.raz) @if (Is

Blazor OIDC 单点登录授权实例5
2024/5/27 11:42:11

目录:OpenID 与 OAuth2 基础知识 Blaz wasm Google 登录 Blaz wasm Gitee 码云登录 Blaz OIDC 单点登录授权实例1建立和配置IDS身份验证服务 Blaz OIDC 单点登录授权实例2登录信息组件wasm Blaz OIDC 单点登录授权实例3服务端管理组件 Blaz OIDC 单点登录授权实例4 部署服务端独立WASM端授权 Blaz OIDC 单点登录授权实例5 独立SSR App (8 webapp)端授权 Blaz OIDC 单点登录授权实例

【.NET】聊聊 IChangeToken 接口
2024/5/27 11:42:10

由于两个月的奋战,导致很久没更新了。就是上回老周说的那个产线和机械手搬货的项目,好不容易等到工厂放假了,我就偷偷乐了。当然也过年了,老周先给大伙伴们拜年了,P话不多讲,就祝大家身体健康、生活愉快。其实生活和健康是密不可分的,想活得好,就得健康。包括身体健康、思想健康、心理健康、精神健康。不能以为我无病无痛就很健康,你起码要全方位健康。 不管你的工作是什么,忙或者不忙,报酬高或低,但是,人,总得活,总得过日子。咱们最好多给自己点福利,多整点可以自娱自乐的东西,这就是生活。下棋、打游戏、绘画、书法、钓鱼、飙车

C#使用MiniExcel导入导出数据到Excel/CSV文件
2024/5/27 11:42:08

MiniExcel简介 简单、高效避免OOM的.处理Excel查、写、填充数据工具。 目前主流框架大多需要将数据全载入到内存方便操作,但这会导致内存消耗问题,MiniExcel 尝试以 Stream 角度写底层算法逻辑,能让原本1000多MB占用降低到几MB,避免内存不够情况。特点:低内存耗用,避免OOM、频繁 Full GC 情况 支持即时操作每行数据 兼具搭配 LINQ 延迟查询特性,能办到低消耗、快速分页等复杂查询 轻量,不需要安装 Microsoft Office、COM+,DLL小于150KB

[Blazor WebAssembly] 学习随笔——身份验证
2024/5/27 11:42:07

最近在折腾微信相关的开发,包括公众号、企业微信内部应用、企业微信第三方开发。基于Raz方式写了:企业微信内部应用的类库 企业微信第三方应用的类库 公众号的类库 一个统一管理公众号、企业微信内部应用和第三方应用有关授权、Token之类的应用。然后准备写一个开源的简单的酒店管理系统,名字的想好了,叫OpenPms。 OpenPms将是一个企业微信第三方应用,在使用转发功能的时候,发现腾讯要求必须有200人以上的企业微信才能调用相关JsApi。然后又把公众号的类库给拉进来了。 开发过程中,折腾了一会type ,

WPF中值转换器的使用
2024/5/27 11:42:07

什么是值转换器 在WPF(Windows Presentation Foundation)中,值转换器(Value Converter)是一种机制,允许你在绑定时转换绑定源和绑定目标之间的值。值转换器实现了 IValueConverter 接口,该接口包含两个方法:Convert 和 ConvertBack。这两个方法分别用于在绑定源到目标时进行值转换,以及在目标到源时进行值转换。 使用值转换器的Demo 首先创建一个绑定数据源类: using System using System.ComponentM

Nginx:高性能的Web服务器与反向代理
2024/5/27 11:42:06

引言: 在现代互联网应用程序的开发和部署中,选择一个可靠、高性能的Web服务器是至关重要的。Nginx是一个备受推崇的选择,它以其卓越的性能和可靠性在开发者社区中享有盛誉。本文将介绍Nginx的概念、优势,以及如何使用Nginx作为Web服务器和反向代理。 什么是Nginx? Nginx(发音为“engine X”)是一个开源的高性能Web服务器,也可以用作反向代理服务器、负载均衡器和HTTP缓存。它具有轻量级、可扩展和高并发处理的特点,常用于高流量的网站和应用程序,如互联网巨头之一的Facebook。

AgileConfig-1.9.0 发布,支持 MongoDB 存储
2024/5/27 11:42:06

Hello 大家好,先祝福大家新年快乐。🎉🎉🎉 AgileConfig 1.9.0 版本终于赶在农历年前发布了。 Mongodb 当前做为一款非常成熟的 Nosql 产品,已经有越来越多的产品或项目基于它来构建。在 AgileConfig 开源的这几年之间,陆陆续续收到不少同学问为啥不支持 Mongodb。我的回答是没有时间(懒)。一是因为确实没有时间,二是要支持 Mongodb 这种非关系型数据库,需要对 AgileConfig 项目本身做比较大的重构。就在去年 12 月 AgileConfig

在Windows上使用.NET部署到Docker 《让孩子们走出大坑》
2024/5/27 11:42:03

折腾Docker 有几天了,整别的都没这个糟心。目前已经顺利部署运行起来了。顺便给大家分享下处理在Windows上使用.部署到Docker的相关问题解决方法。 1. Docker无法安装问题 (下图是网上找了个类似的安装失败截图,页面大致一样,就是提示内容是 Docker Desktop 只能运行在win10 企业版教育版 并且版本号1904以上) 首先呢我是Win10 教育版 并且版本长期不更新。 所以只能打开Windows更新 更新到1904版本吧,发现还是不行。于是升级到企业版好了。 以下是

【OpenVINO™】在 MacOS 上使用 OpenVINO™ C# API 部署 Yolov5
2024/5/27 11:41:48

在 MacOS 上使用 OpenVINO™ C# API 部署 Yolov5项目介绍YOLOv5 是革命性的 "单阶段"对象检测模型的第五次迭代,旨在实时提供高速、高精度的结果,是世界上最受欢迎的视觉人工智能模型,代表了Ultralytics对未来视觉人工智能方法的开源研究,融合了数千小时研发中积累的经验教训和最佳实践。同时官方发布的模型已经支持 OpenVINO™ 部署工具加速模型推理,因此在该项目中,我们将结合之前开发的 OpenVINO™ C# API 部署 YOLOv5 DET 模型实现物体对象检

4.WPF样式使用规范
2024/5/27 11:41:47

在Web开发的时候,编写css样式的时候通常是统一写在.css样式文件中。在WPF中也可以使用这样的思想。 样式引用: 1.新建一个项目用于统一存放样式WPF.UI 添加一个资源字典Button.xaml或者CheckBox.xaml等等....ResourceDictionary xmlns="http:schemas.microsoft.comwinfx2006xamlpresentation"xmlns:x="http:schemas.microsoft.comwinfx2006xaml"!图标按钮

C#获得项目最后编译时间
2024/5/27 11:41:47

C#获得项目最后编译时间 效果具体格式可以自定义 核心代码 string GetCompileVersion() {string iginVersion = "" + System.IO.File.GetLastWriteTime(this.GetType().Assembly.Location)int MsgCnt = 0string year = ""string month = ""string day = ""string hour = ""string min = ""string sec =

3.Popup 消息弹出框
2024/5/27 11:41:46

Popup 是一个用于显示临时性内容的控件,它可以在应用程序的其他内容之上显示一个弹出窗口。它通常用于实现下拉菜单、工具提示、通知消息等功能。 主要属性为: Child:获取或设置 Popup控件的内容。IsOpen:获取或设置一个值,该值指示Popup 是否可见Placement:获取或设置 Popup 控件打开时的控件方向,并指定Popup 控件在与屏幕边界重叠时的控件行为PlacementTarget:获取或设置当打开 Popup 控件时该控件相对于其放置的元素。PopupAnimation:获取或

如何做好一个信息系统项目经理,一个项目经理的个人体会和经验总结(四)
2024/5/27 11:41:46

前言 说完了在 项目开发阶段 我的一些个人体会和经验总结,最后我们聊聊在 项目验收阶段 我们需要关注哪些方面的内容…… 项目验收阶段 系统开发告一段落后,就进入客户培训、系统验收阶段,这个阶段,我一般会注意以下几个问题: 1. 给客户做培训前,多注意一些表面功夫 大多数客户其实并不太关心功能内部是如何实现的,他们一般比较重视产品的功能是否完整可用,外观是否美观 大气等等,但在绝大多数技术人员心中,恰好是相反的,系统的逻辑核心是否正确才是关键,至于界面如何,界面上的用词是否准确,他们是觉得那是无关紧要的问题

MVVM-命令模式的实现与应用
2024/5/27 11:41:45

MVVM命令模式的实现与应用 本文同时为b站WPF课程的笔记,相关示例代码 绑定 这个其实前面已经讲过一部分 使用{Binding}设置数据绑定,将控件的属性绑定到 ViewModel 的相应属性。 比如说需要注意,在xaml中绑定的不再是UserName和Passwd了,而是loginModel.UserName和loginModel.Passwd。 还要为命令和用户交互设置绑定,例如按钮点击事件可以绑定到 ViewModel 中的命令。 命令 在MVVM中,通常不会在 View 的代码后置文件(比如这

1.Prism框架介绍
2024/5/27 11:41:45

什么是Prism: 1.WPF Prism是一个用于构建模块化、可扩展和可重用的WPF应用程序的框架。它基于MVVM模式,提供了一种简单且灵活的方式来管理复杂的WPF应用程序。 2.Prism框架提供了一些核心概念,包括模块化开发、依赖注入、命令模式、导航和事件聚合等。它还提供了一些实用工具和类来简化开发过程,例如模块加载器、事件聚合器、导航器等。 3.Prism框架的主要目标是帮助开发人员构建易于维护和扩展的WPF应用程序,同时提高代码的可重用性和可测试性。 Github:https:github.co

2.Prism框架ModuleAttribute、IOC扩展、功能注册
2024/5/27 11:41:45

ModuleAttribute(按需延迟加载) ModuleAttribute 是 Prism 框架中用于标识模块的属性。通过使用 ModuleAttribute,可以将模块与特定的模块目录进行关联,从而使 Prism 应用程序能够动态加载和初始化模块。 在使用 WPF ModuleAttribute 时,需要将该属性应用于模块类,并指定模块的模块目录路径。例如: ModuleName:获取或设置模块的名称 OnDem:获取或设置指示是否应按需加载模块的值。 StartupLoaded :获取或设置一个值

WPF界面魔法:探秘Template奇妙世界,个性化定制你的UI
2024/5/27 11:41:43

概述:WPF中的Template机制为界面定制提供了强大工具,包括控件模板、ItemsPresenter、ItemsPanel、和ItemContainerStyle。通过这些功能,开发者能精确定义控件外观和布局,个性化每个项的样式,实现灵活而美观的用户界面。 WPF中各种Template功能用途:Template(控件模板):用途: 控件模板用于定义整个控件的外观和布局。 示例: 在ComboBox中,可以通过模板定义文本区域、下拉按钮区域以及Items的Popup区域。ItemsPresenter(项

WPF魔法:轻松实现依赖注入与控制反转提升代码优雅性与可维护性
2024/5/27 11:41:43

概述:在WPF中实现依赖注入和控制反转,通过定义接口、实现类,配置容器,实现组件解耦、提高可维护性。 什么是依赖注入和控制反转? 依赖注入(Dependency Injection,DI): 是一种设计模式,旨在减少组件之间的耦合度。通过依赖注入,对象不再自行创建或查找依赖对象,而是通过外部注入的方式提供所需的依赖。 控制反转(Inversion of Control,IoC): 是一种软件设计原则,它颠覆了传统的控制流程。在IoC中,不再由调用者控制调用,而是由外部容器负责控制和管理对象的创建和依赖关系

Winform DataGridView 添加复选框列
2024/5/27 11:41:43

1.编辑DataGridView的属性;2.定义列的类型为chekcBox;3.点击添加;4.效果;5.编辑;本文来自博客园,作者:瘦腿先生Stephen,转载请注明原文链接:https:www.cnblogs.comStephenlegp18003009