- 博客(330)
- 收藏
- 关注
原创 使用WPF的Microsoft.Xaml.Behaviors.Wpf中通用 UI 元素事件
【代码】使用WPF的Microsoft.Xaml.Behaviors.Wpf中通用 UI 元素事件。
2025-06-07 16:30:00
514
原创 ViewModelBase的构建以及为什么要使用[CallerMemberName] string propertyName = null
是 C# 的一个特性(Attribute),它的作用是,并将其作为参数传递进来。
2025-06-05 23:31:56
218
原创 机器视觉图像形态学中的腐蚀、膨胀、开运算、闭运算
腐蚀(Erosion)是一种基本的图像处理操作,主要用于缩小或细化图像中的目标区域。它通过结构元素(Structuring Element)与图像进行交互,逐步消除边界像素,使目标区域向内收缩。对于二值图像 I和结构元素 S,腐蚀操作定义为: I⊖S={x∣Sx⊆I}其中:Sx 表示结构元素 S平移 x后的版本。结果图像中的点 x 满足:当 S 的中心位于 x 时,SS 完全包含于原始图像 I 中。消除细小物体或噪声:移除比结构元素小的孤立点或毛刺。分离粘连区域:使相连的物体断开。平滑边界:使
2025-06-02 13:22:38
967
原创 VM图像处理之图像二值化
是指将彩色图像转换为仅包含亮度信息(黑白过渡)的单通道图像的过程或结果。灰度图像中每个像素的数值代表该点的明暗程度,而不包含颜色信息。0代表纯黑(最暗)255代表纯白(最亮)中间值为不同深浅的灰色(最常用):(基于人眼对不同颜色的敏感度权重)
2025-06-02 00:45:51
503
原创 C# 看门狗策略实现
(示例中每1秒更新一次),看门狗通过检查心跳时间判断是否存活。(示例10秒)未收到心跳,判定为任务冻结,触发重启。),每次检测后重置,避免并发问题。关键字确保布尔标志的可见性。被监控的任务需定期更新。创建新线程并更新心跳时间戳。
2025-04-10 17:58:50
414
原创 C# 中实现 跨线程写入
若写入操作频率过高,需监控队列长度或添加背压机制。:如网络服务器,处理来自不同客户端的并发更新操作。:由独立线程处理队列中的写入操作,确保顺序执行。:确保多个线程同时触发写入时,不会导致竞态条件。:在写入操作中需捕获异常,避免导致写入线程崩溃。:采集线程持续读取数据,外部线程动态更新配置。:多个工作线程提交写入请求,由中心线程处理。接收来自任意线程的写入请求。控制读取线程的暂停与恢复。时间或使用无等待策略。
2025-03-24 20:02:12
503
原创 C# 中实现一个线程持续读取,另一个线程负责写入,且写入时读取线程暂停
写入线程通过Set()发送暂停请求,读取线程通过Wait()阻塞自身。:读取线程暂停后通过Set()通知写入线程,确保写入操作安全执行。
2025-03-24 17:55:31
465
原创 C#中如何实现读写分离
读写锁适合读多写少场景,写频繁时可能不如普通锁高效。通过每次修改生成新对象实现无锁读取(如使用。:数据库读写分离时需处理主从同步延迟问题。:独占锁,其他所有读写操作都会被阻塞。灵活性较低,仅适用于预定义的集合类型。:确保锁的获取和释放成对出现(用。适用于简单变量的读写分离,通过。需要手动管理锁的获取和释放。直接利用数据库主从复制特性。开箱即用,无需手动管理锁。高性能,适合高频读写场景。频繁修改可能产生内存压力。:允许多个线程同时读取。需要手动处理内存可见性。需要数据库支持主从同步。
2025-03-24 17:44:06
596
原创 上行和下行的区别
上行通常指的是数据从终端设备(例如计算机、手机等)发送到网络或服务器。这种传输方式通常用来发送用户生成的数据,例如上传文件、发送电子邮件、提交表单等。2. 用途不同:上行通常用于发送用户生成的数据,例如上传文件、发送电子邮件等;上行和下行是通信领域中常用的两个术语,用于描述数据或信号在传输过程中的方向。1. 数据流动方向:上行数据流是从源设备流向网络或服务器,下行数据流则是从网络或服务器流向目的设备。3. 数据流的发起方:上行数据由终端设备发起,下行数据由网络或服务器发起。
2025-02-13 10:14:11
979
原创 使用PyCharm创建项目以及如何注释代码
到这里,我们的第一个 Python 程序已经运转起来了,很酷吧!对了,PyCharm 有一个叫“每日小贴士”的弹窗,会教给你一些使用 PyCharm 的小技巧,如下图所示。如果不需要,直接关闭就可以了;接下来,我们可以在代码窗口编写我们的 Python 代码。写好代码后,可以在窗口中点击鼠标右键,选择“Run”菜单项来运行代码,下面的“Run”窗口会显示代码的执行结果,如下图所示。,在给文件命名时建议使用英文字母和下划线的组合,创建好的 Python 文件会自动打开,进入可编辑的状态。
2025-02-07 14:59:08
627
原创 Python优缺点以及如何安装
Python 语言的优点很多,简单为大家列出几点。,跟其他很多编程语言相比,Python。能用更少的代码做更多的事情,。开放源代码,拥有。,有极强的适应性。,能够黏合其他语言开发的东西。解释型语言,更容易,能够在多种操作系统上运行。Python 最主要的缺点是(解释型语言的通病),如果更看重代码的执行效率,C、C++ 或 Go 可能是你更好的选择。
2025-02-07 09:33:52
1341
原创 C# 中的Stopwatch和timer
Stopwatch:用于测量时间间隔,适合性能分析和精确计时。Timer:用于在指定的时间间隔后执行代码,适合定时任务。根据你的具体需求,可以选择使用Stopwatch来测量时间间隔,或使用Timer来执行定时任务。
2025-01-21 11:49:25
648
原创 ModbusTCP通信常见的问题
1.有些设备是只支持一个设备读取 如果用多个工具同时读取会导致连接中断2.有些设备的读取响应速度很慢 需要Tread.sleep一下(具体时间需要试出来)3.有些设备的40001偏移量不一定0 还有可能是偏移量为400014.modbus使用多线程的读取不会提升读取速度(可以通过提高一次读取数据的长度来提高性能)5.读取过程中如果需要读取3000多个保持寄存器需要分批读取然后组包到ushort数组6.分批读取时 尽量不要将两个连续的寄存器共同组成的一个值分开读取
2025-01-16 11:05:16
275
原创 Fins通信
1、欧姆龙设备PLC:系列 CS系列、CJ系列、CP系列、NX系列(1)微型:CPM1A、CPM2A、CP1H、CP1L(2)小型:CPM2C、CQM1H、CJ1M(3)中型:C200H、CJ1、CS1(4)大型:CV、CS1D(5)运动控制器:NJ、NX等2、存储区分类CIO: I/O继电器区DM:数据区-WR:工作区,内部继电器-HR:保持继电器-AR:是模拟通道-C:计数器-T:定时器。
2025-01-14 16:44:12
364
原创 System.IO.FileNotFoundException:“未能加载文件或程序集“System.RuntimeXXXX 的原因
出现原因是因为。
2025-01-14 11:19:59
1303
2
原创 使用定时器来实现倒计时
模拟工业中空压机在某一段时间内压力过大或者过小从而判断是否需要开启其他的空压机。当写入一个大于100的数字的时候不会进行倒计时。当框里面的数字小于100 时开始倒计时。
2025-01-06 15:38:23
226
原创 如何设置NModbus的连接超时时间
要连接的服务器的主机名或IP地址。:连接超时时间,以毫秒为单位。:在连接过程中捕获的任何异常。方法会捕获异常并将其存储在。:要连接的服务器的端口号。如果连接超时,会抛出一个。:指示是否成功连接。
2025-01-02 09:45:21
487
原创 空压机组成和原理以及常见的故障
转子之间及转子与外壳之间在运转时是不接触的,保持有一定的间隙,因此就会产生气体泄漏。压力升高后的气体通过间隙向吸气管道及正在吸气的啮槽泄漏时,将使排气量减小。为了减少泄漏量,在从动转子的齿顶做有密封齿,主动转子的齿根开有密封槽,端面也加工有环状或条状的密封齿。螺杆式空气压缩机的转子中有的采用了油冷却,机壳用水冷却,其目的之一就是为了降低其温度。当冷却效果不好时,温度则升高,排。气体在压缩过程中温度会升高,转子与机壳的温度也相应升高,所以在吸气过程中,9、外置旋装的油分,如果芯管O形环不密封也会跑油,
2024-12-31 10:23:28
1289
原创 WPF中依赖属性的底层和普通属性的底层有什么不一样
依赖属性是 WPF 属性系统的核心,其底层机制基于的高效存储和动态值计算能力。通过统一的存储系统、优先级规则和回调机制,依赖属性为 WPF 提供了数据绑定、样式、动画等高级功能,同时在性能和灵活性之间达成了平衡。
2024-12-14 09:42:46
1245
1
原创 为什么用redis做数据库缓存而不是关系型数据库
Redis 适合作为缓存的原因在于其高性能、灵活性和分布式特性,可以缓解关系型数据库的压力、提高系统响应速度。然而,Redis 并不能完全替代关系型数据库,在需要强一致性和复杂查询时,关系型数据库仍是更好的选择。Redis 适用于对数据一致性要求较低的场景(例如缓存、排行榜、推荐系统),因为它可能因缓存过期、删除等导致数据不完全同步。Redis 的操作大多是异步的,比如持久化、集群同步等,保证了高性能。Redis 支持丰富的数据结构,能够满足更多复杂的场景,而关系型数据库的数据结构主要以表为核心。
2024-12-06 17:52:18
1617
原创 RS232和RS485的区别
RS232是一个经典的串行通信标准,适合短距离的点对点通信,应用较为广泛,适用于大多数简单的串行通信需求。RS485更适合长距离、多设备通信,具有更强的抗干扰能力,因此广泛应用于工业控制、智能电表、传感器网络等场景。
2024-12-05 14:16:47
3064
原创 C#中的多态
(Polymorphism)是面向对象编程中的核心概念之一,它允许对象在不同的上下文中表现出不同的行为。简单来说,多态使得相同的方法调用可以表现出不同的行为,这使得代码更加灵活、可扩展和可维护。(静态多态)和(动态多态)。
2024-12-05 14:15:16
828
原创 常见的五种 数据绑定方式
绑定模式说明适用场景OneWay数据单向流动,数据源变化更新目标显示数据但不需要修改数据源TwoWay数据双向流动,控件和数据源同步表单、用户输入需要同步到数据源数据从目标控件流向源数据用户输入需要更新数据源但不反向更新OneTime绑定只发生一次,数据初始化时设置只需要初始化值,不需要后续更新数据单向流动,并应用转换器处理数据需要在绑定时转换数据的场景这些绑定方式可以灵活地应用于不同的场景,帮助开发者实现动态、响应式的界面。
2024-12-04 14:55:58
1057
原创 长连接和短连接的区别
长连接适用于需要频繁交互、实时性要求较高的场景,能有效减少连接建立和销毁的开销,适合高并发、大流量的应用。短连接更适用于低频请求、资源消耗较少的简单应用场景。
2024-12-03 22:00:11
1596
原创 Winform和WPF的区别
渲染技术 基于 GDI+ 和 Windows 原生控件 基于 DirectX,GPU 加速 布局系统 简单的基于坐标的布局 强大的布局系统(如 Grid, StackPanel) 自定义能力 控件样式有限 高度可定制,支持样式和模板 数据绑定 基本的数据绑定 强大的数据绑定支持 开发模式 基于事件驱动,较简单 支持 MVVM,分离逻辑和界面 性能 对简单应用程序性能较好 对复杂图形和动画性能更好 平台支持
2024-11-30 11:18:16
374
配置好的maven文件
2024-05-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人