摘要: CAS 的基本概念 CAS(Compare-and-Swap)是一种多线程并发编程中常用的原子操作,用于实现多线程间的同步和互斥访问。 它操作通常包含三个参数:一个内存地址(通常是一个共享变量的地址)、期望的旧值和新值。 CompareAndSwap(内存地址,期望的旧值,新值) CAS 操作会比较 阅读全文
posted @ 2023-04-21 00:19 黑洞视界 阅读(2400) 评论(1) 推荐(12) 编辑
摘要: LRU缓存替换策略 缓存是一种非常常见的设计,通过将数据缓存到访问速度更快的存储设备中,来提高数据的访问速度,如内存、CPU缓存、硬盘缓存等。 但与缓存的高速相对的是,缓存的成本较高,因此容量往往是有限的,当缓存满了之后,就需要一种策略来决定将哪些数据移除出缓存,以腾出空间来存储新的数据。 这样的策 阅读全文
posted @ 2023-04-05 17:56 黑洞视界 阅读(2764) 评论(10) 推荐(15) 编辑
摘要: 目录前言AsyncMethodBuilder 介绍AsyncMethodBuilder 是状态机的重要组成部分AsyncMethodBuilder 的结构AsyncMethodBuilder 功能分析对状态机的生命周期进行管理对 async 方法的返回值进行包装小结async void自定义 Asy 阅读全文
posted @ 2023-03-15 23:07 黑洞视界 阅读(3457) 评论(4) 推荐(18) 编辑
摘要: AsyncLocal 用法简介 通过 AsyncLocal 我们可以在一个逻辑上下文中维护一份私有数据,该上下文后续代码中都可以访问和修改这份数据,但另一个无关的上下文是无法访问的。 无论是在新创建的 Task 中还是 await 关键词之后,我们都能够访问前面设置的 AsyncLocal 的数据。 阅读全文
posted @ 2023-03-01 23:13 黑洞视界 阅读(6328) 评论(19) 推荐(44) 编辑
摘要: 前言 本文为系列文章 B树的定义及数据的插入 数据的读取及遍历 数据的删除 阅读本文前,建议先复习前两篇文章,以便更好的理解本文。 从删除的数据所在的节点可分为两种情况: 从叶子节点删除数据 从非叶子节点删除数据 无论从叶子节点还是非叶子节点删除数据时都需要保证B树的特性:非根节点每个节点的 key 阅读全文
posted @ 2023-02-04 20:33 黑洞视界 阅读(500) 评论(0) 推荐(5) 编辑
摘要: 前言 本文为系列文章 B树的定义及数据的插入 数据的读取及遍历(本文) 数据的删除 前一篇文章为大家介绍了 B树 的基本概念及其插入算法。本文将基于前一篇的内容,为大家介绍插入到 B树 中的数据该怎么读取及遍历, 本文的代码基于前一篇文章的代码,已经实现的功能可能会被省略,只介绍新增的功能。 在本文 阅读全文
posted @ 2022-12-18 21:05 黑洞视界 阅读(509) 评论(0) 推荐(7) 编辑
摘要: 前言 B树(B-tree),也常被记作 B-树,其中“-”不发音。B树的发明者 Rudolf Bayer 和 Edward M. McCreight 并没有给B树中的 B 明确的定义,大家也不必对此纠结太多。 B+树是B树的变体,两者的适用场景是不一样的,以后也会给大家带来B+树的介绍。 本系列将用 阅读全文
posted @ 2022-12-11 09:22 黑洞视界 阅读(931) 评论(1) 推荐(9) 编辑
摘要: 前言 本文将以 C# 语言来实现一个简单的布隆过滤器,为简化说明,设计得很简单,仅供学习使用。 感谢@时总百忙之中的指导。 布隆过滤器简介 布隆过滤器(Bloom filter)是一种特殊的 Hash Table,能够以较小的存储空间较快地判断出数据是否存在。常用于允许一定误判率的数据过滤及防止缓存 阅读全文
posted @ 2022-06-26 22:29 黑洞视界 阅读(4500) 评论(16) 推荐(41) 编辑
摘要: 目录前言Task.ContinueWithContinueWith 的产物:ContinuationTask额外的参数回调的容器:TaskContinuationTask.ContinueWith 回调的生命周期阶段一 将回调封装进 ContinueWithTaskContinuation阶段二 回 阅读全文
posted @ 2022-02-19 13:31 黑洞视界 阅读(9550) 评论(14) 推荐(41) 编辑
摘要: 目录前言从表象讲起Task 从何而来Task 常见用法Task 的分类按是否包含 Result 分,也就是是否是泛型 Task按得到 Task 的方式,可以分为对 Task 进行分解Task 在哪执行?线程池一个独立的后台线程中自定义的TaskScheduler里Task 可以封装任何类型的别的任务 阅读全文
posted @ 2022-01-19 22:57 黑洞视界 阅读(10016) 评论(20) 推荐(55) 编辑