如何利用 IDataErrorInfo 实现数据校验
一、定义: ValidatesOnDataErrs 是一种在 WPF 中实现数据校验的方式,可以通过在 XAML 中设置属性 ValidatesOnDataErrs 为 True 来启用。 二、使用: ① 在 ViewModel 中实现 IDataErrInfo 接口,该接口定义了两个属性:Err 和 Item[string columnName]—— Err 属性返回 ViewModel 中所有错误的描述信息;—— Item[string columnName] 属性返回指定属性的错误描述信息。 ②
前后端都用得上的 Nginx 日常使用经验
前言nginx 是一个高性能的开源反向代理服务器和 web 服务器,一般用来搭建静态资源服务器、负载均衡器、反向代理,本文将分享其在 Windowsdocker 中的使用使用 nssm 部署成服务的方案脚本,局域网中自定义域名解决https提示不安全的解决方案,以及一路踩过的坑。特点高性能:事件驱动的异步架构,能够处理大量并发连接 静态资源服务器:部署前端静态页面及静态资源 反向代理服务器:接收客户端请求,并将请求转发到后端服务,可以实现负载均衡、请求分发和缓存等功能 支持 HTTPS使用情况配置域名转发
使用 Docker Compose 部署 RabbitMQ 的一些经验与踩坑记录
前言RabbitMQ 是一个功能强大的开源消息队列系统,它实现了高效的消息通信和异步处理。 本文主要介绍其基于 DockerCompose 的部署安装和一些使用的经验。特点成熟,稳定 消息持久化 灵活的消息路由 高性能,高可用性,可扩展性高 支持插件系统:RabbitMQ 具有丰富的插件系统,可以通过安装插件来扩展其功能,例如管理界面、消息追踪、消息转换等。 官方提供了 .Java 的 SDK使用情况项目中用于日志记录,消息发送,数据同步等,稳定可靠 业务模块的初始化,数据导入异步处理 做好幂等处理,不同
模拟实现.net中的Task机制:探索异步编程的奥秘
.中使用Task可以方便地编写异步程序,为了更好地理解Task及其调度机制,接下来模拟Task的实现,目的是搞清楚:Task是什么 Task是如何被调度的基本的Task模拟实现 从最基本的Task用法开始 Task.Run(Action action)这个命令的作用是将action作为一项任务提交给调度器,调度器会安排空闲线程来处理。 我们使用Job来模拟Task public class Job {private readonly Action _wkpublic Job(Action wk) = _w
c# list集合克隆
在C#中,List集合是一种泛型集合,可以存储任何类型的对象。克隆一个List集合可以通过以下几种方式实现:使用List的构造函数使用List的构造函数可以创建一个新的List对象,并将原始List中的元素复制到新List中。例如:Listint list1 = new Listint { 1 2 3 }Listint list2 = new Listint(list1)在上面的代码中,list2是一个新的List对象,它使用list1中的元素进行初始化。使用List的CopyTo方法List的CopyT
Performance Improvements in .NET 8 -- JIT部分翻译
相关视频 动态PGO 基准测试设置 在本文中,我包括微基准测试以突出讨论的各个方面。其中大部分基准测试都是使用BenchmarkDot v0.13.8实现的,除非另有说明,否则每个基准测试都有一个简单的设置。 要跟随本文,首先确保已安装. 7和. 8。对于本文,我使用了. 8 Release Cidate (8.0.0rc.1.23419.4)。 完成这些先决条件后,在新的基准目录中创建一个新的C#项目: dot new console o benchmarks cd benchmarks 该目录将包含两
c# Dictionary 字典与线程安全字典的基本使用
在C#中,字典(Dictionary)是一种特殊的集合,用于存储键值对。这是一种关联数组,其中每个元素都包含一个键(Key)和一个值(Value)。 下面是一个简单的C#字典的例子:字典:泛型;key value,增删查改 都很快; 字典如果数据量太大的话也会影响效率. 字典不是线程安全 ConcurrentDictionaryConsole.WriteLine("Dictionary")Dictionaryint string dic = new Dictionaryint string()dic.
Net 高级调试之四:Windbg 动态调试
一、简介 今天是《 高级调试》的第四篇文章。到今天为止,也有三篇文章了,对 Windbg 也有初步的认识了,当然,一个工具流畅、熟练的使用,对于我们调试 程序是至关重要的。在前几篇文章的基础上,我们这篇文章主要介绍一些和使用 Windbg 有关的命令和操作。就我个人而言,第一次接触这个东西,还是挺难的,以前从来没有用过 Windbg,用的最多的就是 Visual Studio 的调试功能。不怕大家笑话,如何通过 Windbg 加载一个 exe,我都不知道,更不要谈加载 DUMP 文件。我看第一遍视
记一次 .NET 某工厂无人车调度系统 线程爆高分析
一:背景 1. 讲故事 前些天有位朋友找到我,说他程序中的线程数爆高,让我帮忙看下怎么回事,这种线程数爆高的情况找问题相对比较容易,就让朋友丢一个dump给我,看看便知。 二:为什么会爆高 1. 查看托管线程 别人说的话不一定是真,得自己拿数据出来说话,可以用 !t 命令观察一下便知。0:000 !t ThreadCount: 4683 UnstartedThread: 0 BackgroundThread: 4663 PendingThread: 0 DeadThread:
Apollo 配置中心的部署与使用经验
前言Apollo(阿波罗)是携程开源的分布式配置管理中心。 本文主要介绍其基于 DockerCompose 的部署安装和一些使用的经验特点成熟,稳定 支持管理多环境多集群多命名空间的配置 配置修改发布实时(1s)通知到应用程序 支持权限控制、配置继承,版本管理,灰度发布,使用监控等 官方提供了 。JavaGo 的 SDK 以及 Http 接口 国产中文,文档友好,大厂背书,使用方案成熟 使用简单,支持 Docker , K8S,官方也提供多种高可用方案参考使用情况目前在微服务项目中做为配置中心,表现稳定,
300元到手啦-阿里云云工开物计划 阿里云要给所有中国高校在读大学生每人送一台云服务器
300元到手啦阿里云云工开物计划 阿里云要给所有中国高校在读大学生每人送一台云服务器 先放链接: 点击进入 优惠券适用于以下场景 阿里云预付费通用,增量带宽,降级,阿里云按量付费账单,新购,续费,转正,带宽补偿,试用,转换订单,更换操作系统,扩容,升级,换购必须是在校大学生且完成认证,认证跟着指引完成即可。来自https:www.lanol.cnpost721.html转载 感谢各位支持,转载文章都有标明出处,如有问题联系站长~
代码生成器 CodeBuilder 3.2 正式版发布
CodeBuilder是一款强大的代码生成工具,目前发布了 3.2 版本,大家可以前去下载体验 官方主页。 1、多种数据源基于 ADO. 的数据驱动Power DesignerPDManerDbSchemaSwagger这几种数据源基本上已经覆盖了我们常用的数据环境了,如果你有能力的话,可以自己开发数据源插件。基于 Fireasy 3,支持从 SqlServer、MySql、acle、Firebird、PostgreSql、SQLite、达梦、人大金仓、神通数据库,以及 Odbc、OleDb 驱动中获取所
TerraMoursGPT V1.0 开发总结
TerraMoursGPT V1.0 开发总结 TerraMoursGPT V1.0 是之前gpt项目基于TerraMours后端框架的重构,实现用户登陆和基于SK的多语言模型聊天、基于chatgpt和SD的多模型图片生成等功能。管理端实现数据看板、聊天记录管理,图片记录管理、用户管理、系统配置等。实现了docker快速部署,有兴趣的朋友可以自己搭建属于自己的AI管理系统。 特别鸣谢我的搭档firstsaofan 相关项目功能介绍和部署请跳转项目官网查看 官网地址:https:terramours.sit
Office文档转为pdf格式(一)
将Office文档(Wd、Excel、Powerpoint)转为pdf格式,有多种实现方式,最常见的就是使用微软的Office组件。步骤如下: ① 打开NuGet包管理器,引用以下四个组件:MicrosoftOfficeCeMicrosoft.Office.Interop.WdMicrosoft.Office.Interop.ExcelMicrosoft.Office.Interop.PowerPoint ② 编写Office帮助类 public static class Of
字符串表达式计算(a+b/(a-b))的思路与实践
前言为满足业务需要,需要为项目中自定义模板添加一个计算字段的组件,通过设置字符串表达式,使用时在改变表达式其中一个字段的数据时,自动计算另外一个字段的值。 本篇为上篇,介绍原理,简单实现一个工具,输入字符串表达式,解析其中的参数,输入参数计算结果。 下篇将基于此封装实现对Mongo查询语法的封装,通过addFields的方式转换表达式,后续等封装成NuGet包再分享实现如下所示 输入 1+1 输出 2 输入 a+1 参数a:1 输出 2 输入 (a+1)b 输入a:1b:1 输出 2 输入 (a+1(2
WPF自定义控件库之Window窗口
在WPF开发中,默认控件的样式常常无法满足实际的应用需求,我们通常都会采用引入第三方控件库的方式来美化UI,使得应用软件的设计风格更加统一。常用的WPF的UI控件库主要有以下几种,如:Modern UI f WPF,MaterialDesignInXamlToolkit,PanuonUI,Newbeecoder.UI,WPF UI ,AduSkin,Panuon.UI.Silver,HyControl,MahApps.Metro,Kino.Toolkit.Wpf,Xceed Extended WPF To
Web SSH 的原理与在 ASP.NET Core SignalR 中的实现
前言 有个项目,需要在前端有个管理终端可以 SSH 到主控机的终端,如果不考虑用户使用 vim 等需要在控制台内现实界面的软件的话,其实使用 Process 类型去启动相应程序就够了。而这次的需求则需要考虑用户会做相关设置。 原理 这里用到的原理是伪终端。伪终端(pseudo terminal)是现代操作系统的一个功能,他会模拟一对输入输出设备来模拟终端环境去执行相应的进程。伪终端通常会给相应的进程提供例如环境变量或文件等来告知他在终端中运行,这样像 vim 这样的程序可以在最后一行输出命令菜单或者像 n
计算机网络-IP地址
目录子网划分定长子网划分子网划分的方法子网掩码可变长子网划分无类别编址网络前缀路由聚合特殊用途的IP地址专用网络地址链路本地地址运营商级NAT共享地址用于文档的测试网络地址IP地址的规划和分配IP地址的规划和分配方法IP地址的规划和分配实例 子网划分 定长子网划分 子网划分的方法 从IP地址的主机号部分借用若干位作为子网号主机号相应减少同样的位数 \[{IP地址}::=\{{网络号子网号主机号}\} \]子网划分后的特点:对外仍表现为一个网络,外部无法得知网络内部的布局 所有子网的子网号部分长度都相等,主
Unity进阶开发-FSM有限状态机
# Unity进阶开发FSM有限状态机 前言 我们在进行开发时,到了一定程度上,会遇到数十种状态,继续使用Unity的Animat控制器会出现大量的bool,float类型的变量,而这些错综复杂的变量与Animatat控制器如同迷宫版连线相结合会变得极其的复杂且无法良好维护扩展,出现一个BUG会导致开发过程中开发者承受极大的精神力,而这时候,使用有限状态机或者AI行为树便成为了一个极佳的选择,本文只记录了有限状态机的开发 使用有限状态机进行状态管理与切换可以大幅度的减少开发时候的难度,在开发过程中只需要关
Net 高级调试之三:类型元数据介绍(同步块表、类型句柄、方法描述符等)
一、简介 今天是《 高级调试》的第三篇文章,压力还是不小的。上一篇文章,我们浅浅的谈了谈 CLR 和 Windows 加载器是如何加载 程序集的,如何找到程序的入口点的,有了前面的基础,我们今天看一点更详细的东西。既然 Windows 操作系统已经加载了 CLR,初始化了应用程序域,加载了我们的 程序,那我们就看看 类型在内存中的具体样子。这一篇文章还是有一点难度的,我看第一遍视频的时候,也不知道说了个啥,后来又看了《 高级调试》,似懂非懂。一遍不行,那就再来一遍,还不行,那就再来一遍,俗话说的
OpenCV+OpenCvSharp实现图片特征向量提取与相似度计算
图片特征向量是一种用于描述图片内容的数学表示,它可以反映图片的颜色、纹理、形状等信息。图片特征向量可以用于做很多事情,比如图片检索、分类、识别等。 本文将介绍图片特征向量的提取以及相似度的计算,并使用C#来实现它们。文章开始前,我们先来简单了解一下 OpenCV 和 OpenCvSharp4,这两个库是本文的核心。 什么是OpenCV OpenCV(Open Source Computer Vision Library)是一个基于开源发行的跨平台计算机视觉和机器学习软件库,它支持多种编程语言,包含了数百种
Visual Studio 设置快捷代码段
什么是快捷代码段:例如: 只需要输入mst后按一下TAB就会自动生成代码memset(str 0 sizeof(str)),只需要输入Pow就可以自动生成一个快速幂函数等等,非常方便快捷,一定程度提高了编写代码的效率 Visual Studio 设置自定义代码段方法:①新建文件XXX.snippet,其中的"XXX"就是上述的"Pow"、"mst",也就是代码段的简写 ②复制以下代码(不知道VS不同版本是否相同,如果不同可以去工具快捷代码段里面找现成的,然后再修改) xml version="1.0
Unity进阶提升-2D游戏跳跃手感优化(跳起下落)
在进行2D游戏开发时,跳跃是不可缺少的一个重要功能。但是我们在Unity开发时Unity本身的物理引擎并不能提供很好的的手感,下落的时候轻飘飘的,这操作起来显然非常不舒服。所以,我们需要自己对跳跃进行优化,以此来获得更好的手感。我们不难发现,在绝大多数2D游戏的跳跃中,下落的速度比上升的速度要快上很多,下落的用时是上升的一半左右。 提示,在优化跳跃时,将使用刚体组件 首先,我们需要对Unity物体跳跃阶段进行分析:图中,跳跃共分为两个阶段,第一阶段就是跳起,人物上升阶段,第二阶段就是下落阶段 在第一阶段中
简单实现.NET Hook与事件模拟
最近玩《星露谷物语》上瘾,本来是看着个休闲游戏,现在玩成修仙游戏了,上百个小时浑身是肝,中午午休习惯都强行给改了。虽然挺有意思,但是太肝了,入坑前请谨慎。补充一下,这个游戏应该是基于 XNAMonoGame 写的。这个游戏在丧失焦点的时候会自动暂停,无法自动推进,我觉得效率太低了,为了齐先生的场子,我得搞一个自动点击的东西。 不想下载软件就自己写一个吧,因为要保证游戏始终在前面,那肯定开关需要启用全局快捷键。找了一下,. 有一个 SharpHook (tolik.io) 就挺简单的,花几分钟写了一个,实
C#入门:如何合理制定方法参数-上
1、利用面向对象的原则,将我们面对的功能拆分出相关对象 2、相同功能只应出现在一个类中。 3、相似功能尽量提取其公共部分 总的目标简单来说就是:精减代码量。 我们以一个动态条件查询界面来说明一下上面几点 这是一个病案查询功能,左则的列表是所有可供选择的字段,中间是用户要求查询的字段,右侧的某一个查询字段的条件。 组织这个界面功能要用到哪几个类呢? 结果不是唯一的,每个人都可以有自己的想法。但我认为,组织一个更多人容易理解的方式应该是我们的目标。 首先浮现我们脑子的,应该是两个对象:所有的字段、字段查询范围
C#winform软件实现一次编译,跨平台windows和linux、mac兼容运行,兼容Visual Studio原生界面Form表单开发
一、背景: 微软的. ce开发工具,目前来看,winfm界面软件还没有打算要支持linux系统下运行的意思,要想让c#桌面软件在linux系统上运行,开发起来还比较麻烦。微软只让c#的控制台软件支持在linux运行。 二、解决方案: 我想到的一个方案是自定义封装软件的System.Windows.Fms组件,把支持windows和linux的界面框架GTK封装进System.Windows.Fms中! 这个方案有两个特点: 1、兼容原生C#表单控件,原c#软件不需要重新开发,换成该组件重新编译即可 2、可
.net core中你的MD5用对了吗?
本文的项目环境为 . 6.0 (. 5.0 以上都支持)在 . 中获取字符串的 MD5 相信是非常容易的事情吧 但是随便在网上搜一搜发现流传的版本还不少呢比如:StringBuilder 版本(应该算是官方版本了使用的人最多我发现在 ABP 中也是使用的这个)BitConverter 版本StringConcat 版本 (字符串拼接用的人很少估计都知道性能不好)但是它们是否是最佳实现 我们来测试一下StringBuilder 版本 public static string Md5_StringBuilde
Elasticsearch 系列(一)- ELK开发环境搭建
本章将和大家分享在 Windows 系统上如何搭建 ELK 的开发环境。话不多说,下面我们直接进入主题。 一、安装Java的JDK Elasticsearch 其中最主要的开发语言就是 Java ,所以我们在安装 Elasticsearch 之前,首先需要安装的就是 Java 的 JDK,此处我选择安装的版本是 JDK 17 。 JDK官网下载地址:https:www.acle.comjavatechnologiesdownloads#jdk17windows下载完成后,右键以管理员身份运行安装,安装成功
Net 高级调试之二:CLR和Windows加载器及应用程序域介绍
一、简介 今天是 高级调试的第二篇文章,第一篇文章记录了自己学习 高级调试的第一步,认识一些调试工具,有了工具的倚仗,我们开始仗剑走天涯了,开始 高级调试正式的征程了。我先说一下,我的文章,【调试测试】这部分一般分为两个部分,第一部分是要用到的所有测试代码样例,也为大家提供方便,我第一次做测试还是走了不少弯路的。第二部分,就是使用 Windbg 调试器调试代码的部分,但是,需要说明一下,使用 Windbg还是有一些技巧的,或者说是方法的,如果大家不熟悉,建议提前熟悉一下,因为我的测试过程,不会把
我的Office Outlook插件开发之旅(一)
目的 开发一款可以同步Outlook邮件通讯录信息的插件。 VSTO 外接程序对Outlook的支持,是从2010版本之后开始的。 VSTO 4.0 支持Outlook 2010以后的版本,所以编写一次代码,就可以在不同的版本上运行。 COM 加载项十分依赖于. Framewk框架和Office的版本,之后讲到的时候你就明白。 VSTO 外接程序 VSTO,全称是Visual Studio Tools f Office,在微软的Visual Studio平台中进行Office专业开发。VSTO是VBA的替