.NET周刊【1月第4期 2025-01-26】

国内文章

低成本高可用方案!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 博客

https://devblogs.microsoft.com/visualstudio/iterate-across-multiple-files-more-efficiently-with-github-copilot-edits-preview/

在分析器和源生成器中支持多个 .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

使用 StackExchange.Redis 跟踪 Redis 故障转移

https://tech.guitarrapc.com/entry/2025/01/25/235900

相关推荐
InCerry1 天前
.NET周刊【1月第3期 2025-01-19】
.net周报·.net周刊
InCerry2 天前
.NET周刊【1月第2期 2025-01-12】
.net·.net周报·.net周刊
InCerry21 天前
.NET周刊【1月第1期 2025-01-05】
.net周报·.net周刊
InCerry1 个月前
.NET周刊【12月第4期 2024-12-22】
.net周报·.net周刊
InCerry2 个月前
.NET周刊【12月第3期 2024-12-15】
.net周报·.net周刊
InCerry2 个月前
.NET周刊【12月第2期 2024-12-08】
.net周报·.net周刊
InCerry2 个月前
.NET周刊【12月第1期 2024-12-01】
.net周报·.net周刊
InCerry2 个月前
.NET周刊【11月第4期 2024-11-24】
.net周报·.net周刊
InCerry3 个月前
.NET周刊【11月第3期 2024-11-17】
.net周报·.net周刊