.NET 技术
yinghuolsx
这个作者很懒,什么都没留下…
展开
-
C#线程同步的几种方法
我们在编程的时候,有时会使用多线程来解决问题,比如你的程序需要在后台处理一大堆数据,但还要使用户界面处于可操作状态;或者你的程序需要访问一些外部资源如数据库或网络文件等。这些情况你都可以创建一个子线程去处理,然而,多线程不可避免地会带来一个问题,就是线程同步的问题。如果这个问题处理不好,我们就会得到一些非预期的结果。 在网上也看过一些关于线程同步的文章,其实线程同步有好几种方法,下面我就转载 2017-04-09 10:34:59 · 243 阅读 · 0 评论 -
C#泛型约束
六种类型的约束:T:结构类型参数必须是值类型。可以指定除 Nullable 以外的任何值类型。有关更多信息,请参见使用可空类型(C# 编程指南)。T:类类型参数必须是引用类型,包括任何类、接口、委托或数组类型。T:new()类型参数必须具有无参数的公共构造函数。当与其他约束一起使用时,new() 约束必转载 2017-06-26 13:35:20 · 518 阅读 · 0 评论 -
使用Metrics监控应用程序的性能
在编写应用程序的时候,通常会记录日志以便事后分析,在很多情况下是产生了问题之后,再去查看日志,是一种事后的静态分析。在很多时候,我们可能需要了解整个系统在当前,或者某一时刻运行的情况,比如当前系统中对外提供了多少次服务,这些服务的响应时间是多少,随时间变化的情况是什么样的,系统出错的频率是多少。这些动态的准实时信息对于监控整个系统的运行健康状况来说很重要。一些应用程序,比如对外提供接口或者转载 2017-06-22 17:22:10 · 1505 阅读 · 0 评论 -
ASP.NET之旅--深入浅出解读IIS架构
在学习Asp.NET时,发现大多数作者都是站在一个比较高的层次上讲解Asp.net。 他们耐心、 细致地告诉你如何一步步拖放控件、 设置控件属性、编写 CodeBehind代码,以实现某个特定的功能。这种做法,实际上是回答了“如何去做”的问题,却没有回答“为什么可以这样做”的问题。这样有它的好处, 就是可以快速开发。 但建议多掌握一点底层知识,对一些问题会有更好的理解。希望通过这篇文章的,可以转载 2017-06-10 15:16:52 · 374 阅读 · 0 评论 -
细说C#多线程那些事-线程基础
我第一次接触“线程”的概念时,觉得它深奥难懂,看了好多本书,花了很长时间才领悟到它的真谛。现在我就以一个初学者的心态,把我所理解的“多线程”描述给大家。这一次是系列文章,比较完整的展示与线程相关的基本概念。希望对初学者有所帮助。如果你是高手,请你别继续看,会浪费你宝贵的时间。一、基本概念什么是进程?当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使转载 2017-06-08 23:11:46 · 258 阅读 · 0 评论 -
细说C#多线程那些事 - 线程同步和多线程优先级
一、Task类上次我们说了线程池,线程池的QueueUserWorkItem()方法发起一次异步的线程执行很简单但是该方法最大的问题是没有一个内建的机制让你知道操作什么时候完成,有没有一个内建的机制在操作完成后获得一个返回值。为此,可以使用System.Threading.Tasks中的Task类。Task类在命名空间System.Threading.Tasks下,通过Ta转载 2017-06-08 22:56:52 · 3583 阅读 · 0 评论 -
ASP.NET的错误处理机制
对于一个Web应用程序来说,出错是在所难免的,因此我们应该未雨绸缪,为可能出现的错误提供恰当的处理。事实上,良好的错误处理机制正是衡量Web应用程序好坏的一个重要标准。试想一下,当用户不小心在浏览器输入了错误的URL或者当用户提供了一些信息导致程序出错的时候,如果我们没有对这些情况进行处理,而是任由404或是500的错误页面甚至出错的堆栈信息呈现在用户面前,这无疑会把一些用户给吓跑。所以,在我们开转载 2017-06-07 18:40:55 · 1561 阅读 · 0 评论 -
int?
int?:表示可空类型,就是一种特殊的值类型,它的值可以为null用于给变量设初值得时候,给变量(int类型)赋值为null,而不是0int??:用于判断并赋值,先判断当前变量是否为null,如果是就可以赋役个新值,否则跳过public int? a=null;public int b(){return this.a ?? 0;}值类型后面加问号表示可为空null(Nullable 结构)Null转载 2017-05-09 10:40:59 · 291 阅读 · 0 评论 -
C#技术漫谈之垃圾回收机制(GC)
GC的前世与今生 虽然本文是以.NET作为目标来讲述GC,但是GC的概念并非才诞生不久。早在1958年,由鼎鼎大名的图林奖得主John McCarthy所实现的Lisp语言就已经提供了GC的功能,这是GC的第一次出现。Lisp的程序员认为内存管理太重要了,所以不能由程序员自己来管理。 但后来的日子里Lisp却没有成气候,采用内存手动管理的语言占据了上风,以C为代表。出于同样的理转载 2017-04-26 16:52:41 · 412 阅读 · 0 评论 -
使用Task代替ThreadPool和Thread
一:Task的优势ThreadPool相比Thread来说具备了很多优势,但是ThreadPool却又存在一些使用上的不方便。比如:1: ThreadPool不支持线程的取消、完成、失败通知等交互性操作;2: ThreadPool不支持线程执行的先后次序;以往,如果开发者要实现上述功能,需要完成很多额外的工作,现在,FCL中提供了一个功能更强大的概念:Task。Ta转载 2017-04-13 22:56:46 · 1101 阅读 · 0 评论 -
ASP.NET之旅--浅谈Asp.net的运行机制(二)
上节中我们从Http请求在Asp.NET中的运行过程进行了分析,但是对于真正核心的东西我们并没有说明,那接下来我们将问题上抛,从底层类和对象的创建层面上来看Asp.Net的运行机制。三、Asp.net底层运行机制 1、理解HTTP.SYS HTTP.SYS:运行于Windows核心(Kernel)的一个组件,它负责侦听(Listen)来自于外部的HTT转载 2017-04-12 23:54:40 · 241 阅读 · 0 评论 -
ASP.NET之旅--浅谈Asp.net运行机制(一)
上篇博客基础(ASP.NET之旅--深入浅出解读IIS架构) 很多Asp.NET开发人员都有过Asp的背景,以至于我们开发程序的时候总是停留在“页面”层次思考,也就是说我们常常会只考虑我们现在所做的系统是要完成什么功能,是要做问卷调查网站还是个人网站,而很少在“请求级”思考,思考能不能通过编码的方式来操作一个Http请求。在跨入Asp.Net后Asp有了质的飞跃,很多底层的Ht转载 2017-04-12 23:53:12 · 250 阅读 · 0 评论 -
.NET的ConcurrentDictionary,线程安全集合类
ConcurrentDictionary 是.NET 4.0里面新增的号称线程安全的集合类。那么自然,我们会预期ConcurrentDictionary 中的代码是线程安全的(至少几个关键方法是线程安全的).举个例子,使用者可能会预期GetOrAdd中的方法当Key不存在的时候只执行一次Add的委托,第二次调用GetOrAdd就应该直接取回刚才生成的值了.参考一下以下代码:转载 2017-06-27 21:47:10 · 3409 阅读 · 0 评论