摘要:
前言 本文为系列文章 B树的定义及数据的插入 数据的读取及遍历 数据的删除 阅读本文前,建议先复习前两篇文章,以便更好的理解本文。 从删除的数据所在的节点可分为两种情况: 从叶子节点删除数据 从非叶子节点删除数据 无论从叶子节点还是非叶子节点删除数据时都需要保证B树的特性:非根节点每个节点的 key 阅读全文
摘要:
前言 本文为系列文章 B树的定义及数据的插入 数据的读取及遍历(本文) 数据的删除 前一篇文章为大家介绍了 B树 的基本概念及其插入算法。本文将基于前一篇的内容,为大家介绍插入到 B树 中的数据该怎么读取及遍历, 本文的代码基于前一篇文章的代码,已经实现的功能可能会被省略,只介绍新增的功能。 在本文 阅读全文
摘要:
前言 B树(B-tree),也常被记作 B-树,其中“-”不发音。B树的发明者 Rudolf Bayer 和 Edward M. McCreight 并没有给B树中的 B 明确的定义,大家也不必对此纠结太多。 B+树是B树的变体,两者的适用场景是不一样的,以后也会给大家带来B+树的介绍。 本系列将用 阅读全文
摘要:
前言 本文将以 C# 语言来实现一个简单的布隆过滤器,为简化说明,设计得很简单,仅供学习使用。 感谢@时总百忙之中的指导。 布隆过滤器简介 布隆过滤器(Bloom filter)是一种特殊的 Hash Table,能够以较小的存储空间较快地判断出数据是否存在。常用于允许一定误判率的数据过滤及防止缓存 阅读全文
摘要:
前言 本文为系列博客 什么是 Task Task 的回调执行与 await(本文) async 到底干了什么(TODO) 总结与常见误区(TODO) 上一篇我们讲了对 Task 的基本定义: Task 代表一个任务,其具体类型可能是多种多样的,且有时候对我们来说完全是个黑盒。这个任务可以有结果,可以 阅读全文
摘要:
前言 本系列会拆分为以下几篇分次进行叙述: 什么是 Task(本文) Task 的回调执行与 await async 到底干了什么(TODO) 总结与常见误区(TODO) 在 2 中,会和大家分享死锁相关的问题。2 和 3 中会穿插自定义 Awaitable 的话题。 本系列会直接引用前一篇博客概述 阅读全文
摘要:
前言 自 .NET 6 起,runtime 中默认的线程池实现从 C++ 代码改为了 C#,更方便我们学习线程池的设计了。 https://github.com/dotnet/runtime/tree/release/6.0/src/libraries/System.Threading.Thread 阅读全文
摘要:
说明 本文主要描述 Linux 环境下 .NET Core 程序的问题分析方案,也会提及如何将 Linux 系统中保存好的 core dump 文件转移到其他位置进行分析,Mac 环境中未尝试成功,Windows 中推荐使用 WSL。 将依次讲解如何在 .NET Core 2.x、.NET Core 阅读全文
摘要:
前言 最近 Task.Run 相关的话题在园子里讨论的比较热闹。其中有个比较重要的配角,传给 Task.Run 的委托。而这个委托是通过 Lambda 表达式 来构建的。那 Lambda 表达式到底是个什么? 本文例子基于 .NET Core 3.1 的编译结果反编译得出结论,不同版本的编译器的编译 阅读全文
摘要:
前言 对于写过 ASP.NET Core 的童鞋来说,可以通过 HttpContextAccessor 在 Controller 之外的地方获取到HttpContext,而它实现的关键其实是在于一个AsyncLocal<HttpContextHolder> 类型的静态字段。接下来就和大家来一起探讨下 阅读全文