记一次 .NET 某发证机系统 崩溃分析
一:背景
1. 讲故事
前些天有位朋友在微信上找到我,说他的系统有偶发崩溃,自己也没找到原因,让我帮忙看下怎么回事,我分析dump一直都是免费的,毕竟对这些东西挺感兴趣,有问题可以直接call我,好了,接下来我们就来分析dump吧。
二:程序为什么会崩
1. 观察崩溃上下文
windbg有一个厉害之处在于双击dump之后会自动定位 ...
记一次 .NET 某SaaS版CRM系统 崩溃分析
一:背景
1. 讲故事
调试训练营里的一位学员前些天找到我,说他们跑在k8s中的程序崩掉了不知道怎么回事?日志也没有记录到,让我帮他看看,dump也抓到了,既然抓到了那就看看吧。
二:程序为什么会崩溃
1. 崩溃原因
linux 上的崩溃分析没有windows上那么方便,但还是可以分析的,先通过 !t 看下是不是托管层崩溃导致的,输 ...
(原创)[C#]一步步解决DotNetZip因超长路径(MAX_PATH)报错的问题。
一、前言
超长路径(MAX_PATH)的问题,在很多地方都可能遇到,常见的解决办法无非三种:添加前缀\\?\、app.config添加配置、修改注册表等。
而对于其它第三方的DLL,我们如何去从外部解决呢?答案是:反射。
本篇文章,我们就以DotNetZip为例,一步步来解决超长路径的问题。
**相信看完的你,一定会有所收获!
**
本文地址 ...
发布 ExSpans v1.0, 它突破了32位索引的限制, 提供了 nint 索引范围Span类型;并能使内存映射文件支持 Span操作
发布 ExSpans v1.0, 它突破了32位索引的限制, 提供了 nint 索引范围Span类型;并能使内存映射文件支持 Span操作
源代码: https://github.com/zyl910/ExSpans
ExSpans: Extended spans of nint index range (nint 索引范围的扩展跨度).
Package
Nuget
Description
ExSpans
Extended spans of nint index range (nint ...
简单梳理一下常见的系统
1.ERP(企业资源计划)
英文全称:Enterprise Resource Planning
定义:由美国Gartner Group公司于1990年提出,是以管理会计为核心可以提供跨地区跨部门、甚至于跨公司整合实施信息的企业管理软件。企业资源计划是指建立在信息技术基础上,以系统化的管理思想,为企业决策层及员工提供决策运行手段的管理平台。
核心功能模 ...
C#实现欧姆龙 HostLink 通讯协议库
目录C#实现欧姆龙 HostLink 通讯协议库背景介绍欧姆龙 PLC 内存区域介绍欧姆龙 PLC 数据类型对应欧姆龙 PLC 与 PC 的 RS232 接线线序HostLink通讯报文分析C-Mode通讯报文分析FINS-Mode通讯报文分析HostLink通讯协议库的C#实现核心实现(FCS校验码生成、串口收发)C-Mode实现FINS-Mode实现C#控制台测试功能测试结果
C#实现欧姆 ...
在 WinFormedge 中使用 Blazor Hybrid
在此首先感谢知乎网友我才是星辰的建议,在昨天刚发表了《隆重介绍.NET界面组件WinFormedge》之后得到了及时反馈,因此硬肝了一晚编写了 WinFormedge 的 Blazor 插件,目前该插件已上架 NuGet,欢迎有此开发需求的朋友下载使用。
本文将对此插件进行详细介绍。
✨ 关于
Blazor Hybrid 插件使采用了 WinFormedge 的应用程序 ...
推荐一种程序崩溃闪退或卡死的分析方法
在实际开发中,经常遇到程序崩溃闪退或者卡死的问题,在遇到这种问题的时候,往往很难捕捉异常,且日志也无法正确记录到问题发生的位置。在Windows操作系统中,dump文件就可以记录并保存程序崩溃时的快照,今天我们通过一个小例子,简述一种生成dump文件的方法,仅供学习分享使用,如有不足之处,还请指正。
闪退场 ...
隆重介绍.NET界面组件WinFormedge
经过几个月的爆肝,目前 WinFormedge 项目已经基本可用并已上传至 NuGet 源。同时附带的示例程序也开发完成并随 WinFormedge 源代码一并开源。欢迎各位以 Win10/11 为主要生产环境的 .NET 开发人员安装体验。
项目简介
WinFormedge 是一个基于 Microsoft WebView2 的开源 .NET 库,开发者能够使用 HTML、CSS 和 JavaScript ...
.net 实现 CQRS 的一个设想
一、先总结一下以前的经验
本人前公司项目开发基本算是CQRS的,但是有些繁琐
后台和数据接口用.net(后大部分转java),前台nodejs
数据统计用hive,hive每天凌晨同步数据
但是涉及列表含模糊搜索基本都是交给站内搜索团队,他们用Lucene,搜索每天抓取全量数据,定时(比如5分钟)抓取增量数据
碰到的问题主要有两个:
1. 数据库负载 ...
[原创]《C#高级GDI+实战:从零开发一个流程图》第02章:画一个矩形,能拖动!
一、前言
就像开发的教程都从“Hello World!”开篇一样,系列开始,我们也从一个最最简单的功能开始:画一个能拖动的矩形。
顺便说一下,另一篇教程:(原创)[C#] GDI+ 之鼠标交互:原理、示例、一步步深入、性能优化 讲的更详细和深入,可以作为补充。
就让我们从一个能拖动的矩形开始我们的流程图开发之旅吧!
相信看完 ...
MinHook 对.NET底层的 SendMessage 拦截真实案例反思
一:背景
1. 讲故事
上一篇我们说到了 minhook 的一个简单使用,这一篇给大家分享一个 minhook 在 dump 分析中的实战,先看下面的线程栈。
0:044> ~~[138c]s
win32u!NtUserMessageCall+0x14:
00007ffc`5c891184 c3 ret
0:061> k
# Child-SP RetAddr Call Site
00 0000008c`00ffec68 ...
LINQ
为什么要学习linq :使处理数据变得简单
需求:
统计一个字符串中每个字母出现的频率(忽略大小写),然后按照从高到低的顺序输出出现频率高于两次的单词和其出现的频率
var items = s.Where(c => char.IsLetter(c))//过滤非字母
.Select(c => char.ToLower(c))//大写字母转小写
.GroupBy(c => c)//根据字母分组
...
[原创]《C#高级GDI+实战:从零开发一个流程图》第01章:有什么用、有什么效果?
一、有什么用?
问:现在这个年代哪些场景还需要GDI+?
答:很少,主要是在上位机,复杂一点的自定义控件几乎全由GDI+绘制而成。而且很多工业设备的电脑性能差,WPF等带不起来,只能是Winform。
问:本系列文章的对于GDI+掌握有什么帮助?
答:这是一个完整的完全由GDI+实现的复杂程序,对于GDI+的理解和提升是全方位的,特 ...
用纯.NET开发并制作一个智能桌面机器人(五):使用.NET为树莓派开发Wifi配网功能
前言
在之前的系列文章中,我们已经搭建了基本的硬件平台和软件架构,但有一个问题一直困扰着我:当做好一个差不多的机器人带到新环境时,如何让它连接到新环境的WiFi网络呢?
传统的做法可能需要连接键盘鼠标,显示器,然后进行可视化界面操作,这在实际应用中非常不便。于是我就想着用.NET技术解决这个痛点,实现一个优雅 ...
C# Task 取消执行的简单封装
我让DeepSeek帮我写了一段使用 CancellationTokenSource 取消任务的简单示例如下:
取消任务的简单示例
using System.Threading.Tasks;
using System.Threading;
public async Task Test()
{
var cts = new CancellationTokenSource();
var task = Task.Run(() =>
{
while (true)
{
...
C# Wkhtmltopdf HTML转PDF碰到的问题
最近碰到一个Html转PDF的需求,看了一下基本上都是需要依赖Wkhtmltopdf,需要在Windows或者linux安装这个可以后使用。找了一下选择了HtmlToPDFCore,这个库是对Wkhtmltopdf.NetCore简单二次封装,这个库的好处就是通过NuGet安装HtmlToPDFCore就带了Windows/Mac/Linux的依赖包,就是包有点大。也可以使用HtmlToPDFCore包含 ...
【ASP.NET Core】调用 Web API 备份数据库
老周不经意间翻了一下博客列表,上一篇水文竟然在 一个月前。啊,大海啊,全是水;时间啊,你跑得真快!过了一个月老周竟没感觉出来,可是这一个月里,好像啥事也没干成,就改了一下几个旧项目。也许是现在大环境真的不好,新项目不好找。新的活有是有,比较简单,却很奇怪,比那货难的项目都做过,偏偏这货没头绪。这东西 ...
如何在 .NET 中构建一个好用的动态查询生成器
前言
自从.NET Framework 3.5提供了LINQ之后,集合数据查询基本被LINQ统一了。这大幅提高了编写数据查询代码的效率和质量,但是在需要编写动态查询的时候反而很困难,特别是最常用的where和order by子句,他们的参数是Expression。编写静态查询的时候编译器会自动把代码转换成等价的表达式,而动态查询无法借助编译器完成表 ...
2.3.net core 工作流WorkFlow流程(流程节点附件设置)
流程节点附件设置
WikeFlow官网:http://www.wikesoft.com
有些流程要求某些节点必须上传附件。
你只需要在流程节点中配置附件的Key,附件名称,是否必传。
如下图:
文件存储
附件会上传到应用根目录下面的Upload文件夹下面。
流程引擎如何调用上 ...