刷新
.NET 数据拷贝方案选择

博主头像 应用中我们经常使用到数据的复制,在.NET中有多种方式可以实现复制数据或对象。选择哪种方式、是浅拷贝还是深拷贝,具体需求场景可以取决于对象的复杂性、数据量等,本文我们介绍主要的拷贝方式以及相对高性能的方案。 1. MemberwiseClone拷贝 浅拷贝 Object.MemberwiseClon ...

HighReport报表工具V4.0带来十大核心优势变化

1.概述 经过一年时间产品升级研发,HighReport报表工具正式推出V4.0版本,报表算法和报表功能获得全面提升。HighReportV4.0带来全面质的飞跃,具有明显的产品优势。 2.亮点一:双父格扩展模型 报表引擎核心算法是父子格扩展模型,下面是常见模型 一般报表厂商下面的扩展模型是不支持的 ...

一个超经典 WinForm,WPF 卡死问题的终极反思

博主头像 一:背景 1. 讲故事 写这篇文章起源于训练营里一位朋友最近在微信聊到他对这个问题使用了一种非常切实可行,简单粗暴的方式,并且也成功解决了公司里几个这样的卡死dump,如今在公司已是灵魂级人物,让我也尝到了什么叫反哺!对,这个东西叫 Harmony, github网址: https://github ...

聊一聊 C#异步 任务延续的三种底层玩法

博主头像 一:背景 1. 讲故事 最近聊了不少和异步相关的话题,有点疲倦了,今天再写最后一篇作为近期这类话题的一个封笔吧,下篇继续写我熟悉的 生产故障 系列,突然亲切感油然而生,哈哈,免费给别人看程序故障,是一种积阴德阳善的事情,欲知前世因,今生受者是。欲知来世果,今生做者是。 在任务延续方面,我个人的总结就 ...

为什么 .NET8线程池 容易引发线程饥饿

博主头像 一:背景 1. 讲故事 最近时间相对比较宽裕,多写点文章来充实社区吧,这篇文章主要还是来自于最近遇到的几例线程饥饿(Task.Result)引发的一系列的反思和总结,我觉得.NET8容易引发饥饿的原因,更多的在于异步回调之后底层会反复的将结果丢到线程池所致,因为数据进线程池容易,再用线程到池中去捞就 ...

C#笔记(1、钉钉机器人推送帆软报表图片)

博主头像 C#笔记——钉钉机器人推送帆软报表图片(一) 1、前言 ​ 2024年最后一个月,家里多了个小公主,在家休息了一段时间。2025年,休完假上班第一天,领导就说:哎,我看总部那边做了个每日产出的报表推送到钉钉群,来看计划达成率。我们基地这边能不能做啊。我心里默默一想,然后大声一喊能做(内心os:上家公 ...

聊一聊 C#异步中的Overlapped是如何寻址的

博主头像 一:背景 1. 讲故事 前段时间训练营里的一位朋友提了一个问题,我用ReadAsync做文件异步读取时,我知道在Win32层面会传 lpOverlapped 到内核层,那在内核层回头时,它是如何通过这个 lpOverlapped 寻找到 ReadAsync 这个异步的Task的呢? 这是一个好问题, ...

C#语言实现光盘刻录功能

最近在项目中遇到一个需求,需要实现光盘刻录功能,由于项目使用的是C#语言,网上查阅了很多资劳和伪代码,很多都不能跑通,很多都是是引入了DLL后找不到方法,猜测应该是不同的版本导致的,经过一天的资料查阅和编写调试,终于是调通了全部的功能,这里将关键的伪代码分享如下。代码中有注释,对照着看就可以。 第一 ...

记北京的第三次出行

博主头像 今天暂停了学习开发的任务,给咱放个假,去北京溜一圈,解解压,把该玩的,想玩的地逛一逛,哈哈... 开发无止境,学习路还是很长...... 昨晚收拾了屋子,打扫好房间,洗衣拖地,算是春节假期提前打扫除了,,, 计划出行就该给自己留足充足时间,今天差点赶不上高铁,风风火火,一路火光带闪电,哈哈哈,,, ...

Parallel.ForEach与for与foreach效率问题

博主头像 做到物流分拣项目,处理格口数据报警状态问题,使用了并行Parallel.ForEach。后面做了下几个循环的效率,也记录了一下; 循环体内不做任何事情 时,发现Parallel.ForEach更耗时。Parallel.ForEach不是并行的吗,怎么会更耗时呢?颠覆了认知。。。。别急:这是因为循环体 ...

记一次 .NET某汗液测试机系统 崩溃分析

博主头像 一:背景 1. 讲故事 上个月在社区写的文章比较少,一直关注的朋友应该知道那段时间被狗咬了以及一些琐事处理,所以手头上也攒了不少需要分享的案例,这段时间比较空闲,逐个给大 家做个分享吧,刚好年后为新版的 .NET高级调试训练营 做案例储备,所以抓紧时间疯狂输出吧! 这次生产事故的dump是训练营里一 ...

记一次 .NET某电商医药网站 CPU爆高分析

博主头像 一:背景 1. 讲故事 准备明年把.NET高级调试的训练营的课程进行重构,采用案例引导式,而CPU爆高类有不少是程序员在写代码的时候不注意时间复杂度,在数据量稍微大一点的情况直接幻化成了死循环,时间复杂度这东西是学校的数据结构课程,有心的朋友在写多层循环的时候脑子里面一定要过一遍,今天就给大家带一篇 ...

多播委托

博主头像 引言 在 C# 中,委托(Delegate)是一种类型安全的函数指针,允许将方法作为参数传递。多播委托(Multicast Delegate)则是可以调用多个方法的委托实例。本文将详细介绍多播委托的概念、使用场景以及如何在实际开发中应用多播委托。 什么是委托? 委托的基本概念 委托是 C# 中的一种 ...

[C#] 复数乘法的跨平台SIMD硬件加速向量算法(不仅支持X86的Sse、Avx、Avx512,还支持Arm的AdvSimd)

将复数乘法改造为SIMD向量算法,是稍微有一些的难度的。首个难点是需要重新调整元素的位置,才能满足复数乘法公式。而“调整元素的位置”与内存中数据布局有关,不同办法的性能不同。还需考虑优化内存访问等细节。 最近知乎有个 帖子 讨论了该话题,且 hez2010 给出了修正后的基于Avx指令集 Horiz ...

redis缓存穿透和 缓存雪崩

博主头像 在使用Redis作为缓存系统时,缓存穿透(Cache Penetration) 和 缓存雪崩(Cache Avalanche) 是两种常见的问题。它们会影响缓存系统的性能和稳定性。以下是这两种问题的详细解释及其解决方法。 缓存穿透(Cache Penetration) 缓存穿透是指查询一个在缓存和数 ...

<123···18>