叫我安不理

2024年12月17日

.NET Core 异常(Exception)底层原理浅谈

摘要: 中断与异常模型图 内中断 内中断是由 CPU 内部事件引起的中断,通常是在程序执行过程中由于 CPU 自身检测到某些异常情况而产生的。例如,当执行除法运算时除数为零,或者访问了不存在的内存地址,CPU 就会产生内中断。 硬件异常 CPU内部产生的异常事件 故障Fault 故障是在指令执行过程中检测到 阅读全文

posted @ 2024-12-17 17:34 叫我安不理 阅读(574) 评论(4) 推荐(9) 编辑

2024年12月11日

.NET Core 堆结构(Heap)底层原理浅谈

摘要: .Net托管堆布局 加载堆 主要是供CLR内部使用,作为承载程序的元数据。 HighFrequencyHeap 存放CLR高频使用的内部数据,比如MethodTable,MethodDesc. 通过is判断类型之间的继承关系,调用接口的方法和虚方法,都需要访问MethodTable LowFrequ 阅读全文

posted @ 2024-12-11 15:20 叫我安不理 阅读(1149) 评论(1) 推荐(20) 编辑

2024年12月5日

.NET Core 锁(Lock)底层原理浅谈

摘要: CPU原子操作 原子操作,指一段逻辑要么全部成功,要么全部失败。概念上类似数据库事物(Transaction). CPU能够保证单条汇编的原子性,但不保证多条汇编的原子性 那么在这种情况下,那么CPU如何保证原子性呢?CPU本身也有锁机制,从而实现原子操作 眼见为实 int location = 1 阅读全文

posted @ 2024-12-05 17:45 叫我安不理 阅读(2202) 评论(10) 推荐(24) 编辑

2024年11月29日

.NET Core 异步(Async)底层原理浅谈

摘要: 简介 多线程与异步是两个完全不同的概念,常常有人混淆。 异步 异步适用于"IO密集型"的场景,它可以避免因为线程等待IO形成的线程饥饿,从而造成程序吞吐量的降低。 其本质是:让线程的cpu片不再浪费在等待上,期间可以去干其它的事情。 要注意的是:Async不能加速程序的执行,它只能做到不阻塞线程。 阅读全文

posted @ 2024-11-29 15:10 叫我安不理 阅读(2208) 评论(4) 推荐(18) 编辑

2024年11月25日

.NET Core 线程池(ThreadPool)底层原理浅谈

摘要: 简介 上文提到,创建线程在操作系统层面有4大无法避免的开销。因此复用线程明显是一个更优的策略,切降低了使用线程的门槛,提高程序员的下限。 .NET Core线程池日新月异,不同版本实现都有差别,在.NET 6之前,ThreadPool底层由C++承载。在之后由C#承载。本文以.NET 8.0.8为蓝 阅读全文

posted @ 2024-11-25 17:00 叫我安不理 阅读(2578) 评论(8) 推荐(37) 编辑

2024年11月22日

.NET Core 线程(Thread)底层原理浅谈

摘要: 简介 内核态,用户态,线程,进程,协程基本概念不再赘述。 原生线程和用户线程 原生线程 在内核态中创建的线程,只服务于内核态 用户线程 由User Application创建的线程,该线程会在内核态与用户态中间来回穿梭 比如Throw Exception,就会由CLR 线程触发,从用户态切换到内核态 阅读全文

posted @ 2024-11-22 14:02 叫我安不理 阅读(826) 评论(3) 推荐(12) 编辑

2024年11月19日

.NET Core 特性(Attribute)底层原理浅谈

摘要: 简介 烂大街的资料不再赘述,简单来说就是给代码看的注释 Attribute的使用场景 Attribute不仅仅局限于C#中,在整个.NET框架中都提供了非常大的拓展点,任何地方都有Attribute的影子 编译器层 比如 Obsolete,Conditional C#层 GET,POST,Max,R 阅读全文

posted @ 2024-11-19 16:37 叫我安不理 阅读(1707) 评论(1) 推荐(10) 编辑

2024年11月15日

.NET Core 反射(Reflection)底层原理浅谈

摘要: 简介 反射,反射,程序员的快乐。 前期绑定与后期绑定 在.NET中,前期绑定(Early Binding)是指在编译时就确定了对象的类型和方法,而后期绑定(Late Binding)或动态绑定是在运行时确定对象的类型和方法。 前置知识:C#类型系统结构 C#作为C++++ ,在类型系统上沿用C++的 阅读全文

posted @ 2024-11-15 09:29 叫我安不理 阅读(1682) 评论(4) 推荐(29) 编辑

2024年11月13日

.NET Core 委托(Delegate)底层原理浅谈

摘要: 简介 .NET通过委托来提供回调函数机制,与C/C++不同的是,委托确保回调是类型安全,且允许多播委托。并支持调用静态/实例方法。 简单来说,C++的函数指针有如下功能限制,委托作为C#中的上位替代,能弥补函数指针的不足。 类型不安全 函数指针可以指向一个方法定义完全不同的函数。在编译期间不检查正确 阅读全文

posted @ 2024-11-13 10:18 叫我安不理 阅读(811) 评论(0) 推荐(14) 编辑

2024年11月7日

.NET Core 泛型(Generic)底层原理浅谈

摘要: 简介 泛型参考资料烂大街,基本资料不再赘述,比如泛型接口/委托/方法的使用,逆变与协变。 泛型好处有如下几点 代码重用 算法重用,只需要预先定义好算法,排序,搜索,交换,比较等。任何类型都可以用同一套逻辑 类型安全 编译器保证不会将int传给string 简单清晰 减少了类型转换代码 性能更强 减少 阅读全文

posted @ 2024-11-07 14:57 叫我安不理 阅读(2307) 评论(2) 推荐(27) 编辑

导航