上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 27 下一页
  2012年10月6日
摘要: 抽象是隐藏多余细节的艺术。在面向对象的概念中,抽象的直接表现形式通常为类。Python基本上提供了面向对象编程语言的所有元素,如果你已经至少掌握了一门面向对象语言,那么利用Python进行面向对象程序设计将会相当容易。一、封装面向对象程序设计中的术语对象(Object)基本上可以看做数据(特性)以及由一系列可以存取、操作这些数据的方法所组成的集合。传统意义上的“程序=数据结构+算法”被封装”掩盖“并简化为“程序=对象+消息”。对象是类的实例,类的抽象则需要经过封装。封装可以让调用者不用关心对象是如何构建的而直接进行使用。一个简单的Python类封装如下:Encapsulation_metacl 阅读全文
posted @ 2012-10-06 19:20 JeffWong 阅读(9026) 评论(6) 推荐(3) 编辑
  2012年9月9日
摘要: 最近写了个小程序用到了C#4.0中的线程安全集合。想起很久以前用C#2.0开发的时候写后台windows服务,为了利用多线程实现生产者和消费者模型,经常要封装一些线程安全的容器,比如泛型队列和字典等等。下面就结合部分MS的源码和自己的开发经验浅显地分析一下如何实现线程安全容器以及实现线程安全容器容易 阅读全文
posted @ 2012-09-09 20:22 JeffWong 阅读(7884) 评论(4) 推荐(7) 编辑
  2012年8月5日
摘要: 一、短路逻辑短路逻辑(short-circuit logic)也叫懒惰求值(lazy evaluation),在我们熟知的布尔运算中有一个非常有趣的特性:只有在需要求值时才进行求值。举例来说,ConditionA() and ConditionB()需要两个条件都为真时才是真,所以如果ConditionA() 为假,表达式立刻返回false,而不会去计算ConditionB()造成不必要的运算浪费。 static void Main(string[] args) { if (ConditionA() && ConditionB()) ... 阅读全文
posted @ 2012-08-05 19:11 JeffWong 阅读(1540) 评论(0) 推荐(0) 编辑
摘要: Python中常见的数据结构可以统称为容器(container)。序列(如列表和元组)、映射(如字典)以及集合(set)是三类主要的容器。一、序列(列表、元组和字符串)序列中的每个元素都有自己的编号。Python中有6种内建的序列。其中列表和元组是最常见的类型。其他包括字符串、Unicode字符串、buffer对象和xrange对象。下面重点介绍下列表、元组和字符串。1、列表列表是可变的,这是它区别于字符串和元组的最重要的特点,一句话概括即:列表可以修改,而字符串和元组不能。(1)、创建通过下面的方式即可创建一个列表:list1=['hello','world' 阅读全文
posted @ 2012-08-05 11:09 JeffWong 阅读(77645) 评论(3) 推荐(9) 编辑
  2012年8月3日
摘要: 一、伪对象1、简单的业务场景有一个文件监控程序,有一个方法用来检查文件名的合法性,检查过程中,如文件名不合法,需调用远程web服务记录日志,如远程web服务调用发生异常,发送邮件到指定收件人(类似这句话描述的业务场景在实际开发中数不甚数)。2、什么是伪对象上面所举的业务场景,文件监控主体程序是需要自己实现的,而远程web服务以及邮件服务都是监控程序所依赖的外部服务,在我们开发测试的时候可能还不能直接调用,或者调用服务代价太大(想想为什么代价比较大?),这个时候我们如何进行测试呢?答案是构造伪对象(fake object)来代替外部依赖的服务,伪对象就是桩对象和模拟对象的统称。在我们这个业务场景 阅读全文
posted @ 2012-08-03 20:03 JeffWong 阅读(1471) 评论(0) 推荐(2) 编辑
  2012年7月15日
摘要: 关于反模式(Antipattern),也许知道它的唯一作用就是在实际开发中尽量避免出现反模式。百度百科里的主要介绍如下:软件开发中公认的反模式项目管理上的反模式 水中望月(Smoke and mirrors):向人演示还没有实现的功能看上去会是什么样的。英文缘自一项魔术手法:放出烟雾并趁机用镜子遮住一件物体,使它看起来像是消失了。 软件膨胀:随着版本的升级,软件越来越消耗系统资源。 不良管理︰在未对主题有足够认识的情况下管理一个专案。一般设计上的反模式 反抽象:需要的功能并不暴露给用户,导致用户要在较高层次重新实现一些功能。 四不像:往往一个设计模型可以暴露不同的接口给用户,不同的接... 阅读全文
posted @ 2012-07-15 21:55 JeffWong 阅读(654) 评论(0) 推荐(0) 编辑
  2012年6月20日
摘要: 原文地址: http://blog.csdn.net/fenglibing/article/details/7037242 作者:fenglibing 在大型互联网的网络应用中,很多都会使用到Memcached或者类型似的Cache服务,用来提高网络响应的速度以及减少对数据库的访问,因为数据库是直接对硬盘进行操作,相对Memcached的直接内存操作,那肯定是要慢很多的了,因而适当的使用Memcached,提高系统的响应能力及吞吐量,这个效果还是明显的,特别是高并发的情况下效果更明显。 任何东西都有个适当原则,并不是任何东西都放到Memcached中,再从Memcached中读出来,就一定可以 阅读全文
posted @ 2012-06-20 23:27 JeffWong 阅读(1616) 评论(1) 推荐(0) 编辑
  2012年5月31日
摘要: 事情从Json的序列化和反序列化说起。在C#2.0的项目中,以前经常使用Json.Net实现序列化和反序列化。后来从c#3.0中开始使用新增的DataContractJsonSerializer进行json相关的操作。微软提供的原生类库使用上并不复杂,参考一下msdn你很容易就会写出序列化和反序列化的方法,比如经常被人使用的泛型方法如下:JsonHelper /// <summary> /// 对象转换成json /// </summary> /// <typeparam name="T"></typeparam> /// . 阅读全文
posted @ 2012-05-31 22:58 JeffWong 阅读(7406) 评论(5) 推荐(4) 编辑
  2012年4月15日
摘要: 一、控制反转和依赖注入Ninject是一个轻量级的基于.Net平台的依赖注入(IOC)框架。所谓的IOC,即控制反转(Inversion of Control),它是一个经典的面向对象编程法则,它的作用主要是用来帮助应用程序解耦,并把程序分离成一个个松耦合高内聚的模块。控制反转还有一个名字叫依赖注入(Dependency Injection),简称DI。二、快速无xml配置注入1、定义应用程序ModuleServiceModuleusing LogService;using LogService.Impl;using Ninject.Modules;using NinjectApp.Warri 阅读全文
posted @ 2012-04-15 20:01 JeffWong 阅读(12950) 评论(8) 推荐(12) 编辑
  2012年3月18日
摘要: 1、下载安装NUnit(最新win版本为NUnit-2.6.0.12051.msi) http://www.nunit.org/index.php?p=download2、下载并安装VS的Visual Nunit 2010 插件 http://visualstudiogallery.msdn.microsoft.com/c8164c71-0836-4471-80ce-633383031099注:可通过VS的“视图”->“其他窗口”找到并打开该插件(快捷键:Ctrl+F7)3、新建测试项目UnitTestApp(示例为简单的控制台应用程序),引入nunit.framework类库(默认安装 阅读全文
posted @ 2012-03-18 18:40 JeffWong 阅读(12380) 评论(0) 推荐(2) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 27 下一页