自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(260)
  • 资源 (4)
  • 收藏
  • 关注

原创 抽象分类-C# 抽象层分类以及详解

C# 抽象层通过接口、抽象类、虚方法实现不同粒度的抽象,并在架构中划分为业务抽象、数据访问抽象、基础设施抽象等层次。合理运用抽象层是构建灵活、可维护系统的关键,尤其在中大型项目中能显著提升代码质量。设计时需平衡抽象程度,避免过度设计(如简单工具类无需强制抽象)。

2025-09-09 10:16:45 683

原创 数据类型序列化-封装

该配置数据管理体系通过 “接口 - 抽象类 - 具体类 - 容器类” 的层级设计,实现了 “单一配置项→复杂嵌套配置” 的全场景覆盖,兼具类型安全、灵活性、可移植性三大优势。无论是工业设备参数管理,还是软件系统设置,都能通过该体系实现标准化、可维护的配置管理,是一套设计精良的配置解决方案。

2025-09-01 11:37:00 733

原创 ModBus通讯-封装

分类底层协议数据格式校验方式传输速率拓扑结构典型应用场景Modbus RTURS-232/485二进制CRC-16总线型(1 对多)现场近距离设备通信RS-232/485ASCIILRC同 RTU(效率低 50%)总线型(1 对多)调试、低速简单场景Modbus TCPTCP/IP二进制 + MBAPTCP 校验星型 / 树型工业以太网、远程监控Modbus UDPUDP/IP二进制 + MBAP无(需应用层)同 TCP(低延迟)星型 / 组播。

2025-09-01 11:19:49 1045

原创 串口通信-封装

/ 此异步方法如果接收数据超时不会抛异常,而是返回0,所以需要判断返回值是否为0。//此异步方法如果接收数据超时不会抛异常,而是返回0,所以需要判断返回值是否为0。// 添加 ConfigureAwait(false) 避免上下文切换。// 添加 ConfigureAwait(false) 避免上下文切换。

2025-09-01 10:49:12 752

原创 短时间频繁动态创建【池化思想】

池化思想。

2025-04-07 18:54:55 138

原创 生产消费模式

TODoing。

2025-04-07 18:52:45 138

原创 Prism 教程

http://t.csdnimg.cn/VXSSv

2024-09-10 16:34:30 2423

原创 Winform -- ​c#:SynchronizationContext

Winform SynchronizationContext

2024-09-03 19:41:59 549

原创 客户端 -- 国际化【多语言】实现方案

3,注意点 阿拉伯左右翻转【布局需要特处理】;不同语言所需长度不相同,需要注意大小自适应;1,调用CultureInfo.CurrentCulture 获取系统设置的区域和语言;语言,子语言,货币格式,大小写、设置日期和数字格式以及比较字符串会有差异;2,可以使用 .csv,.resx,.xaml资源文件;

2024-09-02 16:07:12 359

原创 yield 详解

C#中的yield关键字:深入解析与实际应用场景的对比分析 - 非法关键字 - 博客园 (cnblogs.com)yield 语句 - 在迭代器中提供下一个元素 - C# reference | Microsoft Learn

2024-08-27 16:08:51 424

原创 单线程,多线程,异步,同步详解

在这7分钟中,原来的柜员一直与我互动,我收到现钞后,由递交给我现钞的那位柜员坐下继续负责与我互动,其余柜员去后台干别的去了。下面就是一个使用异步实现读取一个超大文件的一个代码,主程序Main()的执行并没有因ReadHeavy()函数的执行而冻结,“Read finished” 的打印在子函数ReadHeavy()中,子函数被调用的代码是在 “Read file started” 被打印之前,但其真正被执行则在其之后,且在编写这段程序的程序员手里,这段代码仅有一个线程,因此这是一个协程异步程序。

2024-08-26 20:57:11 1155 1

原创 网络基础之TCP/IP五层模型

http://t.csdnimg.cn/MUQev

2023-12-27 09:28:59 413

原创 最大传输单元MTU【Maximum Transmission Unit】

最大传输单元MTU

2022-04-26 16:29:02 457

原创 传输控制协议-TCP

TCP协议详解概述TCP 主要的特点*TCP 是面向连接的运输层协议。应用程序在使用 TCP 协议之前,必须先建立 TCP 连接。在传送数据完毕后,必须释放已经建立的 TCP 连接*每一条 TCP 连接只能有两个端点,每一条 TCP 连接只能是点对点的(一对一)*TCP 提供可靠交付的服务。通过 TCP 连接传送的数据,无差错、不丢失、不重复,并且按序到达*TCP 提供全双工通信。TCP 允许通信双方的应用进程在任何时候都能发送数据。TCP 连接的两端都设有发送缓存和接受...

2022-04-26 14:53:07 1085

原创 流媒体 - 实时抗丢包RTP传输方案

流媒体实时抗丢包RTP传输方案

2022-04-26 14:12:27 682

原创 流媒体协议介绍(RTP/RTCP/RTSP/RTMP/MMS/HLS)

流媒体RTP参考文档 RFC3550/RFC3551  Real-time Transport Protocol)是用于Internet上针对多媒体数据流的一种传输层协议。RTP协议详细说明了在互联网上传递音频和视频的标准数据包格式。RTP协议常用于流媒体系统(配合RTCP协议),视频会议和一键通(Push to Talk)系统(配合H.323或SIP),使它成为IP电话产业的技术基础。RTP协议和RTP控制协议RTCP一起使用,而且它是建立在UDP协议上的。  RTP 本身并没有提供按...

2022-04-25 15:42:24 4086

原创 Visual Studio的Performance profiler简介

最后一篇博文发表自去年圣诞节前一天,7个多月过去了,现在终于有时间坐下来,总结一下这半年的收获。这半年都没有更新博文,是因为团队组织架构调整,我的工作内容增加了很多,一句话总结就是,一个人撑起一个项目的自动化。我不仅负责UI Automation,还负责系统另外两个底层模块的集成自动化测试。自动化代码、提升效率、每天运行发regression report都在我头上。所以很忙。忙归忙,收获还是很大的,颇有成就感。原来UI自动化 + 另两个模块的集成测试是分别由3个团队各自负责,以往需要0.5个人天 * 3来

2022-04-12 13:38:23 1057

原创 如何使用 BenchmarkDotNet 对 C# 代码进行基准测试

BenchmarkDotNet 是一个轻量级,开源的,强大的 .NET 工具包,它可以将你的方法转化为基准并跟踪这些方法,最后对这些方法的性能提供一些测试报告,使用 BenchmarkDotNet 玩基准测试是非常容易的。你可以利用 BenchmarkDotNet 在 .NET Framework 和 .NET Core 应用程序上实现基准测试,在这篇文章中,我们将会讨论如何在 .NET Core 中实现基准测试。安装 BenchmarkDotNet要想使用 BenchmarkDotNet,..

2022-04-12 10:35:18 752

原创 WPF 高性能位图渲染 WriteableBitmap 及其高性能用法示例

WPF 高性能位图渲染 WriteableBitmap 及其高性能用法示例_walter lv的博客-CSDN博客_wpf writeablebitmaphttps://blog.csdn.net/WPwalter/article/details/103760445

2022-04-12 09:38:49 1206

原创 C# DllImport DLL非托管动态链接库 问题总结

C#程序实现动态调用DLL的研究(转载) - 黄金海岸 - 博客园 (cnblogs.com)https://www.cnblogs.com/goldenocean/archive/2006/09/20/509558.htmlC# 调用c++ dll 尝试读取或写入受保护的内存 错误-CSDN社区https://bbs.csdn.net/topics/340067302步骤:1,确定是托管动态链接库还是非托管动态链接库;2,如为C++ 等非托管动态链接库:首先确定 C++ DLL的导出类型是否.

2022-04-06 17:53:54 2018

原创 C#中使用lockbits方法处理图像

使用lockbits方法处理图像许多图像处理任务即时是最简单的文件类型转换,例如从32位深度到8位深度的格式转化,直接获得像素阵列要比使用GetPixel和SetPixel等方法的效率高得多。你可能会发现DotNet采用托管机制,大多数情况下微软会推荐你使用托管代码,理由是便捷和安全。实际应用中,直接操作内存中的数据块是很少见的,尽管如此,图像处理恰恰是这类为数不多的情况之一,因为使用托管代码的效率低的难以忍受,特别是对巨幅图像来说,在此,我们讨论一下一种新的方法。如何...

2022-03-30 11:17:13 2492 1

原创 UDP 实现可靠传输 -- 概述(一)

概述UDP不属于连接协议,具有资源消耗少,处理速度快的优点,所以通常音频,视频和普通数据在传送时,使用UDP较多,因为即使丢失少量的包,也不会对接受结果产生较大的影响。传输层无法保证数据的可靠传输,只能通过应用层来实现了。实现的方式可以参照tcp可靠性传输的方式,只是实现不在传输层,实现转移到了应用层。最简单的方式是在应用层模仿传输层TCP的可靠性传输。下面不考虑拥塞处理,可靠UDP的简单设计。1、添加seq/ack机制,确保数据发送到对端 2、添加发送和接收缓冲区,主要是用户超时重传。

2022-03-18 15:45:51 3564

原创 工业通信协议 -- OPC

OPC全称是OLE for Process Control,即用于过程控制的OLE,是针对现场控制系统的一个工业标准接口,是工业控制和生产自动化领域中使用的硬件和软件的接口标准。基于微软的OLE(现在的Active X)、COM (部件对象模型)和DCOM (分布式部件对象模型)技术,OPC包括自动化应用中使用的一整套接口、属性和方法的标准集,用于过程控制和制造业自动化系统。提供工业自动化系统中独立单元之间标准化的互联互通,顺应了自动化系统向开放、互操作、网络化、标准化方向发展的趋势。OPC规范OP

2022-03-16 15:22:14 2601

原创 WPF-插件化编程-基础篇之 -- 动态加载 DLL

<Examples:GridViewExample x:Class="Telerik.Windows.Examples.GridView.FirstLook.Example" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" ...

2021-08-18 11:53:49 1767

原创 WPF -插件化编程-基础篇之 - CompositionContainer(1)

CompositionContainer

2021-08-17 16:28:06 435

原创 webClient download 超时问题

WebClient的超时问题及解决 - heros - 博客园 (cnblogs.com)

2021-06-24 11:24:31 805

原创 装箱/拆箱详解

https://blog.csdn.net/panfang/article/details/6938048

2021-03-11 21:56:45 186

原创 WPF --依赖属性详解

依赖项属性可以称得上是WPF中比较难理解的概念,为了搞清楚这个概念,我都把.NET类库进行了反编译,但是,其结果我也是想到了的,微软不是傻子,.NET那么庞大,就算能被你反编译了,你也看不懂它的代码。所以说,经过我一番研究,虽然没有把.NET的每一行代码都弄明白,不过,黄天终不负有心人,依赖项属性的使用方法与基本原理,我可以说已经弄明白了,恰巧,前两天在网上看到一篇讨论依赖项属性的文章,写得还不错,作者估计也是一位高人,再加上我个人的研究,从实际应用的角度来说,我现在已经掌握了依赖项属性的使用方法了,不

2020-10-26 14:31:34 3646 2

原创 WPF 数据模板 (三) 数据模板选择器

WPF 数据模板 (三) 数据模板选择器 前言最近项目需要动态根据属性动态选择数据模板,研究了一下写了一个数据据模板选择器 分享一下。首先了解一下 DataTemplateSelector:System.Windows.Controls.DataTemplateSelector :提供一种方式,用于根据数据对象和数据绑定元素来选择 System.Windows.DataTemplate.OK 废话不多说,直接开始编码。首先创建ConditionalDataTemplate..

2020-07-08 17:46:20 1295

原创 WPF Behavior 行为

WPF Behavior 行为前言行为是一类事物的共同特征,在WPF中通过行为可以封装一些通用的界面功能,从而实现代码重用来提高开发效率。因此他是一个非常好用的工具。引入dll文件找到System.Windows.Interactivity.dll文件。https://download.csdn.net/download/YouyoMei/12200463然后将其引入到项目中。创建行为1.创建一个行为类LightedEffectBehavior,继承Behavior<Framew

2020-07-01 11:06:25 406

转载 WPF数据模板中绑定事件不触发问题

今天比较闲,做一个练手的项目,结果在xaml中写了一个用户的数据模板后,在其中的某个Canvas上绑定了一个鼠标左击的事件,结果调试的时候,无论怎么点击都不跳到断点那里,百思不得其解。之后尝试不绑定事件,直接采用内联事件的写法,将事件写在控件上,并且事件的处理写在cs代码而非ViewModel中,则可以使用,如此可以判断是采用MVVM时,命令没有成功绑定到事件上。刚开始以为是DevExpress的MVVM框架的BUG。后来改成自己手写的MVVM,并未解决问题,思考再三,觉得是数据模板并未获取到Dat

2020-06-23 16:21:44 1718

原创 C#单元测试,带你快速入门

https://www.cnblogs.com/zhaopei/p/UnitTesting.html

2020-05-19 10:23:33 233

原创 C# 使用NLog记录日志

https://www.cnblogs.com/felixnet/p/5498759.html

2020-04-23 11:07:05 496

转载 解决SQLite database is locked

 前些时候,同事在站点服务端使用SQlite存储一些临时数据,但是在多人并发的时候Sqlite会抛出异常:The database file is locked ,database is locked,而且这个是在客户生产环境下提示出来的,开发环境很难重现,同事实在没辙,竟然想发动所有研发同事通过操作软件重现问题,我只能呵呵了。既然是Sqlite的原因,直接写个小程序测试下sqlite不就行了,...

2020-04-17 10:09:57 4233

原创 WPF 复习

事件路由:https://www.cnblogs.com/lonelyxmas/p/12285953.html

2020-03-19 16:18:54 195

原创 C#socket通讯两个最经典错误解决方案

1、经典错误之 无法访问已释放的对象。 对象名:“System.Net.Sockets.Socket”(1)、问题现场(2)、问题叙述程序中的某个地方调用到了socket.close后,这个socket还被调用,就出爆出上面错误!(3)、解决方案使用下面一句:if (stsend != null && stsend.Connected)...

2020-03-19 15:20:08 1566

原创 WPF全局异常捕获

 在WPF开发过程中我们一般都用try/catch块来捕获异常,但不是每个异常我们都能捕获,程序总会出现一些意想不到情况,抛出一些未捕获的异常,这时就要用到全局异常捕获,即在程序的最外层加上捕获未处理异常,以免程序奔溃,影响用户体验。    在WPF应用程序中,会有两大类未处理异常:一类是在UI线程抛出来的,例如点击了用户界面上面的某个控件,然后执行某个代码的时候,遇到了异常;另一类是非UI线...

2020-03-16 15:25:52 2638

转载 SQL优化(二) 快速计算Distinct Count

原创文章,转载请务必在文章开头处注明转载自Jason’s Blog,并给出原文链接 http://www.jasongj.com/2015/03/15/count_distinct/UV vs. PV  在互联网中,经常需要计算UV和PV。所谓PV即Page View,网页被打开多少次(YouTube等视频网站非常重视视频的点击率,即被播放多少次,也即PV)。而UV即Unique Visi...

2020-03-10 16:21:04 421

原创 多线程 -资料

h多线程总结:ttps://blog.csdn.net/xiaouncle/article/details/83037245Task用法:https://blog.csdn.net/plovjet/article/details/87877873线程池:https://www.cnblogs.com/yaosj/p/10684192.html...

2020-03-05 10:31:55 284

原创 WPF: WPF 中的 Triggers 和 VisualStateManager

在之前写的这篇文章 WPF: 只读依赖属性的介绍与实践 中,我们介绍了在 WPF 自定义控件中如何添加只读依赖属性,并且使其结合属性触发器 (Trigger) 来实现对控件样式的改变。事实上,关于触发器,在 WPF 中除了属性触发器,还有事件触发器 (EventTrigger) 和数据触发器 (DataTrigger)。此外,为了控制控件外观的切换,除了可以使用触发器外,我们还可以使用 Visua...

2020-03-04 17:24:44 1240

WPF 自定义控件

自定义控件

2017-08-18

WPF.UI-master.zip

WPF.UI-master.zip

2021-05-10

depends22_x86.rar

depends是一款可以查看一个exe文件或dll文件需要依赖哪些dll文件的工具,比如我们生产了一个exe程序,显然在我们的开发环境下是可以执行这个exe程序的,但是换一个环境还可以执行吗?这就不见得了。所以我们需要知道这个exe程序都依赖哪些动态链接库,以保证程序离开了开发环境还可以正常运行。

2020-01-09

Paint-master.zip

水印添加,页面添加水印,图片添加水印。

2019-05-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除