国内文章
你知道.NET的字符串在内存中是如何存储的吗?
https://www.cnblogs.com/artech/p/string-memory-layout.html
毫无疑问,字符串是我们使用频率最高的类型。但是如果我问大家一个问题:“一个字符串对象在内存中如何表示的?”,我相信绝大部分人回答不上来。我们今天就来讨论这个问题。
使用 C# 进行AI工程开发-基础篇(四):dotnet script 与 Polyglot
https://zhuanlan.zhihu.com/p/645258959
本篇介绍两个工具,有了它们,csharp 可以获得类似 python 的使用体验。这两个工具,一个是脚本工具 dotnet script,另一个是笔记工具 polyglot,vscode 对它们的支持都非常好。
Int64针对32位架构是按照4字节还是8字节对齐?
https://www.cnblogs.com/artech/p/17560866.html
作为构建.NET的标准,CLI Spec(ECMA-335)针对基元类型的对齐规则具有如下的描述。按照这个标准,我们是这么理解的:8字节的数据类型(int64、unsigned int64和float64)根据采用的机器指令架构选择4字节或者8字节对其。进一步来说,它们在x86/x64机器上的对其字节分别为4字节和8字节。
关于 async 和 await 两个关键字(C#)【并发编程系列】
https://www.cnblogs.com/czzj/p/async_await.html
对于 async 和 await 两个关键字,对于一线开发人员再熟悉不过了,到处都是它们的身影。
从 C# 5.0 时代引入 async 和 await 关键字,我们使用 async 修饰符可将方法、lambda 表达式或匿名方法指定为异步。 如果对方法或表达式使用此修饰符,则其称为异步方法。async 和 await 通过与 .NET Framework 4.0 时引入的任务并行库(TPL:Task Parallel Library)构成了新的异步编程模型,即 TAP(基于任务的异步模式 Task-based asynchronous pattern)。
但是如果对他们不太了解的话,会有很多麻烦出现,所以最近查了一些资料,也看了几个大佬的介绍,今天来记录汇总下。
PerfView专题 (第十五篇): 如何洞察 C# 中的慢速方法
https://www.cnblogs.com/huangxincheng/p/17571032.html
在 dump 分析旅程中,经常会遇到很多朋友反馈一类问题,比如:
- 方法平时都执行的特别快,但有时候会特别慢,怎么排查?
- 我的方法第一次执行特别慢,能看到慢在哪里吗?
相信有朋友肯定说,加些日志不就好了,大方向肯定是没问题的,但加日志的颗粒度会比较粗而且侵入性也比较大,比如说这个方法不是你的,或者说这个方法是操作系统的,一般情况下对他们无法干涉,那如何洞察在你作用域之外的方法性能呢?作为 CLR团队首推的 PerfView 性能分析工具,必须要 KO 这些问题,接下来我们就简单聊一聊。
PerfView专题 (第十四篇): 洞察那些 C# 代码中的短命线程
https://www.cnblogs.com/huangxincheng/p/17564671.html
这篇文章源自于分析一些疑难dump的思考而产生的灵感,在dump分析中经常要寻找的一个答案就是如何找到死亡线程的生前都做了一些什么?
用 perfcollect 洞察 Linux 上.NET程序 CPU爆高
https://www.cnblogs.com/huangxincheng/p/17561965.html
如果要分析 Linux上的 .NET程序 CPU 爆高,按以往的个性我肯定是抓个 dump 下来做事后分析,这种分析模式虽然不重但也不轻,还需要一定的底层知识,那有没有傻瓜式的 CPU 爆高分析方式呢?
理解ASP.NET Core - 限流(Rate Limiting)
https://www.cnblogs.com/xiaoxiaotank/p/17560251.html
在微服务化的架构设计中,网关扮演着重要的看门人角色,它所提供的功能之一就是限流。而对于众多非微服务化的系统来说,可能并不会部署网关(无论是因为成本还是复杂度),在这种场景下,为了实现限流,微软在 .NET 7 中提供了官方的限流中间件。下面我们一起来看一下。
PerfView专题 (第十三篇):洞察 .NET程序 的非托管句柄泄露
https://www.cnblogs.com/huangxincheng/p/17559370.html
前几天写了一篇 如何洞察 .NET程序 非托管句柄泄露
的文章,文中使用 WinDbg 的 !htrace
命令实现了句柄泄露的洞察,在文末我也说了,WinDbg 是以侵入式的方式解决了这个问题,在生产环境中大多数情况下是不能走附加进程的模式,所以这也是它最大的局限性。
那如何以非侵入
的方式解决这个问题呢?这就是本篇讨论的重点,对,就是用 CLR 团队
鼎力推荐的 Perfview 来解决这个问题,哈哈,是我昨天看文档无意发现的