刷新
.NET外挂系列:4. harmony 中补丁参数的有趣玩法(上)

博主头像 一:背景 1. 讲故事 前面几篇我们说完了 harmony 的几个注入点,这篇我们聚焦注入点可接收的几类参数的解读,非常有意思,在.NET高级调试 视角下也是非常重要的,到底是哪些参数,用一张表格整理如下: 参数名 说明 __instance 访问非静态方法的实例(类似 this)。 __resul ...

用 Sidecar 容器为 .NET Core 应用做诊断和性能分析

博主头像 在微服务架构和云原生应用广泛采用的今天,.NET Core 应用被越来越多地部署在 Kubernetes 集群中。然而,一旦这些应用出现性能瓶颈,仅靠传统的日志和指标可能无法定位问题的根本原因。 从 .NET Core 3 开始,微软推出了一系列跨平台的运行时诊断工具,比如: dotnet-coun ...

.NET外挂系列:3. 了解 harmony 中灵活的纯手工注入方式

博主头像 一:背景 1. 讲故事 上一篇我们讲到了 注解特性,harmony 在内部提供了 20个 HarmonyPatch 重载方法尽可能的让大家满足业务开发,那时候我也说了,特性虽然简单粗暴,但只能解决 95% 的问题,言外之意还有一些事情做不到,所以剩下的 5% 只能靠 完全手工 的方式了。 二:注解特 ...

C#表达式与运算符

博主头像 表达式 表达式是由运算符和操作数组成的 运算符设置将对操作数进行什么样的运算 操作数包括文本、常量、变量和表达式 在C#中,如果表达式最终的计算结果为所需的类型值,表达式就可以出现在需要值或对象的任意位置 运算符 运算符是一些特殊的符号,主要用于数学函数、一些类型的赋值语句和逻辑比较方面 C#中提供 ...

C#语法: init关键字

博主头像 init关键字是C#9新增的语法,用于属性或索引器中定义访问器。使用init关键字定义的访问器具有init-only的特性,即只能在对象构造期间对属性或索引器元素进行赋值,对象构造完成后,不可以再修改属性或索引器元素的值。 init关键字解决了什么问题 实际上,我个人认为init-only属性和re ...

.NET外挂系列:1. harmony 基本原理和骨架分析

博主头像 一:背景 1. 讲故事 为什么要开这么一个系列,是因为他可以对 .NET SDK 中的方法进行外挂,这种技术对解决程序的一些疑难杂症特别有用,在.NET高级调试 领域下大显神威,在我的训练营里也是花了一些篇幅来说这个,今天我准备用10篇左右来详细聊一聊,供学员和同行们欣赏,详细的文档参考:https ...

ASP.NET Core EFCore 属性配置与DbContext 详解

博主头像 本文将深入探讨 ASP.NET Core 中 EFCore 的实体属性配置方法及 DbContext 的核心用法,帮助开发者高效管理数据模型与数据库交互。 一、属性配置 实体属性配置是定义模型与数据库映射的核心,EFCore 提供两种方式:数据注解和 Fluent API。 1. 数据注解(Data ...

记一次ASP.NET CORE线上内存溢出问题与dotnet-dump的排查方法

博主头像 前言 这周系统更新了一个版本,部署到线上. 客户反馈整个系统全部都卡顿,随即我们上服务器检查 发现整个服务器内存竟然达到了20-30G的占用..如图: 其中有一个订单服务,独自占用13-18G内存, 当它重启以后,内存会降低下来一段时间,但过不了多久 就又会增长上去 高度怀疑出现了内存溢出的情况,由 ...

.NET 8 开发的跨平台多商户第三方支付SDK

博主头像 前言 快速发展的互联网应用开发中,支付功能已成为各类平台不可或缺的一环。为了帮助大家更高效地接入主流支付渠道,推荐一套基于 .NET 开发的第三方支付 SDK。该 SDK 支持跨平台运行,适用于多种操作系统和设备,并提供对支付宝和微信支付的全面支持。 项目介绍 本SDK 以简化接入流程、提升开发效率 ...

一次Async/await 原理探索

博主头像 一次Async/await 原理探索 前言 本文记录一次对 C# 中 async/await 异步编程机制的原理探索过程。异步编程的实现机制较为复杂,本文旨在通过实际代码及反编译分析,对其运行逻辑进行初步梳理和理解,供参考和学习使用。 一、前置示例 首先,通过一个简单的控制台应用演示 async/a ...

使用Roslyn运行C#脚本时如何引用程序集

博主头像 使用Roslyn的CSharpScript类运行C#脚本时,会默认包含一部分程序集,默认包含的程序集引用可以直接使用,而其他程序集则需要额外提供引用。本文简单描述了使用Roslyn的CSharpScript类实运行C#脚本时,如何引用程序集。 情景再现 首先创建一个C#类库,代码很简单,提供一个静态 ...

变量和常量

博主头像 变量的基本概念 变量本身被用来存储特定类型的数据,可以根据需要随时改变变量中所存储的数据值 变量具有名称、类型和值 变量名是变量在程序源代码中的标识 变量类型确定它所代表的内存的大小和类型 变量值是指它所代表的内存块中的数据 在程序执行过程中,变量的值可以发生变化 变量使用之前需要先声明变量,即指定 ...

.NET程序启动就报错,如何截获初期化时的问题json

博主头像 一:背景 1. 讲故事 前几天训练营里的一位朋友在复习课件的时候,程序一跑就报错,截图如下: 从给出的错误信息看大概是因为json格式无效导致的,在早期的训练营里曾经也有一例这样的报错,最后定位下来是公司的电脑安全软件导致的,一旦有非托管调试器,安全软件就会加密 runtimeconfig.json ...

条件量练习

博主头像 /********************************************************************************* * * 设计程序,创建三个线程,任务1条件满足时解除任务二的挂起状态,任务3用于控制x的值 * author:jindouliu202 ...

线程相关函数-条件量

博主头像 使用条件量可以让不满足条件的线程处于挂起状态,等待条件满足时由别的线程进行唤醒 pthread_cond_init函数 此函数可以对条件量进行初始化 pthread_cond_t cond = PTHREAD_COND_INITIALIZER; int pthread_cond_init(pthre ...

ShadowSql.net之开源不易

ShadowSql集本人以前为公司内部开发的ORM之众长 再次进化而来,性能更好、更通用 其一、历时3个多月,已经发布了5个大版本9个小版本 在此期间深感做开源项目非常的不易 好在现在本人想要的功能基本都已经开发完成 其二、开源项目功能需要更完整 公司内部项目只要能用就行 其三、开源项目文档要更完善 ...

如何反向绘制出 .NET程序 异步方法调用栈

博主头像 一:背景 1. 讲故事 这个问题源于给训练营里的一位朋友分析的卡死dump,在分析期间我需要知道某一个异步方法的调用栈,但程序是 .framework 4.8 ,没有sos后续版本独有的 !dumpasync 命令,所以这就比较搞了,但转念一想,既然 !dumpasync 能把调用栈搞出来,按理说我 ...

初识C#

博主头像 命名空间 C#程序是利用命名空间组织起来的 命名空间既用作程序的“内部”组织系统,也用作向“外部”公开的组织系统(即一种向其他程序公开自己拥有的程序元素的方法) 如果要调用某个命名空间中的类或者方法,需要首先使用using指令引入命名空间,using指令将命名空间名所标识的命名空间内的类型成员导入当 ...

<1···456···50>