TypedSql:在 C# 类型系统上实现一个 SQL 查询引擎
前言 在 .NET 里写查询的时候,很多场景下数据其实早就都在内存里了:不是数据库连接,也不是某个远程服务的结果,而就是一个数组或者 List<T>。我只是想过滤一下、投影一下。这时候,通常有几种选择: 写一个 foreach 循环 —— 性能好、可控,但代码稍微有点啰嗦; 用 LINQ —— 写起 ...
对 .NET FileSystemWatcher引发内存碎片化的 反思
一:背景 1. 讲故事 前些天又遇到了一例 FileSystemWatcher 引发的内存碎片化故障,但这个碎片化不是因为经典的 reloadOnChange=true 导致的,所以我觉得有必要做一次深度的反思,供以后遇到类似问题提供技术上的解决方法,这篇我们就来系统的讲解下 两种碎片化方式的调查方 ...
DotMemory系列:5. 如何实现自动化抓取和应用自托管
一:背景 1. 讲故事 前面几篇我们都是手工安装 dotmemory 软件,然后在程序的合适时机抓取snapshot,这种方式在绝大多数场景下都没有问题,但在一些精细化的场景下,如果能够实现自动化抓取,那就比较了,这篇我们就来聊一聊这玩意。 二:如何实现自动化抓取 1. 测试代码 所谓的自动 ...
DotMemory系列:4. 如何分析进程的转储文件
一:背景 1. 讲故事 前面几篇文章说的都是对进程采集 snapshot 文件,但这种方式的前提需要在目标机器上运行 DotMemory 相关组件,这在很多生产环境下很难做到,我知道很多医疗,金融生产环境,部署一个外来文件都需要层层审批,尤其像 dotmemory 这种商业软件,想上去门到没有。。。 ...
DotMemory系列:3. 堆碎片化引发的内存暴涨分析
一:背景 1. 讲故事 前面两篇我们讲的都是通过挂引用根的方式导致的内存暴涨,在快速检测台上能够一眼就看出是什么类型的Type导致的,分析难度稍微较低,在真实的dump分析场景下,也会存在对象偏小而内存暴涨的情况,一般的新手会被这种场景搞懵逼,这篇就来分享这种奇葩的情况。 二:内存暴涨分析 1. 问 ...
DotMemory系列:2. 事件泄露引发的内存暴涨分析
一:背景 1. 讲故事 事件泄露导致的内存暴涨,说实话我以前是不敢相信的,因为我认为没人会写这样的代码,但现实往往都会打脸,还是太年轻了,今年年中的时候还真给遇到了,也算是无语啦,这一篇我们就来聊一聊如何通过 DotMemory 来一探究竟。 二:内存暴涨分析 1. 问题代码 为了方便讲述,先来一段 ...
DotMemory系列:1. 终结队列积压引发的内存暴涨分析
一:背景 1. 讲故事 说实话本来是不想写这个系列的,因为我潜意识里觉得这款工具就像美图秀秀一样,拉低专业人士的档次,但奈何在训练营里我需要用到 dottrace 这款工具,而我向官方申请再续了一年免费的Pack套件也给我通过了,所以我觉得要对得起他们,得要写点什么,截图如下: 这几天我也仔细看了下 ...
记一次 .NET 某理财管理客户端 OOM溢出分析
一:背景 1. 讲故事 这是训练营里的学员找到我的,让我帮忙看下为什么他的客户程序会偶发的出现 报错弹框,由于dump比较敏感,这里就不截图发出来了,由于是错误弹框,并不会出现程序崩溃,而且朋友在日志中也看到了 OOM 异常,就是因为这个 OOM 异常导致了后续流程的 报错弹框,说这个程序的内存还行 ...
记一次 .NET 某医联体管理系统 崩溃分析
一:背景 1. 讲故事 这段时间都在跑外卖,感觉好久都没写文章了,今天继续给大家带来一篇崩溃类的生产事故,这是微信上有位老朋友找到我的,让我帮忙看下为啥崩溃了,dump也在手,接下来就可以一顿分析。 二:崩溃分析 1. 为什么会崩溃 双击打开dump文件,会看到崩溃信息通览,参考如下: Execut ...
WPF 如何支撑一个灵活的流程图编辑器?
前言 软件开发领域,流程设计与可视化是提升系统可维护性、增强用户体验的重要手段。无论是工作流管理、业务逻辑编排还是算法流程展示,一个灵活、易用的流程节点编辑框架都能极大地提高开发效率与系统灵活性。 本文将推荐一款基于 WPF 的开源流程节点编辑框架,通过对其核心设计与实现逻辑的解析,带领大家从零开始 ...
借助Aspose.Words,用C#开发一个Markdown到 Word的转换器
本教程将教您如何借助Aspose.Words使用C# 开发 Markdown 转 Word 转换器。我们将逐步讲解,从加载 Markdown 文件并将其导出为 DOCX 格式,到以编程方式编辑或设置转换后文档的样式。 ...
国产化数据库迁移工具不会用?教你手搓一个万能数据迁移工具。
手搓数据库迁移工具需要考虑迁移的数据量、源数据库和目标数据库的类型、版本和兼容性等问题,使用SOD框架可以很方便的解决这些问题。 ...
记一次 .NET 某光放测试系统 崩溃分析
一:背景 1. 讲故事 微信好友里有位朋友找到我,说他部署在windows上的程序,用debug模式正常,但用 release 模式跑程序就崩溃,如果把程序切到 .NET6 的话又都正常,所以很迷茫,让我看看怎么回事,哈哈,这种问题直接抓dump分析就好了。 二:崩溃分析 1. 为什么会崩溃 分析过 ...
记一次 .NET 某药品缺陷高速检测系统 卡慢分析
一:背景 1. 讲故事 上个月有位朋友找到我,说他们公司的程序当内存达到一定阈值(2g+)之后,业务逻辑明显变慢导致下位机超时报警,想让我看下到底怎么回事,这种问题其实抓dump比较难搞,但朋友也说了有一个增长阈值,那就让朋友抓一个 2g+ 的dump发过来看看吧,当然越大越好。 二:内存洞察分析 ...
C# 使用 using 关键字间接实现只读局部变量的方法
众所周知,在 C# 里面是没有只读局部变量的功能的。但有趣的 C# 语法让咱可以使用现有的 using 关键字间接实现只读局部变量 ...
C# 实现 Word 与 TXT 互转的技术方案
在办公自动化与数据处理场景中,Word 与 TXT 格式的双向转换是常见需求,例如从 Word 提取纯文本用于数据预处理、将 TXT 内容规整为 Word 文档以满足格式要求等。传统采用 Microsoft.Office.Interop.Word 实现转换时,存在需依赖本地 Office 环境、版本 ...
.NET 记录Amazon上传S3异常问题
上传文件至S3,提示AmazonS3Exception异常:The provided 'x-amz-content-sha256' header does not match what was computed. 确认了下,代码逻辑已经很久未动了。 没得办法,只能动用终极工具-二分查找,分段reve ...
合并多个PDF文档:C# 解决方案
在实际项目开发中,我们经常会遇到需要将多个 PDF 文件合并成一个文档的需求,或者从多个 PDF 中抽取部分页面组合成新的 PDF。本文将介绍如何使用 Spire.PDF for .NET 库实现以下两个功能: 合并多个完整的 PDF 文档 合并多个 PDF 中的指定页面 1. 安装 Spire.P ...
使用OpenCvSharp , Emgu.CV 手搓 视觉识别算法 以及 成果展示
举个 一个培养皿里有若干条鱼苗,需要将它全部区分识别出来, 像如下图所示的小蝌蚪就是(培养皿里三个黑点是热带鱼苗,做实验用的,一毫米长) 用的是海康威视的黑白工业相机拍摄。 先讲讲思路,图片是一组庞大的矩阵数据,每一个像素点有用数据为五个分别为RGB(三原色),以及XY坐标。也就是说我们能将整张 ...
基于DeploySharp 的深度学习模型部署测试平台:支持YOLO全系列模型
本文介绍了基于DeploySharp开发的深度学习模型部署测试平台的使用方法。该平台支持YOLO系列模型(v5-v13)及多种应用场景,提供OpenVINO和ONNX Runtime两种推理引擎,支持CPU/GPU/NPU等多种设备。文章详细说明了程序下载方式、模型选择、推理引擎配置以及设备匹配关系... ...


