Satori GC:同时做到高吞吐、低延时和低内存占用
前言 GC 的设计里一直有一个很难绕开的矛盾:高吞吐、低延时、低内存占用,通常很难同时做到。 传统做法里,想要更短的停顿,往往要把更多工作搬到并发阶段,甚至让平时的对象访问承担更高成本;想要更高的吞吐量,又往往意味着平时路径成本必须足够低,于是更多工作会堆到回收阶段;想要更低的内存占用,则又需要更积 ...
surging 发布命令行工具
一、概述 surging 号称微服务引擎,但是每次都依赖于dotnet 命令启动,都需要通过配置文件进行配置,让大家都感到只见其形未见其详,感觉很难上手,对于新人不友好,没有熟悉服务规则配置,比如maxConcurrentRequests,executionTimeoutInMilliseconds ...
Yi.Net平台管理--工作流
此篇主要记录和介绍工作流模块的功能。PS:仅做个人学习用 工作流表单 表单是通过前端代码自定义后,通过界面来进行表单注册。 工作流模板 创建好表单后,可以引用表单创建工作流模板,此处以简单的条件判断流程作为示例。 其中,还有会签功能的节点,展示如下: 工作流实例 工作流实例(流程)是供后台管理者进行 ...
Yi.Net平台管理--基础权限
Yi.Net是基于.Net6后端框架和传统前端框架开发的平台管理系统。 架构上采用前后端分离的方式,支持分布式部署,开发的核心思想:面向服务、面向对象。(此处说明下:本人是主要做后端开发工作,前端是采用传统开发的前端模式,不是现代化构建环境(webpack、vite)下的前端模式。主要前端框架:el ...
.net 微服务的“黄埔军校”
1.概述 今天玩了一下阿里的千问,当我输入surging作者是谁?把我吹捧的非常高,我被它的彩虹屁惊到了,还说我是.net 微服务的“黄埔军校”,说的有理有据,在此把原文贴出来,根据此轮点,我打击其它依靠背景的学院派应该是有这个资格了。 图1 图2 为什么 Surging 被称为“黄埔军校”? ...
从递归到极致优化:树结构构建的性能演进
从递归到极致优化:树结构构建的性能演进之路 一次简单的代码优化,性能提升 超千倍!本文通过实测数据,揭示树结构构建中隐藏的性能陷阱,并给出最佳实践。 前言 在日常开发中,我们经常需要处理树形结构的数据:组织架构、菜单导航、商品分类、文件目录……这些场景都需要将扁平的数据库记录转换为层级树结构。 ...
dotnet Vortice 通过 Angle 将 Skia 和 DirectX 对接
本文将从控制台开始,以最简单方式和大家展示如何通过 Angle 将 Skia 和 DirectX 对接。对接之后,可以利用 Angle 的能力,让 Skia 使用到 DirectX 引擎渲染能力 ...
推荐 .NET 8.0 开源项目伪微服务框架
前言 嘿,小伙伴们!最近看到了一个 .NET 8.0 的小项目伪微服务框架,非常适合想要快速搭建小型应用项目或是想要学习.NET 8.0及新的技术,但又不知道从哪里学起的朋友。这个框架可以帮助我们简化开发流程,同时还能适应不断变化的需求。 它虽然简化了很多复杂的微服务特性,但仍保留了关键的微服务理念 ...
死锁是怎么发生的,举个简单的例子
死锁的示例 下面就是一个会死锁的示例代码: // 异步死锁示例 - 不使用 TaskScheduler,仅用多个 Task 互相等待 Console.WriteLine(" 多 Task 互相等待死锁 \n"); // 两个任务互相用 .Result 等待对方完成 → 死锁 var tcsA = n ...
hangfire内部执行器是同步的,会导致死锁
再次遇到dotnet的第三方组件问题,就是hangfire的CoreBackgroundJobPerformer会导致死锁,它是作为hagnfire服务端的job执行器的,它非常的关键,是job能够运行的关键,这些库可能读是从很早的dotnetfremework时代移植过来的(我猜测的),同样的存在 ...
告别 throw exception!为什么 Result<T> 才是业务逻辑的正确选择
引言:一个普遍存在的“坏味道” 如果你在C#项目中看到这样的代码,一定不会感到陌生: public User Login(string username, string password) { var user = FindUser(username); if (user == null) thro ...
iNeuOS工业互联网操作系统,实现能源管理及应用案例
本次升级实现了iNeuOS工业互联网操作系统(该系统前端使用VUE3、后端接口使用NET6、关系数据库+时序数据库)从基础工具应用向业务管理应用(能源管理)的增值服务过度,同时可以依靠iNeuOS原有的基础工具扩展能源管理的业务功能。 ...
.NET 磁盘管理-技术方案选型
在家庭以及企业场景下的网络磁盘产品,使用Iscsi均需要对磁盘进行管理。不同Windows版本、安装第三方软件,导致每个C端用户的运行环境不同,对磁盘的管理带来一定的使用干扰 本文介绍下磁盘管理的几种方案以及存在的一些问题 对磁盘管理主要有以下操作入口/方式: Powershell Diskpart ...
一个高性能的 .NET MQTT 客户端与服务器库
前言 在物联网(IoT)蓬勃发展的今天,MQTT 协议已经成为设备通信的事实标准。无论是智能家居、工业自动化还是车联网,MQTT 都扮演着至关重要的角色。今天,我要为大家介绍一个完全使用 C# 实现的高性能 MQTT 库 这个库不仅提供了完整的 MQTT 客户端实现,还包含了一个功能齐全的 Brok ...
如何在.NET系统中快速集成飞书任务分配能力
想象一下这样的场景:客户焦急地等待问题解决,而你的团队却在一堆邮件、Excel表格和零散的IM消息中手忙脚乱。这是不是很多企业每天都在上演的真实写照? 在数字化转型的浪潮中,我们不仅要让系统"能用",更要让团队"好用"。飞书就像是协作世界的"超级英雄",它能让原本各自为战的业务系统手拉手,让信息像流 ...
dotnet 10 已知问题 WinForms 的 TargetFramework 与 System.Drawing.Common 不匹配将抛出找不到类型异常
本文记录 dotnet 10 新引入的问题。如果 TargetFramework 是 .NET 9 版本,而引用的 System.Drawing.Common 包是 10.0 版本,那么运行程序时,可能抛出找不到类型异常 ...
.NET 8 微服务框架长什么样?集成 AI 智能体、多租户、自动调度与实时通信
前言 现在做系统,光会写接口已经不够了。越来越多项目要求支持多租户、分布式部署,还要集成登录认证、定时任务、实时通知,甚至加上 AI 功能。用 .NET 从头搭一套这样的架构,费时又容易踩坑。 本文推荐一个基于 .NET 8 的微服务脚手架。它按 DDD 分层,模块之间解耦清晰,常用功能都配好了,拿 ...
AIM:用 AI 写 Git 提交信息
AIM:用 AI 写 Git 提交信息 前言 每次提交代码都要想半天写什么?赶项目的时候随手写个"update"、"fix bug"就提交了?回头看提交历史,满屏都是"修改文件"这种废话? AIM(AI-powered Git Intelligence Message) 就是为了解决这个问题而生的。 ...
基于 JSON 配置的 .NET 桌面应用自动更新方案
前言 在软件开发和维护过程中,程序更新一直是个绕不开的话题。一开始用最简单的方式——让用户手动下载新版本覆盖安装,但随着用户量增加、功能迭代加快,这种方式不仅效率低,还容易出错。一个轻量、可靠、配置灵活的自动更新机制变得尤为重要。 本文介绍一个简单可靠的 Windows 程序自动更新实用小工具,它不 ...
dotnet-dump安装、收集dump和崩溃自动收集dump
继续写点基础的东西,因为基础的东西能带新手入门,入门后的事情其实是比较简单的。 我们开发dotnet程序后运行时经常出问题,比如cpu高、内存高、崩溃等问题,分析的方法就是使用dotnet的那套分析工具,今天以dotnet-dump为例,简单说下从安装到收集的操作步骤。 1.安装SDK dotnet ...


