国内文章
低成本高可用方案!Linux系统下SQL Server数据库镜像配置全流程详解
https://www.cnblogs.com/lyhabc/p/18660810/linux-sql-server-database-mirroring-configuration-guide
本文详细介绍了如何在Linux系统下配置SQL Server数据库镜像,以实现低成本高可用方案。作者首先明确客户的需求,并指出在SQL Server 2017及之后版本中支持Linux系统的同时,镜像技术在高可用性要求不高的情况下是个不错的选择。文章提供了具体的搭建步骤,包括环境要求、主机配置及证书创建等,强调了搭建过程的简便和类似于Windows的特性。该方案适合要求不高的生产环境。
Phi小模型开发教程:用C#开发本地部署AI聊天工具,只需CPU,不需要GPU,3G内存就可以运行,不输GPT-3.5
https://www.cnblogs.com/chingho/p/18681020
本文讨论了AI应用的趋势,强调程序员学习AI技能的重要性,尤其是Phi小模型。Phi模型是微软推出的语言开源模型,最新版本Phi-4在多个基准测试中表现优异。文章提供了C#开发调用此模型的示例,介绍了ONNX的使用和依赖库的安装,以及如何创建控制台应用。作者分享了具体代码示例,以帮助读者理解如何应用这一技术。
C#使用yield关键字提升迭代性能与效率
https://www.cnblogs.com/Can-daydayup/p/18684357
这篇文章详细介绍了C#中的yield关键字。yield简化了数据迭代,实现按需生成数据。文章通过对比传统迭代和yield迭代,展示了yield如何提高性能和效率。使用yield时,数据在需要时才生成,优化了内存使用。文章提供了代码示例,展示了yield关键字的应用和效果。还讨论了yield break的用法,表明如何显式地结束迭代。同时,指出了yield关键字的限制。总体而言,文章内容丰富,易于理解,对C#开发者有实用价值。
回顾我的软件开发经历(1)
https://www.cnblogs.com/Rong-/p/18685820
这篇文章讲述了作者的职业生涯,从大学毕业后的第一份工作开始,逐步深入软件开发的各个方面。作者回顾了从搭建BBS论坛到开发综合钻井平台的经历,强调了在工作中学习ASP、C#和面向对象编程的重要性。同时,作者分享了对单元测试和代码生成器的理解与实践,说明了敏捷开发对团队的影响。书籍如《程序员修炼之道》和《.NET框架设计》也对作者的发展产生了重要影响。这些经历帮助作者在软件开发领域不断成长和深化理解。文章内容丰富,体现了个人成长与技术深度的结合。
C# WebAPI 插件热插拔
https://www.cnblogs.com/BFMC/p/18687474
WebAPI插件热插拔使应用程序无需重启即可动态加载、更新或卸载功能模块。这种设计适用于需要频繁更新的大型系统,增加了系统的稳定性和灵活性。文章展示了如何使用Postman进行查询、添加、更新、删除插件功能,以及相关代码实现,包括接口定义和数据库连接配置。主要依赖NuGet程序包如Newtonsoft.Json和SqlSugarCore,以实现数据转换和存储功能。
拥有自己的解析器(C#实现LALR(1)语法解析器和miniDFA词法分析器的生成器)
https://www.cnblogs.com/bitzhuwei/p/18683262/my-own-parsers
文章介绍了一款C#实现的解析器生成器bitParser,支持LALR(1)语法解析和miniDFA词法分析。该生成器参考了lex和yacc输入格式,采用了现代编译原理的算法,实现了多种类型的语法和词法分析器。提供了详尽的注释和状态图,方便学习和调试。生成器无需依赖第三方库,可直接使用类库调用,具备多行和单行注释的自定义功能,并能快速生成解析器代码和文档,优化显著。文章开头和结尾提供了额外的链接以获取更多资源和示例。
.NET 9 new features-C#13新的锁类型和语义
https://www.cnblogs.com/tianqing/p/18653870
C# 13 引入了新的锁类型 System.Threading.Lock,以增强多线程编程中的同步机制。这种新锁替代了传统的 lock 关键字,解决了性能瓶颈和死锁风险。System.Threading.Lock 提供了更高效、安全的线程同步操作,适用于高性能的多线程应用和复杂的同步需求。新语义简化了锁定行为的控制,降低了死锁几率。示例代码展示了如何安全更新共享资源,演示了使用新的锁的有效性和实用性。
.NET9 AOT部署
https://www.cnblogs.com/hudean/p/18685670
AOT(Ahead-of-Time)是将C#程序提前编译为机器代码的方法,能提高应用的启动速度和减少内存占用。AOT适合在未安装.NET运行时的环境中运行。与JIT(Just-in-Time)相比,AOT有更快的启动速度和更低的内存占用,但编译时间较长且缺乏灵活性。选择AOT或JIT取决于应用场景、性能需求和开发周期。通过创建控制台项目,可以实践AOT和JIT的不同应用。
回顾我的软件开发经历:我与代码生成器的涅槃之路
https://www.cnblogs.com/Rong-/p/18682641
这篇文章讲述了作者从简单的代码生成器发展到强大的ORM框架的过程。通过学习与实践,作者逐渐掌握了重构、设计模式和系统架构的重要性。初次接触代码生成器时,作者对面向对象开发尚感模糊,后期通过阅读《C# Primer Plus》不断完善代码生成器。经过多次重构,作者实现了支持多种数据库的ORM框架,并在开发过程中逐渐理解设计模式的应用。作者还探讨了前端控件、输入验证和模板技术等方面,让框架更加高效和灵活。最终,作者反思了框架与库的关系,认为可以拆分为多个独立库以实现最佳效果。
【译】我们最喜欢的2024年的 Visual Studio 新功能
https://www.cnblogs.com/MeteorSeed/p/18687409
Visual Studio 团队在2024年推出了多项新功能以提升开发者的生产力。图像悬停预览功能优化了引用图像的查看,错误复制改进让用户可以仅复制所需的错误信息。新增加的重命名建议功能针对不明确的变量命名,以帮助开发者进行合理命名。内存布局查看器和异步调试器分别优化了内存使用和调试流程。同时,.NET MAUI 模板更新和 Copilot 功能增强了项目启动和代码建议的效率。新扩展管理器简化了扩展安装过程,而整合虚幻引擎则为游戏开发提供了便利。这些创新皆源于开发者社区的反馈。
记一次 .NET某数字化协同管理系统 内存暴涨分析
https://www.cnblogs.com/huangxincheng/p/18681199
这篇文章讨论了在Linux上运行.NET程序时出现的内存泄露问题。作者分享了一位朋友在高级调试训练营中遇到的情况,并解释了如何使用sos提供的!maddress命令来分析内存使用情况。文章详细描述了内存暴涨的原因,并通过具体示例展示了内存的分布情况。尽管主要针对技术调试人员,内容清晰且实用。
Phi小模型开发教程:C#使用本地模型Phi视觉模型分析图像,实现图片分类、搜索等功能
https://www.cnblogs.com/chingho/p/18691002
这篇文章介绍了如何利用AI模型进行非结构化数据的处理。主要讲述了Phi-vision模型的下载、设置和使用,尤其是在.NET 9环境下。作者提供了详细的步骤,包括下载ONNX模型、创建控制台应用及相应的代码示例。通过该模型,可以实现图像的分类和搜索。文章内容简洁明了,适合有一定编程基础的读者,但对初学者可能稍显复杂。
.NET Core GC压缩(compact_phase)底层原理浅谈
https://www.cnblogs.com/lmy5215006/p/18676634
文章详细描述了垃圾回收(GC)的清除和压缩步骤。首先,GC通过清除不可到达的对象,释放内存。接着,通过创建空闲列表和更新相关结构,来管理碎片。文章随后阐述了压缩阶段,包括对象移动和地址更新。这一过程复杂,涉及多个根的扫描和更新。提供了代码示例来演示GC的工作机制,明确展示了GC前后的对象地址变化。整体上,文章内容丰富,结合了理论和实践。
.NET 中 Logger 常被忽视的方法 BeginScope
https://www.cnblogs.com/chenyishi/p/18682492
BeginScope 方法是 .NET ILogger 接口的一部分,用于创建日志记录的作用域,提升日志可读性和调试效率。必须在日志配置中启用作用域信息,如在 appsettings.json 中设置 IncludeScopes 为 true。代码中使用 BeginScope 添加上下文信息,并在日志中包含该信息。此外,可以通过实现 ILogger 接口,将作用域信息以 JSON 格式输出,有助于结构化日志记录,提高系统可维护性。
.NET Core 中如何构建一个弹性的 HTTP 请求机制?
https://www.cnblogs.com/liyongqiang-cc/p/18683913
文章介绍了弹性 HTTP 请求机制的概念及其重要性,强调在分布式系统中应对故障的能力。通过重试、断路器、超时、降级和负载均衡等策略,提升系统的可用性、用户体验和降低运维成本。接着,文章讲解了 .NET Core 中 HttpClient 的使用,并介绍了 HttpClientFactory 的引入,以解决直接使用 HttpClient 时可能面临的问题,包括 DNS 更新和套接字耗尽。
菜单权限的设计与实现
https://www.cnblogs.com/cyzf/p/18683001
本文介绍OverallAuth2.0权限与可视化流程管理系统的设计与实现。通过详细讲解菜单权限的管理,文章强调用户、角色与菜单之间的关系。从角色到菜单的权限分配,涉及数据表设计和接口实现,支持不同公司和系统的权限管理。文章建议读者先阅读系列前文以便理解。可供新手与老手学习,内容清晰且详细。
Winform-耗时操作导致界面渲染滞后
https://www.cnblogs.com/snowoct/p/18690950
文章讨论了Winform的线程机制,强调单线程模型与依赖消息循环的特性。主线程管理所有UI操作,耗时任务会阻塞UI线程,导致控件绘制滞后。通过示例代码说明,pictureBox1的显示受事件处理的影响。最佳解决方案是将耗时任务移至后台线程,以保持UI线程空闲,使用Task.Run或async/await可优化性能。并且强调了主线程必须通过控制.invoke等方法更新UI控件,确保多线程的安全性。
ASP.NET Core 快速轻量级的浏览器检测和设备检测库
https://www.cnblogs.com/netcore5/p/18687375
在 .NET Framework 4.7 中,HttpContext.Request 的 Browser 属性提供了浏览器信息,ASP.NET Core 则通过 BrowserDetector NuGet 包实现浏览器、设备类型和操作系统的检测。支持 .NET 6/7/8。使用方法包括安装 NuGet 包并调用 AddBrowserDetection 方法启用服务。IBrowserDetector 可用于控制器、视图和中间件,以获取浏览器相关信息并执行相应逻辑。
.Net类型 值类型
https://www.cnblogs.com/AntToolStuido/p/18683124
本文介绍了C#中的预定义类型和基本数据类型,包括整型、浮点型、decimal、布尔型和字符型。整型包括sByte、short、int、long、byte、ushort、uint和ulong,各种类型具有不同的范围。浮点型包含float和double,分别支持32位和64位精度,而decimal类型则用于高精度货币计算。bool类型用于表示真或假。char类型用于存储单个字符,并支持多种表示方式。C#使用这些类型提供高效的数据处理。
语音处理 开源项目 EchoSharp
https://www.cnblogs.com/shanyou/p/18691590
EchoSharp 是一个开源项目,旨在实现近实时音频处理,集成多个 AI 模型,支持语音转文本和语音活动检测。该项目采用灵活的架构,目标是简化模型部署和提升性能。它具有实时音频处理和模块化AI组件等特点,为开发人员提供定制功能。项目还整合了多种先进的语音识别技术,适用于高质量音频分析。预计未来会不断发展,拓展更多功能,成为 .NET 生态中的轻量级语音处理工具。
.Net类型 引用类型
https://www.cnblogs.com/AntToolStuido/p/18687112
本文介绍了C#中的两种预定义引用类型:object和string。object是所有类型的根类型,支持装箱和反射,包含基本方法如Equals和ToString。用户需重写这些方法以提供自定义实现。string类型用于处理Unicode字符串,虽然表现为值类型,但实际上是引用类型,存储于堆中。修改字符串将创建新对象,因此字符串不可改变。总体上,文章内容清晰详细,适合对C#感兴趣的读者。
并发编程 - 线程同步(一)
https://www.cnblogs.com/hugogoos/p/18688670
本文讨论了线程同步的概念及其重要性。线程同步确保多线程环境中共享资源的安全使用,避免竞争条件导致的数据不一致。如文中银行账户转账的例子,未同步的线程可能造成错误的余额更新。作者还提到torn read现象,显示了多线程带来的共享资源问题。通过共享变量的代码示例,文中反映了线程同步的必要性和实际应用。总体而言,本文对线程同步进行了深入浅出的阐述,适合多线程编程学习者。
ef 值转换与值比较器
https://www.cnblogs.com/aoximin/p/18579017
本文介绍了C#中的值转换器和值比较器的概念与应用。通过实例说明如何将枚举值存储为字符串,方便数据处理。作者详细描述了如何配置模型,将自定义转换器与数据库映射结合,提升了数据存取效率。此外,文章提到值比较器的功能,通过优化更新语句以提高运行效率。这些知识对开发者在实际业务逻辑中处理数据具有参考价值。
应用程序取得当前目录和退出
https://www.cnblogs.com/assassinx/p/18691774
该文章探讨了在C#中获取当前应用程序目录和退出的方法。作者提到多种获取路径的方式,如Assembly和Process类。通过示例代码,读者可以学习如何使用System.Reflection和System.AppDomain获取exe文件路径,以及Process类中的方法。文章还讲解了关于应用程序集、进程和应用程序对象的概念,强调了它们之间的关系。尽管信息丰富,但结构稍显松散,概念也有点重复。
主题
Uno 平台 5.6 - 2.5 倍的性能改进、涡轮增压的热重载和扩展的应用程序打包
https://platform.uno/blog/5-6/
发布 4.3.0 · Shouldly/Shouldly
https://github.com/shouldly/shouldly/releases/tag/4.3.0
发布 7.0.0 · Cysharp/MagicOnion
https://github.com/Cysharp/MagicOnion/releases/tag/7.0.0
发布 [预发布] v8.2.250129-preview2 · 社区工具包/Windows
https://github.com/CommunityToolkit/Windows/releases/tag/v8.2.250129-preview2
文章、幻灯片等
C# 定式 - MessageBox - 居中父屏并隐藏 X 按钮 - Qiita
https://qiita.com/chai0917/items/99cc68c9d1ab2fa22b86
用 C# 编写 .NET 垃圾回收器 - 第 1 部分
https://minidump.net/2025-28-01-writing-a-net-gc-in-c-part-1/
自定义折叠文本指示器 - Visual Studio Blog
https://devblogs.microsoft.com/visualstudio/customizing-collapsed-text-indicators/
如何在 .NET 8 构建时不在输出路径中包含平台
https://zenn.dev/dio0550/articles/e19b8a1c0dc2a5
将 GenericHost 放入 WPF 中,方便使用最新功能的最小集成方法 - Qiita
https://qiita.com/spc_ksudoh/items/622e7c58beedb310b64f
"Parsable" 似乎比 "Parseable" 更合适 -.NET 类型名称在正式发布前更改- - Qiita
https://qiita.com/RyotaMurohoshi/items/9033e13303ed449f4c4e
在 Blazor 中实现服务器发送事件 - Qiita
https://qiita.com/k-yamamoto/items/da92203669bbc7742790
使用 GitHub Copilot Edits(预览版)更高效地迭代多个文件 - Visual Studio 博客
在分析器和源生成器中支持多个 .NET SDK 版本
https://andrewlock.net/supporting-multiple-sdk-versions-in-analyzers-and-source-generators/
Shift_JIS 和 CP932 - Qiita
https://qiita.com/chai0917/items/17708cc4d7f3be46430e
C# AWS ALB⇔Lambda 模拟测试工具在本地环境中调试
https://zenn.dev/ktnd111/articles/141c31ec2a7238
将 Svelte 嵌入到 ASP.NET Core 项目中(没有 SvelteKit)
https://zenn.dev/zead/articles/svelte-aspnetcore
C# IncrementalGenerator(SourceGenerator) 的入门使用
https://zenn.dev/cadcad_sat/articles/b0645a4c8c19a9
C# - XML - CDATA 部分
https://zenn.dev/chai0917/articles/b1cb826ee4e672
我将我的图片查看器从 WPF 重写为 Avalonia
https://www.reddit.com/r/csharp/comments/1idlern/i_rewrote_my_picture_viewer_from_wpf_to_avalonia/
C# 用户的 PowerShell 备忘单 - Qiita
https://qiita.com/yamarah/items/867697f2cd1b30a43eee
使用 Blazor Server 托管 React
https://dev.to/ruxozheng/host-react-with-blazor-server-6ff
使用 MySQL、Entity Framework 和 ASP.NET Core 以及 .NET Aspire 依赖项创建迁移
https://zenn.dev/kei_lr/articles/dc80c29c8c7181
当你因为无法使用 FluentTextField 而放弃使用 Fluent UI Blazor 的时该怎么办
https://zenn.dev/microsoft/articles/fluentuiblazor-workaround
避免搜索字典两次 - Qiita
https://qiita.com/h084/items/3573d4a680fd56eadcfa
使用 Visual Studio 性能探查器 "Memory Usage" 调查内存泄漏 - Qiita
https://qiita.com/pea1205/items/3943e9e76dc90374c25f