前言 隨著物聯網(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 ...