文章分类 -  dotnet通关秘籍

1 2 3 4 5 6 下一页
dotnet硬核知识
BlockingCollection<T> 内部机制与最佳实践
摘要:简介 BlockingCollection<T> 是 .NET 中非常重要且实用的线程安全、阻塞式的生产者-消费者集合类,位于 System.Collections.Concurrent 命名空间。 BlockingCollection 不是队列, 而是一个“带阻塞语义的并发管道(Blocking 阅读全文
posted @ 2026-01-20 07:18 我是唐青枫 阅读(9) 评论(0) 推荐(0)
C#.NET ConcurrentDictionary<TKey, TValue> 深度解析:原理与实践
摘要:简介 ConcurrentDictionary<TKey, TValue> 是 System.Collections.Concurrent 命名空间下的线程安全的键值对集合,专为高并发读写场景设计 —— 相比传统 Dictionary<TKey, TValue> +lock 的方案,它采用细粒度锁( 阅读全文
posted @ 2026-01-13 07:20 我是唐青枫 阅读(59) 评论(0) 推荐(0)
C#.NET ConcurrentBag<T> 设计原理与使用场景
摘要:简介 ConcurrentBag<T> 是 System.Collections.Concurrent 命名空间下的线程安全的无序集合,专为 “多线程同时添加 / 移除元素” 设计,核心特点是基于线程局部存储(TLS)优化,在 “同一线程频繁添加和移除元素” 的场景下性能最优,是 .NET 中处理无 阅读全文
posted @ 2026-01-12 07:57 我是唐青枫 阅读(3) 评论(0) 推荐(0)
深入理解 Volatile:C#.NET 内存可见性与有序性
摘要:简介 Volatile 是 C# 中处理内存可见性和指令重排序的关键机制,它提供了对内存访问的精细控制。在并发编程中,volatile 关键字和 Volatile 类都是解决共享变量可见性问题的重要工具。 为什么需要volatile? CPU 缓存导致的 “内存可见性” 问题 现代 CPU 为提升性 阅读全文
posted @ 2026-01-07 07:17 我是唐青枫 阅读(18) 评论(0) 推荐(0)
你真的理解 Interlocked.Exchange 吗?C#.NET 原子操作详解
摘要:什么是 Interlocked.Exchange? Interlocked.Exchange 是 System.Threading.Interlocked 类中的静态方法,用于原子地替换(交换)一个变量的值,并返回该变量的旧值。整个读-改-写过程是不可分割的,在多线程环境中保证线程安全。 核心作用: 阅读全文
posted @ 2026-01-06 06:59 我是唐青枫 阅读(46) 评论(0) 推荐(0)
深入理解 System.Lazy<T>:C#.NET 延迟初始化与线程安全
摘要:什么是 Lazy<T>? System.Lazy<T> 是 .NET Framework 4.0 引入(位于 System 命名空间)的泛型类,用于实现线程安全的延迟初始化(Lazy Initialization)。它确保一个昂贵的对象或资源只在第一次真正需要时才被创建,并且在多线程环境下保证初始化 阅读全文
posted @ 2026-01-05 07:37 我是唐青枫 阅读(16) 评论(0) 推荐(0)
深入理解 Interlocked.CompareExchange:C#.NET 原子操作核心原理
摘要:什么是 Interlocked.CompareExchange? Interlocked.CompareExchange 是 .NET 中 System.Threading.Interlocked 类的最核心原子操作方法。它执行比较并交换(Compare-And-Swap,简称 CAS) 操作:在多 阅读全文
posted @ 2026-01-04 06:58 我是唐青枫 阅读(34) 评论(0) 推荐(0)
深入理解 Parallel.ForEachAsync:C#.NET 并行调度模型揭秘
摘要:简介 ┌──────────────┐ │ 数据源枚举器 │ IEnumerable / IAsyncEnumerable └──────┬───────┘ ↓ ┌────────────────────┐ │ 并发调度器(Pump) │ ← 控制最多 N 个任务 └──────┬───────── 阅读全文
posted @ 2026-01-01 07:02 我是唐青枫 阅读(12) 评论(0) 推荐(0)
深入理解 C#.NET Parallel:并行编程的正确打开方式
摘要:简介 Parallel 并行编程是 .NET 中利用多核 CPU 进行并发执行的编程模型,主要通过 System.Threading.Tasks 命名空间中的 Parallel 类实现。它允许将任务分解成多个子任务,在多个线程上同时执行,以加速 CPU 密集型操作(如循环计算、数据处理)。 核心组件 阅读全文
posted @ 2025-12-31 07:19 我是唐青枫 阅读(44) 评论(0) 推荐(0)
深入理解 C#.NET Interlocked.Increment:原子操作的核心
摘要:简介 Interlocked.Increment 是 .NET 中一个重要的线程安全操作方法,用于以原子方式递增变量的值。它位于 System.Threading 命名空间中,提供了一种轻量级的线程同步机制。 这些方法包括: 方法 作用 Increment(ref int location) 原子 阅读全文
posted @ 2025-12-30 07:59 我是唐青枫 阅读(25) 评论(0) 推荐(0)
深入理解 C#.NET IEnumerable<T>:一切集合的起点
摘要:简介 IEnumerable<T> 是 .NET 中最核心的接口之一,位于 System.Collections.Generic 命名空间中。它代表一个可枚举的集合,支持在集合上进行迭代操作。 IEnumerable<T> 是什么? public interface IEnumerable<out 阅读全文
posted @ 2025-12-29 07:06 我是唐青枫 阅读(168) 评论(0) 推荐(0)
C#.NET 索引器完全解析:语法、场景与最佳实践
摘要:简介 索引器(Indexer)是 C# 中的一种特殊属性,它允许类或结构体像数组一样使用索引语法(例如 obj[0])来访问或修改对象内部的成员。简单来说,它将对象的实例视为“可索引的集合”,提供类似于数组的访问方式。 核心特性: 类似于属性(Property),但带有参数(通常是索引值,如整数或字 阅读全文
posted @ 2025-12-25 07:06 我是唐青枫 阅读(12) 评论(0) 推荐(0)
C#.NET AsyncLock 完全解析:async/await 下的并发控制方案
摘要:简介 AsyncLock 是一种自定义的异步互斥锁(Mutex Lock),专为异步编程场景设计,用于在 async/await 方法中实现线程安全的互斥访问。它弥补了 .NET 中传统 lock 语句(基于 Monitor)的不足,因为 lock 是同步阻塞的,在异步环境中会阻塞线程池线程,导致性 阅读全文
posted @ 2025-12-24 07:37 我是唐青枫 阅读(57) 评论(0) 推荐(0)
一篇搞定 dotnet ef:EF Core 常用命令与实战指南
摘要:基础知识 项目 说明 EF Core .NET 的 ORM 框架,支持 Code First、Database First。 dotnet ef 一个 CLI 工具,用于管理 EF Core 迁移、数据库操作。 安装方式 通常安装在项目中(推荐):dotnet add package Microso 阅读全文
posted @ 2025-12-23 06:56 我是唐青枫 阅读(69) 评论(0) 推荐(0)
深入理解 C#.NET record:不可变对象与值语义的现代实践
摘要:简介 record 是 C# 9 引入的新引用类型(Reference Type),专门用于数据导向(Data-Oriented)的不可变对象。特别适合用于表示不可变的数据传输对象(DTO)、值对象和领域模型。 ⚡ 主要特性: 内置值相等性:两个 record 实例如果属性值相同,则被认为相等(值相 阅读全文
posted @ 2025-12-22 07:36 我是唐青枫 阅读(36) 评论(0) 推荐(0)
C#.NET struct 全解析:什么时候该用值类型?
摘要:简介 struct 是 值类型(Value Type),用于封装一组相关的数据。 与类(class)相比,结构体通常更轻量,适用于小型、短生命周期的对象。 ⚡ 关键特点: 存储在 栈(stack)上(也可能嵌套在堆中,但本质仍是值类型)。 按值传递(赋值/参数传递时会复制整个结构)。 无需垃圾回收( 阅读全文
posted @ 2025-12-18 07:20 我是唐青枫 阅读(14) 评论(0) 推荐(0)
C#.NET ref struct 深度解析:语义、限制与最佳实践
摘要:简介 ref struct 是 C# 7.2 引入的一种特殊结构体类型, 它与普通 struct 的最大区别是 严格限制其分配位置: ref struct 只能分配在栈(stack)上,不能分配在堆(heap)上。 ⚡ 设计初衷 提高性能:栈分配比堆分配快,并且无需 GC 回收。 提供安全的内存访问 阅读全文
posted @ 2025-12-17 07:18 我是唐青枫 阅读(47) 评论(1) 推荐(0)
告别频繁 GC:C#.NET PooledList 的设计与使用场景
摘要:简介 PooledList<T> 是 高性能集合类型,由 Collections.Pooled 提供,用于替代 List<T>,通过 对象池 (ArrayPool<T>) 复用内部数组来减少 GC(垃圾回收)压力。 ⚡ 核心目标: 在需要频繁创建/销毁 List<T> 的场景下,PooledList 阅读全文
posted @ 2025-12-16 07:33 我是唐青枫 阅读(14) 评论(0) 推荐(0)
深入理解 C#.NET 运算符重载:语法、设计原则与最佳实践
摘要:简介 运算符重载是 C# 提供的一种特性,允许开发者为 自定义类型(类/结构体) 定义运算符的行为。 例如,可以让 Vector 对象支持 + 运算,而不是仅限于基本类型(int、double 等)。 💡 本质:运算符重载是一个 带有 operator 关键字的静态方法,通过自定义方法改变运算符的 阅读全文
posted @ 2025-12-15 07:16 我是唐青枫 阅读(53) 评论(0) 推荐(0)
LINQ 新时代:CountBy、AggregateBy 深度解析(含对比 GroupBy)
摘要:简介 在 .NET 8 之前,LINQ 没有内置 CountBy 和 AggregateBy 方法,但在 .NET 9(C# 13) 中,LINQ 正式引入了这两个新扩展方法,极大简化了数据分组和聚合的写法。 背景 传统的分组统计一般使用 GroupBy: var query = list.Grou 阅读全文
posted @ 2025-12-12 07:32 我是唐青枫 阅读(21) 评论(0) 推荐(0)

1 2 3 4 5 6 下一页