06 2012 档案

摘要:跟JBPM学设计模式之适配器模式 模式简介 适配器模式(Adapter),将一个类的接口转换成客户希望的另一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 说起适配器模式,大家一定会想起我们笔记本使用的适配器。插座输出的电压是220v,我们的笔记本电脑是不能直接使用的,这个时候就需要一个中介,它可以输入220v的电压,然后输出笔记本电脑所需要的电压。这个例子中,我们可以将插排输出的电压,理解为其对外发布的接口;而笔记本需要的输入电压,可以理解为客户需要的接口;而适配器的工作就是将服务者提供的接口“适配”成客户需要的接口。 适配器模式由类的适配器模式和对象的适配器. 阅读全文
posted @ 2012-06-30 05:30 无风听海 阅读(1179) 评论(0) 推荐(1) 编辑
摘要:基于任务的并发编程之Parallel.Invoke(一) 如果想并行执行很多方法,最便捷的方式就是使用Parallel类提供的新方法Invoke方法。例如,假设你有下边四个独立的方法,每个方法执行一个格式化转换,并且你们确定并行执行它们是安全的。Ø ConvertEllipsesØ ConvertRectanglesØ ConvertLinesØ ConvertText为了启动这些无参返回值为空的函数时充分利用潜在的并行优势,你可以使用下边这行代码:Parallel.Invoke(ConvertEllipses,ConvertRectangles,Con 阅读全文
posted @ 2012-06-25 23:33 无风听海 阅读(1632) 评论(0) 推荐(1) 编辑
摘要:命令式数据并行 Visual C# 2010和.NETFramework4.0提供了很多令人激动的新特性,这些特性是为应对多核处理器和多处理器的复杂性设计的。然而,因为他们包括了完整的新的特性,开发人员和架构师必须学习一种新的编程模型。 这一章是一些新的类、结构体和枚举类型,你可以使用这里来处理数据并行的场景。这章将为你展示怎样创建并行代码和描述与每个场景相关的新概念,而不是关注并发编程中的最复杂的问题。这样你将可以更加充分的理解性能改进。开始并行任务 使用先前版本的.NET Framework,开发可以充分利用多核微处理器的并行能力的应用程序是很难的。使用那些可以控制并行的复杂结构来开始.. 阅读全文
posted @ 2012-06-22 23:21 无风听海 阅读(1130) 评论(0) 推荐(0) 编辑
摘要:并发编程中的NUMA架构为更高的扩展性和NUMA做准备近年来,多处理器支持的最广泛的模型对称多处理器(SMP)让位于非均匀存储器存取(NUMA)架构。对称多处理器模型的一个最大的问题就是处理器总线会限制未来的可伸缩性,因为每一个处理器拥有同样的机会访问内存和输入输出系统。使用非均匀内存访问架构,每个处理器可以更快的访问离自己近的内存。当处理器的数目超过四个的时候,非均匀内存访问架构可以提供更好的伸缩性。在windows的可伸缩性技术条款中,非均匀内存访问架构按照下面所属进行组织(见图1-17)每个计算机或者机器可以有一个或者多个组。每个组有一个或者多个非均匀内存访问节点。每个非均匀内存访问架构 阅读全文
posted @ 2012-06-22 06:27 无风听海 阅读(2963) 评论(0) 推荐(0) 编辑
摘要:从赋值操作理解不同类型的函数传参 我们都知道所谓的程序,就是对传入的数据进行操作,最终将处理的数据输出给用户。那么在我们的编程中的体现,就是通过函数(或者方法)参数传入数据,然后通过函数返回值输出处理后的数据。数据的传入涉及到函数的实参和形参的传递,数据的输出涉及到函数的返回值和返回值类型的参数。函数返回值没有什么特别之处,而其他的都是函数传参的问题,既然是传参,那么传参到底传过去了什么?函数传参与赋值操作 我们都知道函数传参涉及到形参和实参,那么实参和形参就是两个不同的变量,所以函数传参的过程,类似(或者说就是)使用实参给形参赋值的过程。那么我们先来分析按值传参的情况 图1是值类型变量的.. 阅读全文
posted @ 2012-06-21 01:43 无风听海 阅读(1312) 评论(2) 推荐(0) 编辑
摘要:摘要:我国绝大多数政府部门都已经建立起自己的业务系统,并在日常业务处理中发挥着重要的作用。由于受各种条件的限制,在建设初期各部门独立建设自己的系统,导致信息孤岛现象大量存在,严重制约了电子政务的进一步发展。通过针对具有同一服务对象建立业务数据交换平台,实现了政府部门间数据共享互联互通需求,解决电子政务中“信息孤岛”问题。电子政务数据中心经过近几年发展,从存储数据概念演变成为数据加工、数据挖掘和决策支持,通知识管理组织和管理数据,并为政府部门和公众提供多种信息服务。关键词:业务数据交换平台数据中心业务数据整理中间件工作流管理信息孤岛搜索引擎数据仓库决策支持信息化程度的高低已经成为衡量一个国家综合 阅读全文
posted @ 2012-06-17 23:20 无风听海 阅读(3134) 评论(0) 推荐(2) 编辑
摘要:技术背后的故事缘起 本文缘起 前两天写了一篇题名为“委托背后的故事”的博文,主要是关注委托这种技术需要解决的具体的问题,其中也穿插着简单的介绍了其他的实现技术,但是都没有介绍具体的实现细节。每一篇技术分享,我都需要查阅、阅读相关的资料力求准确无误,深怕自己的不慎会误人子弟。这篇文章几个园友评论没有关注委托的技术实现细节,我想有必要解释一下起初写这篇文章以及其设置器所在这个分类的目的。技术背后的故事缘起 最初迸发撰写这篇文章的想法,是看了园子里的一篇有关委托实现细节的文章,写的不错。其实从.net引入委托以来,有关委托的帖子就源源不断,其中不乏深入介绍剖析委托技术细节的优秀文章;其实我也是一个. 阅读全文
posted @ 2012-06-17 06:39 无风听海 阅读(1400) 评论(0) 推荐(3) 编辑
摘要:委托背后的故事 学习过.NET的都知道,C#中引入了一种新的类型Delegate,也就是我们经常说的委托。委托到底是什么,大家都说它类似于指针,但是要比这些指针要安全。那么为什么要引入这个委托呢,今天我们就来看看委托的这点事儿!委托前的蛮荒时代 我们大家都知道C语言中有一种很强大的武器就是指针,指针一个比较大的用处就是允许我们手动操作内存,这个是与托管代码的高级语言是一个主要的差别。我们都知道数据变量的内存地址可以存储在相应的指针变量中,同样函数的首地址也可以存储在某个函数指针变量里的。这样我们就可以通过这个函数指针变量来调用其所指向的函数了。一般情况下我们使用函数指针的情景如下代码所示,我们 阅读全文
posted @ 2012-06-16 01:18 无风听海 阅读(2419) 评论(18) 推荐(2) 编辑
摘要:并发编程中需要谨记的规则 最小化临界区 Amdahl定律和Gustafson定律都将并行算法中的顺序执行的工作视为性能问题的头号敌人。两个执行代码区段中间的时间需要顺序执行,这就是众所周知的临界值。在图1-16的分析Gustafson定律的图表中有四个这样的临界区。 图 1-16 当你并行化你的任务的时候,为了实现最好的性能我们需要最小化这些临界区。大多的时候,是难以避免并行执行区域之间的串行执行的代码的,因为需要加载并行任务和收集执行结果。然而,优化这些临界区域的代码并且移除不必要的代码比协调并行代码甚至更重要。 当你面对一个拥有太多临街区域的执行计划的时候,要谨记Amdahl定律。如果.. 阅读全文
posted @ 2012-06-14 00:17 无风听海 阅读(1568) 评论(0) 推荐(1) 编辑
摘要:上个世纪80年代电子政务起步发展至今,与互联网Web1.0、Web2.0技术发展相适应,电子政务发展经历了信息发布、单向服务、双向互动、全方位网上事务处理等发展阶段,电子政务在推进政务公开、推动政府职能转变等方面发挥了重要作用。深入分析当前电子政务发展现状和形势,有利于指导和推进本部门电子政务的纵深发展。一、世界电子政务发展总体情况和特点 1.与各国信息产业发展匹配,电子政务发展呈现明显区域差异性。各国政府积极推动电子政务发展,而各国电子政务基础设施、政策、服务等方面存在较大的差异。据联合国《金融危机时期电子政务的利用》(2010)报告显示,从电子政务发展区域布局上而言,与各区域信息产业发展. 阅读全文
posted @ 2012-06-13 06:07 无风听海 阅读(494) 评论(0) 推荐(0) 编辑
摘要:--理解并发编程中的几种并发方式 时刻谨记并发设计 当你设计代码利用多核优势的时候,重要的是不要老是想着C#程序代码是独自执行的。C#为并发代码做了设计,也就是很多代码可以在同一个进程里同时执行或者交错执行。相同的类方法可以在并行代码里执行。如果这个方法在静态变量里保存了状态,以后再使用这个状态,这样的并行执行会产生非期望的和不可预料的结果。 就像前边解释的,多核微处理器上的并行编程使用的是共享内存模型。如果没有考虑并发,那些在相同的共享内存里的数据可能会导致不可预料的结果。 使每个类和方法可以没有副作用的并行执行是一个好的实践。如果你考虑不能讲... 阅读全文
posted @ 2012-06-12 23:33 无风听海 阅读(5749) 评论(3) 推荐(2) 编辑
摘要:并发编程中的重重量级模型和轻量级模型 使用轻量级并发开发 不管是Amdahl定律还是Gustafson的定律都没有考虑引入并发需要付出的额外开销。同时也没有考虑那些可以将顺序代码转变成可以利用并行优势的算法的设计模式。重要的是减少程序中必须执行的顺序代码,改善对并行执行单元的利用。 以前的.NET 版本,如果你想在一个进程内并行执行C#应用程序,你必须创建和管理多线程(软件线程)。所以,你必须编写复杂的多线程代码。分解算法到多个线程上,协调不同的代码单元,在它们之间共享信息,并且收集执行结果确确实实是一件复杂的编程工作。随着逻辑核心的增多,情况变得甚至更糟了,因为你需要更多的线程来获取更好的可 阅读全文
posted @ 2012-06-10 21:37 无风听海 阅读(1898) 评论(0) 推荐(2) 编辑
摘要:跟JBPM学设计模式之原型模式模式简介 原型模式,用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式其实就是从一个对象创建另外一个可以定制的对象,而且客户是不需要知道任何创建的细节的。原型模式给每一个产品类配备一个克隆方法(大多的时候只需要给产品等级结构的顶级类配备一个克隆方法即可),这样,一个使用了原型模式的系统与他的产品对象时怎么创建出来的,以及这些产品对象的结构式怎样的,以及这个结构是否会发生变化就没有关系了。原型模式的结构图如下 图 1. 原型设计模式结构图 原型模式中涉及到了三种角色,分别是客户角色、抽象原型角色、具体原型角色。 客户角色:客户提出创建对象的需求 阅读全文
posted @ 2012-06-09 13:25 无风听海 阅读(1084) 评论(0) 推荐(0) 编辑
摘要:跟JBPM学设计模式之建造者模式 模式简介 建造者模式,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 一个产品常常会有不同的组成成分作为零部件,这些零件可能是对象,也可能不是对象,他们通常由叫做产品的内部表象。不同的产品可以有不同的内部表象,也就是不同的零部件。使用建造者模式可以使客户端不需要知道所生成的产品对象有哪些零部件,每个产品的相应零部件有什么不同,是怎么建造出来的,以及是怎样组成产品的。建造者模式的简图如下 图 1. 建造者模式结构图 在这个示意图中,最终产品是由两部分组成的,所以相应的建造方法也有两个。这个模式涉及到一下四个角色。 抽象... 阅读全文
posted @ 2012-06-05 01:57 无风听海 阅读(1220) 评论(2) 推荐(0) 编辑
摘要:并发编程下的性能定律(翻译) 理解Amdahl定律 如果你想利用多核的优势在尽可能少的时间运行尽可能多的指令,那么就需要以并行的序列分离代码。然而,大多的算法需要运行一些串行代码来调整并行执行。例如,并行执行很多代码块,最后收集他们执行的结果。那些分解并行执行工作复杂和收集执行结果的代码是串行代码,它是不能利用并行的优势的。如果你的算法中有很多这样的代码片段,那么串行代码所占的比例就会增加,并且能够获取到的性能收益就会减少。 Gene Amdahl是一个著名计算机架构师,当一个系统中仅有少量的计算机改善硬件的时候,那么能够获得最大的性能改善是多少呢?他做了大量与这方面有关的观察研究... 阅读全文
posted @ 2012-06-04 04:45 无风听海 阅读(2504) 评论(9) 推荐(1) 编辑

点击右上角即可分享
微信分享提示