.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 博客
在分析器和源生成器中支持多个 .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
.NET周刊【1月第4期 2025-01-26】的更多相关文章
- .NET周报【10月第3期 2022-10-25】
国内文章 聊一聊被 .NET程序员 遗忘的 COM 组件 https://www.cnblogs.com/huangxincheng/p/16799234.html 将Windows编程中经典的COM ...
- .NET周报【10月第1期 2022-10-11】
本周精选 继C#实现await/async无栈协程几年后,davidwrighton实现了.NET绿色线程(有栈协程)的原型 https://github.com/dotnet/runtimelab/ ...
- .NET周报【10月第2期 2022-10-17】
主题 宣布 .NET 7 发布候选版本 2 - .NET Blog https://devblogs.microsoft.com/dotnet/announcing-dotnet-7-rc-2/ .N ...
- .NET周报【11月第1期 2022-11-07】
国内文章 开源·安全·赋能 - .NET Conf China 2022 https://mp.weixin.qq.com/s/_tYpfPeQgyEGsnR4vVLzHg .NET Conf Chi ...
- .NET周报【11月第2期 2022-11-15】
国内文章 统一的开发平台.NET 7正式发布 https://www.cnblogs.com/shanyou/archive/2022/11/09/16871945.html 在 2020 年规划的. ...
- .NET周报【11月第3期 2022-11-22】
国内文章 .NET Conf China 2022 第一批讲师阵容大揭秘!整个期待了! https://mp.weixin.qq.com/s/4p89hhBPw6qv-0OB_T_TOg 目光看过来 ...
- .NET周报【11月第4期 2022-11-30】
国内文章 .NET 7 的 AOT 到底能不能扛反编译? https://www.cnblogs.com/huangxincheng/p/16917197.html 在B站,公众号上发了一篇 AOT ...
- .NET周报【12月第1期 2022-12-08】
国内文章 CAP 7.0 版本发布通告 - 支持延迟消息,性能炸了? https://www.cnblogs.com/savorboard/p/cap-7-0.html) 今天,我们很高兴宣布 CAP ...
- .NET周报【12月第2期 2022-12-15】
国内文章 九哥聊Kestrel网络编程第一章:开发一个Redis服务器 https://mp.weixin.qq.com/s/HJYnBE-7wbvkAYHxQaq3eQ 我和拥有多个.NET 千星开 ...
- .NET周报【12月第3期 2022-12-23】
由于众所周知的原因,大佬们纷纷加入羊群,笔者也未能幸免,体验下来这绝对不是普通感冒的症状,身体不适,熬了几天,所以本周更新比较晚:另外精力有限,对于国际板块只有链接没有简介,十分抱歉! 在这个艰难时刻 ...
随机推荐
- 从PipedInputStream/PipedOutputStream谈起
本篇主要从分析PipeInputStrem和PipedOutputStream谈起.谈及软件设计的变化,以及如何将软件拆分.组合,适配-- 1 源代码分析 下面将详细分析PipedInputStrea ...
- nginx配置之Gzip压缩
Nginx开启Gzip压缩功能, 可以使网站的css.js .xml.html 文件在传输时进行压缩,提高访问速度, 进而优化Nginx性能! Web网站上的图片,视频等其它多媒体文件以及大文件,因 ...
- 【docker-compose】ElasticSearch安装教程
仅供学习参考 ,请勿轻易在生产环境使用 0. 目录树 1. 创建目录 mkdir -p /docker/elasticsearch/conf /docker/elasticsearch/data /d ...
- ASP.NET Core 9.0 中新增的MapStaticAssets() 中间件
前言 在Core 9.0版本中新增的内容不算多,除了内置OpenAPI 外 应该就属MapStaticAssets中间件最有价值了,最初MapStaticAssets主要是为了解决Blazor静态资源 ...
- dotnet core微服务框架Jimu ~ 基础网关
网关提供外部访问内部微服务的统一入口,基于分布式和服务治理等功能特点,外部不能绕过网关调用内部微服务(框架本身提供外部可以直接访问内部微服务的功能,这里不作详细说明),外部通过 http 协议请求网关 ...
- uniapp select组件
1.前言 官方的picker组件不能禁用某个下拉项,所以就有了这个下拉组件 组件只适配了宽屏模式,效果参照element-ui的select组件 demo地址:lianlizhou / ep-sele ...
- 从FTP到Feem:文件传输技术的革新
Feem是一个开源的文件传输协议,旨在提供高效.安全.快速的文件传输服务.与传统的FTP和HTTP协议相比,Feem具有许多优势,如支持任意大小的文件传输.支持实时传输和断点续传等. Feem_v4. ...
- 洛谷P7911 [CSP-J 2021] 网络连接题解
普通的模拟题,数据很小,基本排除超时超空间的可能 上代码: #include<bits/stdc++.h> #define LL long long using namespace std ...
- 中电金信:技术实践|Flink多线程实现异构集群的动态负载均衡
导语:Apache Flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算.本文主要从实际案例入手并结合作者的实践经验,向各位读者分享当应用场景中异构集群无法做到负载均衡时,如何通 ...
- 聊一聊 C#线程池 的线程动态注入 (上)
一:背景 1. 讲故事 在线程饥饿的场景中,我们首先要了解的就是线程是如何动态注入的?其实现如今的ThreadPool内部的实现逻辑非常复杂,而且随着版本的迭代内部逻辑也在不断的变化,有时候也没必要详 ...