随笔分类 -  .Net

上一页 1 2 3 4 5 6 7 ··· 10 下一页
摘要:一、简介 耦合是软件不能抵御变变化的根本性原因,不仅实体对象与实体对象之间有耦合关系(如创建性设计模式存在的原因),对象和行为之间也存在耦合关系. 二、实战 1、常规开发中,我们经常会在控制器中或者Main方法中调用多个对象,进行批量的操作(完成一次事务性的操作),像下面这样: /// <summa 阅读全文
posted @ 2018-12-31 21:30 郑小超 阅读(1473) 评论(0) 推荐(0)
摘要:一、简介 熟悉.Net多线程的都知道,当多个线程同时操作一个全局缓存对象(static对象实例、Dictionary、List等)时,会存在多线程争用问题,包括EF、Dapper等本身的缓存机制,都存在多线程争用问题,当我们在享受多线程带来的好处的同时,千万要注意这个问题.如果不了解多线程,请移步到 阅读全文
posted @ 2018-12-29 02:21 郑小超 阅读(831) 评论(0) 推荐(0)
摘要:一、简介 ZSet可以说是Redis中最有趣的数据结构了,因为他兼具了Hash集合和Set的双重特性,也是用的最多的,保证了value值的唯一性的同时,,同时又保证了高性能,最主要的是还可以给每个Value设置Source(权重),那么我们就可以通过权重进行排序,这在业务上是非常常见的,比如很多地方 阅读全文
posted @ 2018-12-27 00:05 郑小超 阅读(3028) 评论(0) 推荐(0)
摘要:一、简介 Redis中的Set(集合)相当于C#中的HashSet,它内部的键值对时无序的、唯一的。用过Dictionary的都知道,Dictionary都知道,里面的每个键值对肯定是唯一的,因为键不允许重复.而Redis中的Set相当于一个特殊的字典,字典中所有的Value值都是null.当集合中 阅读全文
posted @ 2018-12-25 00:39 郑小超 阅读(846) 评论(0) 推荐(0)
摘要:一、简介 Redis中的Hash字典相当于C#中的Hashtable,是一种无序字典,内存存储了很对的键值对,实现上和Hashtable一样,都是"数组+链表"二维结构,都是对关键字(键值)进行散列操作,讲关键字散列到Hashtable中的某一个槽位中去,这个过程中如果发生了碰撞,散列函数可能将不同 阅读全文
posted @ 2018-12-24 23:53 郑小超 阅读(1584) 评论(0) 推荐(0)
摘要:一、简介 Redis中的列表相当于C#中的LinkedList,也就是链表,如果你研究过链表这个数据结构,肯定知道.它的插入和删除是非常快的,但是定位却很慢,因为必须遍历所有的元素,才能找到对应的值,所以当你需要对列表进行统计的时候,建立跑后台服务去做,而不是使用Redis去遍历,因为开销很大. R 阅读全文
posted @ 2018-12-23 21:19 郑小超 阅读(575) 评论(0) 推荐(0)
摘要:一、简介 Redis有5种基本数据结构,分别是string、list(列表)、hash(字典)、set(集合)、zset(有序集合),这是必须掌握的5种基本数据结构.注意Redis作为一个键值对缓存系统,其所有的数据结构,都以唯一的key(字符串)作为名称,然后通过key来获取对应的数据. 二、.N 阅读全文
posted @ 2018-12-23 19:51 郑小超 阅读(810) 评论(0) 推荐(0)
摘要:1、简介 Redis是互联网技术架构中在存储系统中用的最广泛的中间件,是中高级后端工程师技术面试中面试官最喜欢问的工程技能之一.所以Redis是.Net技术开发必须掌握的技能之一.所以通过这个系列的随笔来介绍如果在.Net技术栈下玩转Redis 2、安装配置Redis环境 虽然Redis提供了Win 阅读全文
posted @ 2018-12-22 21:39 郑小超 阅读(370) 评论(0) 推荐(0)
摘要:1、简介 相信写过定时任务的小伙伴都知道这个类,非常的轻量级,而且FCL中大量的类使用了这个方法,比如CancellationTokenSource的CancelAfter就是用Timer去做的. 当然FCL中大量的使用了Timer,说明MS对Timer类是信任的.下面就开始介绍这个类的用法.简介很 阅读全文
posted @ 2018-12-14 01:30 郑小超 阅读(15686) 评论(0) 推荐(5)
摘要:1、简介 关于并行Linq,Ms官方叫做并行语言集成(PLINQ)查询,其实本质就是Linq的多线程版本,常规的Linq是单线程的,也就是同步的过程处理完所有的查询.如果你的Linq查询足够简单,而且耗时短,那么建议你使用Linq,但是如果你的查询比较耗时,而且很复杂,且不涉及多线程争用问题,那么可 阅读全文
posted @ 2018-12-09 17:26 郑小超 阅读(3246) 评论(0) 推荐(0)
摘要:网上关于List的线程安全问题将的很少,所以自己实验了一把,发现确实是线程不安全的.所以当你在进行多线程编程中使用了共享的List集合,必须对其进行线程安全处理. List的Add方法是线程不安全的,List的源码中的Add方法,使用了每次当当前的元素达到上限,通过创建一个新的数组实例,并给长度翻倍 阅读全文
posted @ 2018-12-09 17:18 郑小超 阅读(31286) 评论(0) 推荐(4)
摘要:1、简介 关于Parallel不想说太多,因为它是Task的语法糖,至少我是这么理解的,官方文档也是这么说的,它本身就是基本Task的.假设我们有一个集合,不管是什么集合,我们要遍历它,首先想到的是For(如何涉及到修改或者读可以用for)或者Foreach(如果单纯的读),但是它两是同步的去操作集 阅读全文
posted @ 2018-12-09 02:55 郑小超 阅读(3156) 评论(0) 推荐(0)
摘要:1、知识回顾,简要概述 前面两篇关于Task的随笔,C# 多线程五之Task(任务)一 和 C# 多线程六之Task(任务)二,介绍了关于Task的一些基本的用法,以及一些使用的要点,如果都看懂了,本文将介绍另一个Task的特殊用法,前面介绍了,如何通过一个父任务创建多个子任务,且这些子任务都必须要 阅读全文
posted @ 2018-12-08 18:38 郑小超 阅读(2751) 评论(0) 推荐(0)
摘要:前面介绍了Task的由来,以及简单的使用,包括开启任务,处理任务的超时、异常、取消、以及如果获取任务的返回值,在回去返回值之后,立即唤起新的线程处理返回值、且如果前面的任务发生异常,唤起任务如果有效的处理异常等关于Task的知识。所以本文将介绍Task更多的用法和特性. 一、如果通过一个任务创建多个 阅读全文
posted @ 2018-12-02 00:00 郑小超 阅读(2553) 评论(2) 推荐(0)
摘要:1、简介 为什么MS要推出Task,而不推Thread和ThreadPool,以下是我的见解: (1)、Thread的Api并不靠谱,甚至MS自己都不推荐,原因,它将整个Thread类都不开放给Windows Sotre程序,且它的Api过于强大,如果在程序中过度使用,维护的成本太高,想想代码中充斥 阅读全文
posted @ 2018-11-20 00:41 郑小超 阅读(14615) 评论(3) 推荐(1)
摘要:1、简介 虽然ThreadPool、Thread能开启子线程将一些任务交给子线程去承担,但是很多时候,因为某种原因,比如子线程发生异常、或者子线程的业务逻辑不符合我们的预期,那么这个时候我们必须关闭它,而不是让它继续执行,消耗资源.让CPU不在把时间和资源花在没有意义的代码上. 2、主线程取消所有子 阅读全文
posted @ 2018-11-19 00:29 郑小超 阅读(3803) 评论(0) 推荐(0)
摘要:一、CLR线程池 1、进程和CLR的关系一个进程可以只包含一个CLR,也可以包含多个CLR2、CLR和AppDomain的关系一个CLR可以包含多个AppDomain3、CLR和线程池的关系一个CLR只包含一个线程池所以得出一个CLR下的多个AppDomain共享一个线程池和一个进程下的多个CLR拥 阅读全文
posted @ 2018-11-17 13:48 郑小超 阅读(718) 评论(0) 推荐(0)
摘要:一、关于前台线程和后台线程 1、简介 CLR中线程分为两种类型,一种是前台线程、另一种是后台线程. 前台线程:应用程序的主线程、Thread构造的线程都默认为前台线程 后台线程:线程池线程都为后台线程 2、区别 前台线程:前台线程一般执行重要性很高的任务,至于什么是重要性很高,这个需要结合业务综合考 阅读全文
posted @ 2018-11-14 00:34 郑小超 阅读(780) 评论(0) 推荐(0)

上一页 1 2 3 4 5 6 7 ··· 10 下一页