随笔分类 -  .NET Core+

1 2 3 4 5 下一页
.NET Core+
WinDbg 分析 .NET Dump 线程锁问题
摘要:在定位 .NET 应用程序中的高 CPU 占用问题时,WinDbg 是非常强大的工具之一,尤其配合 SOS 扩展使用可以快速锁定“忙线程”或死锁等问题。 本文将基于一次实际的分析流程,演示如何一步步定位由线程锁引起的 CPU 高占用。 1. 加载 SOS 扩展(针对 .NET) 首先,我们需要加载 阅读全文
posted @ 2025-05-24 11:56 chester·chen 阅读(700) 评论(0) 推荐(4)
dotnet-trace 分析.net程序性能
摘要:在现代 .NET 开发中,性能分析和故障诊断是确保应用程序稳定性和高效性的关键步骤。 本文将介绍如何使用 dotnet-trace 工具进行 .NET Core 应用的性能跟踪,并结合 PerfView 和 Speedscope 等可视化工具,深入理解应用的运行状况。 一、dotnet-trace 阅读全文
posted @ 2025-05-17 14:24 chester·chen 阅读(845) 评论(0) 推荐(6)
非容器环境中使用Selenium,提升Chrome与ChromeDiver兼容性
摘要:背景 在 Windows 环境下使用 Selenium 时,Chrome 浏览器版本与 ChromeDriver 版本的兼容性问题是一个常见的困扰。 由于 Chrome 频繁更新,而 ChromeDriver 需要与特定版本的 Chrome 精确匹配,导致 Selenium 代码可能会因版本不匹配而 阅读全文
posted @ 2025-03-07 10:04 chester·chen 阅读(868) 评论(0) 推荐(3)
.NET中 泛型 + 依赖注入 的实现与应用
摘要:在.NET中,注入泛型依赖项是一个常见的场景。 在依赖注入(DI)中使用泛型可以使得应用程序更加模块化、易于测试和扩展。 在ASP.NET Core中注册泛型服务 假设我们有一个需要注入的泛型接口 IRepository<T> 和实现类 Repository<T>。 public interface 阅读全文
posted @ 2025-02-14 10:09 chester·chen 阅读(1723) 评论(1) 推荐(2)
.NET最佳实践:业务逻辑减少使用异常
摘要:在 .NET 开发中,异常处理是保证应用健壮性的重要手段,但不应被滥用。 异常的引发和捕获相较于普通的代码逻辑性能较差,因此在热路径(频繁执行的代码路径)中,避免依赖异常来控制程序流是提升性能的关键之一。 为什么要减少异常的使用? 性能开销大:异常处理机制涉及堆栈回溯和额外的系统调用,可能显著影响性 阅读全文
posted @ 2025-02-13 09:51 chester·chen 阅读(1376) 评论(0) 推荐(6)
.NET最佳实践:避免同步读取HttpRequest
摘要:为什么要避免同步读取 ASP.NET Core 中的所有 I/O 操作都是异步的。服务器实现了 Stream 接口,该接口同时具备同步和异步的方法。 在进行 I/O 操作时,应优先使用异步方法,以避免阻塞线程池的线程。 如果阻塞了线程池线程,可能会导致服务器无法处理更多请求,造成急剧性性能下降。 尤 阅读全文
posted @ 2025-02-10 09:26 chester·chen 阅读(1284) 评论(2) 推荐(8)
.NET最佳实践:避免滥用Task.Run
摘要:在 C# 中,Task.Run 是用来在后台线程中执行异步任务的一个常见方法。 它非常适用于需要并行处理的场景,但如果不加以谨慎使用,可能会导致额外的线程池调度,进而影响程序的性能。 什么是线程池? 线程池是 .NET 中的一种优化机制,它通过复用固定数量的线程来减少线程创建和销毁的开销。 线程池中 阅读全文
posted @ 2025-02-09 09:06 chester·chen 阅读(2079) 评论(9) 推荐(6)
.NET最佳实践:webapi返回IAsyncEnumerable提升性能
摘要:什么是IAsyncEnumerable IAsyncEnumerable<T> 是 .NET 中用于表示异步数据流的接口。 它允许你逐个异步地获取数据项,而不是将所有数据一次性加载到内存中。这样可以减少内存占用,尤其在处理大量数据时更加高效。 与 IEnumerable<T> 不同,IEnumera 阅读全文
posted @ 2025-02-08 11:56 chester·chen 阅读(1341) 评论(2) 推荐(4)
.NET中优雅使用Patch: JsonPatch
摘要:引言 在现代 Web API 开发中,我们经常需要对资源进行部分更新(Partial Update)。传统的 PUT 请求会要求发送整个对象,而 PATCH 请求可以仅发送需要更新的字段。ASP.NET Core 提供了 JsonPatchDocument<T> 来简化这一操作。 什么是 JsonP 阅读全文
posted @ 2025-02-06 09:06 chester·chen 阅读(1046) 评论(2) 推荐(0)
.NET 中 Logger 常被忽视的方法 BeginScope
摘要:BeginScope 方法是 .NET 中 ILogger 接口的一部分,用于创建日志记录的作用域(Scope)。这种作用域可以将特定的上下文信息包含在日志中,从而提高日志的可读性和调试效率。 配置日志包含作用域信息 首先,需要在日志配置中启用包含作用域信息。以 appsettings.json 为 阅读全文
posted @ 2025-01-21 09:11 chester·chen 阅读(1113) 评论(1) 推荐(5)
AsyncLocal的妙用
摘要:AsyncLocal<T>是一个在.NET中用来在同步任务和异步任务中保持全局变量的工具类。 它允许你在不同线程的同一个对象中保留一个特定值,这样你可以在不同的函数和任务中访问这个值。 这是在实现异步任务中维持一致性和优雅性的一种重要手段。 用法 创建一个AsyncLocal实例: 你可以使用Asy 阅读全文
posted @ 2025-01-10 15:24 chester·chen 阅读(1081) 评论(2) 推荐(9)
在 .NET 中使用 Tesseract 识别图片文字
摘要:1. 什么是 Tesseract Tesseract 是一个强大的字符识别 (OCR) 工具。它最初由 HP 发布,现在由 Google 和学术社区共同维护和开发。 Tesseract 支持多种语言和格式,能够高效地识别图片中的文字。 2. 如何安装 Tesseract 要在 .NET 项目中使用 阅读全文
posted @ 2025-01-08 08:46 chester·chen 阅读(3011) 评论(6) 推荐(19)
Scoop: 开发者多环境管理利器
摘要:Scoop是什么? Scoop 是一个基于 Windows 的包管理器,能够帮助开发者高效管理开发环境和应用程序。 它推荐通过命令行进行包的安装、更新和卸载,同时提供了简单易用的包组织方式,透明化了安装和管理的过程。 与传统的 Windows 应用安装比较,Scoop 允许用户使用命令行将应用安装到 阅读全文
posted @ 2024-12-27 08:09 chester·chen 阅读(1468) 评论(0) 推荐(5)
.NET 9 增强 OpenAPI 规范,不再内置swagger
摘要:在 .NET 9 的更新中,微软增强了原生 OpenAPI。这一变化表明 .NET 正在更加拥抱开放标准,同时让开发者体验更加轻松高效。本文将探讨为何进行这一更改、OpenAPI 的优势,以及如何在 .NET 9 中使用 OpenAPI。 为什么不再内置 Swagger? 1. 标准化的需求 Swa 阅读全文
posted @ 2024-12-25 09:21 chester·chen 阅读(3194) 评论(8) 推荐(5)
.NET 9 中的 多级缓存 HybridCache
摘要:HybridCache是什么 在 .NET 9 中,Microsoft 将 HybridCache 带入了框架体系。 HybridCache 是一种新的缓存模型,设计用于封装本地缓存和分布式缓存,使用者无需担心选择缓存类型,从而优化性能和维护效率。 实际上,HybridCache 基于 IDistr 阅读全文
posted @ 2024-12-24 10:35 chester·chen 阅读(2067) 评论(6) 推荐(11)
为什么推荐在 .NET 中使用 YAML 配置文件
摘要:在现代应用开发中,配置管理是一个非常重要的部分。随着微服务、容器化和云原生架构的流行,使用简单、易读的配置格式变得尤为重要。在 .NET 开发中,虽然 JSON 是默认的配置文件格式,但 YAML("YAML Ain't Markup Language")正越来越受到开发者的青睐。 YAML 是什么 阅读全文
posted @ 2024-12-23 15:52 chester·chen 阅读(3142) 评论(35) 推荐(12)
C#中 Task 结合 CancellationTokenSource的妙用
摘要:在.NET中,CancellationTokenSource、CancellationToken和Task是处理异步操作和取消任务的重要工具。本文将通过一些简单的例子,帮助你理解它们的用法和协作方式。 CancellationTokenSource CancellationTokenSource 是 阅读全文
posted @ 2024-12-21 09:15 chester·chen 阅读(1530) 评论(1) 推荐(8)
Avalonia 中的样式和控件主题
摘要:在 Avalonia 中,样式是定义控件外观的一种方式,而控件主题则是一组样式和资源,用于定义应用程序的整体外观和感觉。本文将深入探讨这些概念,并提供示例代码以帮助您更好地理解它们。 样式是什么? 样式是一组属性,用于定义控件的外观。它们可以包括背景色、边框、字体样式等。在 Avalonia 中,样 阅读全文
posted @ 2024-04-15 09:08 chester·chen 阅读(1801) 评论(0) 推荐(2)
Avalonia中的布局
摘要:Avalonia是一个跨平台的.NET UI框架,它允许开发者使用C#和XAML来创建丰富的桌面应用程序。在Avalonia中,Alignment、Margin和Padding是非常重要的布局属性,它们与Panel元素一起使用,可以构建出各种复杂的用户界面。 Alignment、Margin 和 P 阅读全文
posted @ 2024-04-11 10:30 chester·chen 阅读(2207) 评论(0) 推荐(2)
Avalonia中的自绘控件
摘要:在构建用户界面时,控件扮演着至关重要的角色。它们不仅负责展示内容,还处理用户的交互。然而,有时标准的控件库可能无法满足我们的需求,这时自绘控件就显得尤为重要。在Avalonia UI框架中,自绘控件允许我们完全掌控控件的渲染逻辑,实现高度自定义的UI元素。本文将深入探讨自绘控件的概念、优势、应用场景 阅读全文
posted @ 2024-04-09 13:34 chester·chen 阅读(2253) 评论(0) 推荐(2)

1 2 3 4 5 下一页