NET多线程探索-线程同步和通信
摘要:NET多线程探索-线程同步和通信2012-03-20 16:53 by 海不是蓝, 426 visits,收藏,编辑NET中各种线程同步方法在NET多线程开发中,有时候需要多个线程协调工作,完成这个步骤的过程称为“同步”。使用同步的主要原因:1.多个线程访问同一个共享资源。2.多线程写入文件时保证只有一个线程使用文件资源。 3.由事件引发线程,线程等待事件,需要挂起线程。NET中线程同步常见的几种方法:1.locklock 确保当一个线程位于代码的临界区时,另一个线程不进入临界区。如果其他线程试图进入锁定的代码,则它将一直等待(即被阻止),直到该对象被释放。lock的优点:简单易用,对象的同步
阅读全文
C#几个经常犯错误汇总
摘要:在我们平常编程中,时间久了有时候会形成一种习惯性的思维方式,形成固有的编程风格,但是有些地方是需要斟酌的,即使是一个很小的错误也可能会导致昂贵的代价,要学会善于总结,从错误中汲取教训,尽量不再犯同样错误,注重编程之美,代码的优雅,总结几个平常经常犯的错误。1、在C#编程中,字符型类型是最容易处理出错的地方,代价是非常昂贵,在.Net Framwork中,字符串是一个相当特别的引用类型,string本省就是一个不可继承的密封类,但是它具有了值类型所应用的特点,但是它在CLR中内存还是保存于托管堆之上,也就是说,当我们每次定义一个字符串类型的时候,就在堆内存中开辟一端内存,而当我们字符串被修改之.
阅读全文
微软一站式代码示例库开发实践系列课程
摘要:微软一站式代码示例库开发实践系列课程2012-02-06 10:27 by Jialiang, 1750 visits,收藏,编辑头疼的Bug,糟糕的代码,崩溃的调试……,遇到上述任何一种情况中的可能就会抓狂。有没有想过有一天,如果能直接获得需要的代码,编程的活儿就轻松多了。微软亚太区全球技术支持中心在多年来对开发人员的技术支持工作中意识到了这样的需求,并充分利用自身作为原厂的优势、技术专长和经验, 在MSDN Webcast平台推出了微软一站式示例代码库 (Microsoft All-In-One Code Framework)系列课程。让开发人员通过一个个典型的示例代码介绍和免费得示例代码
阅读全文
练就编程高手
摘要:每日一例,练就编程高手2012-02-21 13:38 by Jialiang, 3659 visits,收藏,编辑不积跬步无以致千里,不积小流难以成江河。每日一例,练就编程高手!微软一站式示例代码库发布“每日一例”。每日分享一个经典示例代码,希望能够帮助那些对各种技术感兴趣的开发人员每天积累一些新的开发知识。所有分享的示例代码都来源于全球开发人员最常用到的编程场景。你可以通过“每日一例”RSS种子来获取每天一个示例代码的介绍,或者访问“每日一例”主页。如你有任何建议,欢迎在此留言,或发邮件至onecode@microsoft.com订阅每日一例RSS:http://blogs.msdn.co
阅读全文
5天不再惧怕多线程——第一天 尝试Thread
摘要:原本准备在mongodb之后写一个lucene.net系列,不过这几天用到多线程时才发现自己对多线程的了解少之又少,仅仅停留在lock上面,故这几天看了下线程参考手册结合自己的心得整理一下放在博客上作为自己的学习笔记。 好了,我们知道“负载”是一个很时尚,很牛X的玩意,往大处说,网站需要负载,数据库需要负载。往小处说,线程也需要负载,面对海量的用户请求,我们的单线程肯定扛不住,那么怎么办,一定要负载,所以说多线程是我们码农必须要熟练掌握的一门技术。 在framework中给我们提供了一个Threading命名空间,下面是一个msdn上不完整的截图:在后面的系列中我也是主要整理这几个类的使用..
阅读全文
.NET(C#):线程安全集合的阻塞BlockingCollection的使用
摘要:目录1. 限制最大容量:BoundedCapacity2. 禁止加入:CompleteAdding和IsCompleted3. 枚举:GetConsumingEnumerable和BlockingCollection本身4. GetConsumingEnumerable和CompleteAdding返回目录1. 限制最大容量:BoundedCapacityBoundedCapacity属性和CompleteAdding方法,它们都可以从某种方式上限制元素被加入到集合中。但BoundedCapacity是用来限制集合的最大容量,当容量已满后,后续的添加操作会被阻塞,一旦有元素被移除,那么阻塞的添
阅读全文
C# 如何异步查询数据库
摘要:以前在学习Socket的时候,经常会使用到异步操作,孰不知将异步用到数据库查询上也是一把利器,特别是在大数据量查询的时候效果应该是比较明显的。我顺便写了一个小例子,供大家参考。 我们平时默认使用的查询是同步的,也就是说一方不等待另一方做好准备,当查询时间过长时,客户端会被一直阻塞在这里而不能做其他事情。而当我们使用异步时,程序并不会阻塞或挂起线程,它会通过一个代理的回调方法完成查询,主线程将会继续执行,这样便解决了同步所不能做到的并行执行的结果。 代码如下所示: 1 public partial class AsyncSearchForm : Form 2 { 3 ...
阅读全文
CDN是如何工作的?
摘要:CDN是互联网中使用较频繁的一种技术。你也许常听人说:“我们的网站使用了CDN技术”,但可能他们对CDN的了解并不多,也许只局限于--用了以后网站访问速度会变快。其实,CDN的原理非常简单。当浏览器请求一资源时,第一步是做DNS解析,DNS解析就像是从通讯录根据姓名找号码,浏览器发送域名,然后得到DNS服务器返回的IP地址。浏览器通过IP地址和服务器连接并获取资源(DNS服务器会有很多层的缓存,但超出本文范围)。对于小站点或个人博客,一个域名对应一个IP地址,而大站点可能含多个IP地址。当请求一个资源时(如网站),距离会影响连接速度,所以从国内访问国外的网站会比较慢。因此,一些大公司在世界各地
阅读全文
学习一下.NET文件类库,人要靠自己
摘要:今天抱着希望问了几个职业的程序员,问个文件类操作问题结果一个都回答不了,感觉就是胡言乱语,只好自己解决,网上也没有解释,于是就看了下CSDN的帮助,灵感一来就算是解决了,呵呵。这几日没时间学习程序,老师都安排我去听马克思哲学了,闲暇时间还要陪老婆聊天,今天算是学习文件操作的第一天,也就抽时间写个笔记,感觉.NET的IO命名空间下的文件操作类型是目前我遇到的几种语言中最丰富和简洁的所以很好学习,先画个文件类框架呗。任何编程语言操作文件都要调用操作系统的应用程序接口来实现,.NET框架提供了功能强大的统一的应用程序接口,在System.IO命名空间下,定义了多种文件管理,文件和数据流读写的类型。废
阅读全文
说说C#的几个类级别
摘要:一个偶然的瞬间,翻开了沉放已久的<C#本质论>.当翻到讲关于类的那一章节时,突然萌发了一个想法:自己的coding生涯也快两年了,可不可以对类级别来一个总结咧? 于是趁此良辰美景,勾勒了一番.在我们平时的coding中,常碰到的类级别有:普通类,密封类,接口,抽象类,当将一个普通类声明为密封类,就意味着不能对类进行派生,它就成为了一个孤立的类.当然,很多时候我们不需要这样的.我们希望高频率调用的代码被集中的放在一个类里面,在别的类里面什么都不用写就可以调用,这样提高了代码的复用性,这就是继承.很可惜,继承具有单根性,即类同时只可继承一个类.这时,接口出现了.一个类同时可以实现多个接
阅读全文
软件随想
摘要:一天一天,一年又一年,我们到底都做什么,为自己留下了什么,收获了什么,成长了多少,让你记忆深刻的事是什么,让你最兴奋的事是什么,让你最想扇自己的事情是什么,他们的原因是什么。你是否思考的时间比写代码的时间长,每次开发的时候你的功能分析到什么程度你就开始写代码,你修改和重写的次数多吗,是否曾经因为将功能分析得非常透彻而让你很快的把功能搞定。是否经常在没有搞清楚状况的时候就开始写代码,到现在为止你认真看了多少本很好的书籍。你的工作让你兴奋吗?兴奋吗?兴奋吗?Follow me。C#搞了这么久(快3年了),怎么就是没有成为C#高手,3年了,怎么就没有相对的掌握一门语言,我都做了什么,每天都在干嘛,.
阅读全文
.NET异步
摘要:对于异步,相信大家都不十分陌生。准确点来说就是方法执行后立即返回,待到执行完毕会进行通知。就是当一个任务在执行的时候,尤其是需要耗费很长的时间进行处理的任务,如果利用单线程进行操作的话,势必造成界面的阻塞;而利用异步方式,则不会出现这种情况。 区别于同步处理,可以说阻塞的异步其实就相当于同步。同步方式的实现先来看一个同步的例子:假设现在我们需要导入文本文件的内容,然后对文件内容做处理。那么这就需要分为两步来进行,第一步是导入文本内容,我们利用函数A表示;第二部就是处理文本,我们利用函数B来表示。假设现在A不执行完,B不能进行。而且由于文本内容非常大,导入需要十几到几十分钟不等,那么我们得提示用
阅读全文
【十五分钟Talkshow】fmplan(十五分钟计划)的初步想法
摘要:【十五分钟Talkshow】fmplan(十五分钟计划)的初步想法摘要信息这个演讲将概述提出了我最近开始的一个名为“fmplan”的 基于互联网的教育计划}计划简介}内容简介}目标受众}学习环境}支持和帮助讲义地址http://www.xizhang.com/fmplan/resources/fmplan_overview.pdf视频地址http://www.tudou.com/programs/view/hhS5U-o-qRc/
阅读全文
.NET(C#) TPL:TaskFactory.FromAsync与委托的异步调用
摘要:目录1. 简单的委托异步调用2. 带有异常的委托异步调用3. 有ref或out的委托异步调用4. .NET Framework中预定义的异步调用返回目录1. 简单的委托异步调用看一个非常简单的C#委托异步调用:staticvoidMain(){//定义委托vardel=newFunc<string,char,int>(doo);//调用BeginInvoke del.BeginInvoke("a",'b', callback, del);Console.ReadKey();}staticvoidcallback(IAsyncResultar){/
阅读全文
Java web学习系列之开篇
摘要:在此首先感谢带我走进java web开发的蔡磊老师,是你帮我从一个java编程的小白带进了java的世界。一直想把以前学习的一些知识总结起来,什么时候要用到相对来说比较方便找一些。转型做android开发很久了,java web开发就没怎么做了,但是不想把之前的学习的一些知识给丢掉了,就将2010年暑假学习的一些笔记整理了一下,于是便有了这个java web学习的系列。主要有以下几篇文章:Java web学习系列之 Java web开发中的servlet类Java web学习系列之 Java web开发中数据库连接几种方法Java web学习系列之 Java web开发中的Hibernate对
阅读全文
在.NET应用程序中访问Excel的几种方式
摘要:摘要提示:通过三个视频,我介绍和比较了在.NET应用程序中访问Excel的常见几种方式}通过Excel API访问}通过OpenXML访问}通过第三方组件访问讲义地址:http://www.xizhang.com/fmplan/resources/02/在.NET应用程序中访问和处理Excel的几种方式.pdf视频地址:(请大家注意,现在视频是放在土豆上面的,广告好像一般比较长,大家是否有更好的推荐)第一讲 使用Excel APIhttp://www.tudou.com/programs/view/EK1s9TTpN1c/第二讲 使用OPENXMLhttp://www.tudou.com/pr
阅读全文
如何理解并优化.NET应用程序对内存的使用
摘要:【十五分钟Talkshow】如何理解并优化.NET应用程序对内存的使用前言:十五分钟Talkshow,是我将利用业余时间开展的一个活动(不定期发布),主要是我选择某些与技术或者软件工程方面有关的主题进行讲解,每次一个主题,尽可能在15分钟左右讲完。这些演讲是免费公开的,允许分发。备注:这次是第一次录制,本来计划是十五分钟左右,没有把握好时间,后期还会在内容编排上面再做一些改进摘要提示:这是一个关于.NET应用程序中对于内存使用和优化的简短演讲,通过此视频,你可以了解}什么是内存问题}.NET应用程序是如何分配和释放内存}深入分析内存使用情况并调优讲义地址:http://www.xizhang.
阅读全文
C# 调用存储过程和包的通用方法
摘要:C# 调用存储过程和包的通用方法http://www.cnblogs.com/liushui-sky/archive/2012/02/25/2368177.html最近的项目都是做信息系统的,需要频繁的与数据库进行交互。很多对数据库的操作,如多表的查询,更新,插入,以及一些数据库逻辑的判断等等,如果写成存储过程或者包的形式然后再在代码中调用会方便很多。以下是一种通用的方法,对于参数的个数类型都没什么限制,只要在赋值的时候确定即可。具体的代码如下:View Code例程:在包A中有个存储过程为BB的形式为View Code调用的方法为View Code
阅读全文
面向对象软件设计原则(一) —— 引子
摘要:“面向对象软件设计”这个术语及其相关话题对于很多开发人员来说已经是耳熟能详了,甚至听腻了。但是,对不住各位,为了吸引眼球和引起“异性” 注意,本座还是落入俗套选择这个热门话题作为本博客的开张炒作篇目。请见谅,也希望各位看官能放下架子,略读一下本系列的所有文章再喷,可赞可弹可BS, 但勿吐槽,毕竟不想因为本座的文字噪音降低看官的SZ,伤不起呀!! 言归正传,在如何阐述“面向对象软件设计”这个问题上,本座琢磨了良久,毕竟命题宽泛,表达方式和层次多样。最终决定用相对通俗,以本座的读书和工作经历,在中等层次上进行阐述。 本座从十年多前走出校门之时就确信软件架构(设计)、数据结构和算法是软件的根本核..
阅读全文
多线程的基本概念
摘要:多线程编程必须理解的一些基本概念,适用于所有编程语言。内容:并发式编程多任务操作系统多线程vs多进程线程安全线程的生命周期线程的类型并发式编程不同的编程范式对软件有不同的视角。并发式编程将软件看做任务和资源的组合——任务之间竞争和共享资源,当资源满足时执行任务,否则等待资源。并发式编程使得软件易于理解和重用,在某些场景能够极大提高性能。多任务操作系统要实现并发,首先需要操作系统的支持。现在的操作系统大部分都是多任务操作系统,可以“同时”执行多个任务。多任务可以在进程或线程的层面执行。进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间。多任务操作系统可以“并发”执行这些进程。线
阅读全文