前言 随着物联网(IoT)技术的迅猛发展,智能设备之间的互联互通变得越来越重要。 推荐一套基于 C# 的高效 IoT 系统,该系统运行在 Linux 开发板上,并支持 Modbus RS485 传感器、NPN/PNP 开关等所有符合 485 通讯协议的设备进行数据采集和指令发送。这套系统在为智能家居 ...
在.NET中,注入泛型依赖项是一个常见的场景。 在依赖注入(DI)中使用泛型可以使得应用程序更加模块化、易于测试和扩展。 在ASP.NET Core中注册泛型服务 假设我们有一个需要注入的泛型接口 IRepository<T> 和实现类 Repository<T>。 public interface ...
title: 让Visual Studio的终端拥有命令补全(PSReadLine) date: 2025-02-13 category: - 编程 tag: - VisualStudio - PowerShell - Windows 如果你下载了Windows Terminal和最新版的Power ...
学习C#互斥锁Monitor,注意避免锁定值类型和try/finally错误,善用TryEnter避免长时间持锁,以及使用Wait、Pulse等方法实现生产者-消费者模式。示例代码和测试方法在代码库。 ...
在 .NET 开发中,异常处理是保证应用健壮性的重要手段,但不应被滥用。 异常的引发和捕获相较于普通的代码逻辑性能较差,因此在热路径(频繁执行的代码路径)中,避免依赖异常来控制程序流是提升性能的关键之一。 为什么要减少异常的使用? 性能开销大:异常处理机制涉及堆栈回溯和额外的系统调用,可能显著影响性 ...
提问词:【我想在一个dotnet core 8项目中使用 Blazor Hybric 技术,同时构建一个MAUI Project(A,打包到手机端),和一个Auto Render Model 的WebApp Project(W,发布到服务器),我想将两者都用到的Razor文件抽出来作为一个Commo ...
程序在预警时,会发出报警音,当报警音频播放时间,超过预警频率时,就会像我们打印文档一样,像打印机发送10次打印任务。当打出第1张纸的时候,这时候想取消打印。就不能在电脑端通过软件操作了。因此为了避免这种事情发生,就只有等打印机打完一张,再发下一个任务。这样的话,可以随时发起取消打印任务。 如果实现在 ...
基于vue-pure-admin框架搭建的博客后台系统 介绍 本项目基于 vue-pure-admin 开发,原本博客后台使用StarBlog升级vue3版本搭建,鉴于被我改得烂七八糟,所以这次使用了新的架子搭建。 项目地址 https://github.com/ZyPLJ/vue-zyblog-p ...
在UI设计中,页面布局非常重要,良好的布局不仅可以有效的利用空间,还能提升交互体验,以达到事半功倍的效果。所以对于Avalonia UI初学者来说,布局控件的了解与学习也非常的重要,今天以一些小例子,简述Avalonia UI框架中布局控件的使用,仅供学习分享使用,如有不足之处,还请指正。 ...
为什么要避免同步读取 ASP.NET Core 中的所有 I/O 操作都是异步的。服务器实现了 Stream 接口,该接口同时具备同步和异步的方法。 在进行 I/O 操作时,应优先使用异步方法,以避免阻塞线程池的线程。 如果阻塞了线程池线程,可能会导致服务器无法处理更多请求,造成急剧性性能下降。 尤 ...
lock是C#中的线程同步互斥锁,使用时需避免锁定this、公共对象、字符串和非readonly对象,小心锁定静态对象。锁定不当易导致同步问题,示例代码和源码在代码库。 ...
前一阵子,想着给我的站点集成一个微信登录,因为我之前从未有过微信相关的开发,所以我自己跟着网上的资料,一步一步的慢慢的摸索,过程不免的遇到了许多坑,才把我的网站微信登录集成完成,所以这里分享一下我的摸索的过程。因为我的是订阅号,所以一下的内容均针对订阅号而言的。 一、了解微信的交互流程 这里假设我们 ...
在 C# 中,Task.Run 是用来在后台线程中执行异步任务的一个常见方法。 它非常适用于需要并行处理的场景,但如果不加以谨慎使用,可能会导致额外的线程池调度,进而影响程序的性能。 什么是线程池? 线程池是 .NET 中的一种优化机制,它通过复用固定数量的线程来减少线程创建和销毁的开销。 线程池中 ...
本文主要使用.Net9中的HttpClient组件,调用本地部署的Ollama提供的API接口,获取对应的问答信息。 1、测试环境 VS2022; .Net9控制台程序; HttpClient组件; 本地部署的Ollama环境 DeepSeek R1模型(deepseek-r1:1.5b) 关于 ...
什么是IAsyncEnumerable IAsyncEnumerable<T> 是 .NET 中用于表示异步数据流的接口。 它允许你逐个异步地获取数据项,而不是将所有数据一次性加载到内存中。这样可以减少内存占用,尤其在处理大量数据时更加高效。 与 IEnumerable<T> 不同,IEnumera ...
本文介绍Interlocked类的使用,包括Read、Increment、Decrement和Add方法,适用于多线程环境安全操作变量,解决了非原子操作导致的线程安全问题,并提供示例代码。 ...
在C# WinForms中,虽然没有像WPF那样内置的双向绑定机制,但你可以通过事件和属性封装来实现类似的功能。具体来说,你可以在静态属性的set访问器中触发一个自定义事件,然后在需要的地方订阅这个事件,以便在属性值发生变化时执行相应的操作。 全局状态的隐患 问题:静态类和静态事件引入了全局状态,这 ...
对于GUI(图形用户页面)程序来说,控件是创建用户页面的基本构建块,不同的控件代表不同的功能,如按钮,文本框,滑块等。在Avalonia UI中,了解控件的使用及其特性对于创建应用程序至关重要。 ...
底层开发必备技能:C#中的位运算 在编程的世界里,位运算是程序员掌握底层开发和优化性能的利器。对于那些需要处理二进制数据、优化算法或进行底层操作的开发者来说,理解并熟练使用位运算符是必不可少的技能。本文将详细介绍C#中的位运算符及其应用场景,帮助你更好地理解和运用这些强大的工具。 一、C#中的位运算 ...
引言 在现代 Web API 开发中,我们经常需要对资源进行部分更新(Partial Update)。传统的 PUT 请求会要求发送整个对象,而 PATCH 请求可以仅发送需要更新的字段。ASP.NET Core 提供了 JsonPatchDocument<T> 来简化这一操作。 什么是 JsonP ...