Serilog:从结构化日志认知到 .NET 工程落地
问题背景
很多项目不缺日志,缺的是有用的日志。
平时接口跑得顺,大家都觉得日志够用。真到线上出问题,日志的短板会一下子暴露出来。
比如订单接口偶发超时,日志里只剩这么一句:
Create order failed for customer 1024, cost 3800ms, trace abc123
这种日志平时看着还行,真到线上排障时基本帮不上太多忙:
你没法直 ...
正则表达式基础篇
介绍
正则表达式提供强大的查找和替换功能,绝大部分语言(C#、Python、Java等)及大多数工具(Notepad++、VsCode、Vs等)都提供内部支持。
分类
单字符匹配(Single Match):用来匹配单个字符;
字符集匹配(Sets Match):用来匹配多个字符;
特殊字符匹配(Special Match):此处代指转义字符;
空白字符匹配(White ...
基于.NET的Windows窗体编程之WinForms入门简介
最早发明计算机主要是用于科学计算,利用计算机的高速运算能力代替人工计算以提高效率,应用范围主要集中在科学工作者以及专业从业人员那一小撮人群,那时侯的使用者主要关注数据,通常使用控制台操作计算并显示结果。而真正的让计算机由高端产品走进大众视野,则要从GUI程序的出现开始,它让程序从枯燥刻板的黑窗口进入到 ...
Microsoft Agent Framework Skills 执行 Scripts(实战指南)
在 Microsoft Agent Framework 中,Agent Skills 是一个非常重要但容易被忽略的能力。它可以让你的 Agent 拥有“插件化能力”,甚至可以执行本地脚本(如 Python),实现真正的自动化。
本文结合完整示例,带你从 原理 → 结构 → 实战 → 坑点 全面掌握如何通过 Skills + 自定义 Tool,实现执行 Python 脚本。
一、什么是 ...
EF Core 原生 SQL 实战:FromSql、SqlQuery 与对象映射边界
做 EF Core 一段时间后,很多人都会遇到同一个节点:常规 LINQ 能覆盖大多数查询,但一到复杂报表、视图或者历史 SQL 复用场景,就会开始考虑原生 SQL。问题不在于“能不能写 SQL”,而在于怎么写得可维护、可观测、还能和 EF Core 的映射体系配合好。这篇文章讲解 FromSql、SqlQuery 的使用边界和对象映射的一些坑。
1. 问 ...
让 AI 代理拥有"专业技能包":Microsoft Agent Skills
本文介绍如何使用Agent Skills为Microsoft代理框架中的代理提供可重用的领域专业技能包。通过.NET和Python内置技能提供者,代理可以在运行时动态加载所需技能,增强其能力而无需修改核心指令。
Introduction to Agent Skills
您现在可以在Microsoft Agent Framework中配置可移植、可重用的Agent Skills包,以提供领域专业知 ...
使用Microsoft Agent Framework构建C# AI代理
本文介绍如何使用Microsoft Agent Framework在C#中构建生产级AI代理,涵盖环境设置、内存管理、工具及多代理工作流。本框架旨在替代AutoGen和Semantic Kernel,提供更好的上下文管理和代理协调。
What Is Microsoft Agent Framework?
Microsoft Agent Framework 是微软推出的新框架,用于替代 AutoGen 和 Semantic Kernel ...
【UWP】使用 Vue/Vite 编写 WinJS/UWP
如今微软网页套壳越来越变本加厉,到处都是一人一个浏览器,套壳大小已经成百上千,但殊不知微软曾经有过对网页套壳的原生支持,打包大小只按k记,那就是 MSAppHost 了,不过更为人所知的是其控件库 WinJS,所以这里就用 WinJS 代指 JS/HTML 模式的 UWP 了。WinJS/UWP 本质就是直接让 Edge (过去为 IE) 的 WebView 直接打开 ...
.NET 磁盘BitLocker加密-技术选型
在之前的磁盘管理技术选型中,我们讨论了磁盘操作的四种方案(PowerShell / Diskpart / WMI / Win32 IOCTL)以及各自的环境依赖问题。本文聚焦BitLocker加密操作,同样面临类似的技术选型问题
在企业级网络磁盘产品中,VHDX虚拟磁盘镜像通常需要BitLocker加密保护数据安全。主要涉及三个操作:
查询加密状态 —— 判 ...
通过 C# 复制 Word 文档、指定段落、指定节
在日常办公或企业级文档处理中,我们经常需要复制 Word 文档的内容—比如合并多个文档的核心章节、提取指定的段落或表格、备份文档中的关键部分等。手动复制不仅效率低下,还容易丢失格式;而通过代码自动化复制,既能保证格式完整,又能批量处理,极大提升工作效率。
本文基于 Free Spire.Doc for .NET 免费库,详细介绍如 ...
WPF新手村教程(五)— 附魔教学(绑定)
WPF个人文档(五)—— 绑定
[!IMPORTANT]
在开始之前,我觉得我们非常有必要要先了解一下ViewModel
ViewModel:专门给界面(View)使用的数据对象
# ViewModel = 专门给界面(View)使用的数据对象
如果只讲绑定,可以简单理解为数据源对象
在这里先留一个简单的印象,后面会详细讲解,在看完本篇随笔之后,你也会对这个东西 ...
.NET Win32磁盘动态卷触发“函数不正确”问题排查
最近在处理Win32磁盘管理.NET 磁盘管理-技术方案选型 - 唐宋元明清2188 - 博客园-获取本地磁盘信息时,遇到一个比较隐蔽的问题。
磁盘对象获取异常,DEVICEIOCONTROL.IOCTL_STORAGE_GET_DEVICE_NUMBER FAILED, 函数不正确。(0X00000001)
当机器上出现动态卷、跨区扩展卷这类特殊卷时,GetDiskNumberByVolumeName 中执行 Devi ...
Satori GC:同时做到高吞吐、低延时和低内存占用
前言
GC 的设计里一直有一个很难绕开的矛盾:高吞吐、低延时、低内存占用,通常很难同时做到。
传统做法里,想要更短的停顿,往往要把更多工作搬到并发阶段,甚至让平时的对象访问承担更高成本;想要更高的吞吐量,又往往意味着平时路径成本必须足够低,于是更多工作会堆到回收阶段;想要更低的内存占用,则又需要更积极地 ...
surging 发布命令行工具
一、概述
surging 号称微服务引擎,但是每次都依赖于dotnet 命令启动,都需要通过配置文件进行配置,让大家都感到只见其形未见其详,感觉很难上手,对于新人不友好,没有熟悉服务规则配置,比如maxConcurrentRequests,executionTimeoutInMilliseconds没有更改默认配置,导致压测不理想,这些问题在很 ...
C# 中 Excel 转 DataTable 的技术实现
在企业级 .NET 开发场景中,Excel 文件与内存数据集(如 DataTable)的格式互转是高频技术需求。DataTable 作为 .NET 框架中通用的内存数据结构,常被用于承接 Excel 数据并完成后续的数据验证、持久化、展示等操作。本文聚焦于 .NET 环境下,如何通过第三方类库实现 Excel 文件到 DataTable 的高效转换,核心讲解数据转换 ...
[Maui] 造轮子——LoggerSqlite
上文异常处理用到了日志记录器,本文介绍一下基于Sqlite的日志记录器
一、定义一个传递、保存日志的类
public class LogItem
{
public int Id { get; set; }
public string DT { get; set; } = default!;
public LogLevel Level { get; set; }
public string CategoryName { get; set; } = default!;
p ...
记一次 .NET 某低代码开发框架 内存暴涨分析
一:背景
1. 讲故事
微信里有一位朋友找到我,说他们公司的程序存在内存暴涨问题,自己分析了下没有找到原因,让我看下怎么回事?由于大家都有dump分析基础,所以交流互通上还是很顺利的,接下来就是上dump分析啦。
二:内存暴涨分析
1. 为什么会内存暴涨
先还是老套路,用 !address -summary 观察下内存分布情况,输出如下 ...
笔记:在 WPF 中通过侧边导航栏实现内容切换
本篇笔记主要记录,如何在 WPF 中利用 ListBox+ContentControl+UserControl 三个控件,以侧边导航栏的形式实现内容切换。
效果图如下:
┌─────────┬────────────────────────────┐
│ Title │ │
├─────────┤ ...
[Maui] 造轮子——前言、本地化
前言
新的一年开始了,公司提了新的要求:
国产化
国际化
开发部的应对是:从wpf转换Maui:
安卓版也是国产化
国际化就是本地化,弄个多国语言的事情
话说华为的鸿蒙,为了国产化,在华为P40手机上运行了Maui的缺省项目,天真的以为鸿蒙支持Maui Android。于是去买了个华为的平板,然后悲剧了。亲测:P40手机的鸿蒙4.2 ...
.NET SqlSugar多线程下SqlSugarClient 的线程安全陷阱
使用SqlSugar读取Sqlite数据库,项目运行过程中间歇性抛出以下异常:
SqlSugar.SqlSugarException:“中文提示 : 连接数据库过程中发生错误,检查服务器是否正常连接字符串是否正确,错误信息:Connection was closed, statement was terminatedDbType="Sqlite";ConfigId="".English Message : Connection open error . Conn ...