使用 C# 实现一个 Event BusEvent Bus(事件总线)是一种用于在应用程序内部或跨应用程序组件之间进行事件通信的机制。它允许不同的组件通过发布和订阅事件来进行解耦和通信。在给定的代码片段中,我们可以看到一个使用C#实现的Event Bus。它定义了一些接口和类来实现事件的发布和订阅。首先,我们有两个基本的约束接口:IEvent和IAsyncE ......
69
0
0
2024-04-06
单例模式在对泛型的约束中,最常使用的关键字有where 和 new。 其中where关键字是约束所使用的泛型,该泛型必须是where后面的类,或者继承自该类。 new()说明所使用的泛型,必须具有无参构造函数,这是为了能够正确的初始化对象 /// <summary> /// C#单例模式 /// </summary& ......
71
0
0
2024-04-03
在C#中,数组是一种常见的数据结构,用于存储一系列相同类型的元素。在使用数组时,一个关键的方面是内存管理。当我们创建数组时,系统需要分配一块内存来存储数组元素,并在数组不再需要时释放这些内存,以避免内存泄漏和提高系统资源利用率。然而,频繁的数组创建和销毁操作可能导致内存碎片化,降低程序的性能。为了解决这个问题,C#引入了ArrayPool类,它允许我们更有效 ......
72
0
0
2024-03-25
WalkingTec.Mvvm框架(简称WTM)项目简介: WalkingTec.Mvvm框架(简称WTM)是基于.net core的快速开发框架。支持Layui(前后端不分离), React(前后端分离),VUE(前后端分离),内置代码生成器,最大程度的提高开发效率,是一款高效开发的利器。项目源码地址: https://github.com/dotnetc ......
52
0
0
2024-03-17
1、正确操作字符串拼接字符串一定要考虑使用StringBuilder ,默认长度为16,实际看情况设置。StringBuilder本质:是以非托管方式分配内存。同时StringFormat方法内部也是使用StringBuilder进行字符串格式化。2、使用默认转型方法类型的转换运算符 :每个类型内部都有一个方法(运算符),分为隐式转换和显示转换。自己实现隐式 ......
68
0
0
2024-03-13
一、简介1.1 哨兵的概述哨兵(Sentinel)是 Redis 分布式系统中用于监控和管理多个 Redis 服务器的组件。它的主要目标是确保 Redis 系统的高可用性,通过实时监测主节点和从节点的状态,及时发现并自动处理故障,保证系统的稳定运行。1.2 为什么需要哨兵?引入Redis哨兵的原因主要与以下几个方面有关:高可用性需求:在生产环境中,确保Red ......
57
0
0
2024-03-09
一、引言1.1 概念介绍Redis管道是一种用于优化多个命令执行的机制,允许客户端将多个命令一次性发送给服务器,然后一次性接收所有命令的返回结果。这种机制可以减少客户端与服务器之间的网络往返次数,从而提高性能。1.2 作用提高性能: 管道的主要作用是提高性能和吞吐量。通过将多个命令打包在一个请求中发送给服务器,可以减少网络延迟和通信开销,从而加速数据传输和处 ......
51
0
0
2024-03-08
一、发布订阅模式概述1.1 什么是发布订阅发布订阅(Publish-Subscribe)是一种消息传递模式,用于在软件系统中实现解耦和灵活的组件通信。在发布订阅模式中,消息的发送者(发布者)并不直接将消息发送给特定的接收者(订阅者),而是将消息发送到一个中心化的调度机制,通常称为消息代理或主题(topic)。订阅者可以通过订阅特定的主题来接收感兴趣的消息,从 ......
101
0
0
2024-03-03
C# 实现时间来到新的一天时触发事独立观察员 2023 年 12 月 19 日看到知乎有人提问《C# 如果要实现一个任务每天 0 点执行,用什么方法等待更高效?》,回想起之前写过的一个方法,现在翻出来大家讨论讨论。新建一个时间事件帮助类(单例),通过定时器,到第二天 0 点后触发 [新的一天] 事件,使用的地方订阅这个事件即可。/// <summary ......
68
0
0
2024-02-29
一、引言事务是数据库管理系统中的一个基本概念,用于管理对数据库的一系列操作,以确保数据的一致性和完整性。在Redis中,事务通过MULTI、EXEC、DISCARD和WATCH等命令实现。事务中的操作要么全部执行,要么全部回滚,保证了原子性。通过WATCH命令,Redis实现了乐观锁,确保在事务执行期间没有其他客户端对监视的键进行修改,以保证事务的隔离性。事 ......
103
0
0
2024-02-24
一、简介C# 中通过 StackExchange.Redis 库可以方便地操作 Redis,实现高性能的数据缓存和存储。StackExchange.Redis 提供了强大的 API,允许开发者轻松连接、读取和写入 Redis 数据。通过使用 ConnectionMultiplexer 类,可以建立与 Redis 服务器的连接,并使用 IDatabase 接口 ......
85
0
0
2024-02-24
1.前言 Ref这个关键字其实就是非托管里面的指针。它可能是一级指针也可能是二级指针。它可以直接通过托管操控内存。本篇来看下。2.概述 一:例子 先上简单例子代码:static string ABC(string str) { return str; } static string DEF(ref string str) { ret ......
73
0
0
2024-02-05
英文:devblogs.microsoft.com 译文:cnblogs.com/xiaoxiaotank/p/13206569.html 译者:xiaoxiaotank前言Task类是在.NET Framework 4引入的,位于System.Threading.Tasks命名空间下,它与派生的泛型类Task<TResult>已然成为.NET编 ......
73
0
0
2024-02-03
本文中将会对就重要的特性进行介绍,并用代码示例展示这些特性。有些特征已经发布!RecordsRecords 是一种全新的简化的 C# class 和 struct 的形式。现在当我们需要声明一个类型用来保存数据,并且支持数据的解构的话,需要像如下一样写出大量的样板代码:class Point : IEquatable<Point> { ......
103
0
0
2024-01-27
何为反射? 首先我们通过两个实例来说明反射的大体概念。 B超:大家体检的时候大概都做过B超,B超可以透过肚皮探测到你内脏的生理情况。这是如何做到的呢?B超是B型超声波,它可以透过肚皮通过向你体内发射B型超声波,当超声波遇到内脏壁的时候就会产生一定的“回音”反射,然后把“回音”进行处理就可以显示出内脏的情况了。地球内部结构:地球的内部结构大体可以分为三层:地壳 ......
96
0
0
2024-01-27