记一次 .NET 某餐饮小程序 内存暴涨分析
一:背景 1. 讲故事 前些天有位朋友找到我,说他的程序内存异常高,用 vs诊断工具 加载时间又太久,让我帮忙看一下到底咋回事,截图如下: 确实,如果dump文件超过 10G 之后,市面上那些可视化工具分析起来会让你崩溃的,除了时间久之外这些工具大多也不是用懒加载的方式,比如 dotmem...[2023/9/25]
2023版:深度比较几种.NET Excel导出库的性能差异
2023版:深度比较几种.NET Excel导出库的性能差异 引言 背景和目的 本文介绍了几个常用的电子表格处理库,包括EPPlus、NPOI、Aspose.Cells和DocumentFormat.OpenXml,我们将对这些库进行性能测评,以便为开发人员提供实际的性能指标和数据。 下表将功...[2023/9/25]
6.swagger完善:界面显示注释+多版本控制
周末,写点简单的水一下。 新版本的vs创建项目的时候可以选择自带一个swagger。然而这只是基本的swagger功能。 几个接口无所谓啦,随着接口越来越多,就这么丢给你,一时间也会懵逼,所以这篇文章要做的有两个功能。 给swagger文档添加注释 给swagger添加切换...[2023/9/25]
拦截|篡改|伪造.NET类库中不限于public的类和方法
大家好,我是沙漠尽头的狼。 本文首发于Dotnet9,介绍使用Lib.Harmony库拦截第三方.NET库方法,达到不修改其源码并能实现修改方法逻辑、预期行为的效果,并且不限于只拦截public访问修饰的类及方法,行文目录: 什么是方法拦截? 示例程序拦截 非public方法怎么拦截? 总结...[2023/9/25]
记一次 .NET某新能源MES系统 非托管泄露
一:背景 1. 讲故事 前些天有位朋友找到我,说他们的程序有内存泄露,跟着我的错题集也没找出是什么原因,刚好手头上有一个 7G+ 的 dump,让我帮忙看下是怎么回事,既然找到我了那就给他看看吧,不过他的微信头像有点像 二道贩子,不管到我这里是不是 三道,该分析的还得要分析呀。?????? 二:...[2023/9/25]
在 Net7.0环境下测试了 Assembly.Load、Assmebly.LoadFile和Assembly.LoadFrom的区别
一、简介 很长时间没有关注一些C#技术细节了,主要在研究微服务、容器、云原生、容器编排等高大上的主题了,最近在写一些框架的时候,遇到了一些和在 Net Framework 框架下不一样的情况,当然了,我今天主要测试的是,在通过【添加项目引用】和【手动拷贝DLL】的情况下,这三个方法加载程...[2023/9/20]
如何在.NET电子表格应用程序中创建流程图
前言 流程图是一种常用的图形化工具,用于展示过程中事件、决策和操作的顺序和关系。它通过使用不同形状的图标和箭头线条,将任务和步骤按照特定的顺序连接起来,以便清晰地表示一个过程的执行流程。 在企业环境中,高管和经理利用流程图来规划业务流程,使他们能够识别瓶颈、优化生产力并增强决策能力……用例列...[2023/9/20]
【.NET8】访问私有成员新姿势UnsafeAccessor(下)
前言 书接上回,我们讨论了在.NET8中新增的UnsafeAcce or,并且通过UnsafeAcce or访问了私有成员,这极大的方便了我们代码的编写,当然也聊到了它当前存在的一些局限性,那么它的性能到底如何?我们今天就来实际测试一下。 测试代码 话不多说,直接上代码,本次测试代码如下: ...[2023/9/20]
【.NET8】访问私有成员新姿势UnsafeAccessor(上)
前言 前几天在.NET性能优化群里面,有群友聊到了.NET8新增的一个特性,这个类叫UnsafeAcce or,有很多群友都不知道这个特性是干嘛的,所以我就想写一篇文章来带大家了解一下这个特性。 其实在很早之前我就有关注到这个特殊的特性,但是当时.NET8还没有正式发布,所以我也没有写文章,现...[2023/9/19]
记一次 .NET 某电力系统 内存暴涨分析
一:背景 1. 讲故事 前些天有位朋友找到我,说他生产上的程序有内存暴涨情况,让我帮忙看下怎么回事,最简单粗暴的方法就是让朋友在内存暴涨的时候抓一个dump下来,看一看大概就知道咋回事了。 二:Windbg 分析 1. 到底是谁吃了内存 这个问题说的再多也不为过,一定要看清楚这个程序是如何个性...[2023/9/19]
.NET 8 的 green thread 异步模型被搁置了
.NET 平台上的green thread 异步模型实验结果最近出来了,具体参见:https: github.com/dotnet/runtimelab/i ue 2398 ,实验结果总结一下就是在.NET和 ASP.NET Core中实现Green Thread是可行的。Green Threa...[2023/9/19]
.NET Core 实现Excel的导入导出
目录前言NPOI简介一、安装相对应的程序包1.1、在 “管理NuGet程序包” 中的浏览搜索:“NPOI”二、新建Excel帮助类三、调用3.1、增加一个“keywords”模型类,用作导出3.2、添加一个控制器3.3、编写导入导出的控制器代码3.3.1、重写“Close”函数3.3.2、添加...[2023/9/18]
基于 ActionFilters 的限流库DotNetRateLimiter使用
前言 在构建API项目时,有时出于安全考虑,防止访问用户恶意攻击,希望限制此用户ip地址的请求次数,减轻拒绝服务攻击可能性,也称作限流。接下来,我们就来学习开源库DotNetRateLimiter 如何轻松实现限流。 项目使用配置 安装Nuget包 在新建立的WebAPI项目中,通过Nuget...[2023/9/18]
.NET周刊【9月第2期 2023-09-10】
国内文章 使用 OpenTelemetry 构建 .NET 应用可观测性(2):OpenTelemetry 项目简介 https: www.cnblogs.com/eventhorizon/p/17678251.html 目录 前世今生 OpenTracing OpenCensus Ope...[2023/9/15]
.NET使用quartz+topshelf实现定时执行任务调度服务
一、项目开发 1.新建控制台应用(.NET Framework) 2.配置新项目,自行修改项目名称、位置和框架(建议使用.NET Framework4.5以上版本) 创建好的项目目录如下: 3.右键引用,点击添加引用(R)... 4.引用管理器-&...[2023/9/14]
最接地气的.NET微服务框架
前言: “人必有所执,方能有所成”,从2018年底我就开始规划要写一个.NET微服务框架,5年了,今天终于正式发布了。 正文: Wing 致力于打造一个功能强大、最接地气的.NET微服务框架,支持.NET Core 3.1+运行平台。支持Consul服务注册与发现...[2023/9/13]
.NET 8 Release Candidate 1 (RC1)现已发布,包括许多针对ASP.NET Core的重要改进!
这是我们计划在今年晚些时候发布的最终.NET 8版本之前的两个候选版本中的第一个。大部分计划中的功能和变更都包含在这个候选版本中,可以供您尝试使用。您可以在文档中找到完整的ASP.NET Core在.NET 8中的新功能列表。一些领域(尤其是Blazor)仍然有一些重大的变更待完成,我们预计将在...[2023/9/13]
在.NET 8 RC1 版本中 MAUI、ASP.NET Core 和 EF8 的新特性
从年初2 月份发布第一个预览版,经历7个预览版后,Microsoft 西雅图时间9月13日发布了 .NET 8 RC 1: https: devblogs.microsoft.com/dotnet/announcing-dotnet-8-rc1/[1], 这是该框架在 11 月初正式...[2023/9/13]
.NET中测量多线程基准性能
多线程基准性能是用来衡量计算机系统或应用程序在多线程环境下的执行能力和性能的度量指标。它通常用来评估系统在并行处理任务时的效率和性能。测量中通常创建多个线程并在这些线程上执行并发任务,以模拟实际应用程序的并行处理需求。 在此,我们用多个线程来完成一个计数任务,简单地测量系统的多线程基准性能,以...[2023/9/13]
.Net8 AOT+VMP简单的逆向分析
1.前言 测试下VMP加密.NET的强度,选了最新的.Net8+AOT编译,用VMP给它加壳。最后逆向下,简单的分析,本篇看下。 2.概述 一.前奏 首先一段简单的C#代码: namespace Test_{ internal cla Program{ stati...[2023/9/10]
.NET应用多语言-葡萄牙语软件,如何处理本地化,特别是数字的转换和计算
在葡萄牙语软件中,数字本地化通常涉及小数点和千位分隔符的使用。在葡萄牙语中,小数点用“,”表示,而不是英语中使用的“.”。千位分隔符通常是一个空格或一个点。 例如:62.5,其实代表的不是62.5 而是625M 为了正确地处理数字本地化,可以使用.NET框架中提供的Cul...[2023/9/9]
开源.NetCore通用工具库Xmtool使用连载 - 图形验证码篇
【Github源码】 《上一篇》 介绍了Xmtool工具库中的Web操作类库,今天我们继续为大家介绍其中的图形验证码类库。 图形验证码是为了抵御恶意攻击出现的一种设计;例如用户登录、修改密码等场景。在本类库中,将图形验证码的逻辑进行了抽象封装,能够通过同一套方法使用不同类型的图形验证码;让...[2023/9/9]
.NET周刊【9月第1期 2023-09-03】
国内文章 如何正确实现一个自定义 Exception https: www.cnblogs.com/kklldog/p/how-to-design-exception.html 最近在公司的项目中,编写了几个自定义的 Exception 类。提交 PR 的时候,sonarqube 提示这几个自...[2023/9/9]
使用 OpenTelemetry 构建 .NET 应用可观测性(2):OpenTelemetry 项目简介
目录前世今生OpenTracingOpenCensusOpenTelemetryOpenTelemetry 项目介绍OpenTelemetry SpecificationSignalsContext & PropagationOpenTelemetry ProtocolOpenTelem...[2023/9/6]
基于ASP.NET ZERO,开发SaaS版供应链管理系统
前言 在园子吸收营养10多年,一直没有贡献,目前园子危机时刻,除了捐款+会员,也鼓起勇气,发篇文助力一下。 2018年下半年,公司决定开发一款SaaS版行业供应链管理系统,经过选型,确定采用ABP(ASP.NET Boilerplate)框架。为了加快开发效率,购买了商业版的 ASP.NET ...[2023/9/6]
【译】.NET 8 拦截器(interceptor)
通常情况下,出于多种原因,我不会说我喜欢写关于预览功能的文章。我的大多数帖子旨在帮助人们解决他们可能遇到的问题,而不是找个肥皂盒或打广告。但是我认为我应该介绍这个 .NET 预览特性,因为它是我在 .NET 生态系统中渴望已久的东西(猴子补丁,monkey patching,在运行时动态修改...[2023/9/6]
.NET6.0实现IOC容器
.NET6.0实现IOC容器 IOC的作用这里省略…只对如何使用进行说明。 1. 创建一个.NET6应用程序 这里使用 .NET6.0 WebAPI 应用 2. 声明接口 public interface IAuthService { bool CheckToken(...[2023/9/6]
.NET开源最全的第三方登录整合库 - CollectiveOAuth
前言 我相信很多同学都对接过各种各样的第三方平台的登录授权获取用户信息(如:微信登录、支付宝登录、GitHub登录等等)。今天给大家推荐一个.NET开源最全的第三方登录整合库:CollectiveOAuth。 官方项目介绍 .Net平台(C#) 史上最全的整合第三方登录的开源库 => 环...[2023/9/6]
给微软.Net runtime运行时提交的几个Issues
前言 因为目前从事的CLR+JIT,所以会遇到一些非常底层的问题,比如涉及到微软的公共运行时和即时编译器或者AOT编译器的编译异常等情况,这里分享下自己提的几个I ues。原文:微软.Net runtime运行时提交的几个I ues I ues 一.i ues one 第一个System.N...[2023/9/4]
dotnet SemanticKernel 入门 自定义变量和技能
本文将告诉大家如何在 SemanticKernel 框架内定义自定义的变量和如何开发自定义的技能 本文属于 SemanticKernel 入门系列博客,更多博客内容请参阅我的 博客导航 自定义变量是一个非常有用的技能,自定义变量可以让炼丹师和程序员进行并行工作。由炼丹师对 AI 模型进...[2023/9/4]
.NET周刊【8月第4期 2023-08-27】
国内文章 AgileConfig-1.7.0 发布,支持 SSO ?????? https: www.cnblogs.com/kklldog/p/agileconfig-170.html AgileConfig 已经好久好久没有更新过比较大的功能了。一是 AgileConfig 本身的定位就是...[2023/9/1]
.NET Core WebAPI 基础 文件上传
昨天分享了一个在WebApi中如何接收参数的文章 传送门,然后有新人小伙伴就问了,那文件上传呢,这个怎么弄,借此我写了一个小demo,分享给大家。 通常来说,上传文件,我们是使用POST,还是老规矩先上代码: txt文件 这是需要上传的txt文件。 指定文件参数名 代码 [H...[2023/8/30]
WPF实现Element UI风格的日期时间选择器
背景 业务开发过程中遇到一个日期范围选择的需求,和Element UI的DateTimePicker组件比较类似,由两个日历控件组成,联动选择起始时间和结束时间。 问题 WPF中提供了一个DatePicker的控件,主要由DatePickerTextBox、Button和一个Calendar组...[2023/8/29]
使用 OpenTelemetry 构建 .NET 应用可观测性(1):什么是可观测性
目录什么是系统的可观测性(Observability)为什么软件系统需要可观测性可观测性的三大支柱日志(Logging)指标(Metrics)分布式追踪(Distributed Tracing)Trace 和 SpanUnknow Unknows VS Known Unknowns数据的关联 -...[2023/8/29]
如何将现有的`Blazor`项目的主题切换写的更好看?
如何将现有的Blazor项目的主题切换写的更好看? 在现有的系统当中,我们的主题切换会比较生硬,下面我们将基于Masa Blazor实现好看的扩散主题切换的样式效果。 安装MASA.Template dotnet new install MASA.Template 创建Masa Blaz...[2023/8/29]
.NET周刊【8月第3期 2023-08-20】
国内主题 抓的是周树人,与我鲁迅有什么关系? https: www.cnblogs.com/JulianHuang/p/17642511.html 问题:作者看到了一个关于Dictionary.Clear和new Dictionary的问题,想要探究为什么在foreach字典的过程中,这两种操...[2023/8/29]
.NET API 中的 FromRoute、FromQuery、FromBody 用法
原文链接:https: www.cnblogs.com/ysmc/p/17663663.html 最近技术交流群里,还有不少小伙伴不知道 FromRoute、FromQuery、FromBody 这几个特性是怎么使用的,也不清楚它们之间的区别在哪里,特意写下这个文章,希望可以帮助...[2023/8/29]
玄 - 利用DLL通知回调函数注入shellcode(上)
序 偶然看到某国外大佬发布新技术-“Threadle ”进程注入技术,据说可过EDR(确实可),总结该技术原理 - 在远程目标进程中利用DLL通知回调机制执行shellcode,项目地址在这里。 传统进程注入四步法: 获取远程进程句柄(OpenProce 函数) 在远程进程中分配内存(Vir...[2023/8/18]
[MAUI]在.NET MAUI中实现可拖拽排序列表
.NET MAUI 中提供了拖放(drag-drop)手势识别器,允许用户通过拖动手势来移动控件。在这篇文章中,我们将学习如何使用拖放手势识别器来实现可拖拽排序列表。在本例中,列表中显示不同大小的磁贴(Tile)并且可以拖拽排序。 使用.NET MAU实现跨平台支持,本项目可运行于Andr...[2023/8/16]
.Net AsyncLocal介绍
AsyncLocal的基本概念 AsyncLocal是一个在异步环境中存储和传递状态的类型。它允许你在线程或任务之间共享数据,而不会受到异步上下文切换的影响。 每一个异步的AsyncLocal的数据都是独立的 AsyncLocal主要是用来在同一个异步控制流内共享对象的,如:一个web请求经过...[2023/8/16]
.NET周刊【8月第1期 2023-08-06】
国内文章 NativeBuferring,一种零分配的数据类型(上篇) https: www.cnblogs.com/artech/p/17586781.html 之前一个项目涉及到针对海量(千万级)实时变化数据的计算,由于对性能要求非常高,我们不得不将参与计算的数据存放到内存中,并通过检测数...[2023/8/11]
.Net Web API 006 Controller上传大文件
1、上传大文件的方式 上传大文件就需要一段一段的上传,主要是先在客户端获取文件的大小,例如想一次传256kb,那就按照256kb分割。分割后又两种上传方式。 (1)逐个数据段读取,然后调用API上传,把数据追加到文件上。上传完这一段,接着传下一段,直到上传完毕。 (2)方式与(1)类似,只...[2023/8/9]
.Net Web API 005 Controller上传小文件
1、附属文件对象定义 一般情况下,系统里面的文件都会附属一个对象存在,例如用户的头像文件,会附属用户对象存在。邮件中的文件会附属邮件存在。所以在系统里面,我们会创建一个附属文件对象,命名为AttachedFileEntity。其定义如下所示。 <summary> 附属文...[2023/8/7]
揭秘 .NET 中的 TimerQueue(下)
目录前言TimerQueue 与 OS 定时器的交互按需注册定时器AutoResetEvent 封装 OS 定时器定时任务的管理总结 前言 上文给大家介绍了 TimerQueue 的任务调度算法。 https: www.cnblogs.com/eventhorizon/p/17557821...[2023/8/7]
Blazor前后端框架Known-V1.2.10
V1.2.10 Known是基于C#和Blazor开发的前后端分离快速开发框架,开箱即用,跨平台,一处代码,多处运行。 Gitee: https: gitee.com/known/Known Github:https: github.com/known/Known 概述 基于C#和Blaz...[2023/8/4]
asp.net core之路由
在 ASP.NET Core 中,路由是一个非常重要的概念,它决定了如何将传入的请求映射到相应的处理程序。本文将详细介绍 ASP.NET Core 中的路由系统,包括路由的基本原理、路由模板、路由参数、路由约束等内容,并提供相应的代码示例。 基本示例 var builder = WebAp...[2023/8/4]
.NET周刊【7月第5期 2023-07-30】
国内文章 PaddleSharp:跨越一年的版本更新与亮点 https: www.cnblogs.com dflysha/p/20230724-paddlesharp-in-a-year.html 我始终坚信,开源社区是技术进步的重要推动力,也是我抽出我业余时间,投入到PaddleSharp这...[2023/8/4]
记一次 .NET某培训学校系统 内存碎片化分析
一:背景 1. 讲故事 前些天有位朋友微信上找到我,说他们学校的Web系统内存一直下不去,让我看下到底是怎么回事,老规矩让朋友生成一个dump文件丢给我,看一下便知。 二:WinDbg 分析 1. 托管还是非托管 要想看托管还是非托管,可以用 !addre -summary 观察下内存段。 ...[2023/8/4]
.NET Core WebAPI中使用Swagger(完整教程)
一、Swagger简介 1.1-什么是Swagger? Swagger是一个规范且完整的框架,用于生成、描述、调试和可视化Restfull风格的Web服务。 Swagger的目标是对Rest API定义一个标准且和语言无关的接口,可以让人和计算机拥有无需访问源码、文档或网络流量监控就可以发现和连...[2023/8/4]
asp.net core之异常处理
在开发过程中,处理错误是一个重要的方面。ASP.NET Core提供了多种方式来处理错误,以确保应用程序的稳定性和可靠性。 TryCatch TryCatch是最常见也是最基础的一种异常处理方式,只需要用TryCatch把执行代码包起来,即可捕获异常。 格式如下: try { ...[2023/8/4]