摘要: 原文链接:https://liamw.cn/albums/csharp-dotnet/10-understand-the-volatile-keyword 要理解 C# 中的 volatile 关键字,就要先知道编译器背后的一个基本优化原理。比如对于下面这段代码: public class Exam 阅读全文
posted @ 2023-06-26 09:12 顾小凡 阅读(20) 评论(0) 推荐(0)
摘要: 什么是Lazy : 在C#中,Lazy类是用来延迟初始化对象的一种机制。它允许你在第一次使用该对象之前推迟其创建过程,以提高性能和资源利用率。使用Lazy类可以在需要时才创建对象,并确保只创建一次 使用示例: 阅读全文
posted @ 2023-06-26 09:11 顾小凡 阅读(22) 评论(0) 推荐(0)
摘要: 什么是死锁: 当两个线程等待的资源都被对方占用时(A等B,B等A),它们都无法执行,这就产生了死锁。更复杂的死锁链可能由三个或更多的线程创建 object locker1 = new object(); object locker2 = new object(); new Thread(() => 阅读全文
posted @ 2023-06-25 11:50 顾小凡 阅读(172) 评论(0) 推荐(0)
摘要: 有以下代码 using System.Diagnostics; using System.Runtime.ExceptionServices; using Microsoft.AspNetCore.Mvc; using static System.Net.Mime.MediaTypeNames; n 阅读全文
posted @ 2023-05-31 16:46 顾小凡 阅读(53) 评论(0) 推荐(0)
摘要: c# 的迭代器模式是通过 IEnumerator 和 IEnumerable 接口来实现的 c# 实现迭代器示例 public class CharList : IEnumerable { public string TargetStr { get; set; } public CharList(s 阅读全文
posted @ 2023-05-13 14:55 顾小凡 阅读(39) 评论(0) 推荐(0)
摘要: //语法糖 int? count=0; //完整写法 Nullable<int> count = 0; Nullable类型定义 public partial struct Nullable<T> where T : struct { private readonly bool hasValue; 阅读全文
posted @ 2023-05-13 14:10 顾小凡 阅读(45) 评论(0) 推荐(0)
摘要: 对象池ObjectPool 位于 Microsoft.Extensions.ObjectPool 命名空间 主要有三个对象: ObjectPool: 对象池,用于存放对象 ObjectPoolProvider: 对象池提供者,用于创建ObjectPool PooledObjectPolicy:行为基 阅读全文
posted @ 2023-02-05 14:42 顾小凡 阅读(61) 评论(0) 推荐(0)
摘要: 查看所有键 (生产环境避免使用) keys * 键总数 (直接获取Redis内置的 键总数变量,所以dbsize命令的时间复杂度是O(1)) dbsize 检查键是否存在(存在则返回1,不存在为0) exists key 删除键 (返回结果为成功删除键的个数) del key [key ...] 键 阅读全文
posted @ 2022-12-03 19:52 顾小凡 阅读(35) 评论(0) 推荐(0)
摘要: RDB持久化是把当前进程数据生成快照保存到硬盘的过程,触发RDB持 久化过程分为手动触发和自动触发。 手动触发分别对应save和bgsave命令: ·save命令:阻塞当前Redis服务器,线上环境不建议使用 ·bgsave命令:Redis进程执行fork操作创建子进程,RDB持久化过程由子 进程负 阅读全文
posted @ 2022-12-02 13:27 顾小凡 阅读(35) 评论(0) 推荐(0)
摘要: RabbitMQ交换机类型RabbitMQ共有四种交换机类型: Direct Exchange:直连交换机,根据Routing Key(路由键)进行投递到不同队列。 Fanout Exchange:扇形交换机,采用广播模式,根据绑定的交换机,路由到与之对应的所有队列。 Topic Exchange: 阅读全文
posted @ 2022-12-02 12:33 顾小凡 阅读(33) 评论(0) 推荐(0)