.net技术总结

SQL查询速度 影响因素:
网络IO
磁盘IO
单表数据量 (分库分表;纵向、横向切割)
查询是否进行了全表扫描(优化查询语句)
是否命中了索引(添加索引)
表或行被锁(由写导致,可通过读写分离解决)

数据库优化:
如果是EF打印sql语句 ,分析费时原因
查看执行计划,看是否有语句进行了全表扫描,是否命中索引
为查询条件添加索引

EF优化
可以使用EF 上下文池
禁止 查询状态跟踪,EF截取实例的快照,在保存时对比以进行修改
可以对外键实体集进行延迟加载
使用更优的SQL语句代替linq
创建视图或者函数进行查询
只选择需要的列
预先加载外键实体集
避免循环内查询数据库

委托
是一个完整算法的一部分算法,后期绑定的
多播委托,支持绑定多个算法实现

事件
是设计模式中观察者模式的一种实现,它是基于委托实现的,事件可以进行广播,各订阅者进行订阅,目的是为了让订阅对象与事件源对象解耦

事件广播之后不关注返回值、进行的操作
委托需要关注
事件是基于委托实现

 

异步操作
可避免进程阻塞,改善用户体验
在Web中可以提高服务器吞吐量
能增强系统健壮性

IO密集型任务 使用并发执行(单核) await
CPU密集型任务 使用并行执行(多核) parallel 、 Task.Run

并行是多个线程同一时刻执行
并发给人的感觉是同一时刻执行,其实微观上看是CPU时间片轮转执行

线程安全
由于CPU进行时间片轮转调度,线程执行状态切换,使多个线程无序的对临界区代码段访问,这会导致意外的结果
怎么避免线程安全问题?
对临界区代码加互斥锁

什么是线程同步?
多个线程访问有限资源的时候,资源全部被占用,其他线程必须等待
信号量机制

posted @ 2023-05-07 00:59  も不秃不秃  阅读(24)  评论(0编辑  收藏  举报