仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 859|回复: 11
打印 上一主题 下一主题

[学习教程] ASP.NET编程:构建更好的线程平安汇合仓酷云

[复制链接]
再现理想 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:26:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
有个问题想请教你一下,呵呵:)你觉得将来学什么方向比较好,我真是想不出来,知道的太少了,麻烦了。年夜部分线程平安的汇合都有一些基本性的缺点:固然每一个操纵都是线程平安的,可是多个操纵没法组合起来利用。这意味着一些基础的实行按次,比方在弹召盘部元素之前反省栈内元素数目会呈现潜伏的伤害。只管已有一些API想法将某些操纵绑定起来(比方.NET4的CoordinationDataStructures),可是它们常常会引进丑恶的办法(如TryDequeue)。
.NET1里的汇合实验了另外一种体例,它们会对外表露一个SyncRoot属性,而不是在外部举行锁定。固然SyncRoot仍旧是同步对象的默许机制,可是.NET2已丢弃了SyncRoot/Wrapper计划形式。
那末该怎样创立一个可用的组合式API呢?JaredParson以为汇合不该该间接表露出线程平安的API,一切的办法都应当属于一个一时的对象,而这个对象只要在您锁定汇合的时分才被创立出来。这个一时对象是汇合的“钥匙”,只要钥匙的持有者才干猎取汇合内容。
以下示例为JaredParsons的线程平安行列:
  1. staticvoidExample1(ThreadSafeQueuequeue){using(varlocked=queue.Lock()){if(locked.Count>0){varfirst=locked.Dequeue();}}}
复制代码
名为locked的对象自己不是线程平安的,可是开辟职员只要在using代码块中才干准确实行操纵。在恪守了这一复杂划定规矩以后,开辟块里的一切代码就是线程平安的。Jared注释道:
与年夜部分线程平安的计划一样,这些代码仍是有被误用的大概:

  • 在ILockedQueue烧毁以后却持续利用它。这类做法应当被克制,用户现有的常识一样平常足以免这个成绩。别的一些静态反省工具,比方FxCop,会把这类做法辨认为一个毛病。我们也能够利用一种更严峻的做法来制止此类情形呈现:增加一个disposed标志,并在每一个办法中举行反省。
  • 假如用户在超过多个Lock语句的情形下保存某个值(比方Count),那末大概会对汇合的情况呈现毛病的判别和假定。

  • 假如用户没有准确烧毁ILockedQueue,那末这个对象会被永世锁定。侥幸的是,关于完成了IDisposable的对象,FxCop一样会将这类做法辨认为一个毛病——只管这不是一个万分稳妥的机制。
  • 没法断定用户是不是会临时持有ILockedQueue对象。固然IDisposable一样平常包括着“短时间”的意味,可是这其实不能做出完善的包管。
  • ILockedQueue并非线程平安的。固然一样平常情形下用户不会把IDisposable对象交给多个线程利用,但这也是必需思索到的情形之一。
检察英文原文:BuildingaBetterThread-safeCollection
本文出自:http://www.infoq.com/cn/news/2009/02/Threaded-Collections
如果英语好,口才好,加上女孩子的优势说不定有机会进去做做别的工具)
第二个灵魂 该用户已被删除
沙发
发表于 2015-1-21 06:23:17 | 只看该作者
现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。
飘灵儿 该用户已被删除
板凳
发表于 2015-1-24 16:38:16 | 只看该作者
CGI程序在运行的时候,首先是客户向服务器上的CGI程序发送一个请求,服务器接收到客户的请求后,就会打开一个新的Process(进程)来执行CGI程序,处理客户的请求。CGI程序最后将执行的结果(HTML页面代码)传回给客户。
再现理想 该用户已被删除
地板
 楼主| 发表于 2015-1-24 18:20:37 | 只看该作者
能产生和执行动态、交互式、高效率的站占服务器的应用程序。运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写。
灵魂腐蚀 该用户已被删除
5#
发表于 2015-2-2 11:42:35 | 只看该作者
虽然在形式上JSP和ASP或PHP看上去很相似——都可以被内嵌在HTML代码中。但是,它的执行方式和ASP或PHP完全不同。在JSP被执行的时候,JSP文件被JSP解释器(JSPParser)转换成Servlet代码,然后Servlet代码被Java编译器编译成.class字节文件,这样就由生成的Servlet来对客户端应答。所以,JSP可以看做是Servlet的脚本语言(ScriptLanguage)版。
若相依 该用户已被删除
6#
发表于 2015-2-4 13:34:34 | 只看该作者
可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性。
简单生活 该用户已被删除
7#
发表于 2015-2-6 00:32:49 | 只看该作者
目前在微软的.net战略中新推出的ASP.net借鉴了Java技术的优点,使用CSharp(C#)语言作为ASP.net的推荐语言,同时改进了以前ASP的安全性差等缺点。但是,使用ASP/ASP.net仍有一定的局限性,因为从某种角度来说它们只能在微软的WindowsNT/2000/XP+IIS的服务器平台上良好运行(虽然像ChilliSoft提供了在UNIX/Linux上运行ASP的解决方案.
海妖 该用户已被删除
8#
发表于 2015-2-11 08:50:43 | 只看该作者
能产生和执行动态、交互式、高效率的站占服务器的应用程序。运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写。
因胸联盟 该用户已被删除
9#
发表于 2015-2-21 07:33:47 | 只看该作者
ASP在执行的时候,是由IIS调用程序引擎,解释执行嵌在HTML中的ASP代码,最终将结果和原来的HTML一同送往客户端。
小女巫 该用户已被删除
10#
发表于 2015-3-6 19:56:58 | 只看该作者
如今主流的Web服务器软件主要由IIS或Apache组成。IIS支持ASP且只能运行在Windows平台下,Apache支持PHP,CGI,JSP且可运行于多种平台,虽然Apache是世界使用排名第一的Web服务器平台。
飘飘悠悠 该用户已被删除
11#
发表于 2015-3-8 18:03:03 | 只看该作者
市场决定一切,我个人从经历上觉得两者至少在很长时间内还是要共存下去,包括C和C++,至少从找工作就看得出来,总不可能大家都像所谓的时尚一样,追捧一门语言并应用它。
变相怪杰 该用户已被删除
12#
发表于 2015-3-22 21:57:00 | 只看该作者
弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 16:44

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表