软件开发有点类似于艺术品的雕刻,需要不断的打磨。在我们基于一套成熟的架构开发一套软件后,往往都还是需要反复的推敲,进行不断的重构优化,使得重复的代码、硬编码等地方越来越少,也使得某些逻辑越来越有弹性化。软件开发和艺术品又有所不同,艺术品可能很容易完工并封刀,而软件开发却是持续的改进,软件最终的持续改... ...
键控服务是指使用密钥注册和检索依赖项注入 (DI) 服务的机制。 通过调用 AddKeyedSingleton (或 AddKeyedScoped 或 AddKeyedTransient)来注册服务,与密钥相关联。 使用 [FromKeyedServices] 属性指定密钥来访问已注册的服务。 以往 ...
原文地址:https://www.cnblogs.com/ysmc/p/18780674 近年AI风靡全球,我们日常见到的最多的就是跟AI聊天,极大减少了我们的搜索时间,不过大家也要注意甄别AI回答的正确性,身体不舒服还是老老实实看医生。 AI聊天的输出是逐字输出的,有些小伙伴就很好奇这个是怎么实现 ...
在前段时间,有粉丝反馈能否写一篇基于ASP.NET Core Web Api+React UI进行Web开发的文章,经过查阅相关资料,发现Visual Studio 2022已经集成相关模板,可以在Visual Studio中直接创建项目项目,今天以一个小例子,简述ASP.NET Core Web ... ...
前言 C# 获取枚举描述的方法有很多, 常用的有通过 DescriptionAttribute 反射获取, 进阶的可以加上缓存机制, 减少反射的开销。今天我们还提供一种更加高效的方法,通过增量源生成器生成获取枚举描述的代码。这是在编译层面实现的, 无需反射, 性能更高。 本文的演示代码基于 VS20 ...
WinForm 使用 Win32 API 实现的无边框窗口 前言 时光荏苒,转眼已近是2025年了。不知不觉两年多没有研究代码了,在这期间 .NET 10 都快 RC 了,前几天刷手机看到张队公众号里有关于 .NET 9.0 AOT 发布的内容,所以写了这些代码来测试一下 AOT 编译的效果,并评估 ...
本文将带领大家入门 dotnet 的 SourceGenerator 源代码生成器技术,期待大家阅读完本文能够看懂理解和编写源代码生成器和分析器 ...
背景 微软的日志库一般是输出到控制台的,但是在WPF中并不能直接使用控制台,需要AllocConsole。 但是这种做法个人觉得不太安全(一关闭控制台整个程序就退出了?)。这时候就需要一个更加友好的方式输出日志。 问题 那如何将日志的内容显示到RichTextBox中? 实现LoggerProces ...
一、概述 前段时间客户碰到基于surging内存泄漏问题,邀请我来现场帮忙解决,对于dotnetty 我一直又爱又恨,因堆外内存DirectByteBufferChunk 中PoolChunk映射分配的16mb始终无法销毁,后面设置优化了dotnetty 环境变量参数,未在同一线程下导致引用计数出现 ...
最近在研究系统本地化的问题,不可避免要实现模型类的验证消息本地化。毕竟这些错误消息是要返回给用户的。 疑问产生 在MVC模型下,我们会使用模型类对请求参数进行绑定和验证。举个例子: public class UserDto { [Required(ErrorMessage = "姓名不能为空")] ...
WPF 你真的会写 XAML 吗?浅谈 ControlTemplate 、DataTemplate 和其它 Template 本文希望从写死的代码慢慢引入 WPF 的一些机制。 一、Button 难题 我们想要修改 Button 的背景色但是效果非常不理想,默认的 Button 样式是完全无法给大家 ...
报表工具的核心是父子格扩展模型,通过父子格扩展模型实现各种类型报表,例如网格式报表、行式报表、主子报表、分组报表、交叉报表等。报表有三种扩展模型父子格扩展模型双父格扩展模型兄弟格扩展模型父子格扩展模型B7单元格是第7行所有其它单元格的父格,其它单元格随父格扩展,生成明显列表。双父格扩展模型B2单元格 ...
C#9.0是2020年发布的,record特性还没用上的可以看过来,一起讨论下。 下面通过一个简单的示例演示record带来的好处。 1. 通过一个示例引出问题 public class Person { public string Name { get; set } ... } public cl ...
SqlServer 中行转列PIVOT函数用法 前言 最近在面试的时候,碰到了手写sql的题目,这让我这个面向AI的程序员着实难看。只见我面露难色,绞尽脑汁的情况下,终于还是放弃了。 这道题目不难,但是由于平时几乎没有遇到行转列的情况,导致在手写时忘记了PIVOT函数怎么使用。 面试准备不充分给 ...
在现代分布式系统中,服务之间的通信是一个非常重要的环节。随着微服务架构的流行,服务之间的通信方式也在不断演进。gRPC作为一种高性能、跨语言的RPC框架,逐渐成为了我们的首选。 一、简介 gRPC 是一种高性能、开源的远程过程调用(RPC)框架,基于 HTTP/2 协议,支持双向流、头部压缩等特性。 ...
将图片(JPG、PNG)转换为PDF文件可以帮助我们更好地保存和分享图片。此外,PDF文件还具有强大的安全特性,将图片转换为PDF后,我们可以通过设置密码来文件内容不被泄露。本文将介绍如何将JPG/PNG图片转换为PDF文档。 C# 将单张图片转换为PDF文档 C# 将多张图片转换到一个PDF文档 ...
前言 进程与操作系统的关系 进程初识 前言 这是一篇我在学习OSTEP这本书的笔记与总结,这篇笔记的正文部分围绕进程赞开,主要讨论“是什么”与“为什么”两个问题,笔记如有错漏,望不吝纠正。 进程与操作系统的关系 进程是操作系统里的核心之一,在OSTEP中对进程在操作系统中扮演的角色给出了以下解释: ...
前言 前两篇介绍了进程与上下文,而这篇介绍的对象是调度器,因为我也不懂调度器的原因,所以,这篇笔记只谈调度器的工作过程,不涉及调度器的具体实现。笔记中若有错漏,望不吝指正。 调度器的一天 在一个清凉的午后,job饭馆(CPU)来了一群气势汹汹的饿汉(进程),店小二(调度器)立马为这些不速之客安排饭桌 ...
在本主题的 上一篇文章里,给大家讲解了24位图像水平翻转(FlipX)算法。但该文章主要是为了介绍 YShuffleX3Kernel 的使用,该算法性能并不是最优的。于是本文将介绍如何使用 YShuffleX2Kernel 来优化程序。而且Imageshop在留言区给了一份C语言的、基于Sse系列指 ...
说明 该文章是属于OverallAuth2.0系列文章,每周更新一篇该系列文章(从0到1完成系统开发)。 该系统文章,我会尽量说的非常详细,做到不管新手、老手都能看懂。 说明:OverallAuth2.0 是一个简单、易懂、功能强大的权限+可视化流程管理系统。 友情提醒:本篇文章是属于系列文章,看该 ...