- 博客(1166)
- 资源 (12)
- 收藏
- 关注
转载 对 .NET FileSystemWatcher引发内存碎片化的 反思
卦中的代码非常简单,就是每次读取 AppName 时都调了一下 BuildConfiguration 方法,仅此而已,但将程序跑起来之后,居然发现程序吃了。导致的,所以我觉得有必要做一次深度的反思,供以后遇到类似问题提供技术上的解决方法,这篇我们就来系统的讲解下 两种碎片化方式的调查方法。引发的,祸根主要是程序员将 .netframework 读取配置文件的方式套在了 .net 上,为了方便演示,先上一段测试代码。搞的哈,这就极大的缩小的包围圈,从而快速定位祸根。从卦中可以看到,原来这个。
2026-05-27 08:00:00
30
转载 nanoFramework 正式支持 Raspberry Pi Pico RP2040
总的来说,nanoFramework 对 RP2040 的支持是一个非常令人兴奋的消息,虽然目前还处于初期阶段,但基础功能已经到位。另外,RP2350 开发板的支持也在规划中。不过,需要注意的是,针对这个板子来说,GNG 在左边,而且前面是 5v,GNG,3v3,GP29 挨着,而且丝印位置容易误读,搞错直接设备报废,是极其危险的。对于这个设备的测试,如果想快速的在物理世界看到控制结果,那么你可能会兴奋的打开 VS,准备写一段控制板载 LED 闪烁,或者读取板载 BOOT 按键的代码。那么如何快速测试呢?
2026-05-26 08:00:00
38
转载 CodeWF Toolbox:一个用 Avalonia + Prism 做出来的开发者工具箱
Windows AOT发布后,托管的模块动态库就不能正常动态加载了(依赖于.NET运行时),发布成非托管动态库也不支持模块化动态加载(未研究过),非AOT发布,Win7就无法兼容运行。我这次已经把主窗口默认尺寸调小,并把首页补成 8 个快捷入口,沙漠主题下整体更像一个日常可用的工具箱,而不是一个被拉得过大的桌面壳。对文件、本地剪贴板、日志、离线转换、临时生成、格式化和系统集成这些场景来说,本地桌面应用依然很有价值。对我来说,这一点很重要,因为工具数量一多,后期维护成本才是真正的问题。
2026-05-25 08:00:00
30
转载 C# 15 类型系统改进:Union Types
在运行时就是不同的类型。值得一提的是,C# 的 Union 类型是类型的联合而不是带标签的联合。Union 类型的加入,是 C# 类型系统一次质的飞跃。按照提案,它们还可以是接口、类型参数、可空类型,甚至其他 Union,而且 case 之间允许重叠。另外,如果你需要更加严格的封闭类型层次结构,还可以关注即将推出的 closed hierarchies 特性,它和 Union 类型是互补的关系。你可以把它理解为一个编译器帮你维护的包装类型,但它不是单纯的元数据注解,运行时确实存在这个结构体,
2026-05-20 08:00:00
29
转载 曝华为“白嫖”开源团队技术方案!踢了对方转头低价找外包!
此后合作多次推迟,直到 2026 年初,多家外包公司通过 B 站、博客联系开发者,寻求承接 Avalonia 鸿蒙适配项目,开发者才得知:华为在与 Avalonia 洽谈期间,将 Avalonia 提供的技术信息,在招标平台上向国内供应商公开招标。换句话说:合作方利用开发者的信任和前期投入,完成了技术方案的验证,然后转身通过公开招标,把项目给了第三方外包公司,最终开发者的成果被无偿使用,还拿不到任何权益,它和普通白嫖的区别:更隐蔽,更伤生态。但这次曝光的行为,却展现了它在业务扩张中冷酷的一面。
2026-05-19 08:00:00
204
转载 西方忘了怎么制造东西,现在它又在忘记代码
LeadDev 的一项调查发现,54% 的工程负责人认为,从长期看,AI 编程助手会减少初级工程师招聘。本该现在学习成长的初级工程师,要么根本没有被雇用,要么正在形成一项由美国国防部资助的劳动力研究称为“AI 中介能力”(AI-mediated competence)的东西。美国政府问责局(GAO)的一份报告指出,几乎所有掌握生产经验的人,要么退休了,要么去世了,要么离开了相关机构。2023 年,在巴黎航展上,雷神公司的总裁站在台上,讲起他们为了重启“毒刺”导弹(Stinger)生产线,到底费了多大劲。
2026-05-18 08:01:29
26
转载 .NET应用越来越慢的原因在哪里?
这意味着,多余的抽象、多余的依赖、多余的代码,都会变成真实成本,而不是可以被隐藏的细节。系统变慢,很少是因为某一行代码写错了,更多是因为整体成本在不断累积,而你没有察觉。.NET这几年的演进,其实一直在强调一件事:减少运行时参与,减少不确定性,让执行路径更简单、更直接。很多时候,真正有效的优化,不是把某段代码改得更复杂,而是反过来问一句:这段逻辑是不是可以不做,或者换一种更直接的方式完成。很多人优化代码时完全没意识到这一点,还在不断引入新的分配点,最后变成一个典型现象:代码越来越“优雅”,系统却越来越慢。
2026-05-06 08:01:12
23
转载 .NET 高级开发 | C# 中的动态代码:反射、EMIT、表达式树、Roslyn、Source Generators
AOP(Aspect-oriented Programming) 即面向切片编程,在 C# 中有动态 AOP 和静态 AOP 两种,如果是在程序启动后生成的,为动态 AOP,这类框架有 Castle 、AspectCore 等,它们都使用了 EMIT 技术,在代码编译时即生成的,为静态 AOP,这类框架有 Fody 等。由于表达式树的本身很复杂,因此,本书只是简单介绍表达式树如何使用,以及使用场景,只需要掌握简单的表达式树编写即可,以便理解后面的表达式树如何进行解析。
2026-04-28 08:00:26
30
转载 .NET程序到底是如何被执行的?
线程数量的增长、回收、调度策略,都不是你直接控制的,而是CLR根据负载动态调整。单次调用几乎感觉不到,但在高并发场景中,这类隐性对象会迅速积累,成为性能瓶颈。初级开发关注的是功能实现,中级开发开始关注架构分层,而更高层的开发者,关注的是代码如何被执行、如何被调度、如何被优化。你以为在优化代码,其实只是在表层做微调,而真正的成本来自底层机制。差距并不在语法,也不在框架,而在对执行模型的理解深度。这也是为什么,在高频路径中使用异常,本质上是在引入额外的执行成本。在数据结构的选择上,你会更倾向于减少堆分配。
2026-04-27 08:00:33
27
转载 .NET 高级开发 | 设计、实现一个事件总线框架
在领域驱动设计的开发过程中,由于系统存在多个模块,为了避免各个模块的函数直接进行调用,使用事件总线作为媒介进行模块间的通讯,解耦模块之间的依赖。由于一个事件会有多个执行器方法,虽然事件执行失败后可以执行对应的方法回滚,可是当准备回滚时,程序崩溃了,那么就会导致数据不一致,为了解决这一问题,可以在事件中间件中加入数据库事务处理。接着要编写事件执行器,在 Maomi.EventBus 中,事件执行器是一个方法,而不是一个类型,事件执行器方法命名没有约束,只要求方法参数包含。
2026-04-21 08:00:53
29
转载 .NET跨平台本地库引入实战
对于某些特殊需求,比如需要在运行时根据条件选择加载不同的版本,或者库的路径需要动态计算,动态加载是最好的选择。的方案,也有相较动态加载方式,减小了使用难度,类库中不使用条件编译宏,只指定库名(不加扩展名),解决跨平台库引用问题。以上内容基于实际 Demo 项目整理,包含四大方案的完整代码示例,如有错误或更好的方案,欢迎在评论区留言指正!:使用开源的 VC 运行时库,无需安装系统补丁,大幅减少程序体积,兼容旧系统。,通过条件编译宏设置库路径,适合不封装为类库的场景,比如小工具或者不需要复用率低的项目。
2026-04-20 08:00:34
38
转载 开源可商用 .NET Office 转 PDF 工具/库 - MiniPdf
(Ahead-of-Time,预编译)— 在构建阶段将 C# 代码直接编译为原生机器码,如同 C/C++ 编译一样,生成独立的可执行文件。MiniPdf 是晚辈开发 MiniExcel、Word 后最新开发工具,不需要安装任何软体,轻量化,开源可免费商用。— 预编译独立二进制文件,支持 Windows / Linux / macOS,无需安装 .NET 运行时。— 基于 Apache 2.0 协议,可自由商用,无任何限制,注明出处即可。— 下载即可运行,无需在流水线中安装 .NET。
2026-04-15 08:00:58
83
转载 .NET 高级开发 | http 接口对接和客户端开发技巧
很多时候,我们需要复用同一个 HttpClient,可以设置 HttpClientHandler 的 UseCookies 属性,UseCookies 获取或设置一个值,该值指示处理程序是否使用 CookieContainer 属性存储服务器 Cookie,并在发送请求时使用这些 cookie,这样在同一个 HttpClient 中,携带的 Cookie 是一致的。在企业内部开发时,为了提高工作效率,往往需要制作一些脚本之类的工具,而 .NET 工具包非常时候用于制作这些脚本,然后下方给其他人使用。
2026-04-14 08:02:30
53
转载 .NET 高级开发 | 日志系统使用技巧
在微服务场景下,会使用 ElasticSearch 等日志存储引擎查询分析日志,如果在日志中添加了相关的上下文属性,那么在分析日志时可以通过对应的属性查询出来,分析日志时可以帮助排除故障。但是在系统部署后,特别在微服务场景下,会使用各类工具收集日志,例如最常见的 ELK 日志套件,那么项目输出的日志是 json 时,收集最方便,解析也是最方便的。在业务系统中,可以通过在中间件获取 Token 中的用户信息,然后注入到日志上下文中,这样打印出来的日志,会携带用户信息。
2026-04-13 08:00:48
41
转载 如何使用 .NET MAUI 构建 Android 小部件
您可以使用完整的 .NET MAUI 框架构建这些屏幕,但为了这篇博客,我使用了基本的 XML 布局和一个标准的非 .NET MAUI Activity。对于 iOS 小部件,我已经创建了一个 .NET MAUI 项目来演示如何与小部件通信,我将在 Android 中复用该项目。Process = ":widget_process"在 Android 上,您可以使用属性在单独的进程中运行小部件BroadcastReceiver,但这会绕过 .NET MAUI 框架,从而阻止访问共享首选项和其他基本内容。
2026-04-09 08:01:08
39
转载 .NET 高级开发 | 配置系统
通过配置中心管理多个服务的配置,以及将实例的开发、测试等环境的配置隔离开来。在本章中,笔者将会介绍这些 .NET 中的配置和选项,在学会使用方法和原理之后,还会介绍如何使用 SignalR 开发一个配置中心,不管使用的是控制台还是例如 WPF 这类桌面程序,都可以达到 ASP.NET Core 中使用配置的效果。在了解配置、选项的使用方法,以及如何自定义配置提供器之后,在本小节,我们将会创建一个配置中心服务,然后客户端通过 SignalR 与配置中心通讯,当配置中心的配置内容被修改后,自动推送到客户端中。
2026-04-08 08:00:37
30
转载 用 .NET 做一个跨平台的 Improv Wi-Fi 蓝牙配网项目
用一套协议层,同时跑通 Windows 和 Linux 的 BLE 配网流程,使用.NET 轻松实现嵌入式设备的首次联网引导。当然,如果你的设备有经常移动更换网络的需求,那么这个配网方案也完全可以被复用。设备出厂后,用户总得先把它接到 Wi-Fi 上,后面的远程控制、设备发现、网页配置,才谈得上真正可用。跑通 Demo 之后,接下来的问题通常就变成了:我能不能不直接改仓库里的 Demo,而是把它接到自己的项目里?如果你也正好在做设备配网相关的事情,希望这份项目和这篇文章,能帮你少走一些弯路。
2026-04-07 08:01:05
31
转载 .NET vs C++ 数组原地反转实测:大数组 .NET 反杀?
通过控制好“原地反转”这个核心变量,我们看到了 C++ 在微操作上的极致低开销,也看到了当代 .NET 在大数据吞吐和标准库优化上的强悍实力。在大数组测试中,带宽和缓存的影响又掩盖了纯粹的反转逻辑。如果你觉得这种深扒底层细节的硬核性能分析有意思,或者也在做 C# / .NET 的高性能开发,欢迎在评论区聊聊你的看法。,最后得出的结论是:在小数组(1000 个元素)下 C++ 远超 .NET,而在大数据量下 .NET 非托管优于托管。> .NET”,更多是在测“分配+拷贝”的耗时,而不是单纯的反转算法效率。
2026-04-01 08:00:16
42
转载 Maomi.I18n | .NET 全能多语言解决方案
创建一个业务异常类型 BusinessException,项目中出现异常情况时,统一使用业务异常抛出,不要自行抛出异常,不要使用模型类存储状态码逐层传递,业务上的逻辑错误、异常情况,能够预测到的,全部使用 BusinessException 异常抛出,然后通过中间件拦截处理。模型验证的组件比较多,常用的有 FluentValidation 框架,或者可以直接使用原生的方式,http、grpc 的使用方法大同小异,由于篇幅的原因,这里不展开细说,如果是 Http 方式使用默认的模型验证器,直接添加。
2026-03-31 08:02:32
79
转载 Maomi.Core | 一个好用的模块化和自动服务注册框架
例如,在项目中,开发者自己实现了一个事件总线的框架组件,以及一个自动对象映射的框架组件,将这两个组件封装成两个模块,由于它们关注的类型对象不一样,所以每个模块对当前扫描到的类型处理方法不一样,比如说识别特性注解、识别接口,然后做对应的处理逻辑。基于 ASP.NET Core 开发的 Web 框架中,最著名的是 ABP,ABP 主要特点之一开发不同项目(程序集)时,在每个项目中创建一个模块类,程序加载每个程序集中,扫描出所有的模块类,然后通过模块类作为入口,初始化程序集。对应的模块 A 进行初始化。
2026-03-30 08:01:35
34
转载 .NET 10 Native AOT 在 Linux 嵌入式设备上的实战
更有强大的 LINQ、异步编程、完善的 NuGet 生态支持,真正实现了“高效开发,极致性能”的双赢。本文分享我如何通过 .NET 10 Native AOT 和交叉编译技术,将一个原本动辄 100MB 的应用压缩到 16MB,并在资源极度受限的环境中实现流畅运行的实战经验。如果你是一名追求极致性能的“强迫症”开发者,不希望依赖 Docker,也可以直接在 WSL2 (这里用的是 Ubuntu 24.04) 中硬核出包。的演进,Native AOT让 C# 开发者也能在资源极度受限的 SoC 上大展身手。
2026-03-25 08:02:21
95
转载 适配 Native AOT:CommonLibraries 迎来重大更新
虽然它要求开发者从“反射驱动”转向“显式声明”,增加了一定的手动注册工作,但带来的极致启动速度和低内存占用是显著的。随着 .NET 开始大规模推广 Native AOT(本地提前编译),传统的依赖运行时反射(Reflection)的库在 AOT 环境下会遭遇“降维打击”。告诉编译器:“这个类是有用的,请保留它的属性结构。因为它是静态配置,所以它的效果是“全局生效”的:只要你设置一次,后续序列化都会按该字段名输出。的这次更新,正是为了帮助开发者在享受 AOT 红利的同时,依然能保留优雅的一致性返回体验。
2026-03-24 08:01:25
27
转载 .NET MAUI自定义URL协议处理:StealthClaw用户体验优化,从白屏到优雅引导
本文分享我在完善StealthClaw套壳浏览器用户体验过程中的实战经验,包括引导页设计、自定义URL协议处理、以及如何让应用从"能用"到"好用"的完整优化方案。这个文件将作为App首次启动时的默认页面,除了展示应用介绍和引导信息外,还会包含一个明显的按钮,引导用户进入设置页面。今天,我将分享如何通过一系列用户体验优化,让StealthClaw从一个"技术Demo"蜕变为真正"用户友好"的工具。对于一个全新的应用,用户第一次打开时看到的应该是引导和指引,而不是一个等待输入的空白WebView。
2026-03-23 08:00:56
42
转载 重塑WPF辉煌?基于DirectX 12的现代.NET UI框架Jalium
从基础的Button、TextBox、CheckBox,到复杂的DataGrid、TreeView、NavigationView,甚至还有特色控件如支持9种画笔类型的InkCanvas、ColorPicker、MediaElement。今天要介绍的Jalium,正是这样一个将WPF的设计哲学与现代图形技术融合的实验性项目——它用DirectX 12重新实现了WPF的核心概念,带来了一个完全自研的、面向.NET 10的Windows桌面UI框架。87个以上的控件、完整的动画和效果系统、灵活的标记语言。
2026-03-18 08:01:54
130
转载 搭建一套.net下能落地的飞书考勤系统
比如:我们公司的请假审批要过三级(直属领导→部门负责人→HR),但飞书考勤的审批流只支持两级。还有,我们的薪资系统需要实时同步考勤数据做工资计算,但飞书没有开放这种级别的 API 集成。先在飞书开放平台的调试工具中测试 API,确认参数和响应格式正确后再写代码。:员工在内部系统发起审批 → 内部系统审批通过 → 写入飞书考勤。:员工在飞书发起审批 → 飞书审批完成 → 同步回内部系统。如果你也在做类似的项目,希望这篇笔记能帮你少踩几个坑。如果你也在做类似的事情,这篇文章能帮你避开几个坑。
2026-03-17 08:00:17
57
转载 .NET 10 & C# 14 New Features 新增功能介绍-.NET CLI工具改进
可以捆绑所有受支持平台的二进制文件,.NET CLI 将在安装或运行时选择正确的二进制文件。因此打包的工具将是最兼容的工具类型-一种依赖于框架且与平台无关的 .NET DLL,这需要兼容的 .NET 运行时才能执行。但是有时你不知道要面向的所有平台,有时 .NET 本身将了解如何支持新平台,并且你也希望工具可以在那里运行。依赖于框架,平台无关(经典模式,任何安装了 .NET 10 的地方都可以运行)特定于平台的 .NET 工具功能非常适合确保针对预先面向的特定平台优化工具。
2026-03-16 08:02:06
33
转载 “2016款吃灰Mac被AI救活了!我几乎没写代码,却‘造’出了一个能跑通的FreeBSD Wi-Fi驱动”
在 FreeBSD 论坛上,比较常见的解决方案是使用 wifibox:跑一个极小的 Linux 虚拟机,把 PCI Wi-Fi 设备直通进去,让 Linux 用 brcmfmac 驱动管理这块芯片。驱动的职责是分离的,FreeBSD 对其他已支持无线设备的「管理逻辑」已经现成,我们只需要把一部分 Linux 上的「粘合代码」移植到 FreeBSD 就行。于是我换了打法:不再直接让 AI 改代码,而是新开一个 PI 会话,让代理先给我写一份详细的 brcmfmac 工作规范,
2026-03-11 07:57:46
36
转载 OpenClaw安全加固实战:基于mTLS打造零信任安全网关
近日,一个名为“OpenClaw Exposure Watchboard”的公开监控页面揭开了这层繁荣下的隐患:超过 22 万个 OpenClaw 实例毫无防护地暴露在公网上,遍布美国、新加坡、中国大陆等地,托管在腾讯、阿里、华为、甲骨文等主流云平台。更有甚者,为图省事直接将其部署在物理机上,关闭沙盒限制,甚至赋予 root 权限。尤其在当下,各类教程和直播将OpenClaw吹捧为“风口”,吸引大量普通用户跟风部署,他们缺乏安全经验,贪图方便,直接开放公网端口、忽略鉴权,让Agent在互联网上“裸奔”。
2026-03-10 07:57:51
73
转载 告别截图!用.NET打造极简PDF图片提取工具
更重要的是,PdfPig的文档相对完善,社区活跃,这对于我们快速上手非常有帮助。本文介绍如何使用.NET和PdfPig库创建一个简单实用的PDF图片提取工具,解决日常工作中从PDF提取图片的痛点,实现"拖放即用"的便捷体验。打包完成后,用户只需要将PDF文件拖到程序上,黑框一闪,PDF中的图片就被提取出来了。没有复杂的操作,没有额外的依赖,真正做到了"拖放即用"。本文将结合我的实际经验,分享如何使用.NET创建一个简单实用的PDF图片提取工具,帮助大家告别繁琐的截图操作。开头(JPEG文件起始标记)。
2026-03-09 07:58:02
33
转载 .NET 本地Db数据库-技术方案选型
LiteDB,是一类NoSql的文档数据库,引用Nuget包LiteDB对接开发,社区litedb-org/LiteDB: LiteDB - A .NET NoSQL Document Store in a single data file。LiteDB 的锁机制在高并发场景下天然脆弱,而 SQLite 的 WAL 模式能更好地支持并发读写,且生态更成熟、调试工具更丰富。在db读取超时后,部分情况可以删除文件、重建db解决,也有无法删除db文件的情况。适合性能优先、SQL 可控优先、追求轻量。
2026-03-04 08:02:34
59
转载 C# 中的 Span 和内存:.NET 中的高性能内存处理
为了解决这些问题,C# 引入了 Span 和 Memory 这两种类型,它们提供了一种快速高效的内存处理方式,无需进行额外的内存分配。传统的基于数组和字符串的内存处理方式常常会产生不必要的内存分配,这不仅增加了内存使用量,还会显著降低应用性能。Span 和 Memory 是 C# 中强大的内存处理工具,它们使开发者能够编写高性能且内存高效的应用程序。与传统的数组操作不同,Span 允许开发者直接访问和操作内存中的数据,而无需进行数据复制。这些额外的内存分配不仅增加了垃圾回收器的工作负担,还会降低应用性能。
2026-03-03 08:00:19
53
转载 如何通过 C# 实现 PowerPoint 转 HTML 格式 - 完整指南
在企业办公、在线教育等场景中,将 PowerPoint 演示文稿(PPT/PPTX)转换为 HTML 格式是常见需求——HTML 文件无需安装专用软件即可在浏览器中打开,且易于嵌入网页或跨平台分享。开发者可根据自身项目的要求,选择该方案或其他替代方案(如 Aspose.Slides、OpenXML 结合第三方 HTML 转换工具)。本文提供了 C# 中 PPT 转 HTML 的轻量方案,API 简洁、部署便捷。类是操作 PPT 文档的核心对象,封装了所有幻灯片、文本、图片、形状等内容。
2026-03-02 08:01:50
42
转载 .NET 10 & C# 14 New Features 新增功能介绍-field关键字
set 访问器内部,直接访问自动生成的隐藏字段,而不需要手写私有变量。直接访问编译器生成的隐藏 backing field(后备字段)。set 中做校验或增强逻辑,就必须手动声明一个私有字段。让自动属性可以“半升级”为带逻辑的属性,而不丢失简洁性。自动属性(auto-property)的访问器中。field 本质是对这个隐藏字段的语法糖访问。主要价值:field 允许你在属性的。今天给大家继续分享field关键字。中,引入了新的上下文关键字。IL 不变,只有语法层增强。上篇文章给大家分享了。
2026-02-26 08:00:23
55
转载 .NET 10 & C# 14 New Features 新增功能介绍-扩展成员Extension Members
编译器会生成:public static bool get_IsEmpty<TSource>(IEnumerable<TSource> source)扩展方法:public IEnumerable<TSource> Where(Func<TSource, bool> predicate)① 实例扩展成员:extension<TSource>(IEnumerable<TSource> source)source.Any();代码调用:IEnumerable<int>.Combine(a, b);
2026-02-25 08:01:12
58
转载 C# PC版微信消息监听自动回复
最近有个微商客户需要搞个 个人微信监听群消息关键字并实现自动回复功能, 因为他有很多群 很多买家咨询的话 一个个回复太麻烦, 客户要求 比如群里有人发 关键字 产品1 则自动回复产品1的相关描述。登录时message 消息体的值 ||分割 第一个就是微信昵称, wxid_ 开头的就是微信唯一标识 , 最后是登录用户的头像。@chatroom 结尾的是 群的唯一标识id 群聊就是群名称, 发送人昵称也有 发送的消息内容也有, 拿正则取一下就完事。
2026-02-24 08:02:45
29
转载 【EF Core】将一个实体映射到多个表的正确方法
但是,GetAllMappedStoreObjects 方法是根据属性来创建 StoreObjectIdentifier 列表的,在本例中,这个 Identifire 就是 tb_other,这个 foreach 循环的意思就是所有 Override 的属性的表名都必须是 tb_other,如果有一个不是,就抛异常。foreach 循环第一个配置的是 tb_pet 表与 pet_id 列,然而现在的表名是 tb_other,所以,第一轮就匹配失败了,就 throw 了。好了,咱们简单说说原因。
2026-02-04 08:03:19
45
转载 基于NetCorePal Cloud Framework的DDD架构管理系统实践
如果你也在做类似的管理系统,或者想了解DDD在实际项目中的应用,可以看看这个项目的代码,应该能有一些参考价值。一个端点就是一个类,职责清晰。前端部分基于Vben Admin,这是一个非常优秀的Vue 3 + TypeScript + Vite的管理后台模板,UI组件用的是Ant Design Vue,整体体验不错。这种测试方式很接近真实的场景,测试的是完整的HTTP请求流程,而且会自动清理测试数据,保证测试之间的独立性。可维护性这块,代码分层清晰,测试支持也比较完善,还有代码可视化工具,方便新人理解架构。
2026-02-03 08:03:38
55
转载 <span class=“js_title_inner“>TypedSql:在 C# 类型系统上实现一个 SQL 查询引擎</span>
展望未来的应用,诸如查询引擎、DSL 编译器、甚至是语言运行时等复杂系统,都可以通过类似的方式来实现,从而在保持灵活性的同时,最大化性能。,其中复原通过静态类型的缓存完成,借助类型系统的力量,每一个独立的字面量都会产生一个单独的类型实例,我们的字面量就缓存在那个类型的静态字段里,从而避免了一切运行时的计算开销。,都只是跑一遍已经专门化好的静态管道,没有任何的运行时分发,没有任何的虚拟调用,不存在任何的反射和装箱,完全是 JIT 能看懂的强类型、零分配代码,从而实现极高的性能。
2026-02-02 08:00:26
36
转载 TypedSql:在 C# 类型系统上实现一个 SQL 查询引擎
展望未来的应用,诸如查询引擎、DSL 编译器、甚至是语言运行时等复杂系统,都可以通过类似的方式来实现,从而在保持灵活性的同时,最大化性能。,其中复原通过静态类型的缓存完成,借助类型系统的力量,每一个独立的字面量都会产生一个单独的类型实例,我们的字面量就缓存在那个类型的静态字段里,从而避免了一切运行时的计算开销。,都只是跑一遍已经专门化好的静态管道,没有任何的运行时分发,没有任何的虚拟调用,不存在任何的反射和装箱,完全是 JIT 能看懂的强类型、零分配代码,从而实现极高的性能。
2026-02-02 08:00:26
28
转载 <span class=“js_title_inner“>.NET每周精选</span>
作者强调了问号操作符在空值处理中的作用,以及.NET生态系统中的开源项目对AI应用的支持。同时介绍了微软的.NET AI生态进展,以及Semantic Kernel和MEAI等工具的推出,帮助开发者顺利开发AI应用。文章还讨论了多款与.NET相关的开源项目,适合开发者学习与使用,涵盖了各类技术术语和应用实例,提供了良好的学习资源。作者使用.NET控制台应用程序进行实践,安装了相关NuGet包,并详细介绍了如何配置LLM API的信息与创建ChatClient,展示了移交编排的实现步骤及代码示例。
2026-01-29 08:01:52
166
金山卫士部分已经开放了的源代码下载
2010-12-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅