原创 從位圖到布隆過濾器,C#實現

前言 本文將以 C# 語言來實現一個簡單的布隆過濾器,爲簡化說明,設計得很簡單,僅供學習使用。 感謝@時總百忙之中的指導。 布隆過濾器簡介 布隆過濾器(Bloom filter)是一種特殊的 Hash Table,能夠以較小的存儲空間較快地

原创 走進Task(2):Task 的回調執行與 await

目錄前言Task.ContinueWithContinueWith 的產物:ContinuationTask額外的參數回調的容器:TaskContinuationTask.ContinueWith 回調的生命週期階段一 將回調封裝進 Con

原创 走進Task(1):什麼是Task

目錄前言從表象講起Task 從何而來Task 常見用法Task 的分類按是否包含 Result 分,也就是是否是泛型 Task按得到 Task 的方式,可以分爲對 Task 進行分解Task 在哪執行?線程池一個獨立的後臺線程中自定義的Ta

原创 概述 .NET 6 ThreadPool 實現

目錄前言任務的調度基本調度單元IThreadPoolWorkItem 實現類的實例。Task全局隊列本地隊列偷竊機制Worker Thread 的生命週期管理線程注入實驗.NET 5 實驗一 默認線程池配置.NET 5 實驗二 調整 Th

原创 Lambda 表達式詳解

目錄前言預備知識,理解委託的構成引用實例方法的委託引用靜態方法的委託Lambda 表達式的實際編譯結果CASE 1 沒有捕獲任何外部變量的Lambda 表達式CASE 2 捕獲了外部方法局部變量的Lambda 表達式CASE 3 實例方法中

原创 淺析 .NET 中 AsyncLocal 的實現原理

目錄前言1、線程本地存儲2、AsyncLocal 實現2.1、主體 AsyncLocal2.2、AsyncLocal 在 ExecutionContext 中的數據存取實現2.2.1、 ExecutionContext 與 線程的綁定關係2

原创 使用 SOS 對 Linux 中運行的 .NET Core 進行問題診斷

目錄說明準備一個方便的學習環境2.x 配置內容3.x 配置內容工具介紹lldb sos plugin1. attach 到進程上進行調試2. 分析core dump文件SOS案例分析CPU 佔用過高內存泄漏Monitor導致的死鎖.NET

原创 有人問我,Task老師,發生甚麼事了? 我就用了一個Lambda 表達式。

目錄前言預備知識,理解委託的構成引用實例方法的委託引用靜態方法的委託Lambda 表達式的實際編譯結果CASE 1 沒有捕獲任何外部變量的Lambda 表達式CASE 2 捕獲了外部方法局部變量的Lambda 表達式CASE 3 實例方法中

原创 淺談 .NET 中的對象引用、非託管指針和託管指針

目錄 前言 一、對象引用 二、值傳遞和引用傳遞 三、初識託管指針和非託管指針 四、非託管指針 1、非託管指針不能指向對象引用 2、類成員指針 五、託管指針 前言 本文主要是以 C# 爲例介紹 .NET 中的三種指針類型(本文不

原创 使用.net core 自帶DI框架實現 延遲加載

在某些情況,我們希望能延遲一個依賴的初始化。如果使用的是autofac,我們可以通過注入Lazy 我們對 autofac GitHub上提供的一個例子進行進行簡單改造,跑起來看看。 原Example的鏈接https://github.com

原创 理解C#中的閉包

1、 閉包的含義 首先閉包並不是針對某一特定語言的概念,而是一個通用的概念。除了在各個支持函數式編程的語言中,我們會接觸到它。一些不支持函數式編程的語言中也能支持閉包(如java8之前的匿名內部類)。 在看過的對於閉包的定義中,個人覺得比較

原创 c#用表達式樹實現深拷貝功能

因爲對表達式樹有點興趣,出於練手的目的,試着寫了一個深拷貝的工具庫。支持.net standard2.0或.net framework4.5及以上。 GitHub地址https://github.com/blurhkh/DeepCopier