.NET周刊【12月第3期 2024-12-15】

国内文章

重磅推出 Sdcb Chats:一个全新的开源大语言模型前端

https://www.cnblogs.com/sdcb/p/18597030/sdcb-chats-intro

Sdcb Chats是一个新推出的开源大语言模型前端,旨在提升用户交互体验,并填补市场上基于.NET的前端空白。它引入树状消息结构,允许用户方便地与模型互动并优化对话。支持多语言界面和多种模型,便于快速使用和配置。此外,Sdcb Chats提供详尽的聊天性能统计和强大的API网关,确保与OpenAI API完全兼容。部署简单,通过Docker支持多操作系统,提升了使用便利性。

.NET静态代码编织——肉夹馍(Rougamo)5.0

https://www.cnblogs.com/nigture/p/18593689

肉夹馍是一款编译时AOP组件,能有效减少应用启动时间,支持多种方法类型。第五个大版本已发布,重点在于优化切面类型和性能。5.0版本删除了切面类型中的属性成员,转而使用Attribute和接口来实现功能。该框架已被PostSharp推荐为2024主要AOP框架之一。虽然知名度不高,但其性能超过许多其他框架,适合开发者尝试。文章提供了切面类型变更的详细结构及对应接口信息。

C#委托的前世今生

https://www.cnblogs.com/xiketangedu/p/18594690

这篇文章介绍了C#中的委托概念及其在多线程中的应用。委托允许在无法直接访问主线程控件时通过委托方法进行调用。文章详细阐述了委托的声明、创建、绑定和调用过程,重点分析了线程间操作的限制以及如何通过Invoke方法解决该问题。通过案例,作者有效地解释了委托的用途及工作机制,提升了读者对多线程编程的理解。

0. RyuJIT Tutorials - RyuJIT 的历史和架构

https://www.cnblogs.com/hez2010/p/18596034/ryujit-tutorials-0

RyuJIT是.NET的新一代JIT编译器,负责将IL代码编译为机器代码。编写此系列教程旨在分享作者在RyuJIT开发中的经验与见解。RyuJIT源于对JIT32、JIT64及ARM代码质量问题的反思,旨在提高代码生成质量和编译速度,并适应现代架构。其采用了基于SSA和VN的优化算法,重写了编译器的前后端结构。RyuJIT成功改善了编译效率,减少了资源消耗,并在不同架构上提供了一致的性能表现。该项目体现了编译器技术的创新与发展。

记一次 .NET某差旅系统 CPU爆高分析

https://www.cnblogs.com/huangxincheng/p/18599213

文章讨论了CPU爆高的问题及其分析过程。首先,作者与学员共同分析了差旅后台系统中的异常事件。通过使用WinDbg工具,作者确认CPU利用率达到100%,并指出线程池出现阻塞现象。文章接着探讨了机器的CPU能力以及线程的具体活动,提供了详细的命令输出和解析。作者强调了解线程状态对于问题定位的重要性,并指出堆积现象与CPU超负荷并非直接关联。这为读者提供了实际的故障排查思路和经验。内容技术深度较高,实际应用性强。

c#之示波器功能

https://www.cnblogs.com/zhuiyine/p/18601179

该文章详细介绍了如何使用C#实现示波器功能,主要用于单片机调试。作者使用WinForms创建示波器界面,探索了多种开源曲线控件如Oxyplot与Scottplot,并比较了它们的优缺点。文章描述了示波器的基本原理,包括使用队列缓存数据、动态更新曲线、以及如何模拟生产数据。此外,作者分享了实现过程中的问题与个人见解,鼓励读者分享改进建议。整体内容既有技术深度,也兼具实用性,且表达清晰。

.NET Core 堆结构(Heap)底层原理浅谈

https://www.cnblogs.com/lmy5215006/p/18583743

.Net托管堆布局涵盖多个堆,例如HighFrequencyHeap和LowFrequencyHeap,这些堆分别存放高频和低频使用的内部数据。托管堆由GC统一管理,支持SOH、LOH和POH等结构。新推出的冻结堆用于存放永生对象,避免浪费托管堆空间。文章详细描述了堆的逻辑和物理结构,以及代机制的变化,强调了GC的升代逻辑和内存地址的动态变化。提供了相关命令以便观察内存使用情况。内容技术深度高,适合.NET开发者深入理解内存管理机制。

Chats 开发指南

https://www.cnblogs.com/sdcb/p/18604712/chats-development-instruction

本文介绍了Chats开发指南,涵盖了技术基础、环境需求及代码获取。后端使用C#/ASP.NET Core,前端采用Next.js/React/TypeScript,CSS通过Tailwind CSS实现。文中详细讲解了如何在Visual Studio中打开项目、运行项目以及配置文件的作用。强调了使用userSecrets.json管理敏感信息,避免泄露。对数据库采用sqlite,提供了连接字符串的配置方法,并解释了使用自增整数作为ID的原因。整体内容清晰,实用性强,适合开发者快速入手。

一个.NET开源、免费、功能强大的 PDF 处理工具

https://www.cnblogs.com/Can-daydayup/p/18595937

PDF 补丁丁是一款基于.NET框架的开源PDF处理工具,提供编辑、合并、剪裁和图片提取等功能。该工具不收费,界面友好且无广告,支持修改文档结构和批量操作书签。用户可自定义书签文本,调整页面顺序,并解除PDF的复制打印限制。它兼容Windows 7及以上版本,并支持.NET Framework 4.0至4.8。该项目被评为优秀C#/.NET/.NET Core项目,适合希望提高PDF文档处理效率的用户。

基于.NET8+Vue3开发的权限管理&个人博客系统

https://www.cnblogs.com/Can-daydayup/p/18606660

Easy.Admin是一个基于.NET8和Vue3开发的权限管理及个人博客系统,分为普通版本和支持SEO的SSR版本。后端采用.NET 8、Furion、SqlSugar等技术,前端使用Vue3、TypeScript等。项目包含后台管理和个人博客端,支持多种数据库。该项目已收录在C#/.NET领域的优秀项目集,并鼓励社区参与贡献和推广。用户可在Gitee和GitHub上找到源代码,便于学习和使用。

.NET 模拟&编辑平滑曲线

https://www.cnblogs.com/kybs0/p/18603295

本文介绍如何在不使用贝塞尔曲线的情况下绘制平滑曲线,适用于控制点不在贝塞尔曲线上的场合。作者分享了一个用于轮椅加减速平滑曲线的编辑工具,通过多个用户可控点生成曲线。文章探讨了传统贝塞尔曲线的局限性,并提出了基于数据点模拟平滑曲线的两种方案。第一种方案通过MathNet.Numerics生成N阶曲线,第二种方案利用最简多项式拟合实现近似样条曲线。文中包含代码示例,详细说明了如何实施这些方法。

Swagger 调试,我不想再复制粘贴token啦~

https://www.cnblogs.com/tony-god/p/18605146

本文介绍了如何在后端开发中使用Swagger进行Web API调试,尤其是在需要token授权时的自动化过程。通过编写custom.js文件,使用window.fetch方法拦截登录接口的响应,自动提取token并进行授权。这一方法减少了手动复制粘贴的麻烦,提高了调试效率。文章还详细说明了如何创建和配置custom.js文件,使之能够自动授权Swagger UI,简化了开发者的操作。

一套以用户体验出发的.NET8 Web开源框架

https://www.cnblogs.com/Can-daydayup/p/18600773

YiFramework是一个基于.NET8的开源框架,旨在提升用户体验。它结合了DDD领域驱动设计,支持Abp.vNext和SqlSugar,具有三层架构。框架具有RBAC权限管理和BBS论坛功能,适用于各种项目。框架源码直接提供,遵循MIT协议,便于修改。后端核心技术包括.NET8、Abp.vNext等。前端使用Vue3等技术。YiFramework已被列入优秀的C#/.NET项目推荐中,为开发者提供最佳实践的参考。

深入理解 Task.Delay 的定时精度及其影响因素

https://www.cnblogs.com/Tangtang1997/p/18599614

该文章探讨了 Task.Delay 的精确度问题,并分析了影响其精度的多种因素,包括系统负载、任务调度、定时器精度、电源管理和垃圾回收。文章提供了具体的代码示例,展示了如何使用 Stopwatch 测量实际延迟时间,并与 Task.Delay 的预期时间进行对比。与此同时,文章比较了其他解决方案,如 System.Threading.Timer 和 System.Diagnostics.Stopwatch,以提高定时控制的精度。整体上,文章具有较好的实用性和清晰度。

datagridview点击列头对当前列进行排序的功能无效

https://www.cnblogs.com/gho13954/p/18599980

DataGridView 的默认行为支持对列进行排序,但在某些情况下会被禁用。数据源若不支持排序或列的 SortMode 设置为 NotSortable,则无法排序。此外,自定义 ColumnHeaderMouseClick 事件的代码也可能干扰默认行为。当数据源为 List<T> 时,需要手动实现排序。在事件中,通过列索引获取属性名,然后按此属性进行升序或降序排序。使用泛型获取属性值的方法可实现灵活处理。综合来看,这篇文章详细且实用,提供了具体的编码示例和实现思路。

WinForm(C/S)项目中使用矢量字体(FontAwsome、Elegant)图标

https://www.cnblogs.com/huyong/p/18594412

本文介绍了如何在WinForm项目中使用字体图标,重点介绍了Font Awesome和Elegant Icon Font。字体图标是矢量图,能够在各种大小的屏幕上清晰呈现。文章探讨了字体图标的选择,提供了FontAwesome的下载和使用方法。文中给出了如何定义图标编码的枚举类,以及实现图标加载的公共类FontImagesHelper.cs。这一方法可以提高界面的直观性,同时避免使用传统的图片格式,具有可扩展性和灵活性。

(系列十四)Vue3+WebApi 搭建动态菜单

https://www.cnblogs.com/cyzf/p/18586070

该文章讨论了OverallAuth2.0系统的开发,旨在帮助新手和老手掌握技术细节。文章详细介绍了动态菜单的实现过程,包括代码修改和样式调整。系统结合了权限管理和可视化流程,强调了菜单权限的重要性。文章鼓励读者关注交流,以便解决疑问。这是一个以C# .NET相关技术为基础的系列文章,适合希望了解系统开发的读者。

PowerShell一键下载Nuget某个包的所有版本

https://www.cnblogs.com/dingshuanglei/p/18597696

文章描述了如何使用PowerShell下载NuGet包,特别以Newtonsoft.Json为例。首先设置NuGet包的URL和保存目录,若目录不存在则创建。接着,通过Invoke-WebRequest获取NuGet包页面的HTML内容,利用正则表达式匹配所有的a标签,筛选出含有版本号title属性的链接。最后,展示了如何提取这些链接的内容。这篇文章适合开发者学习如何自动化NuGet包的下载。

C#调用Python脚本的方式(一),以PaddleOCR-GUI为例

https://www.cnblogs.com/mingupupu/p/18605737

本文介绍了如何在C#项目中调用Python脚本,特别是使用Process类的方法。文章先强调了Python的强大生态,指出了使用Web API和pythonnet等其他方法。接着,通过PaddleOCR-GUI项目,重点演示了如何设置Python虚拟环境并通过命令行参数传递参数来调用PaddleOCR的功能。文章还概述了PaddleOCR的应用场景以及如何处理日志,确保调用时信息的有效性。这为开发者在跨语言开发时提供了实用指导。

NET任务调度框架Hangfire使用指南

https://www.cnblogs.com/netcore5/p/18596996

Hangfire 是一个开源的 .NET 任务调度框架,适用于 ASP.NET Core 项目。通过 NuGet 安装并配置服务。用户可创建立即执行、延迟和周期性任务。Hangfire Dashboard 提供任务监控功能,需设置权限验证以确保安全性。使用示例代码说明了如何实现不同类型的任务,确保开发人员能够灵活运用该框架。

简化 ASP.NET Core 依赖注入(DI)注册-Scrutor

https://www.cnblogs.com/netcore5/p/18601954

Scrutor是一个开源库,用于简化ASP.NET Core中的依赖注入注册。它可以自动扫描程序集,按规则注册服务。用户可通过NuGet安装Scrutor,并配置选择器、注册策略和服务生命周期。提供了基本和进阶用法,包括从不同程序集扫描和服务装饰。Scrutor支持动态添加功能而不修改现有代码,增强了服务的灵活性和可维护性。

AspNetCore全局异常处理

https://www.cnblogs.com/netcore5/p/18599515

在开发ASP.NET Core应用程序时,全局异常处理至关重要。它确保统一错误响应,避免泄露敏感信息,提高用户体验,并记录错误详情以便追踪。异常中间件和异常过滤器用于处理异常,但位置和用途不同。异常中间件捕获整个请求处理管道中的异常,灵活性高,允许自定义处理逻辑。MVC异常过滤器则专注于特定控制器或动作。开发者可以通过实现IMiddleware或IExceptionFilter接口来注册异常处理机制,以提高应用程序的稳定性和安全性。

Dapper.SimpleCRUD:Dapper的CRUD助手

https://www.cnblogs.com/chingho/p/18542506

本文介绍Dapper.SimpleCRUD,一个基于Dapper的开源CRUD扩展库。Dapper作为轻量级ORM框架,支持使用原生SQL语句直接操作数据库。SimpleCRUD进一步简化了CRUD操作,开发者可以轻松完成插入、读取、更新和删除。该库支持模型属性映射,提供[Key]、[Table]等特性,还支持异步操作以提高性能。通过实例代码,读者可快速上手使用该库。此外,文中提供了项目地址和推荐阅读链接,以便于开发者获取更多资源。

Redis应用—2.在列表数据里的应用

https://www.cnblogs.com/mjunz/p/18607365

本文讨论了基于数据库和缓存双写的分享贴功能,详细描述了如何实现分享贴列表的延迟构建及惰性缓存方案,以节约内存。介绍了用户分享贴列表的精准过期控制和异步更新机制。此外,文中探讨了数据库与缓存的数据一致性方案,及热门用户分享贴列表的并发处理优化。整体内容技术深入,实用性强,语言清晰,创新性高,符合当前技术热点,具备良好的可读性和引用依据。

WxPython跨平台开发框架之参数配置管理界面的设计和实现

https://www.cnblogs.com/wuhuacong/p/18596781

本文介绍了基于WxPython开发的参数配置管理界面,并与.NET实现进行了对比。作者回顾了参数配置管理界面的特点,如模块划分、控件选择及保存功能等。通过使用wx.lib.agw.labelbook中的LabelBook控件,提升了界面的功能和美观性。文章展示了一个简单的配置管理的示例,包含控件的创建和布局逻辑,强调了跨平台开发优势。最后,提供的代码示例清晰地演示了如何使用LabelBook实现界面。整体而言,文章内容详实且实用。

C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)

https://www.cnblogs.com/Can-daydayup/p/18598007

这篇文章介绍了C#/.NET/.NET Core领域的最新技术动态和资源,包括管理.NET SDK的Dependabot、开源流媒体控制平台AKStream、多款必备类库、智能访客管理系统、文件编码插件和PDF处理工具等。这些内容持续追踪技术进展,帮助开发者提升工作效率和代码质量。文章提供了详细的项目链接,为有需要的开发者提供了实用的信息和学习材料。

LeetCode题集-6 - Z 字形变换

https://www.cnblogs.com/hugogoos/p/18600942

本文讨论了一种将字符串按照指定行数进行Z字形排列的方法。首先介绍了二维矩阵模拟法,通过构建二维矩阵以简化操作,并处理特殊情况。然后,文章提到行索引的变化规则,向下移动时步长为1,向上移动时步长为-1。接着,展示了遍历二维矩阵并拼接结果的代码。最后,简介了行模拟法,强调空间优化,通过拼接每行字符串来代替整个矩阵,减少内存占用,并提出需要动态计算行索引的问题。

LeetCode题集-5 - 最长回文子串之马拉车(二)

https://www.cnblogs.com/hugogoos/p/18596492

本文讨论最长回文子串算法,重点介绍了马拉车法的实现。首先,作者指出中心扩展法存在奇偶性处理的复杂性。为了解决这一问题,作者提出通过在字符串中插入特殊符号统一奇偶性。接着,详细介绍了如何计算回文串的实际长度,并引入回文串半径的概念。最后,提供了相关的代码实现,清晰展示了该算法的步骤和逻辑。整体上,文章结构合理,深入浅出,适合有一定编程基础的读者学习算法。

dotnet core微服务框架Jimu ~部署和调用演示

https://www.cnblogs.com/flamesky/p/18597967

本文详细介绍了如何在开发环境中使用Consul和Visual Studio 2022进行微服务的调试与部署。首先,下载并以开发模式运行Consul,然后在Visual Studio中配置多项目启动。接着,发布所需的微服务项目,并通过命令行启动。使用Postman测试API时,不需关心实际地址,只需调用网关服务。文章还具体展示了如何注册用户、获取Token以及查询会员信息。整体步骤清晰,适合开发者快速理解微服务的集成与调用流程。

LeetCode题集-7 - 整数反转

https://www.cnblogs.com/hugogoos/p/18606152

文章探讨了将32位有符号整数反转的不同方法,首先介绍了字符串转换法,强调了处理负号和取绝对值的技巧。其次,文章提供了另一种不使用64位整数的int类型字符串转换法,能够直接利用int.TryParse进行转换。最后,作者提出了更高效的数学方法,通过逐位提取和重组数字来实现反转,避免了字符串转换的低效。在实现中,特别注意到溢出问题的处理。整体逻辑清晰,代码示例详尽,适合初学者学习算法思路。

基于 .NET 的 Nuget 发版工具

https://www.cnblogs.com/NMSLanX/p/18596061

该文章介绍了一个名为Jester的本地Nuget发版管理工具,旨在解决Github管道脚本和XUnit发版的灵活性不足的问题。文章详细描述了工具的运行环境、依赖项及使用方法,包括命令支持、Nuget Key操作和解决方案管理。工具通过CHANGELOG.MD文件进行打包,并集成了与Nuget的网络交互。尽管工具不公开源代码,依赖项列表提供了安全评估的基础。用户反馈将推动工具的后续改进。

主题

适用于 macOS 的 LINQPad 8

https://www.linqpad.net/LINQPad8Mac.aspx

适用于 macOS 的 LINQPad 8 已作为测试版发布。

在 macOS 上运行的版本基于 Avalonia XPF 构建,提供与 Windows 版本类似的功能和外观。

目前不支持调试、结果网格显示、多显示器显示、语法树显示等。

Visual Studio 中提供 GitHub Copilot 免费版 - Visual Studio 博客

https://devblogs.microsoft.com/visualstudio/github-copilot-free-is-here-in-visual-studio/

Visual Studio 中支持 GitHub Copilot 免费。

宣布 .NET 社区工具包 8.4 支持 MVVM、新分析器等的部分属性 - .NET 博客

https://devblogs.microsoft.com/dotnet/announcing-the-dotnet-community-toolkit-840/

.NET 社区工具包 8.4 已发布。

此版本包括对 MVVM Toolkit 中部分属性的支持、新分析器和其他小改进。

2.8.24 版 · StackExchange/StackExchange.Redis

https://github.com/StackExchange/StackExchange.Redis/releases/tag/2.8.24

StackExchange.Redis 2.8.24 已发布。

此版本现在允许 UNWATCH 命令与 Envoy 代理兼容。

发布 v3.1.0 · MessagePack-CSharp/MessagePack-CSharp

https://github.com/MessagePack-CSharp/MessagePack-CSharp/releases/tag/v3.1.0

MessagePack-CSharp v3.1.0 已发布。

除了支持 .NET 9 之外,此版本还修复了多个错误。

活动日历

文章、幻灯片等

.NET 9 和 C# 13 中的 OverloadResolutionPriority 属性 - NDepend 博客

https://blog.ndepend.com/the-attribute-overloadresolutionpriority/

VoicevoxClientSharp:引入来自 C# 和 Unity 的 VOICEVOX 语音合成库 - Qiita

https://qiita.com/toRisouP/items/11bc12583e2460afe0cb

使用多语言笔记本在 VS Code 上轻松运行 C# 和 JavaScript

https://zenn.dev/zead/articles/first-polyglots

[AWSSDK.NET] 自动更新通过 AssumeRole 获取的权限

https://zenn.dev/shimat/articles/50577c719da5ba

刷新您的查找结果 - Visual Studio 博客

https://devblogs.microsoft.com/visualstudio/refresh-your-find-results/

DevToys - DevToys 如何变得跨平台和可扩展

https://devtoys.app/blog/the-journey-to-devtoys-2.0

使用 Qdrant 和 Azure AI 搜索探索 Microsoft.Extensions.VectorData - .NET 博客

https://devblogs.microsoft.com/dotnet/vector-data-qdrant-ai-search-dotnet/

为您的团队创建内部 GitHub 存储库 - Visual Studio 博客

https://devblogs.microsoft.com/visualstudio/create-internal-github-repos-for-your-team/

我研究了 SqlBulkCopy 来批量插入 CSV 和固定长度文件

https://zenn.dev/nuits_jp/articles/2024-12-16-investigation-sqlbulkcopy

自定义 Blazor 以进行全局错误处理 (.Net 8) - Qiita

https://qiita.com/masayahak/items/7e0b84cfc1979b4af727

使用对接窗口创建信息丰富的应用程序

https://zenn.dev/nss_fs_eng/articles/47573b133e6330

如何将 Excel 转换为 PDF - Qiita

https://qiita.com/hirakin/items/a28bfbd08653f7e84bea

[C#] 基于类型安全和性能选择 SQL 构建器 - Qiita

https://qiita.com/h_tacayama/items/8b1e906835edcdb13a66

[C#×AI] 第 1 部分 - 从 OpenAI API 开始交互式应用程序开发

https://zenn.dev/sakai_path/articles/00a79b3ba48920

neue cc - ConsoleAppFramework v5.3.0 - 通过从 NuGet 参考状态等自动生成方法来增强 DI 集成。

https://neue.cc/2024/12/16_ConsoleAppFramewrok_v5_3_0.html

EgorBo/Disasmo:VS2022 插件单击任何方法或类即可查看 .NET Core 的 JIT 为它们生成的内容 (ASM)

https://github.com/EgorBo/Disasmo

在 dotnet 中的 Datadog 数据流监控中添加自定义队列

https://medium.com/@vandonr/adding-custom-queues-in-datadogs-data-streams-monitoring-in-dotnet-cf44f0487a91

并行添加列表时的性能比较 - Qiita

https://qiita.com/abetakahiro123/items/9a672cc60e8289017dc3

Rx 部件的命名思路

https://zenn.dev/lilytechlab/articles/0c0d2742b8a890

通过新的文件重命名通知增强您的 Git 信心 - Visual Studio 博客

https://devblogs.microsoft.com/visualstudio/boost-your-git-confidence-with-the-new-file-rename-notification/

Rider 2024.1 EAP 4 的监控工具

https://zenn.dev/nattosystem_jp/articles/8373cce755f627

使用 Azure Functions Flex Consumer 轻松发布 - Visual Studio 博客

https://devblogs.microsoft.com/visualstudio/effortless-publishing-with-azure-functions-flex-conspiration/

0.RyuJIT 教程 - RyuJIT 历史和架构 - Qiita

https://qiita.com/hez2010/items/b299d4e77240de9e1107

尝试使用 .NET Lambda (Amazon.Lambda.AspNetCoreServer) 进行 SnapStart | DevelopersIO

https://dev.classmethod.jp/articles/monolith-dotnet-lambda-snapstart/

库、存储库、工具等。

nuitsjp/FixedLengthHelper

https://github.com/nuitsjp/FixedLengthHelper

arika0093/BlazorPathHelper:BlazorPathHelper 是一个帮助管理 Blazor 项目内 URL 路径的库。

https://github.com/arika0093/BlazorPathHelper

posted @ 2024-12-24 20:55  InCerry  阅读(413)  评论(0编辑  收藏  举报