Fork me on GitHub

2013年4月13日

摘要: 重复的方式以及如何消除重复有意识重复(懒惰的重复)问题:A处的代码和B处的代码很相似,但是又不完全相同。原因:开发人员的懒惰或技能不足,进行的是拷贝式的开发。方案:引入模板方法模式或回调机制(函数指针、委托和接口)。模板方法模式 1 public abstract class TemplateClass 2 { 3 public void Do() 4 { 5 DoCommonStep1(); 6 DoCustomStep2(); 7 DoCommonStep3(); 8 } 9 10 private void D... 阅读全文
posted @ 2013-04-13 11:59 HackerVirus 阅读(223) 评论(0) 推荐(0)
摘要: 谈谈下订单的几种实现方式(用不同的模式实现:装饰器模式、代理模式、命令模式、状态模式、模版模式)本文讲PlaceOrder函数的实现(重点在业务逻辑层),让我们来分别用不同的设计模式来实现吧:装饰器模式、代理模式、命令模式、状态模式、模版模式。假设我们实现需求如下: 在PlaceOrder函数中需要做如下工作 1. 检查权限,未登录的不能递交订单 2. 计算税 3. 记录日志好了,让我们分别来实现吧....当然,是用不同的设计模式分别实现。装饰器模式实现请看PlaceOrder函数方法体:public bool PlaceOrder(OrderI... 阅读全文
posted @ 2013-04-13 11:57 HackerVirus 阅读(710) 评论(0) 推荐(0)
摘要: 一个导航条的进化这篇文章很基础,高手请绕道。学习编程是个循序渐进的过程,最重要的是学习思路、解决问题的方法,了解的多了就会有自己的新方法,懂得如何结合现有方法解决新问题,甚至是想出新方法来解决。下面通过讲述一个导航条的进化,来展示思路的重要,其间也有代码之美。导航条是很常见的网页元素,几乎所有的网站上都有。像上图这样的导航条会存在于许多页面中,我们大可以复制、粘贴到每个页面来完成工作。这看起来很快速,但如果策划要求调整导航条的顺序或者添加新项呢?把一个页面改好后,再一个个的复制、粘贴吗?懒惰是打字员优秀品质之一,遇到重复劳动的时候,我们就要思考怎样让计算机帮我们来做。解决方法是写个 JavaS 阅读全文
posted @ 2013-04-13 11:56 HackerVirus 阅读(242) 评论(0) 推荐(0)
摘要: SQL 关于row_number()over()SQL 关于row_number()over()今天用到了row_number()over(),现在就以知识点的形式总结一下,以便于以后的回顾。-------------------参考资料MSDN-------------------语法:ROW_NUMBER ( ) OVER ( [ PARTITION BY value_expression , ... [ n ] ] order_by_clause )通过语法可以看出 over里有两个参数,partition by 和 order by ,其中partition by是可以不写的,... 阅读全文
posted @ 2013-04-13 11:54 HackerVirus 阅读(365) 评论(0) 推荐(0)
摘要: “容器-组件-服务”模型 我前面一篇博客讲了自定义窗体设计器,其实功能太简单,主要想阐述的是底层原理(虽然我不保证VS IDE设计器确实是那样去实现的)。编程讲究的是刨根问底,刨到祖坟最好,这篇或者可能以后几篇博客我想说一下VS IDE中的窗体设计器,虽说不能面面俱到,但也能让大家知道个大概。初学者可能阅读起来有些困难。其实回头一看,我之前的好几篇博客倒是跟窗体设计器有些关系,当时写的时候也没有想到说为了照顾以后要说的内容,算是凑巧,这其中包括系列(九)、系列(八)、系列(七)。我总结了一下,了解窗体设计器主要搞懂三个部分:1)“容器-组件-服务”模型;2)设计时(Design_Time)和运 阅读全文
posted @ 2013-04-13 11:52 HackerVirus 阅读(719) 评论(0) 推荐(0)
摘要: STL学习小记--与C++模板相关的几个特性先谈谈模板在我脑子里的典型吧template<class T>const T& GetMax(const T& t1, const T& t2){ return t1>t2?t1:t2;}如上面的代码,这是一个模板函数(template function)。要使用这个函数,传入的参数必须满足>运算符的条件。在C#中有where关键字,很可惜C++的模板没有这种限制。而据说BS本人也一再声明C++的模板不需要这种限制,作为一个初学者,其中缘由就不得而知了。template并非一次编译便生成适合所有类型的代 阅读全文
posted @ 2013-04-13 11:50 HackerVirus 阅读(210) 评论(0) 推荐(0)
摘要: yield在WCF中的错误使用——99%的开发人员都有可能犯的错误!在定义API的时候,对于一些返回集合对象的方法,很多人喜欢将返回类型定义成IEnumerable<T>,这本没有什么问题。这里要说的是另一个问题:对于返回类型为IEnumerable<T>的方法来说,我们可以使用yield return的方式来输出返回集合的元素。但是如果我们不了解yield 关键字背后的实现机制,很有可能造成很大的问题。这是一个WCF相关的问题,我想99%的人都有可能会犯这样的错误——即使你对yield了解得非常透彻。闲话少说,我们通过一个简单的实例来说明这个问题。我们定义了如下一个I 阅读全文
posted @ 2013-04-13 11:44 HackerVirus 阅读(177) 评论(0) 推荐(0)

2013年4月12日

摘要: http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/heliossr1Downloads Home Juno PackagesIndigo PackagesHelios PackagesGalileo PackagesGanymede PackagesEuropa PackagesDownload LinksWindows 32-bitWindows 64-bitMac OS X(Cocoa 32)Mac OS X(Cocoa 64)Linux 32-bitLinux 64-bitDownloaded 阅读全文
posted @ 2013-04-12 16:26 HackerVirus 阅读(385) 评论(0) 推荐(0)
摘要: SQL 存储过程入门(流程控制)(三)这里我们讲一下存储过程的流程控制, if else,case ,while,这里没有for循环的 ,这些跟c,c++,c#等语言都差不过的。一,首先来看if else使用 if 条件beginsql 语句endelse beginsql语句end看个简单例子declare @id int --声明个变量set @id=5 --设置厨初始值if(@id=1) begin print 'right' endelse if(@id=0) begin print '... 阅读全文
posted @ 2013-04-12 15:04 HackerVirus 阅读(264) 评论(0) 推荐(0)
摘要: Python入门(一):一句话统计文章不重复汉字数[x for x in set(open("c:\\test.txt").read()) if 19968<=ord(x)<=40869] 使用Python可以实现一句话统计文章里的不重复汉字数,代码如上。 这一句话涉及到Python的许多基本概念,拆解着分析一下。open("c:\\test.txt").read() 上面一句的样式和其它语言类似,都是打开一个文件,然后读其中的内容。路径的写法也是传统的两个反斜杠,双引号包含。Python里的单引号和双引号没有太多区别,成对使用即可。好处是当 阅读全文
posted @ 2013-04-12 15:01 HackerVirus 阅读(1851) 评论(0) 推荐(0)