中间件引起的接口请求参数被拦截,导致参数一直是null,这问题困扰了我很久,值得记录 1.场景 1.1 客户端使用framework4.8做一个接口请求发送: public static class ApiHelper { private static string Internal_ApiUrl ...
关于多线程本质的思考和使用技巧 前言 近来,公司因为项目过多,人手不足,一直在进行面试。过程中同事总是问道:多线程是什么,谈谈你对多线程的理解?以我愚见,这并不是一个可以在面试中快速回答的问题,如果面试的时候向我提问,我觉得我无法有条理的回答这个问题。因此,以总结多线程开发为目标,我写下这篇笔记 ...
一:背景 1. 讲故事 当 .NET程序 在Linux上崩溃时,我们可以配置一些参考拿到对应程序的core文件,拿到core文件后用windbg打开,往往会看到这样的一句信息 Signal SIGABRT code SI_USER (Sent by kill, sigsend, raise),参考如 ...
有小伙伴反馈,System.Text.Json使用的序列化问题,经了解是System.Text.Json不兼容System.Runtime.Serialization.DataMemenber属性标记 来个demo, 1 var testMode = new TestMode(); 2 testMo ...
这里只贴出支付的操作,如果 需要其它方法(退款、查询 、关闭订单等)可以发邮件9067874006@qq.com。 需要准备的参数 AppID(小程序ID):wx7405 9e7d B2B商户号:17 637 沙箱AppKey:NYf9s TvgXGCVqf 或 现网AppKey:HcRiLtJa ...
一:背景 1. 讲故事 本来想研究一下 IL编织和反向补丁的相关harmony知识,看了下其实这些东西对 .NET高级调试 没什么帮助,所以本篇就来说一些比较实用的反射工具包吧。 二:反射工具包 1. AccessTools AccessTools这个工具包用来简化反射操作,你如果看过 harmon ...
锁是用来防止在多用户或多线程环境中同时对同一数据进行修改,从而避免数据冲突和损坏。 更新锁 用于避免死锁的锁类型,通常用于对行进行更新时。它防止其他事务对资源进行修改,但允许其他事务进行读取。 示例:在更新某一行数据之前,SQL Server 会首先加上更新锁。 使用 WITH (UPDLOCK) ...
一:背景 1. 讲故事 开局一张表,故事全靠编,为了能够承上启下,先把参数列表放出来。 参数名 说明 __instance 访问非静态方法的实例(类似 this)。 __result 获取/修改返回值,要想修改用 ref。 __resultRef 修改返回引用(方法返回是 ref 返回 )。 __s ...
一:背景 1. 讲故事 前面几篇我们说完了 harmony 的几个注入点,这篇我们聚焦注入点可接收的几类参数的解读,非常有意思,在.NET高级调试 视角下也是非常重要的,到底是哪些参数,用一张表格整理如下: 参数名 说明 __instance 访问非静态方法的实例(类似 this)。 __resul ...
一:背景 1. 讲故事 上一篇我们讲到了 注解特性,harmony 在内部提供了 20个 HarmonyPatch 重载方法尽可能的让大家满足业务开发,那时候我也说了,特性虽然简单粗暴,但只能解决 95% 的问题,言外之意还有一些事情做不到,所以剩下的 5% 只能靠 完全手工 的方式了。 二:注解特 ...
表达式 表达式是由运算符和操作数组成的 运算符设置将对操作数进行什么样的运算 操作数包括文本、常量、变量和表达式 在C#中,如果表达式最终的计算结果为所需的类型值,表达式就可以出现在需要值或对象的任意位置 运算符 运算符是一些特殊的符号,主要用于数学函数、一些类型的赋值语句和逻辑比较方面 C#中提供 ...
init关键字是C#9新增的语法,用于属性或索引器中定义访问器。使用init关键字定义的访问器具有init-only的特性,即只能在对象构造期间对属性或索引器元素进行赋值,对象构造完成后,不可以再修改属性或索引器元素的值。 init关键字解决了什么问题 实际上,我个人认为init-only属性和re ...
一:背景 1. 讲故事 为什么要开这么一个系列,是因为他可以对 .NET SDK 中的方法进行外挂,这种技术对解决程序的一些疑难杂症特别有用,在.NET高级调试 领域下大显神威,在我的训练营里也是花了一些篇幅来说这个,今天我准备用10篇左右来详细聊一聊,供学员和同行们欣赏,详细的文档参考:https ...
一次Async/await 原理探索 前言 本文记录一次对 C# 中 async/await 异步编程机制的原理探索过程。异步编程的实现机制较为复杂,本文旨在通过实际代码及反编译分析,对其运行逻辑进行初步梳理和理解,供参考和学习使用。 一、前置示例 首先,通过一个简单的控制台应用演示 async/a ...
使用Roslyn的CSharpScript类运行C#脚本时,会默认包含一部分程序集,默认包含的程序集引用可以直接使用,而其他程序集则需要额外提供引用。本文简单描述了使用Roslyn的CSharpScript类实运行C#脚本时,如何引用程序集。 情景再现 首先创建一个C#类库,代码很简单,提供一个静态 ...
变量的基本概念 变量本身被用来存储特定类型的数据,可以根据需要随时改变变量中所存储的数据值 变量具有名称、类型和值 变量名是变量在程序源代码中的标识 变量类型确定它所代表的内存的大小和类型 变量值是指它所代表的内存块中的数据 在程序执行过程中,变量的值可以发生变化 变量使用之前需要先声明变量,即指定 ...
一:背景 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集本人以前为公司内部开发的ORM之众长 再次进化而来,性能更好、更通用 其一、历时3个多月,已经发布了5个大版本9个小版本 在此期间深感做开源项目非常的不易 好在现在本人想要的功能基本都已经开发完成 其二、开源项目功能需要更完整 公司内部项目只要能用就行 其三、开源项目文档要更完善 ...