摘要: 转载 C#-表达式树 - 一只独行的猿 - 博客园 (cnblogs.com) int[] ints1 = new int[] { 1,23,434,631,3,56,86,83 }; Console.WriteLine($"筛选前数据:{string.Join(',',ints1)}"); Exp 阅读全文
posted @ 2024-07-10 23:56 DaiWK 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 在C#中,反射(Reflection)是一个强大的工具,它允许程序在运行时检查类型的信息(如类、结构、接口、字段、属性、方法等),并且可以动态地创建和调用类型的实例。反射主要使用System.Reflection命名空间中的类。 以下是一些反射的常见用法: 获取类型信息: 使用Typeof运算符或o 阅读全文
posted @ 2024-06-20 00:36 DaiWK 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 一、定义异步任务 //定义异步任务 public class AsyncClass { public static async Task TaskAsync(CancellationToken token) { token.Register(() => { Console.WriteLine("Ta 阅读全文
posted @ 2024-06-19 00:02 DaiWK 阅读(15) 评论(0) 推荐(1) 编辑
摘要: 使用线程安全的集合 线程安全的集合类都位于System.Collections.Concurrent命名空间中 ConcurrentBag<T>:表示一个线程安全的无序集合,允许并发添加和移除元素。它不同于传统的集合,因为它不保证元素的顺序,并且不支持枚举过程中的元素修改。ConcurrentBag 阅读全文
posted @ 2024-06-16 23:42 DaiWK 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 定义 在C#中,存在多种类型的信号量或同步机制来控制对共享资源的访问。这些信号量通常用于多线程编程,以确保资源在并发访问时的正确性和一致性。以下是一些主要的信号量及其描述: AutoResetEvent: 当线程调用WaitOne方法时,它会阻塞,直到另一个线程调用Set方法。 一旦Set方法被调用 阅读全文
posted @ 2024-06-16 23:24 DaiWK 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2024-06-14 23:17 DaiWK 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 一、缓存雪崩、缓存穿透 现象:缓存雪崩:大量缓存同时过期、缓存中间件宕机 缓存穿透:访问不存在key、缓存过期解决:缓存雪崩:设置不同过期时间 缓存穿透:不存在key也存入缓存、使用布隆过滤器、使用分布式锁 二、Redis集群 主从复制:支持redis读写分离,不支持故障恢复 哨兵集群 :在主从复制 阅读全文
posted @ 2024-06-13 12:02 DaiWK 阅读(10) 评论(0) 推荐(0) 编辑
摘要: //connection //channel //broke //exchange:fanout、 dirct、 topic(*:一个单词、#:多个单词)、 header //queue //bind(exchange,queue,routingkey) //一、如何保证消息不丢失 //生产者发布消 阅读全文
posted @ 2024-06-05 22:29 DaiWK 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 委托(普通、多播)delegate OutParm delegateName(InParm1,InParm2,......) 类似于函数指针 Delegate int Mydelegate(int a,int b) 用处:回调函数、 传递表达式 (lambda表达式:实质为泛型委托) 内置泛型委托 阅读全文
posted @ 2024-05-27 08:52 DaiWK 阅读(8) 评论(0) 推荐(1) 编辑
摘要: 一、程序优化 热点数据使用缓存 数据库读写分离 二、数据库方面的优化 1、数据库设计优化 如果单表数据量过大,可以根据业务来做分表 数据库表可以做一些字段冗余,可以减少连表查询,提升查询效率 2、Sql语句优化 2.1.首先定位慢查询 开启慢查询日志 mysql slow_query_log:是否开 阅读全文
posted @ 2024-04-09 21:02 DaiWK 阅读(25) 评论(0) 推荐(0) 编辑