自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

仰望星空的人

不停地学习,不停努力

  • 博客(60)
  • 资源 (2)
  • 收藏
  • 关注

原创 使用try和finally块+线程锁方式,完美解决线程死锁情况

本文介绍了在C#中使用try-finally与Monitor类实现线程安全锁的通用方案。通过封装Monitor.Enter和Monitor.Exit到工具类中,确保锁的获取和释放始终执行,避免死锁。方案提供了无返回值和带返回值的两种执行方式,适用于临界区代码保护。与lock语句相比,该方案提供更灵活的控制,但需注意锁对象管理、避免长时间持锁和死锁问题。文章还指出Monitor不适用于异步场景,建议改用SemaphoreSlim,并强调最小化锁作用域、避免嵌套锁等最佳实践。

2025-06-30 15:34:33 277

原创 C# 常用排序的方式

C#提供了多种排序方法,包括内置排序(Array.Sort()和List.Sort())、手动实现经典算法(冒泡排序、快速排序、归并排序)、LINQ排序(OrderBy/OrderByDescending)以及非比较排序(基数排序)。内置方法简单高效,LINQ适合复杂对象排序,手动算法可优化性能,基数排序适合整数排序。根据需求可选择不同方法,如快速排序处理大数据量,LINQ实现自定义排序逻辑等。

2025-06-30 15:33:35 366

原创 C# 实现WinForm的Modbus协议通讯实现

Modbus协议核心特性与实现方案 摘要:Modbus作为一种开放、免费的工业通信协议,具有接口多样(RS232/RS485/TCP等)、传输介质灵活(有线/无线)和协议简单易用的特点。其包含RTU(二进制)、ASCII(文本)和TCP三种类型,支持读取线圈/寄存器(0x01-0x04)和写入数据(0x05/0x06/0x0F/0x10)等核心功能。实现方案采用分层架构设计,通过统一接口(IModbusClient)和协议适配器(RTU/TCP/ASCII)实现多协议支持,核心组件包括通信接口、协议适配器和

2025-06-23 09:08:46 1147

原创 C# 实现串口通讯实现方式以及用途(二)

本文介绍了C#实现串口通信的基本步骤,包括串口参数配置(波特率、数据位等)、数据收发方法以及异常处理。关键点包括:通过System.IO.Ports命名空间操作串口,使用DataReceived事件实现异步接收,以及注意线程安全和参数一致性。文章还提供了异步优化方案和完整代码示例,适用于控制台或UI应用程序开发,并强调资源释放和跨平台兼容性等注意事项。150字

2025-06-23 09:05:52 1092

原创 关于 RS232、RS485 和 TTL 三种串口通信接口对接方式(一)

摘要: RS232、RS485和TTL是三种常见的串行通信接口,各有特点。RS232支持全双工,需电平转换芯片,适用于传统设备短距离通信(≤15米)。RS485采用差分信号,抗干扰强,传输距离可达1200米,支持多节点组网,适用于工业自动化。TTL基于低电压逻辑,成本低但传输距离短,多用于嵌入式系统内部通信。对接时需注意电平匹配(如MAX232/485芯片)及终端电阻配置。未来趋势包括低功耗协议(如LoRa)和智能化转换模块。选择接口需根据距离、成本及抗干扰需求权衡。

2025-06-23 08:56:27 1467

原创 C# 网络编程-关于请求头(Request Headers)和 响应头(Response Headers)作用(五)

本文详细介绍了 HttpWebRequest 中请求头和响应头的使用方法。请求头可通过 Headers 属性或直接属性(如 ContentType)设置,用于传递客户端信息;响应头则包含服务器元数据,通过 HttpWebResponse.Headers 读取。文章还提供了常见头字段说明、JSON数据处理及重定向处理等高级用法示例,帮助开发者灵活处理HTTP请求和响应。相比 HttpClient,HttpWebRequest 更底层但功能全面。

2025-06-21 11:28:57 1277

原创 C# 网络编程- HttpClientFactory代替HttpClient使用方式(四)

摘要:微软推荐在C#和ASP.NET Core中使用HttpClientFactory而非直接实例化HttpClient,主要因其解决了资源管理(避免Socket耗尽)、提供统一配置、支持Polly弹性策略(如重试和断路器)、生命周期管理(DI友好)、减少硬编码URL、集成日志监控等优势。通过集中管理和复用连接,提升了代码健壮性和可维护性。虽然适用于复杂场景,但简单请求可直接使用HttpClient。示例展示了如何在ASP.NET Core中配置和使用HttpClientFactory。

2025-06-21 11:11:28 1071

原创 C# 网络编程-关于HttpClient使用方式(三)

C# HttpClient使用指南 文章介绍了C#中通过HttpClient实现HTTP请求的常用方法,包括GET、POST、PUT、DELETE四种基础请求方式的代码示例。同时提供了优化建议: 配置优化:设置超时、添加请求头 最佳实践:避免重复创建实例,推荐使用单例模式或HttpClientFactory 响应处理:解析字符串/JSON数据、异常捕获 高级功能:文件上传和表单提交的实现 重点强调了跨平台兼容性和资源管理,适合需要高效网络通信的C#开发者参考。

2025-06-21 11:04:57 1446

原创 C# 网络编程-关于HttpWebRequest使用方式(二)

HttpWebRequest 数据请求方法摘要 HttpWebRequest是.NET Framework中用于发送HTTP请求的核心类,支持GET、POST、PUT、DELETE等常用请求方法。GET用于获取资源,POST用于提交数据,PUT用于更新资源,DELETE用于删除资源。使用时需注意设置请求方法、内容类型和请求体数据,并正确处理响应和异常。此外,HttpWebRequest还支持配置超时、处理Cookie、设置代理等功能。虽然功能强大,但较底层,在.NET Core及后续版本中建议使用更现代的H

2025-06-21 10:58:56 897

原创 C# 网络编程-关于HTTP/HTTPS的基础(一)

HTTP/HTTPS核心概念与C#实现摘要 HTTP遵循客户端-服务器的无状态请求-响应模型,包含1xx-5xx状态码分类、关键请求/响应头以及Cookie/Session机制。HTTPS通过SSL/TLS协议加密通信,采用非对称加密交换密钥,对称加密传输数据,并验证证书确保安全。C#实现方案包括: 使用HttpClient发送请求/处理响应 设置请求头与内容 自动Cookie管理 测试环境HTTPS证书处理 SSLStream底层通信示例 重点涵盖协议机制与代码实践,兼顾安全性和实用性。

2025-06-21 09:13:17 771

原创 MQTT的主题与通配符正确使用

MQTT主题采用层级化结构,使用斜杠分隔,支持单级通配符(+)和多级通配符(#)。单级通配符(+)匹配单层任意值,多级通配符(#)只能作为末尾层级匹配多层。使用时需注意:主题层级必须匹配,避免过度使用#影响性能,建议主题不超过5层。典型应用包括传感器数据订阅和设备状态监控,合理使用通配符可实现灵活高效的消息订阅。

2025-06-21 09:11:47 856

原创 C# 实现 gRPC高级通信框架简单实现

gRPC(Google Remote Procedure Call)是一个高性能、开源和通用的RPC框架,由Google主导开发。它支持多种编程语言,并广泛用于构建分布式应用程序和服务。gRPC基于HTTP/2协议,支持双向流、请求-响应和多请求-多响应模式,这使得它在微服务架构中尤其有用。

2025-06-18 20:32:03 1451

原创 C# 关于LINQ语法和类型的使用

C# LINQ (Language Integrated Query)提供了丰富的语法和操作符,用于处理数据集合

2025-06-17 10:39:11 944

原创 C# 使用表达式树(Expression Tree)代替反射赋值

本文提出了一种高效的C#对象映射方法,通过表达式树和委托缓存机制优化性能。针对配置表(PartList)到实体对象(RXJ_ActionData)的映射需求,采用表达式树动态构建赋值逻辑,支持泛型转换和类型判断(如bool类型需进行0/1转换)。通过缓存预编译的Func<Func<string,int>,T>委托,避免重复构建表达式树,实测性能较反射提升20倍以上。该方法特别适合高频率数据采集场景,有效解决了传统反射方案在高并发时的性能瓶颈问题

2025-06-09 10:04:16 723

原创 Unity 限制物体在Bounds 包围盒控制移动

可以通过 Box Collider 的 bounds 属性来获取物体的包围盒(Bounds)也可以直接设置Bounds包围盒使用,从而限制其移动范围。不过需要注意,直接使用 Box Collider 的 size 属性可能无法直接替代 Bounds 的功能

2025-06-02 11:10:32 1008

原创 http通信之axios vs fecth该如何选择?

如果你的项目已经使用了其他第三方库,并且希望统一管理网络请求,或者对请求配置和拦截器功能有较高需求,axios是一个不错的选择。如果你希望保持项目的简洁,且不需要过多的额外功能,fetch可能是更好的选择,尤其是在现代浏览器环境中。最终的选择应根据项目的具体需求、团队的技术栈以及个人的偏好来决定。

2025-04-22 11:25:59 595

原创 西门子地址表规划中,如WM200与WM201这样相邻地址冲突问题

地址类型相邻地址是否冲突原因centered 文本居中right-aligned 文本居右centered 文本居中不会冲突每个地址占1字节,相邻地址物理地址不重叠。会冲突每个地址占2字节,相邻地址物理地址重叠(如MW200和MW201共享201字节)。不会冲突每个地址占4字节,相邻地址物理地址不重叠。相邻地址是否冲突 取决于地址类型(字节、字、双字)。字地址(MW)的相邻使用会导致冲突 ,需间隔至少2个地址。规划地址时需明确数据类型和存储空间 ,避免重叠。

2025-04-22 11:24:27 769

原创 Vue 关于如何在vue中实现跨域请求问题

📚首先,让我们了解一下什么是跨域。当一个请求的URL的协议、域名、端口三者中任意一个与当前页面的URL不同,就称为跨域请求。🔒为什么会出现跨域问题呢?这是因为浏览器的同源策略限制。同源策略是浏览器最核心的安全功能,它阻止了一个域的JavaScript脚本与另一个域的内容进行交互。简单来说,如果两个页面具有相同的协议、主机和端口号,它们就被认为是同源的,否则就是跨域的。

2025-03-05 12:01:55 1296

原创 C# Json序列化的常用几种方式

除了使用实体类解析JSON,还有几种更便捷的方式,具体取决于你的需求和项目环境。

2025-02-25 09:07:31 799

原创 Unity 热更新对象绑定的替代方案--StrangeIoC 注入方式

• StrangeIoC提供了强大的依赖注入功能,适用于复杂的项目和热更新场景。• 动态绑定允许你在运行时动态地绑定对象和组件。• 反射提供了更大的灵活性,但性能可能较低。• 配置文件提供了一种灵活的方式来定义和管理对象绑定关系。通过使用StrangeIoC,你可以在热更新场景中更灵活地管理对象和组件的绑定关系,从而提高代码的可维护性和可扩展性。

2025-01-19 11:04:56 1093

原创 C# 文件系统I/O操作--Directory类与DirectoryInfo类

两个同属一个命名空间:System.IO,然而Directory 类,提供对目录的静态方法,执行常见的目录操作,如创建、删除、移动、枚举等。不需要实例化,直接调用其静态方法即可。DirectoryInfo 类,代表特定目录,并提供对该目录的详细信息和操作方法。需要先创建 DirectoryInfo 实例,然后通过该实例调用方法和访问属性。

2024-12-19 17:29:50 1465

原创 C# 文件系统I/O操作--File类与FileInfo类

File和FileInfo两个功能基本相同,他们都是基于System.IO命名空间的文件操作类。File 和 FileInfo 都是 .NET 基于System.IO命名空间中用于处理文件的类,但它们的设计理念和使用方式有所不同:File是静态类,它不属于特定对象,所以不能被实例化,如果只是对文件单一、少量的操作,如判断文件是否存在,建议使用File类。FileInfo需要实例化对象后才可以调用相关方法。它对应某一个文件进行重复操作,如果是对一个文件进行大量的操作,建议使用FileInfo类。

2024-12-19 15:09:02 1664

原创 C# 文件系统I/O操作--什么是I/O

I/O 是 Input/Output(输入/输出)的缩写,指的是计算机系统与外部设备之间交换数据的过程。是计算机程序与用户、其他程序或存储设备(如硬盘、网络、显示器等IO设备)进行交互的基础。对于一个系统或者计算机来说,I/O就是提供数据来源和输出数据的部分。

2024-12-18 17:59:44 566

原创 C# 基本数据类型及其占用字节数

‌定义‌:位(bit)是计算机存储数据的最小单位,简记为`b`。‌组成‌:一个字节由8个位组成。‌表示范围‌:位只能表示0或1,用于存储二进制数据。计算机中常用的存储单位及其与位的关系:‌字节(Byte)‌:8个位组成一个字节,字节是计算机中常用的存储单位,一个英文字符通常占用1个字节,汉字通常需要2个字节(在GBK编码下)。‌其他存储单位‌:包括KB(千字节)、MB(兆字节)、GB(吉字节)、TB(太字节)、PB(拍字节)、EB(艾字节)、ZB(泽字节)、YB(尧字节)等,

2024-12-16 20:22:52 1337

原创 C# 方法的参数主要有四种类型:值参数、引用参数ref 、输出参数out、可变参数params

• 值参数:适用于不需要修改原始数据的简单场景。• 引用参数 (ref):适用于需要修改原始数据的场景,注意初始化。• 输出参数 (out):适用于方法需要返回多个值的场景,或者需要确保方法内部一定会为参数赋值的场景。• 可变参数 (params):适用于参数数量可变的场景,简化方法调用。

2024-12-16 19:44:56 1243

原创 C# 网络编程--关于Socket编程TCP协议中封包、拆包问题

固定长度的数据包: 适用于数据包长度固定且较小的情况。分隔符: 适用于数据包长度不固定但可以确定分隔符的情况。头部包含长度信息: 适用于数据包长度不固定且没有明显分隔符的情况。

2024-12-16 14:18:52 1570

原创 C#网络编程--WebSocke与Socket的区别以及关系

**在大家技术选型的时候,有没有纠结过使用WebSocket 还是选择 Socket进行通讯或者请求数据呢?我以前一开始也搞不清楚有啥,名字都有“Socket”字眼,到后面接触多了,才明白其中的区别;`WebSocket 主打一个持久、实时,Socket主打一个功能灵活、颗粒度小`。** 所以,WebSocket 和 Socket 都是用于网络通信的技术,但它们在用途、协议和使用方式上有所不同。下面说说它们的区别和关系:

2024-12-13 20:30:00 2222

原创 C#网络编程--TCP/IP协议与Socket的区别以及关系

TCP/IP 是传输控制协议/互联网协议的缩写,是一组用于互联网通信的标准协议集。Socket(套接字)是一种通信机制,允许不同进程之间通过网络进行通信。它提供了一种抽象的接口,使得程序员可以方便地使用 TCP/IP 协议进行网络编程。(就是因为TCP/IP协议也是Socket协议之一,所以很容易混淆!!!其实两个说的不是同个东西,但是它们又密不可分。(承上启下的关系吧)TCP/IP 是一组网络通信协议,定义了数据在网络中的传输规则。Socket 是一种编程接口,提供了应用程序与网络通信的桥梁。

2024-12-13 16:02:36 784

原创 C# 网络编程--关于UDP 通信(二)

UDP 提供了一种快速、简单的数据传输方式,适用于对传输速度有较高要求而对可靠性要求相对较低的应用场景。

2024-12-11 18:00:00 1591

原创 C# 网络编程--关于TCP 通信(一)

• 第一次握手:客户端向服务器发送一个 SYN(同步)包,请求建立连接。• 第二次握手:服务器收到 SYN 包后,回应一个 SYN+ACK(同步确认)包,表示同意建立连接。• 第三次握手:客户端收到 SYN+ACK 包后,发送一个 ACK(确认)包,确认连接已建立。

2024-12-11 10:00:00 1974

原创 C# 网络编程--基础核心内容

在现今软件开发中,网络编程是非常重要的一部分,本文简要介绍下网络编程的概念和实践。C#网络编程的主要内容包括以下几个方面‌:Socket 编程、异步编程、TCP 通信、UDP 通信、HTTP 请求、多线程与并发、错误异常处理、安全通信等等,方方面面的知识体系

2024-12-10 15:45:36 1558

原创 C#设计模式--代理模式(Proxy Pattern)

***代理模式***是一种`结构型设计模式`,它为其他对象提供一种代理以控制对这个对象的访问。`代理模式在不直接访问实际对象的情况下,提供了对目标对象的间接访问`。通过引入一个代理对象来间接操作实际对象,可以在不改变实际对象代码的前提下,增加额外的功能操作。

2024-12-10 09:25:34 1059

原创 C# 关于加密技术以及应用(二)

• AES 适用于需要高效加密和解密大量数据的场景。• RSA 适用于需要安全地交换密钥、验证数据完整性和来源的场景。• 结合使用:在实际应用中,通常使用 RSA 进行密钥交换,然后使用 AES 进行数据加密,以兼顾安全性和效率。• AES 适用于需要高效加密和解密大量数据的场景,如文件存储、流媒体传输、数据备份等。• RSA 适用于需要安全地交换密钥、验证数据完整性和来源的场景,如网络通信安全、数字签名和验证、用户身份认证等。

2024-12-09 10:50:33 978

原创 C# 关于加密技术以及应用(一)

以上是几种常用的加密技术和相应的示例。具体需求可以选择合适的加密算法来保护数据的安全性和隐私(着重讲解RSA与AES的使用,见下一章节。

2024-12-09 10:47:15 1157

原创 C# 关于实现保存数据以及数据溯源推送

实现了一个数据接收、存储和推送的功能。以下是我存储的文本格式。1. 逐行读取文件:使用 StreamReader 逐行读取文件内容。2. 拼接数据:使用 StringBuilder 拼接每一行数据,直到遇到分隔符 `$`。3. 处理完整记录:当拼接的数据包含分隔符 $ 时,将其拆分为完整的记录进行处理。4. 处理剩余数据:在读取完文件后,处理 StringBuilder 中剩余的数据,确保没有遗漏的数据被处理。

2024-12-09 09:22:35 1509

原创 C#字符串--String

在 C# 中,string是一个引用类型,用于表示文本数据。字符串是由 Unicode 字符组成的不可变序列。这意味着一旦创建了一个字符串对象,其内容就不能被改变。1. 使用 StringBuilder 进行频繁的字符串拼接。2. 处理用户输入时注意安全问题,防止注入攻击。3. 使用资源文件进行国际化和本地化。4. 考虑文化差异进行字符串比较。5. 检查字符串长度,避免超出预期。6. 使用自定义格式化字符串控制输出格式。7. 处理多字节字符时使用正确的编码方式。

2024-12-07 17:13:30 1786

原创 C#设计模式--原型模式(Prototype Pattern)

这个示例展示了如何使用状态模式和克隆模式来实现文档编辑器的撤销功能。通过将文档的历史版本存储在栈中,并在需要时进行撤销操作,可以有效地管理文档的状态变化。同时,通过实现 ICloneable 接口,确保每次创建新文档时都能获得一个独立的副本,保证了文档状态的独立性。

2024-12-06 16:40:22 1133

原创 C#设计模式--装饰器模式(Decorator Pattern)

装饰器模式是一种结构型设计模式,它允许在运行时动态地给一个对象添加职责,而不需要修改对象的结构。

2024-12-05 16:31:30 1403

原创 C#设计模式--适配器模式(Adapter Pattern)

适配器模式是一种非常实用的设计模式,特别适用于需要将不同接口的类集成在一起的场景。通过适配器模式,可以有效地解决接口不兼容的问题,提高代码的复用性和灵活性。然而,使用适配器模式也会增加系统的复杂性和维护成本,因此在实际开发中需要权衡利弊,合理使用。

2024-12-05 15:08:43 2667

原创 Unity3D 热更新之HybridCLR方案

根据 HybridCLR 的文档,配置你的项目以支持 HybridCLR。创建一个版本配置表,用于存储当前版本的 DLL 文件信息。创建一个 DLLDownloader 类,用于从服务器下载最新的 DLL 文件。在运行时,可以通过调用 UnloadDLL 方法卸载不再需要的 DLL 文件。在客户端,也需要一个本地版本配置表,用于记录当前已加载的 DLL 文件信息。扩展 DLLLoader 类,使其能够动态加载从服务器下载的 DLL 文件。在控制器中初始化模型和视图,并提供加载和卸载 DLL 的方法。

2024-12-05 09:11:32 1576

天气变换UniStorm 5.1.0.unitypackage

UniStorm 是一款 AAA 动态天空、天气、云阴影和程序化体积云的终极解决方案。UniStorm 包含 100 多个可自定义的特色选项来使你的环境栩栩如生。甚至云的外观也可以自定义。聆听用户的反馈使 UniStorm 变得更加人性化以及简易使用。UniStorm 的功能非常强大,并且给你选项来调整天空中的每一组件。只要你能想象得到就能做得到! AAA 体积云 UniStorm 4.0 带来一个完全重新设计的云系统,能够创建 AAA 的程序化、自我投影、PBR、体积云,其帧率优异且仅使用一个绘制调用!UniStorm 的云使用的是最新的渲染以及性能技术,例如时间性重投和 LOD。UniStorm 的云包含 4 个质量设置以及一个体积和 2D 选项,并都可以在运行时或在 UniStorm 编辑器中进行更改。这使其能够支持众多设备和电脑。简单易用的 API 让添加游戏内的质量控制变得简单无阻。其中还包含一个演示操作的示例。

2022-08-13

相机Camera+Orbit.rar

适合unity 相机控制

2021-09-09

空空如也

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

TA关注的人

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