-
简介 只要你开始深入看 .NET 的并行调度模型,很快就会碰到一个高频词: Work-Stealing 很多文章会告诉你: 它是“工作窃取” 每个线程有自己的队列 队列空了就去偷别人的任务 这些说法当然没错,但还远远不够。 真正值得搞懂的问题其实是: .NET 默认调度体系为什么这么依赖 Work-
-
Microsoft Agent Framework 1.0 正式发布:Agent Skills 补齐后,Agent 开发真正进入工程化时代 如果你最近在关注微软的 AI Agent 技术栈,这次发布值得认真看。 Microsoft Agent Framework .NET 1.0.0 正式上线。 这
-
在现代 .NET 开发中,将网页内容转换为可编辑的 Word 文档是一个常见需求。无论是为了归档网页文章,还是基于 HTML 模板生成业务报告,掌握一种可靠的 HTML 到 Word 的转换方案都至关重要。 本文将介绍几种在 C# 中将 HTML 转换为 Word 的实用方法,涵盖了从处理静态 HT
-
简介 在 .NET 异步编程里,Task 大多数时候都是“自动完成”的。 比如: async 方法执行完了,返回的 Task 自动完成; HttpClient.GetAsync 底层 I/O 完成了,Task 自动完成; Task.Run 里的委托跑完了,Task 自动完成。 但还有一类场景,不是“
-
简介 MediatR 是 .NET 里很常见的进程内消息分发库。 它做的事情不复杂: 调用方发出一个请求,MediatR 找到对应的处理器执行。 这听起来像“多绕了一层”,但在业务代码越来越复杂时,这一层很有用。 没有 MediatR 时,控制器、服务类里经常会堆很多依赖: public class
-
DBeaver 的 SQL Editor 可以通过 Explain 执行计划查看数据库如何执行一条查询。本文按真实界面走完写 SQL、生成执行计划、切换 Graph 与 Simple 视图、定位重扫描节点和重新核对的路径。
-
简介 很多业务系统刚开始都差不多: 一个 Service 里面既有新增、修改、删除 也有列表、详情、统计、搜索 前期这样写很顺手。 但只要项目稍微复杂一点,问题就会慢慢冒出来: 读逻辑和写逻辑揉在一起 一个接口改动,连带影响一堆查询 写入要走校验、事务、领域规则 查询却只想尽快把数据拿出来 列表页、
-
不少人刚装好.NET SDK,输入dotnet new console后,会产生这样的疑问:Program.cs里怎么没有Main方法?namespace去哪儿了?还有那些class、struct、interface,它们之间到底是什么关系?这篇文章就好比C#程序的“骨架说明书”,会从顶层到底层,把
-
在生成或处理 Excel 文件时,经常会遇到单元格内容显示不完整的问题。例如,文本太长导致列宽不够、换行内容显示不全,或者批量写入数据后表格布局不够整齐。 如果只是手动处理一个文件,可以在 Excel 中双击行列边界进行自动调整。但在后台程序、批量报表生成、数据导出等场景中,更常见的做法是通过代码自
-
在当下的.NET开发领域,依赖注入(DI)已然成为不可或缺的关键功能。要是手动去注册每一个服务,那代码可就变得又繁琐又重复,还特别容易出现漏注册或者错注册的情况,这对项目的维护来说,无疑是个不小的负担。而Scrutor呢,它可是一款轻巧的NuGet扩展库,秉持着约定优于配置的理念,能让.NET依赖注
-
前言 做工业上位机软件,数据转换这事儿是无论如何都得面对的。串口接收到的一堆字节,得把它们转成有符号整数、浮点数或者工程量;要给PLC发指令,又得把工程值打包成字节数组。而且每个设备厂家的大小端还各不相同——西门子是大端,Modbus也是大端,可有些国产设备却是小端,稍微不注意,数值就完全错了。 随
-
Clang 生成的静态库(.a 文件)在不同项目之间复用,本身并不存在技术门槛;真正决定能不能顺利用起来的,关键在于几项配置必须严丝合缝:头文件路径要对齐,符号可见性要处理好,ABI 也得保持兼容——也就是 Clang 版本一致、STL 实现一致、C++ 标准一致。同时,CMake 的链接配置也不能
-
-include 是让预处理器在处理任何源文件前强制插入并展开指定头文件内容,相当于将其文本粘贴到每个源文件最开头;它只认文件名、依赖-I路径查找,不接受路径,且插入位置导致宏定义优先、条件编译逻辑改变。Clang 的 -include 是什么行为 -include 这件事,远不只是“包含一个头文件
-
gcc -c source.c 生成 source.o,仅编译汇编不链接;需显式指定-c,多文件须分别处理;构建共享库须加-fPIC;验证用file、nm、readelf。gcc -c 生成 .o 文件的正确用法 直接运行 gcc -c source.c 就能生成目标文件,输出名默认是 source
-
在 Clang 做交叉编译这件事上,-target 参数就是唯一绕不过去的入口,目标三元组必须明确写对,比如 aarch64-unknown-linux-gnu;不然的话,编译器就会按宿主机环境默认处理。与此同时,还得配合 --sysroot 指向完整的目标系统头文件和库路径,再通过 -stdlib