05 2012 档案

摘要:基于任务模型的并发编程(二)并发编程和多核编程 传统的顺序代码一个指令一个指令的执行,并不能充分的利用多核的优势,因为这些串行执行的指令仅仅能够运行在这些内核中的某一个。使用visualC#2010编写的顺序代码,如果没有使用.NET4.0提供的新特性将任务分派到多个核心上,那也是不能充分的利用多核心的优势的。对于已存的顺序代码并不存在一种自动的并发。 并发编程是一种代码充分的利用底层硬件提供的并行执行能力的编程模式。并发编程模式同时运行很多的指令。就像前面所解释的,现在又很多不同种类的并行执行架构,并且对他们就这一话题的细节进行深入分析需要一整本书来展现。 多核编程是一种代码充分的利用多个正 阅读全文
posted @ 2012-05-31 06:48 无风听海 阅读(1936) 评论(1) 推荐(3) 编辑
摘要:基于任务模型的软件开发 多核心共享内存下的软件开发 在2005年,Herb Sutter在Dr.Dobb’s Journal上发表了题为“免费午餐结束:软件开发将转向并发编程”的文章。其中他谈到现在又必要在软件开发中考虑并发了,从而充分的挖掘呈指数量级增加的微处理器的潜能获取生产力的提高。现在微处理器厂商一直都在增加处理器的核心,而不是增加时钟频率。软件开发者将不能够依赖增加处理器时钟频率免费获取性能的提升。 现在几乎所有的机器的处理都至少有两个核心。然而,四核和八核的微处理器在服务器、高级工作站上很流行,甚至是高端的便携电脑。拥有更多内核的单个处理器就将要到来。现代化的微处理器提供了新的.. 阅读全文
posted @ 2012-05-30 00:02 无风听海 阅读(1484) 评论(0) 推荐(1) 编辑
摘要:跟JBPM学设计模式之抽象工厂模式 模式简介 前面我们已经学习了简单工厂模式和工厂方法模式,今天我们来学习一下抽象工厂模式;抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。抽象工厂模式是所有的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式的基本结构图如下所示。 图 1. 抽象工厂结构图 左边的等级结构代表工厂的等级结构,右边的等级结构代表两个不同产品的等级结构。此模式可以向客户端提供一个借口,使得客户端不用指定产品的具体类型的情况下,同时创建出多个产品对象。一般情况下我们使用工厂获取的对象是由不同产品的实体产品组成的混合体,这一点使用工厂... 阅读全文
posted @ 2012-05-27 23:37 无风听海 阅读(1278) 评论(0) 推荐(2) 编辑
摘要:跟JBPM学设计模式之工厂方法模式 模式简介 工厂方法模式,定义一个用于创建对象的接口,让子类决定实例化那个类,其使一个类的实例化延迟到其子类中。 前边我们学习了简单工厂模式,简单工厂模式的最大优势在于工厂类中包含了必要逻辑判断,根据客户端的条件动态实例化相关的类,对于客户端不需要了解具体的产品类,所以解除了对具体产品类的依赖。在引入新的产品的时候,我们不需要修改客户端代码,但是必须修改工厂,所以违背了开闭原则。 工厂方法模式是简单工厂模式的进一步抽象和推广。由于工厂类使用多态性,使其即保持了简单工厂模式的优点,也克服了其缺点。在工厂方法模式中,核心的工厂类不再负责所有产品的创建,而... 阅读全文
posted @ 2012-05-24 06:41 无风听海 阅读(1479) 评论(1) 推荐(1) 编辑
摘要:跟JBPM学习设计模式之简单工厂模式模式简介 简单工厂模式是类的创建模式,其专门负责将大量拥有共同接口或者基类的产品类进行实例化。简单工厂模式由工厂类运行时根据传入的参数动态的决定需要实例化的类,这样客户只需要了解产品的基类,解除客户对具体产品类的依赖。简单工厂模式的结构如下图所示图 1. 简单工厂模式结构图 从图中可以看出,简单工厂模式主要涉及一下三种结构角色1. 工厂类,其有客户端直接调用,并根据具体的业务逻辑要求创建相应的产品对象实例;2. 产品基类,所有具体的产品类的基类或者接口,封装所有具体产品共享的行为(和数据), 客户需要了解产品基类;3. 具体的产品类,本模式需要创建的实例的. 阅读全文
posted @ 2012-05-17 02:16 无风听海 阅读(1234) 评论(0) 推荐(0) 编辑
摘要:魔鬼的梦魇—验证IE中的js内存泄露模式(续) 前面几篇文章我们验证学习了Justin Rogers文章中提出的集中泄露模式,但是其中并没有介绍Iframe的内存泄露情况;其中的各种原因,我觉的虽然当时ajax的兴起,极大地促进了web应用程序的开发和发展,但是并没有涉及到大规模的动态更新页面DOM元素,所以这个时候的泄露都不至于会引起大家的关注;但是随着大量js类库框架的出现,特别是extjs的出现,功能丰富界面漂亮美观,同时提供了大量丰富的前端控件,顿时使人眼前一亮,很多人都会不由的感到震撼,原来bs也可以做出这么优美酷炫的界面;特别是最近移动互联网的风行,很多复杂的应用都转移到了前段,这 阅读全文
posted @ 2012-05-16 00:08 无风听海 阅读(3467) 评论(0) 推荐(1) 编辑
摘要:魔鬼的梦魇—验证IE中的js内存泄露模式(三) 按照Justin Rogers文章的顺序,接下来的这个模式应该是跨页内存泄露模式(cross-page leak),但是由于这个模式产生的中间对象,我们并不能访问到,所以我也想不到好的有可视效果的验证方式,所以就不介绍了,有兴趣的话大家可以看一下原文;今天简单的来学习这篇文章的最后一个模式Pesudo-Leak。 很多时候一些API运行的时候的实际行为和被期望的行为会导致你无法断定内存泄露的存在。Pseudo-leak几乎总是出现在进行动态脚本操作的同个页面内,并且当导航到一个空白页面后就很难察觉到泄露。我们需要做的就是怎样断定其不是跨页内存泄露 阅读全文
posted @ 2012-05-14 05:33 无风听海 阅读(1689) 评论(0) 推荐(0) 编辑
摘要:引用传参--面向对象的魅力 面向对象开发作为一种主流的软件开发方式,极大地改变了我们开发软件的方式。其遵从人类认识世界的普遍规矩,将现实中纷繁复杂的事物抽象为业务实体类,这就是由具体到抽象的认知过程;其积极响应软件工程的需求,其使我们开发的软件具有灵活性、扩展性、维护性的能力,极大地促进了软件开发的发展。 那么传递参数的时候,面向对象技术能给我们带来什么好处呢? 今天就以昨天碰到的问题作为引子,我们来简单的了解一下面向对象传参的魅力! 在web开发中,我们经常需要从父页面传递参数到子页面中,具体的代码如下, functionshowModelDialog(xml){varurl="c 阅读全文
posted @ 2012-05-13 21:39 无风听海 阅读(2704) 评论(0) 推荐(1) 编辑
摘要:魔鬼的梦魇—验证IE中的JS内存泄露(二) 闭包往往是需要为内存泄露负责的,因为使用它会很容易产生不为程序员所发现的循环引用。父函数的参数和局部变量将会一直被冻结、引用和持有,知道闭包本身被释放,这并不是显而易见的。事实上闭包已经变成如此普遍的变成策略,以至于开发人员经常的深陷问题之中,但是已存的我们可以依赖使用的资源却很少。我们来看看这个使用了闭包的循环引用图,它详细的描述了闭包及其造成的没存泄露的由来,并且指出了这些循环引用是如何形成的。 一般情况下的循环引用时由于两个特定的对象彼此持有对方的引用造成的,但是闭包却不一样。它不是直接引用,而是其通过引入父函数的作用域信息而产生的。正... 阅读全文
posted @ 2012-05-11 06:08 无风听海 阅读(557) 评论(0) 推荐(0) 编辑
摘要:随着移动互联网的发展,现在越来越多的应用开始想bs方向转移,原来很多复杂的计算逻辑也自然随着转移到了客户端,需要客户端的javascript来担任实现的角色;原本不起眼的内存泄露,现在却犹如恶魔会很快的吞噬掉用户的内存。从去年开始就在专注js面向对象开发实现、托管代码垃圾回收算法、js内存泄露相关的东西;如果大家关注过这方面的东西,那我想你一定读过微软开发人员Justin Rogers撰写的那篇经典的内存泄露模式,其实道理阐述的很清楚,但是怎么证明和呈现泄露的存在呢?这是一直困扰我的一个难题!今天我们针对这篇文章的各个模式,记录一下自己的一些想法,很多是自己的推论,并不一定正确,欢迎大家批评. 阅读全文
posted @ 2012-05-08 06:03 无风听海 阅读(2162) 评论(1) 推荐(0) 编辑
摘要:垃圾回收器之标记擦除法 这一次我们来简单的了解一下标记擦除法(mark-and-sweep),标记擦除法是第一个被广泛使用的,并且可以解决循环引用问题的垃圾回收算法; 使用标记擦除法的时候,垃圾对象并不能立即被回收,相反垃圾的回收是等到内存不够使用的时候才触发;这个时候程序的执行流程将被暂时的休眠,一旦所有的垃圾回收后,才会唤醒正常的程序执行流程。 标记擦除法又被称为跟踪垃圾的回收器算法,因为它跟踪所有可以直接或者间接被程序访问的对象集合;这些可以被程序直接访问的对象,有局部变量和静态变量。在回收器中,这些变量被称为根对象。一个被其他对象字段引用的对象称为可被间接访问的对象。所以可以... 阅读全文
posted @ 2012-05-04 06:43 无风听海 阅读(714) 评论(0) 推荐(0) 编辑
摘要:垃圾回收器算法之引用计数器法 微软将运行在公共语言运行时里的代码成为托管代码;但是从更广泛的意义上来说,只要语言提供了自动内存管理功能,我们使用其开发的代码都可以称为托管代码;自动内存管理即我们平时所说的垃圾回收器,垃圾回收器的实现是一个复杂的过程,其中涉及到很多的细节;垃圾回收器的难点并不是垃圾的回收过程,而是定位垃圾对象。当一个对象不再被引用的时候就可以被回收了,但是我们怎样才能知道其没有被引用呢? 算法定义 为每个对象增加一个字段记录被引用的次数,并由运行时跟踪和更新引用的总数; object p = new ComparableInt32(57); object q... 阅读全文
posted @ 2012-05-03 06:07 无风听海 阅读(2102) 评论(0) 推荐(0) 编辑

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