首页
C&C++
C#语言
Java
Python
人工智能
Web前端
数据库
面试笔记
其它
软件推荐
搜索
内存泄漏之谜:一个Lambda如何拖垮了我们的Kubernetes服务
这次事故并非始于崩溃,而是源于一条线——我们某个.NET 8服务(运行在Kubernetes上的后台订单处理系统)内存图中一条悄然攀升的曲线。起初,我们并未在意。或许只是GC的小波动。但一周又一周,这条曲线持续攀升。最终,容器因内存压力开始频繁重启。我多希望我们能迅速...
7-1 8:56
61
7个现代C#实战模式:微软精英团队都在用的高效编程技巧
这不是又一篇使用async/await的老生常谈。这些是微软团队和顶级工程组织正在使用的7个现代、高度实用的C#实战模式。如果你还在写重复的服务、混乱的条件判断或冗长的映射代码——请坚持看到最后,这些模式将彻底改变你编写C#的方式。🔥 模式1:函数式守卫替代If-Else/...
7-1 8:54
77
警告:看完这篇文章,你可能要重写一半代码库
我构建.NET系统已有17年以上——从初创公司到企业级应用,再到复杂的单体系统。这里有一个残酷的事实:我们遇到的大部分代码问题并非源于.NET本身...而是因为我们没有正确使用合适的工具。🚀 1. FluentValidation:让代码像英语一样易读自然流畅的验证代码,编写、阅...
7-1 8:51
59
从30秒到30毫秒:EF Core查询性能优化实战全记录
性能对任何应用程序都至关重要。开发者经常在慢速数据库查询上添加缓存层,这只是在掩盖症状而非解决问题。本文将挑战如何优化一个真实场景中的EF Core慢查询。EF Core提供了强大的工具,但使用不当会导致查询缓慢。我将一步步展示如何将EF Core查询从难以接受的30秒优...
7-1 8:48
52
告别异常处理:用Result模式和Discriminated Union打造优雅的C#错误处理机制
假设你有一段根据输入参数返回不同结果的代码——这很常见。有几种方法可以实现这个需求。为了说明我的意思,假设你有以下模型:public sealed class Note{ public Guid Id { get; set; } public string Title { get; set; } = null!; public Guid UserId { ge...
7-1 8:36
54
C#代码复杂度警示录:20个真实案例揭示如何编写更简洁、可维护的代码
作为C#开发者,我们都希望编写干净、可维护且可扩展的代码。但即便怀着最好的初衷,也容易陷入让代码难以阅读、测试或扩展的模式。随着时间的推移,小的捷径可能演变成大的混乱——导致Bug频发、开发疲劳和系统脆弱。本文将列举20个清晰的信号,表明你的C#代码可能过于...
7-1 8:34
94
解锁仓储模式的5大高阶技巧:让.NET开发效率飙升的实战指南
仓储模式(Repository Pattern) 是.NET中流行的设计模式,但人们常常仅将其实现为Entity Framework的简单封装,从而错失了它的真正潜力。本文将深入探讨5个颠覆性技巧,帮助你在现代.NET开发中充分发挥仓储模式(及泛型仓储模式)的强大性、灵活性,并真正从中获益。针...
6-7 9:18
81
C#代码异味警示录:15年经验老司机总结的十大避坑指南
你一定有过这样的感受——深陷遗留C#代码库时,总觉得某些地方不对劲。虽然说不清具体问题,但那种不安感如影随形。就像走进房间闻到异味却找不到源头,这就是代码异味(Code Smell)。它预示着潜在的bug、技术债务和维护噩梦。作为拥有15年C#开发经验的程序员,我深刻...
6-7 9:17
77
十年C#老兵吐槽:命名混乱、版本爆炸、语法膨胀…但我依然爱它
C# 这门语言养了我整整十年。大学时我学的是 Java。从 C/C++ 转过来简直是一种解脱——终于不用再面对该死的指针了。第一份工作被迫学 C#。我写的第一个程序根本是 披着C#外衣的Java代码(毕竟当时我只会Java)。我热爱 C# 和整个 .NET 生态:强类型、多范式、工具链完...
6-7 9:16
87
规范模式:终结仓储臃肿的终极武器(C#实战)
这是一个API发布后的清晨。原本简单的新端点——通过创建者名称获取聚会并包含参与者、邀请函和创建者——却在GatheringRepository中膨胀成了又一个新方法。突然间,你发现自己面对着这样的方法群:GetByIdWithCreatorAndAttendeesAsync(...)GetByNameWithEverythingAsy...
6-7 9:15
80
<<
<
…
6
7
8
9
10
11
12
13
14
15
…
>
>>
阅读排行
深入WPF数据绑定:Converter...
3255
C#异步定时器:精准定期执行...
3241
WPF应用中融入ASP.NET Core...
2575
在C# .NET 8中使用MediatR实...
2337
.NET Core 中集成Dapper高级...
2002
延迟等待的艺术:C#中Task.D...
1973
.NET 性能分析:.NET 8 中的...
1848
精准数字处理:C#中四舍五入...
2174
WPF中轻松生成动态图表:实...
1944
串口通信利器:RJCP.DLL.Ser...
1896
轻松上传:C#中HTTP POST mu...
1949
C# 中的并发性:使用 Blocki...
1674
C#屏幕截图:轻松捕获活动窗...
1774
C#中轻松实现二维码和条形码...
1636
C#串口通讯实战:基础功能及...
1621
深入了解SOAPCore:在.NET 6...
1599
在 .NET8 中通过 RabbitMQ实...
1442
MediatR让进程内通信如此简...
2582
ASP.NET 后端开发:全面的路...
1332
WPF中轻松操控GIF动画:WpfA...
1452
解决WPF界面卡死等待问题:...
2548
实现WPF多语言支持:简单灵...
1397
.net中OpenCVSharp+Zxing读...
1380
.NET —ToList 和 ToArray ...
1252
Microsoft.Extensions.Loggi...
1281
ASP .NET Core 8+ 中的全局...
1239
C#中Task.Run怎么用?能解决...
1347
还在到处加异常日志记录?试...
1337
打造真实感十足的速度表盘:...
1298
.NET 9中ToList 和 ToArray ...
1170
掌握System.Text.Json中的多...
1283
WPF神器揭秘:一键截图,轻...
1157
解密C#中允许HttpClient使用...
1168
掌握ImageSharp:图像处理的...
1243
深入理解WPF中的Dispatcher...
1229
轻松实现.NET应用自动更新:...
1227
C#文件编码检测:轻松解析文...
1114
使用OpenXML在.NET 6中导出E...
1195
在 ASP.NET Core Web API 中...
1072
ASP.NET Core .NET 8 中间件...
1071
.NET 中的 UUID 和 ULID:最...
1070
C# 中的弱事件 — 如何避免...
1064
解密C# Socket通信:克服粘...
1135
ZLogger v2 架构:利用 .NET...
1009
WPF魔法:轻松实现依赖注入...
2236
C# .NET 8中的自动映射器Aut...
1004
FluentFTP实战:轻松操控FTP...
1095
WPF开发新境界:MVVM设计模...
1071
WPF大展示专业指南:轻松实...
1141
C# Socket通信:灵活传输DTO...
956