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

摘要:Sdcb Chats是一个新推出的开源大语言模型前端,旨在提升用户交互体验,并填补市场上基于.NET的前端空白。它引入树状消息结构,允许用户方便地与模型互动并优化对话。支持多语言界面和多种模型,便于快速使用和配置。此外,Sdcb Chats提供详尽的聊天性能统

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

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

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

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

C#委托的前世今生

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

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

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

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

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

c#之示波器功能

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

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

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

Chats 开发指南

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

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

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

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

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

.NET 模拟&编辑平滑曲线

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

AspNetCore全局异常处理

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

Dapper.SimpleCRUD:Dapper的CRUD助手

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

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

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

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

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

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

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

LeetCode题集-6 - Z 字形变换

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

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

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

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

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

LeetCode题集-7 - 整数反转

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

基于 .NET 的 Nuget 发版工具

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

主题适用于 macOS 的 LINQPad 8

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

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

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

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

Visual Studio 中支持 GitHub Copilot 免费。

宣布 VS Code 中的 GitHub Copilot 拥有 1.5 亿开发人员和新的免费套餐 - GitHub 博客

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

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

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

2.8.24 版 · StackExchange/StackExchange.Redis

StackExchange.Redis 2.8.24 已发布。

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

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

MessagePack-CSharp v3.1.0 已发布。

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

活动日历

[C#]关于字符串优化方法 - Annulus Games

[.NET 9] 使用 C# 的 System.Reflection.Emit 生成可执行文件!- Qiita

使用 Instana 可视化 ASP.NET 应用程序 - Qiita

我为 DevToys 做了扩展 - Qiita

比较.NET模板 - Qiita

使用.NET创建一个基本上不显示任何内容但根据需要显示消息框或控制台的应用程序 - Qiita

[C#]3D旋转简介四元数的理论与实现 - Qiita

使用 TestContainer 进行测试 - Qiita

C# 中的 GPGPU!?我不需要带有 ComputeSharp 的 CUDA - Qiita

[C#]坐标变换与最小二乘法-数据分析数学及其实现-Qiita

MagicOnion + NATS + LogicLooper 统一C#!我尝试过 - Qiita

使用 C# 创建 Excel 插件 - Qiita

在 C# 中插入文档注释 - Qiita

[VB.NET] 尝试使用.NET 9 中添加到 LINQ 的方法 - Qiita

丰富能力库介绍 - Washinosu

用纯 C# 编写游戏内逻辑并在 Unity 和 Blazor 中重用

- 如何使用C#在浏览器中显示TIFF文件 - Qiita

VisualStudio扩展更改文本光标颜色 - Qiita

我尝试使用 C# 生成 StableDiffusion AI 图像 - Qiita

适合MVVM的新Window方法总结-Qiita

尝试使用 C# 在本地运行 ChatGPT(实际上是 phi-3-mini) - Qiita

祝贺.NET 9发布-Qiita

[C#]异步编程的正确理解与实践-Qiita

C# 中的对象池:示例、内部结构和性能基准

如何以及为什么用 C# 编写突变测试

[本地 GenAI 处理:带有 Blazor WebAssembly 的 WebLLM](https://www.telerik.com/blogs/local-genai-processing-implementing-webllm-blazor-web assembly)

在 C# 中使用矢量化来提高性能

避免在 ASP.NET Core 应用程序中使用 C# 事件

认识 TUnit:新的、快速的、可扩展的 .NET 测试框架 · Sander 十 Brinke

EF Core 9 与 Dapper:性能对决 - Trailhead 技术合作伙伴

文章、幻灯片等

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

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

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

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

刷新您的查找结果 - Visual Studio 博客DevToys - DevToys 如何变得跨平台和可扩展

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

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

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

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

使用对接窗口创建信息丰富的应用程序如何将 Excel 转换为 PDF - Qiita[C#] 基于类型安全和性能选择 SQL 构建器 - Qiita

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

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

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

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

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

并行添加列表时的性能比较 - QiitaRx 部件的命名思路

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

Rider 2024.1 EAP 4 的监控工具

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

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

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

nuitsjp/FixedLengthHelper

我们发布了“FixedLengthHelper”,一个用于.NET 的多字节兼容的固定长度文件操作库。

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

[Blazor] 我创建了一个库,可以简化与 URL 相关的所有内容![源码生成器] - Qiita

来源:opendotnet

相关推荐