随笔分类 -  C#

上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 28 下一页

编码技巧 --- 谨防C#闭包陷阱
摘要:合集 - c#基础(6) 1.编码技巧 如何实现字符串运算表达式的计算07-122.编码技巧 同步锁对象的选定07-133.解读 yield 关键字07-174.并发编程 信号量线程同步07-185.并发编程 为何要线程池化07-18 6.编码技巧 谨防闭包陷阱07-19 收起 引言 先不论什么是闭 阅读全文

posted @ 2023-07-19 20:44 jack_Meng 阅读(93) 评论(0) 推荐(0)

并发编程 ----为何要线程池化
摘要:合集 - c#基础(6) 1.编码技巧 如何实现字符串运算表达式的计算07-122.编码技巧 同步锁对象的选定07-133.解读 yield 关键字07-174.并发编程 信号量线程同步07-18 5.并发编程 为何要线程池化07-18 6.编码技巧 谨防闭包陷阱07-19 收起 引言 众所周知,使 阅读全文

posted @ 2023-07-19 20:43 jack_Meng 阅读(43) 评论(0) 推荐(0)

并发编程 ---- 信号量线程同步
摘要:合集 - c#基础(6) 1.编码技巧 如何实现字符串运算表达式的计算07-122.编码技巧 同步锁对象的选定07-133.解读 yield 关键字07-17 4.并发编程 信号量线程同步07-18 5.并发编程 为何要线程池化07-186.编码技巧 谨防闭包陷阱07-19 收起 引言 上文编码技巧 阅读全文

posted @ 2023-07-19 20:42 jack_Meng 阅读(50) 评论(0) 推荐(0)

解读 ---- yield 关键字
摘要:合集 - c#基础(6) 1.编码技巧 如何实现字符串运算表达式的计算07-122.编码技巧 同步锁对象的选定07-13 3.解读 yield 关键字07-17 4.并发编程 信号量线程同步07-185.并发编程 为何要线程池化07-186.编码技巧 谨防闭包陷阱07-19 收起 引言 yield关 阅读全文

posted @ 2023-07-19 20:40 jack_Meng 阅读(37) 评论(0) 推荐(0)

一个高性能、低内存文件上传流.Net组件
摘要:推荐一个用于轻松实现文件上传功能的组件。 项目简介 一个基于 .NET 平台的开源项目,提供了一个简单易用的 API,可以在 Web 应用程序中快速集成文件上传功能。 优化多部分流式文件上传性能:减少25%的CPU使用量、50%内存。 项目特点 1、简单易用的API: 提供了简单的 API,可以轻松 阅读全文

posted @ 2023-07-13 09:10 jack_Meng 阅读(44) 评论(0) 推荐(0)

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

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

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

posted @ 2023-07-03 16:58 jack_Meng 阅读(61) 评论(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 阅读(480) 评论(0) 推荐(0)

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

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

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

posted @ 2023-06-15 10:05 jack_Meng 阅读(696) 评论(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 阅读(274) 评论(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 阅读(263) 评论(0) 推荐(0)

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

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

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

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

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

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

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

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

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

posted @ 2023-06-08 16:54 jack_Meng 阅读(685) 评论(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 阅读(849) 评论(0) 推荐(0)

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

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

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

posted @ 2023-06-08 16:04 jack_Meng 阅读(3897) 评论(2) 推荐(5)

上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 28 下一页

导航