一:背景 1. 讲故事 上周有位朋友找到我,说他的程序经常会偶发性崩溃,一直没找到原因,自己也抓了dump 也没分析出个所以然,让我帮忙看下怎么回事,那既然有 dump,那就开始分析呗。 二:Windbg 分析 1. 到底是哪里的崩溃 一直跟踪我这个系列的朋友应该知道分析崩溃第一个命令就是 !ana ...
BouncyCastle 是一个流行的 Java 加解密库,也支持在 .NET 平台上使用。下面是 BouncyCastle 在 .NET 下使用的一些常见功能,包括 AES、RSA、MD5、SHA1、DES、SHA256、SHA384、SHA512 等。 在开始之前,请确保你已经将 BouncyC ...
在 C# 中,可以使用不同的方法调用内部或私有方法。下面分别介绍通过反射、MethodInfo.CreateDelegate、表达式(树)、动态方法(call)、动态方法(calli)这五种方法。 1. 通过反射方法 使用反射可以访问和调用内部或私有方法。 using System; using S ...
async/await 是 C# 中异步编程的关键特性,它使得异步代码编写更为简单和直观。下面深入详细描述了 async/await 的使用场景、优点以及一些高级使用方法,并提供了相应的实例源代码。 使用场景: I/O 操作: 异步编程特别适用于涉及 I/O 操作(如文件读写、网络请求等)的场景。在 ...
MQTTnet 是一个高性能的MQTT类库,支持.NET Core和.NET Framework。 MQTTnet 原理: MQTTnet 是一个用于.NET的高性能MQTT类库,实现了MQTT协议的各个层级,包括连接、会话、发布/订阅、QoS(服务质量)等。其原理涉及以下关键概念: MqttCli ...
前面两篇文章主要是介绍了如何解决高并发情况下资源争夺的问题。但是现实的应用场景中除了要解决资源争夺问题,高并发的情况还需要解决更多问题,比如快速处理业务数据等, 本篇文章简要罗列一下与之相关的更多技术细节。 1、异步编程:使用async和await关键字进行异步编程,这可以避免阻塞线程,提高程序的响 ...
chatgpt接口开发笔记3: 语音识别接口 1.文本转语音 1、了解接口参数 接口地址: POST https://api.openai.com/v1/audio/speech 下面是接口文档描述内容: 参数: { "model": "tts-1", "input": "你好,我是饶坤,我是ter ...
C#从字符串中提取固定步长的子字符串 C#的Substring方法只能提取固定长度的子字符串,不能直接提取固定步长的子字符串。因此,我们需要自己编写一个方法来实现这个功能。 这个方法可以用于从字符串中提取固定步长的子字符串。例如,如果 str 是 "HelloWorld",finger 是 2,st ...
在.NET中,Microsoft.Extensions.Logging是一个灵活的日志库,它允许你将日志信息记录到各种不同的目标,包括数据库。在这个示例中,我将详细介绍如何使用Microsoft.Extensions.Logging将日志保存到MySQL数据库。我们将使用Entity Framewo ...
当使用Autofac处理一个接口有多个实现的情况时,通常会使用键(key)进行区分或者通过IIndex索引注入,也可以通过IEnumerable集合获取所有实例,以下是一个具体的例子,演示如何在Autofac中注册多个实现,并通过构造函数注入获取指定实现。 首先,确保你已经安装了Autofac Nu ...
在字符串操作中Trim方法只能去掉字符串对象前端和后端的空格,但是,如果空格出现在中间如何去除呢? 这里可以使用StringBuilder来操作字符串,StringBuilder操作字符串无疑是最为方便高效的。现在利用StringBuilder类中的Replace方法去掉字符串中所有的空格。 rep ...
一:背景 1. 讲故事 前几天有位朋友找到我,说他的程序会偶发性的报 存储空间不足,无法处理此命令 的错误,让我帮忙看下到底怎么回事,哈哈,人家是有备而来,dump都准备好了,话不多说,直接分析开干。 二:WinDbg 分析 1. 捕获dump中的异常 一般来讲别人说的只是一个参考,我们需要自己到d ...
在 .NET 开发中,Serilog 是一款广受欢迎的日志库,它提供了强大的日志记录功能,具有丰富的特性和高度的可扩展性。Serilog 的优秀之处包括: 可扩展性: Serilog 可以轻松扩展以满足不同的日志记录需求,例如日志存储、格式化和过滤。它支持各种插件和自定义扩展,让你可以根据项目的具体 ...
在.NET中,Microsoft.Extensions.Logging是一个广泛使用的日志库,用于记录应用程序的日志信息。它提供了丰富的功能和灵活性,使开发人员能够轻松地记录各种类型的日志,并将其输出到不同的目标,包括日志文件。本文将详细介绍Microsoft.Extensions.Logging的 ...
.net平台使用SDK快速对接各大语言模型 1.项目介绍 最近,在做GPT项目时,发现各个平台的接口规范和参数不同,需要根据不同平台和模型写多种接口,比较麻烦,不想Python那样有丰富和方便的AI环境, 如果c#有一个SDK可以方便调用各种平台模型就好了,这是AllInAI.Sharp.API萌芽 ...
Parallel.ForEach Parallel.ForEach 是一个用于在集合上并行执行迭代操作的强大工具。它通过有效地利用多核处理器的能力来提高性能。Parallel.ForEach 不仅能够简化并行编程,而且它在执行简单循环时可以提供比传统迭代更好的性能。 下面是一个简单的示例,演示了如何 ...
在.NET Core中,使用Action和Options参数方式配置服务并将配置信息对象注册到IServiceCollection的好处在于,它提供了更高级别的可配置性和可扩展性。这种模式允许将配置信息与服务的实现分离,使配置更加模块化和可管理。通过将配置信息对象注册到IServiceCollect ...
这是我在C#中第一次用到json,以前都用别的替代,但是了解了之后发现这个是真的好用。 首先,有几个网站先贴上来保存一下。 JSON 模式验证器 - Newtonsoft (jsonschemavalidator.net),顾名思义,就是验证我们的json格式是否正确。 Introduction ( ...
在本示例中,我们将使用Autofac和AspectC(Autofac.Extras.DynamicProxy2)来演示如何实现AOP(面向切面编程)。我们将创建一个简单的C#控制台应用程序,并应用AOP以解决日志记录的问题。首先,让我们讨论AOP的用途和目标。 AOP(面向切面编程)的用途 AOP是 ...
一:背景 1. 讲故事 在高级调试的旅程中,经常会有一些朋友问我什么是 工作集(内存),什么是 提交大小,什么是 Virtual Size, 什么是 Working Set 。。。截图如下: 既然有很多朋友问,这些用口头也不怎么好描述,刚好上午有时间就系统的聊一下吧。 二:内存术语解读 1. Vir ...