首页
C&C++
C#语言
Java
Python
人工智能
Web前端
数据库
面试笔记
其它
软件推荐
搜索
责任链模式:告别臃肿的if-else,让请求在对象链中智能传递
在上一篇文章《观察者模式:让代码主动响应,告别轮询》中,我们探讨了观察者模式如何以解耦的方式实现系统事件响应。作为行为设计模式系列的第二篇,本文将介绍另一种行为模式——责任链模式(Chain of Responsibility)。顾名思义,该模式会为请求创建一条由多个潜在...
6-7 9:13
25
策略设计模式:动态切换算法的艺术(C#实现)
策略设计模式是一种行为型设计模式,它允许在运行时从算法族中选择特定算法。通过将算法单独封装并使其可互换,该模式能帮助我们创建灵活、可复用的代码,而无需修改现有代码结构。无策略模式时的问题若不使用策略模式,我们通常需要依赖条件语句(if-else或switch-case...
6-7 9:11
23
告别MediatR:构建极简CQRS架构的终极指南
Jimmy Bogard近期宣布,MediatR将对达到一定规模的企业采用商业许可模式。这一变化促使许多团队重新评估其使用方案,并开始寻找替代方案。现在正是转型的好时机。尽管CQRS与MediatR并非同一概念,但MediatR几乎已成为.NET生态中CQRS模式的代名词。大多数项目仅将其用作...
6-7 9:4
21
从"Hello World"到高手进阶:10个必掌握的.NET Core实战技巧
你已经告别了Hello World阶段,能比泡方便面还快地搭建API,但总觉得哪里不对劲...仿佛每次生产环境出问题(本地却正常)时,框架都在无声地嘲笑你。是的,是时候升级了。依赖注入(DI) —— 不只是流行词我知道你用过了——可能从StackOverflow复制来的。也许注入过一两...
6-7 9:3
23
LINQ的魔幻与禁忌:5个让你既爱又恨的"骚操作
LINQ的使用,往往在巧妙与邪恶之间只有一线之隔。我曾深刻领悟这一点——在一次代码评审中,我自信满满地展示了一段自认为堪称艺术品的LINQ代码,结果看着资深开发者的表情逐渐扭曲。这……确实能跑,他缓缓说道,但今晚我可能会因为这段代码失眠。LINQ不仅是一种工具,...
6-7 9:1
22
.NET 10震撼来袭:Preview 3七大核心升级全解析
软件开发的世界从不停止进化,.NET亦是如此。.NET 10 Preview 3不仅是技术更新,更为Web、移动端、云服务等领域的应用开发奠定了未来基础。这个版本聚焦速度、简洁与智能编码,让开发者能用更优雅高效的方案解决复杂问题。为什么选择.NET 10?这不仅是版本号的改变,更...
6-7 9:0
23
字符串是个好员工,但别让它当CEO!—— C#强类型设计实战指南
字符串(String)是C#中最常用的数据类型之一。姓名、地址、消息、JSON、XML、状态、类型名称——字符串无处不在。但当我们过度使用字符串时,问题就会显现——它们会变得脆弱、易错,且难以维护。本文将带你深入探讨:为何滥用字符串是危险的使用键值替代方案如何提升...
6-7 8:58
23
C#代码的七宗罪:老司机带你清除这些技术债(附改造方案)
前几天我review了一个代码库——这是个从.NET Framework 4.5时代遗留下来的企业级应用。虽然保留了分层架构,但业务逻辑和UI事件纠缠不清,几乎每行代码都在呐喊:我是赶工写出来的!这个下午给了我当头一棒。从业多年,我见过太多杰作:臃肿的控制器方法、深不见底的if...
6-7 8:56
23
命令模式深度解析:一招解锁撤销/重做、任务队列等高级功能,从此告别代码紧耦合
在上一期《迭代器模式:无需了解集合结构即可遍历元素》中,我们探讨了设计模式如何通过解耦程序组件来提供优雅解决方案。今天,我们将深入行为型模式中的命令模式(Command Pattern),该模式通过将请求封装为独立对象,实现请求发送者与执行者的解耦。这种模式以可维...
6-7 8:55
31
.NET开发者的救星:8个让你告别996的高效库
当你正埋头开发一个自定义日期选择器或登录系统时,突然灵光一闪:等等...肯定有人早就实现过这个功能了吧?没错,确实如此。然而此刻的你,已经写了上百行代码,又一次在重复造轮子的半路上。别担心,你并不孤单——尤其是在.NET生态中。这个庞大的生态系统里,有时候...
6-7 8:53
37
.NET 10 颠覆性革新:直接运行C#文件,告别项目配置枷锁!
微软在 .NET 10 Preview 4 中引入了一项彻底改变开发者与C#交互方式的特性——历史上首次,开发者可以直接通过 dotnet run app.cs 执行C#文件,无需创建项目文件、搭建目录结构或管理MSBuild配置。这项范式转移使C#在保持企业级能力的同时,获得了脚本语言的灵活性。✔...
6-7 8:52
31
数据库成本削减60%的实战秘籍:从索引优化到冷存储的10大SQL黄金法则
各位数据达人们好啊!如果你点开了这篇文章,八成正在为不断膨胀的数据库成本抓耳挠腮吧?就是那种——云服务账单悄咪咪上涨、服务器在重负载下气喘吁吁、DBA看到查询超过5秒就叹气的情况。系好安全带!我将分享20年SQL实战经验总结出的秘诀,在不牺牲性能的前提下将数...
6-7 8:48
34
告别贫血枚举!用C#强类型枚举模式实现真正的面向对象设计
原生C#枚举就像纸板剪影——只有标签,没有灵魂。需要为每种信用卡类型设置折扣率?准备好面对冗长的switch语句。想添加验证或本地化?你不得不在代码库中搜寻分散的辅助字典。如果你认为原生枚举够用,那只是因为还没遇到过需要将业务逻辑塞进巨型switch怪兽的需求场景...
6-7 8:47
32
LINQ鲜为人知的7个秘密:从表达式树到并行查询的深度探索
你每天都在使用LINQ。这根流畅、富有表现力的魔杖,能将笨拙的for循环转化为优雅的声明式查询。Where、Select、OrderBy这些操作对你来说早已是肌肉记忆。但如果我告诉你,你所了解的LINQ只是冰山一角呢?在表面之下,隐藏着一段迷人的历史、强大但被忽视的操作符,以及...
6-7 8:45
29
PostgreSQL 18震撼发布:十大开发者福音功能深度解析
PostgreSQL 18正式进入Beta测试阶段(没错,是Beta版),这是近年来对开发者最友好的版本升级。无论您期待更快的数据导入、更优雅的UPSERT操作,还是更合理的复制配置,这个版本都能满足需求。这不是对数据库底层架构的重写,而是解决了诸多历史痛点:唯一约束中NULL值...
6-7 8:42
65
.NET与React的巅峰融合:2025年企业级应用开发的终极答案
当微软首次宣布.NET Core的跨平台能力时,很少有人预料到它最引人注目的搭档会是Facebook的React。然而时至2025年,这对看似不可能的组合正在驱动全球最复杂的企业级应用。React的组件化哲学与.NET的企业级基础设施相结合,创造出两个生态系统单独都无法实现的奇迹。完...
6-7 8:40
38
CancellationToken:那个被90%开发者低估的性能救星
如果没人倾听,你不会继续说话。那为什么用户离开后,你的代码还在运行?我承认,曾经我也忽视CancellationToken。心想:这有什么用?我的代码跑得好好的,何必复杂化?后来才发现,这种想法正在慢慢蚕食我的应用性能。不是以惊天崩溃的方式,甚至没有任何红色警报。只...
6-7 8:38
43
依赖注入的深层奥秘:90%开发者都踩过的坑与救赎之道
当我初学.NET编程时,曾自信满满地认为已经完全掌握了依赖注入(DI)。构造函数注入、服务注册、作用域与单例——我无所不知!直到某天生产环境突发重大事故:应用性能骤降、内存泄漏、行为异常。排查过程中发现的问题,瞬间击碎了我的自信泡沫。我原以为懂DI,却从未真...
6-7 8:36
48
5个鲜为人知的C#/.NET开发秘籍:从时间处理到安全配置的实战技巧
欢迎来到新一期的5个C#和.NET开发技巧!抱歉过去两个月断更——上次更新还是在二月份——这段时间确实忙得不可开交,而且撰写这些技术文章总比预期耗时更长。本期内容包含:避免直接使用DateTime.Now、Entity Framework Core的全局查询过滤器、并发集合、用户密钥管理、...
6-7 8:33
34
.NET异常处理性能优化实战:从紧急刹车到丝滑降速的高效之道
在错综复杂的.NET开发世界中,异常就像是代码库的紧急刹车——虽是必要的安全措施,但过度使用会导致灾难性的低效。尽管异常提供了结构化的错误处理方式,但滥用它们会让高性能应用变得迟钝笨重。本报告将探讨健壮错误处理与极致性能之间的精妙平衡,通过剖析最佳实践来...
6-7 8:29
34
阅读排行
克服403错误:Python爬虫的...
8874
使用python爬取网页数据的详...
2920
深入WPF数据绑定:Converter...
2888
C#异步定时器:精准定期执行...
2868
WPF应用中融入ASP.NET Core...
2202
在C# .NET 8中使用MediatR实...
1934
使用python轻松进行PDF文档...
1922
解密Python时间测量的迷雾:...
2006
C++网络通信利器:使用cpp-h...
1877
github上73.8k星的内网穿透...
1814
延迟等待的艺术:C#中Task.D...
1660
.NET Core 中集成Dapper高级...
1611
.NET 性能分析:.NET 8 中的...
1528
WPF中轻松生成动态图表:实...
1635
串口通信利器:RJCP.DLL.Ser...
1542
精准数字处理:C#中四舍五入...
1740
使用 OpenCV 和 FER 在 Pyth...
1387
轻松上传:C#中HTTP POST mu...
1614
C#屏幕截图:轻松捕获活动窗...
1497
C# 中的并发性:使用 Blocki...
1366
jwt续签为什么要使用双token...
1275
C#中轻松实现二维码和条形码...
1272
C#串口通讯实战:基础功能及...
1341
深入了解SOAPCore:在.NET 6...
1251
在 .NET8 中通过 RabbitMQ实...
1113
通过mybatis-plus的自定义拦...
1230
解决WPF界面卡死等待问题:...
2322
ASP.NET 后端开发:全面的路...
1086
WPF中轻松操控GIF动画:WpfA...
1185
.NET —ToList 和 ToArray ...
1017
MediatR让进程内通信如此简...
2233
实现WPF多语言支持:简单灵...
1134
C#中Task.Run怎么用?能解决...
1115
.net中OpenCVSharp+Zxing读...
1110
还在到处加异常日志记录?试...
1104
Microsoft.Extensions.Loggi...
989
打造真实感十足的速度表盘:...
1071
.NET 9中ToList 和 ToArray ...
923
ASP .NET Core 8+ 中的全局...
914
解密C#中允许HttpClient使用...
916
掌握ImageSharp:图像处理的...
1002
掌握System.Text.Json中的多...
1000
C++输出控制:std::cout线程...
1218
WPF神器揭秘:一键截图,轻...
861
轻松实现.NET应用自动更新:...
973
深入理解WPF中的Dispatcher...
963
C#文件编码检测:轻松解析文...
853
C# 中的弱事件 — 如何避免...
831
.NET 中的 UUID 和 ULID:最...
831
ASP.NET Core .NET 8 中间件...
829