动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。有时我们希望给某个对象而不是整个类添加一些功能。例如,一个图形用户界面工具箱允许你对任意一个用户界面组件添加一些特性,例如边框,或是一些行为,例如窗口滚动。使用继承机制是添加功能的一种有效途径,从其它类继承过来的边框特性可以被多个子类的实例使用。但这种方法不够灵活。因为边框的选择是静态的,用户不能控制对组件加边框的方式和时机。一种极为灵活的方式是将组件嵌入另一个
系统 2019-08-29 23:40:19 2158
效果逼真,令人满意,完全纯手工制作,蜡烛再润色一下,以假乱真不是不可能……今天心情很好,因为做出这个效果也是很偶然的想法,可能这就是别人所谓的创意涌现吧。臭美一下后,马上进行,Let’sGO!1、Ctrl+J文档属性设置300*200尺寸,黑色背景。2、矩形工具,画矩形,填充色无所谓,任意变形工具,将下面都往里压,可以结合shift与ctrl两边同时进行提高速度,变形后,呈现出一个上边长下边短的梯形。3、在选中蜡身的前提下,展开混色器中的颜色面板,进行线性
系统 2019-08-29 23:29:24 2158
设计缓存的目的缓存模块可以用来实现下列功能:提供了一系列的API它使得开发者不需要学习很多内部的工作机制,就可以将常用的缓存功能加入应用使用企业库的配置工具很容易配置性能高效线程安全,内部的代码考虑到了在多个线程调用,没有非预期的内部交互。使用后端存储,使得发生以外也可以保持数据的完整无缺。保证了内存中的数据和后端存储保持数据同步。本节讲述一些缓存模块设计的亮点,和设计的细节。还包括一些过期处理的设计和扫描处理的设计。1、设计亮点上图显示的是缓存模块中关键
系统 2019-08-29 23:19:28 2158
原文链接:http://blog.csdn.net/historyasamirror/article/details/4270633作为程序员从应用层面来考虑的四个概念同步阻塞IO:在这个模型中,应用程序(application)为了执行这个read操作,会调用相应的一个systemcall,将系统控制权交给kernel,然后就进行等待(这其实就是被阻塞了)。kernel开始执行这个systemcall,执行完毕后会向应用程序返回响应,应用程序得到响应后,
系统 2019-08-29 23:17:51 2158
昨天偶然看到网上有人讨论究竟是该用viewstate还是session来保存信息.忽然觉得有必要去深入的研究一下这两个东东了.我们先来看深入分析一下viewstate,为了分析的相对完整性,先从简单的说起:在asp时代,大家都知道一个html控件的值,比如input控件值,当我们把表单提交到服务器后,页面再刷新回来的时候,input里面的数据已经被清空.这是因为web的无状态性导致的,服务端每次把html输出到客户端后就不再于客户端有联系.asp.net巧
系统 2019-08-29 23:14:55 2158
内存镜像法的步骤(1)用OD打开软件(2)点击选项——调试选项——异常,把里面的忽略全部√上。CTRL+F2重载下程序(3)按ALT+M,打开内存镜象,找到程序的第一个.rsrc.按F2下断点,然后按SHIFT+F9运行到断点,接着再按ALT+M,打开内存镜象,找到程序的第一个.rsrc.上面的代码段.text(或者CODE)(也就是00401000处),按F2下断点。然后按SHIFT+F9(或者是在没异常情况下按F9),直接到达程序OEP实战1查壳用PE
系统 2019-08-29 22:51:08 2158
我在前几天的博客中提到,微软所谓Windows“黑屏”并不值得恐慌,即使用户是盗版的,微软采取的是仍然是很温和的政策,不象有的软件过期往往直接就。所谓“黑屏”,在媒体和竞争对手的炒作下,被普通用户严重误读,甚至引发恐慌。所谓“黑屏”,其实盗版Windows系统的桌面每隔60分钟变成黑底色,用户可以通过桌面属性改成其它或默认的桌面,完全不影响使用,更不会对用户的数据造成安全性影响。这其实和大家使用未注册的WinRAR解压软件,打开时弹出个提示窗口是一样的,都
系统 2019-08-29 22:45:50 2158
昨天下载了一个将近一G的软件,在解压时,提示“CRC校验失败,文件被破坏”,不至于再重新下载吧,需要四个多小时呢,网上的方法也试了好多种,都不好用...我采用的方法很简单:在没有解压完(提示出错的情况下)拷贝文件到其它目录,等解压完成,OK,文件依然好用,这个方法应该是有针对性地,还是枚举一下网络的做法。网络的方法:办法一:WinRAR本身就带有压缩包修复功能。点击菜单“工具”下的“修复压缩文件”即可,快捷键是“ALT+R”。此法可修复一部分压缩包的常规错
系统 2019-08-29 22:41:41 2158
1.缘起:假设我们要开发一个多人跳棋游戏。在跳棋游戏中,当一个人走一步棋之后,控制权就轮到下一家,如此轮询,一圈之后控制权又回到自己,然后再继续轮圈下去。我们可以使用数组或列表等数据结构来解决这种转圈圈的问题,但是始终都不够直观。我设计了Circle来对“圈”这种数据结构进行抽象,我们在类似跳棋这样的游戏中可以非常方便地直接使用它。Circle的形象示意图如下:2.适用场合:需要类似“圈”这样的数据结构支持的场合。3.设计思想与实现Circle也是一个非常
系统 2019-08-29 22:15:04 2158
全文转载:http://pengjiaheng.iteye.com/blog/524024作者:和你在一起[fromJavaEye]为什么要分代分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率。在Java程序运行的过程中,会产生大量的对象,其中有些对象是与业务信息相关,比如Http请求中的Session对象、线程、Socket连接,这类对象跟业务直接挂钩,因此生命周期比
系统 2019-08-29 21:59:34 2158