摘要: 最近越来越爱在园子里写点东西,原因是写这些文章不仅可以作为自己学习的读书笔记,更让我感到一些前所未有的震感。因为这样会让我思维更灵活,对知识的掌握也更全面。于是我又打算将自己对设计模式的理解也记录下来,哪怕花上再多的时间也无所谓。本部分为目录,内容不断更新中。模式开发之旅(1):单一职责原则模式开发之旅(2):开闭原则模式开发之旅(3):依赖倒转原则 模式开发之旅(4):里氏代换原则模式开发之旅(...阅读全文
posted @ 2010-01-25 17:06 xiaosuo 阅读(76) 评论(0) 编辑
摘要: 最近在看Matrin Fowler的著作《重构——改善既有代码的设计》。刚开始阅读的时候总感觉书中所列的许多重构方法过于平淡,重构步骤也过于琐屑,这些我们平常也经常会做到,习惯大气挥洒的动作,何必以近乎枯燥的过程小步前进?然而,渐渐我才体会,正是这样的小步与缓步,不过激,不躁进,再加上完整的测试配套,才是不带来bug的最佳保障。  从今天开始我打算在园子里每天记录一个重构方...阅读全文
posted @ 2009-12-26 16:55 xiaosuo 阅读(239) 评论(0) 编辑
摘要: 上大学的时候虽然每门专业课都学得还可以,但那个时候却无法理解每门学科到底学了有什么用。现在回过头来重温这些旧的知识的时候,会发现将那些当时还不是很懂的知识点再重新理解一番,对以后做开发是一件非常有意义的事情。此文将做为我重温《数据结构》这门学科的目录而预先保留,目录更新中。第一部分:线性表线性表(一):顺序表 线性表(二):单链表线性表(三):双向链表线性表(四):与线性表相关的算法线性表(五):...阅读全文
posted @ 2009-12-16 17:33 xiaosuo 阅读(352) 评论(0) 编辑
摘要: 基本组件:xtypeClass描述buttonExt.Button按钮splitbuttonExt.SplitButton带下拉菜单的按钮cycleExt.CycleButton带下拉选项菜单的按钮buttongroupExt.ButtonGroup编组按钮(Since 3.0)sliderExt.Slider滑动条progressExt.ProgressBar进度条statusbarExt.St...阅读全文
posted @ 2010-06-18 10:14 xiaosuo 阅读(11555) 评论(2) 编辑
摘要: WatiN —— Web Application Testing In .Net为什么会有WatiN?给用户提供一个.Net平台下,将Web测试自动化的便捷途径。如何通过WatiN来进行自动化测试的呢?摆事实,讲道理,乃严谨的科学态度,到底WatiN下的自动化测试如何便捷呢?代码 Code highlighting produced by Actipro CodeHighl...阅读全文
posted @ 2010-06-14 13:56 xiaosuo 阅读(2751) 评论(3) 编辑
摘要: 在网上,已经有很多关于在一个textbox限制允许的字符数量。但是如果需要,在textbox中如何去统计和限制行数呢。这里有一个解决方案,使用客户端的Javascript去限制TextArea的内容为指定的字符数量和指定的行数(不一定就等于TextArea中可见的行数)。 我们能通过使用cols 和rows属性或者 width 和height样式属性,定义可见的宽度和高度,但是我们不能通过使用H...阅读全文
posted @ 2010-05-25 09:48 xiaosuo 阅读(725) 评论(0) 编辑
摘要: 本文介绍三种方法实现多级撤消/重做。如果你有更好的实现方案,希望能给出意见。 对于撤消/重做没有一个通用的解决方案,撤消/重做对每个应用程序都是特定的。这里有三种方法去实现撤消/重做操作。你可以比较一下每一种实现的方法,选择一种最适合你的。第一种方法用在一个WPF 的商业程序中,那时候还没有任何关于设计模式的概念。当学习了一些设计模式的知识之后,发现这个解决方案有很多设计上的问题。撤消/恢复实现的...阅读全文
posted @ 2010-05-24 22:18 xiaosuo 阅读(157) 评论(0) 编辑
摘要: 策略模式: 定义一系列算法,把它们一个个封装起来,并且使它们可互相替换。该模式使得算法可独立于使用它的客户而变化。  我在上一篇介绍装饰模式的文章举了一个图书搜索的例子,文中我将可以被用来作为多次过滤条件的类看成一个修饰词来修饰直接搜索出来的结果,因为我当时我假设了数据量不大的情况,第一次搜索出来的结果是全部匹配关键字的结果,装饰模式只是在动态的添加修饰词。假设系统的数据量很大,我在最初获取所有匹...阅读全文
posted @ 2010-05-21 18:28 xiaosuo 阅读(83) 评论(0) 编辑
摘要: 装饰模式:动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。  假设我们要给图书馆系统做一个搜索功能,首先按关键字搜索图书,然后在结果的右边出现一些按钮,可以将搜索出来的图书按照为出版日期、馆藏位置、语言进行二次过滤。我在本文中将用装饰模式来处理这样需求的设计,首先声明一点:本文使用装饰模式来设计,并不意味着这是实现该功能的最佳实现方法,这里只是为了说明装饰模式解决的...阅读全文
posted @ 2010-05-21 14:58 xiaosuo 阅读(93) 评论(0) 编辑
摘要: 外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。  外观模式是一种很简单的设计模式,但是它却非常常用。对于面向对象有一定基础的朋友,即使没有听说过外观模式,也完全有可能在很多时候使用它,因为它完美地体现了依赖倒置原则和迪米特法则的思想。对于一个复杂的系统它的底层逻辑可能相互之间充满依赖,前端程序调用起来可能会出现逻辑不清晰,类和类之间...阅读全文
posted @ 2010-05-19 16:34 xiaosuo 阅读(59) 评论(0) 编辑
摘要: 你是不是非常的讨厌,当发布一些新的css到你的网站的时候,客户端的浏览器没有下载到最新版本css,令网站看起来可怕? 本文通过一个简单的控件,迫使浏览器来检索最新版本的CSS。 从使用的角度来看,我们只需要从工具箱拖放一个控件,用户可以在设计时或运行时设置具体的属性。以下是标记,能在您的ASP.NET Web窗体或用户控件中使用到:[代码] 控件支持的属性有: HRef - 获取或设置产生的lin...阅读全文
posted @ 2010-05-18 10:21 xiaosuo 阅读(70) 评论(1) 编辑
摘要: 虽然散列表在关键字和存储位置之间建立了对应关系,理想情况是无须关键字的比较就可找到待查关键字。但是由于冲突的存在,散列表的查找过程仍是一个和关键字比较的过程,不过散列表的平均查找长度比顺序查找、二分查找等完全依赖于关键字比较的查找要小得多。(1)查找成功的ASL  散列表上的查找优于顺序查找和二分查找。  【例】在例9.1和例9.2的散列表中,在结点的查找概率相等的假设下,线性探查法和拉链法查找成...阅读全文
posted @ 2010-04-09 10:09 xiaosuo 阅读(464) 评论(0) 编辑
摘要: 在用线性查找和二分查找的过程中需要依据关键字进行若干次的比较判断,确定数据集合中是否存在关键字等于某个给定关键字的记录以及该记录在数据表中的位置,查找效率与比较的次数密切相关。在查找时需要不断进行比较的原因是建立数据表时,只考虑了各记录的关键字之间的相对大小,记录在表中的位置和其关键字无直接关系。而之前介绍的哈希表就记录了存储位置和其关键字之间的某种直接关系,那么使用哈希表进行查找时,就无须比较或...阅读全文
posted @ 2010-04-08 17:23 xiaosuo 阅读(227) 评论(0) 编辑