随笔分类 -  C#

上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 26 下一页

尽可能避免在静态构造函数中初始化静态字段?
摘要:C#具有一个默认开启的代码分析规则:[CA1810]Initialize reference type static fields inline,推荐我们以内联的方式初始化静态字段,而不是将初始化放在静态构造函数中。 一、两种初始化的性能差异 二、beforefieldinit标记 三、静态构造函数 阅读全文

posted @ 2023-07-10 10:00 jack_Meng 阅读(42) 评论(0) 推荐(0) 编辑

Docker 中的 .NET 异常了怎么抓 Dump
摘要:一:背景 1. 讲故事 有很多朋友跟我说,在 Windows 上看过你文章知道了怎么抓 Crash, CPU爆高,内存暴涨 等各种Dump,为什么你没有写在 Docker 中如何抓的相关文章呢?瞧不上吗? 哈哈,在DUMP的分析旅程中,跑在 Docker 中的 .NET 占比真的不多,大概10个du 阅读全文

posted @ 2023-07-03 16:58 jack_Meng 阅读(48) 评论(0) 推荐(0) 编辑

记一次.net加密神器 Eazfuscator.NET 2023.2 最新版 使用尝试
摘要:合集 - .net代码混淆加密产权保护(2) 1.记一次.net加密神器 Eazfuscator.NET 2023.2 最新版 使用尝试06-27 2.将 SmartAssembly 与单文件可执行文件一起使用 (.NET Core 6)06-27 收起 很多人看到这个Eazfuscator.NET 阅读全文

posted @ 2023-07-03 16:37 jack_Meng 阅读(330) 评论(0) 推荐(0) 编辑

浅谈 .NET 中的对象引用、非托管指针和托管指针
摘要:目录 前言 一、对象引用 二、值传递和引用传递 三、初识托管指针和非托管指针 四、非托管指针 1、非托管指针不能指向对象引用 2、类成员指针 五、托管指针 前言# 本文主要是以 C# 为例介绍 .NET 中的三种指针类型(本文不包含对于函数指针的介绍):对象引用、非托管指针 、托管指针。 学习是一个 阅读全文

posted @ 2023-06-15 10:26 jack_Meng 阅读(127) 评论(0) 推荐(0) 编辑

理解C#中的闭包
摘要:1、 闭包的含义# 首先闭包并不是针对某一特定语言的概念,而是一个通用的概念。除了在各个支持函数式编程的语言中,我们会接触到它。一些不支持函数式编程的语言中也能支持闭包(如java8之前的匿名内部类)。 在看过的对于闭包的定义中,个人觉得比较清晰的是在《JavaScript高级程序设计》这本书中看到 阅读全文

posted @ 2023-06-15 10:05 jack_Meng 阅读(638) 评论(0) 推荐(0) 编辑

c#用表达式树实现深拷贝功能
摘要:因为对表达式树有点兴趣,出于练手的目的,试着写了一个深拷贝的工具库。支持.net standard2.0或.net framework4.5及以上。 GitHub地址https://github.com/blurhkh/DeepCopier nuget地址https://www.nuget.org/ 阅读全文

posted @ 2023-06-15 09:56 jack_Meng 阅读(241) 评论(0) 推荐(0) 编辑

揭秘 Task.Wait
摘要:目录 简介 背后的实现 Task.Wait 的两个阶段 SpinWait 阶段 BlockingWait 阶段 Task.Wait 可能会导致的问题 可能会导致线程池饥饿 可能会导致死锁 .NET 6 对 Task.Wait 的优化 总结 简介 Task.Wait 是 Task 的一个实例方法,用于 阅读全文

posted @ 2023-06-15 09:50 jack_Meng 阅读(222) 评论(0) 推荐(0) 编辑

概述 .NET 6 ThreadPool 实现
摘要:目录 前言 任务的调度 基本调度单元 IThreadPoolWorkItem 实现类的实例。 Task 全局队列 本地队列 偷窃机制 Worker Thread 的生命周期管理 线程注入实验 .NET 5 实验一 默认线程池配置 .NET 5 实验二 调整 ThreadPool 设置 .NET 5 阅读全文

posted @ 2023-06-15 09:49 jack_Meng 阅读(32) 评论(0) 推荐(0) 编辑

LRU缓存替换策略及C#实现
摘要:目录 LRU缓存替换策略 核心思想 不适用场景 算法基本实现 算法优化 进一步优化 Benchmark LRU缓存替换策略 缓存是一种非常常见的设计,通过将数据缓存到访问速度更快的存储设备中,来提高数据的访问速度,如内存、CPU缓存、硬盘缓存等。 但与缓存的高速相对的是,缓存的成本较高,因此容量往往 阅读全文

posted @ 2023-06-15 09:37 jack_Meng 阅读(70) 评论(0) 推荐(0) 编辑

C#中使用CAS实现无锁算法
摘要:CAS 的基本概念 CAS(Compare-and-Swap)是一种多线程并发编程中常用的原子操作,用于实现多线程间的同步和互斥访问。 它操作通常包含三个参数:一个内存地址(通常是一个共享变量的地址)、期望的旧值和新值。 CompareAndSwap(内存地址,期望的旧值,新值) CAS 操作会比较 阅读全文

posted @ 2023-06-15 09:28 jack_Meng 阅读(75) 评论(0) 推荐(1) 编辑

如何在系统上获取硬件设备的唯一标识(Unique Identifier)
摘要:原文地址:http://www.vonwei.com/post/UniqueDeviceIDforWindows.html 唯一的标识一个设备是一个基本功能,可以拥有很多应用场景,比如软件授权(如何保证你的软件在授权后才能在特定机器上使用)、软件License,设备标识,设备身份识别等。下面列举一下 阅读全文

posted @ 2023-06-12 11:08 jack_Meng 阅读(2503) 评论(0) 推荐(0) 编辑

[C#] FFmpeg 音视频开发总结
摘要:为什么选择FFmpeg? 延迟低,参数可控,相关函数方便查询,是选择FFmpeg作为编解码器最主要原因,如果是处理实时流,要求低延迟,最好选择是FFmpeg。 如果需要用Opencv或者C#的Emgucv这种库来处理视频流,也多是用FFmpeg做编解码然后再转换图像数据给Opencv去处理。用Ope 阅读全文

posted @ 2023-06-08 16:54 jack_Meng 阅读(584) 评论(0) 推荐(0) 编辑

C#获取枚举描述的值
摘要:首先定义枚举 工具类如下,通过扩展方法的方式实现: public static string GetDescription(this Enum value) { Type enumType = value.GetType(); // 获取枚举常数名称。 string name = Enum.GetN 阅读全文

posted @ 2023-06-08 16:50 jack_Meng 阅读(730) 评论(0) 推荐(0) 编辑

使用c#实现23种设计模式
摘要:使用c#实现23种常见的设计模式 设计模式通常分为三个主要类别: 创建型模式 结构型模式 行为型模式。 这些模式是用于解决常见的对象导向设计问题的最佳实践。 以下是23种常见的设计模式并且提供c#代码案例: 创建型模式: 1. 单例模式(Singleton) public sealed class 阅读全文

posted @ 2023-06-08 16:47 jack_Meng 阅读(198) 评论(0) 推荐(0) 编辑

C# 中的yield return机制和原理
摘要:前言# 当我们编写 C# 代码时,经常需要处理大量的数据集合。在传统的方式中,我们往往需要先将整个数据集合加载到内存中,然后再进行操作。但是如果数据集合非常大,这种方式就会导致内存占用过高,甚至可能导致程序崩溃。 C# 中的yield return机制可以帮助我们解决这个问题。通过使用yield r 阅读全文

posted @ 2023-06-08 16:04 jack_Meng 阅读(2027) 评论(2) 推荐(3) 编辑

如何自动转发接收的请求报头?
摘要:了解OpenTelemetry的朋友应该知道,为了将率属于同一个请求的多个操作(Span)串起来,上游应用会生成一个唯一的TraceId。在进行跨应用的Web调用时,这个TraceId和代表跟踪操作标识的SpanID一并发给目标应用,W3C还专门指定了一份名为Trace Context的标准,该标准 阅读全文

posted @ 2023-06-08 15:30 jack_Meng 阅读(24) 评论(0) 推荐(0) 编辑

如何兼顾性能+实时性处理缓冲数据?
摘要:我们经常会遇到这样的数据处理应用场景:我们利用一个组件实时收集外部交付给它的数据,并由它转发给一个外部处理程序进行处理。考虑到性能,它会将数据存储在本地缓冲区,等累积到指定的数量后打包发送;考虑到实时性,数据不能在缓冲区存太长的时间,必须设置一个延时时间,一旦超过这个时间,缓冲的数据必须立即发出去。 阅读全文

posted @ 2023-06-08 15:28 jack_Meng 阅读(40) 评论(0) 推荐(0) 编辑

C#用Expression技术 -- 系列文章
摘要:当前标签:表达式树 基于Expression Lambda表达式树的通用复杂动态查询构建器——《剧透一下》 基于Expression Lambda表达式树的通用复杂动态查询构建器——《原型篇一》[已开源] 基于Expression Lambda表达式树的通用复杂动态查询构建器——《构思篇二》已开源  阅读全文

posted @ 2023-06-01 14:09 jack_Meng 阅读(20) 评论(0) 推荐(0) 编辑

让Task在非线程池线程中执行?
摘要:Task承载的操作需要被调度才能被执行,由于.NET默认采用基于线程池的调度器,所以Task默认在线程池线程中执行。但是有的操作并不适合使用线程池,比如我们在一个ASP.NET Core应用中承载了一些需要长时间执行的后台操作,由于线程池被用来处理HTTP请求,如果这些后台操作也使用线程池来调度,就 阅读全文

posted @ 2023-05-29 11:21 jack_Meng 阅读(23) 评论(0) 推荐(0) 编辑

通过源码深究依赖注入(DI)原理
摘要:依赖注入 (DI) 是.NET中一个非常重要的软件设计模式,它可以帮助我们更好地管理和组织组件,提高代码的可读性,扩展性和可测试性。在日常工作中,我们一定遇见过这些问题或者疑惑。 Singleton服务为什么不能依赖Scoped服务? 多个构造函数的选择机制? 源码是如何识别循环依赖的? 虽然我们可 阅读全文

posted @ 2023-05-18 16:35 jack_Meng 阅读(90) 评论(0) 推荐(0) 编辑

上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 26 下一页

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示

喜欢请打赏

扫描二维码打赏

支付宝打赏

主题色彩