#重中之重

基础才是重中之重~delegate里的Invoke和BeginInvoke

回到目录Invoke和BeginInvoke都是调用委托实体的方法,前者是同步调用,即它运行在主线程上,当Invode处理时间长时,会出现阻塞的情况,而BeginInvod是异步操作,它会从新开启一个线程,所以不会租塞主线程,在使用BeginInvoke时,如果希望等待执行的结果,可以使用EndInvoke来实现,这在...

基础才是重中之重~lock和monitor的区别

回到目录Monitor的介绍1.Monitor.Enter(object)方法是获取锁,Monitor.Exit(object)方法是释放锁,这就是Monitor最常用的两个方法,当然在使用过程中为了避免获取锁之后因为异常,致锁无法释放,所以需要在try{}catch(){}之后的finally{}结构体中释放锁(Mo...

基础才是重中之重~面向接口编程的含义

大叔认为面向接口有以下几个方面的作用1实现多态2在的团队开发中,先定义接口,其他开发人员跟据接口在配合DI实现自己的业务,而不需要等你把具体业务全部实现,大叔认为这是最重要的,有时我们看到业务层定义接口会想有什么用,业务很少多态,他不像数据层、你可以有很对持久化的方式,事实上,业务层接口的作用就是为其他人用的,所为的&...

基础才是重中之重~内存里的堆和栈

内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。栈  先进后出(FILO—First-In/Last-Out)就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。(C#里,值类型被存储在栈上)堆  先进先出(FIFO&md...

基础才是重中之重~再说软件设计的各大原则

回到目录下面将介绍以下几个原则,都是软件设计里的大哥大,大姐大级别的人物!DRYKISSSRPOCPLSPISPDIPSOCYANGIDRYDRY是DoNotRepeatYourself的简称,不要写重复的代码,可以使用代码重构里的提取到方法,提取到类来做这事KISSKISS是Keepitshortandsimple的...

基础才是重中之重~关于ThreadStatic和Quartz的一点渊源

回到目录ThreadStaticThreadStatic是C#里的一个特性,它可以让你的字段在一个线程里有效,但你不能控制这个字段在何时被回收,即如果声明一个int32的字段为ThreadStatic,然后你为它赋值时为100,那么它什么被恢复成默认值0,我们不得而知,这在开发时,我们可能只有手动将它设为0才行,比较难...

基础才是重中之重~Dictionary<K,V>里V的设计决定的性能

回到目录字典对象Dictionary<K,V>我们经常会用到,而在大数据环境下,字典使用不当可能引起性能问题,严重的可能引起内在的溢出!字典的值建议为简单类型,反正使用Tuple<T>字典的键在查找时,时间复杂度为O(1),性能不会有任何问题,所以不要愿望它下面代码是对500万的字典进行测试,首...

基础才是重中之重~Emit动态构建方法(参数和返回值)

回到目录对于Emit我们知道它的可以动态构建程序集,类型,方法,属性等,或者说只要手动使用C#创建的东西使用Emit也都可以动态创建它们,Emit由于它的特别之处,所以在很多领域得到了广泛的应用,像最近比较火的AOP技术,它最核心的功能就是方法拦截了,我们使用Emit也是可以实现方法拦截功能的,详细可以看大叔这篇文章《...