上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 40 下一页
摘要: 一:背景 1. 一个有趣的话题 最近在看 硬件异常 相关知识,发现一个有意思的空引用异常问题,拿出来和大家分享一下,为了方便讲述,先上一段有问题的代码。 namespace ConsoleApp2 { internal class Program { static Person person = n 阅读全文
posted @ 2022-06-21 08:31 一线码农 阅读(1511) 评论(5) 推荐(10) 编辑
摘要: 一:背景 1. 一个很好奇的问题 我们在学习 C# 的过程中,总会听到一个词叫做 内核态 ,比如说用 C# 读写文件,会涉及到代码从 用户态 到 内核态 的切换,用 HttpClient 获取远端的数据,也会涉及到 用户态 到 内核态 的切换,那到底这是个什么样的交互流程?毕竟我们的程序是无法操控 阅读全文
posted @ 2022-06-20 09:08 一线码农 阅读(3273) 评论(5) 推荐(17) 编辑
摘要: 最近在看 C++ 的方法和类模板,我就在想 C# 中也是有这个概念的,不过叫法不一样,人家叫模板,我们叫泛型,哈哈,有点意思,这一篇我们来聊聊它们底层是怎么玩的? 一:C++ 中的模板玩法 毕竟 C++ 是兼容 C 语言,而 C 是过程式的玩法,所以 C++ 就出现了两种模板类型,分别为:函数模板 阅读全文
posted @ 2022-06-17 09:56 一线码农 阅读(1319) 评论(1) 推荐(6) 编辑
摘要: 最近在看 C++ 的方法重载,我就在想 C# 中的重载底层是怎么玩的,很多朋友应该知道 C 是不支持重载的,比如下面的代码就会报错。 #include <stdio.h> int say() { return 1; } int say(int i) { return i; } int main() 阅读全文
posted @ 2022-06-15 12:28 一线码农 阅读(2639) 评论(0) 推荐(10) 编辑
摘要: 这几天在看 C++ 的 lambda 表达式,挺有意思,这个标准是在 C11标准 加进去的,也就是 2011 年,相比 C# 2007 还晚了个 4 年, Lambda 这东西非常好用,会上瘾,今天我们简单聊一聊。 一:语法定义 首先我们看下 C++ 语法定义格式: [capture] (param 阅读全文
posted @ 2022-06-14 17:48 一线码农 阅读(967) 评论(2) 推荐(1) 编辑
摘要: 最近在看 C++ 类继承中的字段内存布局,我就很好奇 C# 中的继承链那些 private 字段都哪里去了? 在内存中是如何布局的,毕竟在子类中是无法访问的。 一:举例说明 为了方便讲述,先上一个例子: internal class Program { static void Main(string 阅读全文
posted @ 2022-06-04 09:05 一线码农 阅读(929) 评论(3) 推荐(5) 编辑
摘要: 最近在看 C++ 的虚方法调用实现原理,大概就是说在 class 的首位置存放着一个指向 vtable array 指针数组 的指针,而 vtable array 中的每一个指针元素指向的就是各自的 虚方法,实现方式很有意思,哈哈,现在我很好奇 C# 中如何实现的。 一: C# 中的多态玩法 1. 阅读全文
posted @ 2022-06-01 11:42 一线码农 阅读(3368) 评论(1) 推荐(15) 编辑
摘要: 一:什么是时间旅行 简而言之就是把程序的执行流拍成vlog,这样就可以对 vlog 快进或者倒退,还可以分享给别人做进一步的分析,是不是想都不敢想。 很开心的是 windbg preview 版本中已经实现了,叫做 时间旅行调试 TTD,相比传统的 静态分析 不知道好多少倍。 为了能提起大家兴趣,我 阅读全文
posted @ 2022-05-13 09:51 一线码农 阅读(1266) 评论(0) 推荐(11) 编辑
摘要: 经常在代码中看到有人将 null 赋值给引用类型,来达到让 GC 提前回收的目的,这样做真的有用吗?今天我们就来研究一下。 为了方便讲解,来一段测试代码,提前将 test1=null ,然后调用 GC.Collect() 看看是否能提前回收。 平台采用: .net5 public class Pro 阅读全文
posted @ 2022-05-11 13:55 一线码农 阅读(759) 评论(1) 推荐(7) 编辑
摘要: 有朋友好奇为什么将 闭包 归于语法糖,这里简单声明下,C# 中的所有闭包最终都会归结于 类 和 方法,为什么这么说,因为 C# 的基因就已经决定了,如果大家了解 CLR 的话应该知道, C#中的类最终都会用 MethodTable 来承载,方法都会用 MethodDesc 来承载, 所以不管你怎么玩 阅读全文
posted @ 2022-04-28 09:21 一线码农 阅读(1786) 评论(0) 推荐(10) 编辑
摘要: 自从 C# 7.3 放开 ref 之后,这玩法就太花哨了,也让 C# 这门语言变得越来越多范式,越来越重,这篇我们就来聊聊 ref,本质上来说 ref 的放开就是把 C/C++ 指针的那一套又拿回来了,而且还封装成一套自己的玩法,下面一一解读下。 一:方法参数上的 ref 我想设计者的初心把 ref 阅读全文
posted @ 2022-04-25 09:14 一线码农 阅读(3002) 评论(1) 推荐(9) 编辑
摘要: 首先说说为什么要写这个系列,大概有两点原因。 这种文章阅读量确实高... 对 IL 和 汇编代码 的学习巩固 所以就决定写一下这个系列,如果大家能从中有所收获,那就更好啦! 一:params 应用层玩法 首先上一段 测试代码。 class Program { static void Main(str 阅读全文
posted @ 2022-04-19 13:10 一线码农 阅读(3828) 评论(3) 推荐(10) 编辑
摘要: 这个问题在微信上被别人问过好多次,想来想去觉得有必要统一解答下,先说下我的答案:可能会,也有可能不会。 要想寻找答案,需要从 异步处理 的底层框架说起。 一:异步底层是什么 异步 从设计层面上来说它就是一个 发布订阅者 模式,毕竟它的底层用到了 端口完成队列,可以从 IO完成端口内核对象 所提供的三 阅读全文
posted @ 2022-04-01 10:08 一线码农 阅读(4313) 评论(8) 推荐(23) 编辑
摘要: 一:背景 1. 讲故事 年前有位朋友加微信求助,说他的程序出现了偶发性CPU爆高,寻求如何解决,截图如下: 我建议朋友用 procdump 在 cpu 高的时候连抓两个dump,这样分析起来比较稳健,朋友也如期的成功抓到,接下来就用 windbg 一起来分析下吧。 二:Windbg 分析 1. 查看 阅读全文
posted @ 2022-02-23 16:21 一线码农 阅读(4104) 评论(7) 推荐(19) 编辑
摘要: 一:背景 1. 讲故事 前天有位朋友加微信求助他的程序出现了CPU爆高的问题,开局就是一个红包,把我吓懵了! 🤣🤣🤣 由于是南方小年,我在老家张罗处理起来不方便,没有第一时间帮他处理,朋友在第二天上午已经找出问题了,反馈说是一个 while(true) 导致的,这就有点意思了,在我分析的众多 阅读全文
posted @ 2022-01-28 16:47 一线码农 阅读(2557) 评论(11) 推荐(4) 编辑
上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 40 下一页