摘要: 最近在网上查阅了不少Javascript闭包(closure)相关的资料,写的大多是非常的学术和专业。对于初学者来说别说理解闭包了,就连文字叙述都很难看懂。撰写此文的目的就是用最通俗的文字揭开Javascript闭包的真实面目。  一、什么是闭包?  “官方”的解释是:所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。  相信很少有人能直接看懂这句话,因为他描述的太学术。我想用如何在Javascript中创建一个闭包来告诉你什么是闭包,因为跳过闭包的创建过程直接理解闭包的定义是非常困难的。看下面这段代码: function 阅读全文
posted @ 2011-01-24 20:45 tqsummer 阅读(1103) 评论(0) 推荐(0) 编辑
摘要: 我知道的一种在python中Singleton mode的实现如下:class Foo: passdef instance(): global inst try: inst except: inst =Foo() return inst该实现的优点就是简单和直观,但缺点也同样明显:需要客户代码显式知道一个叫instance()的方法来创建该类的对象;在并发环境下这种实现并不可靠;第2点是相当严重的一个缺陷,如果你用了上面的代码,那只能祈祷不要有1个以上的实例出现(虽然几率较低,但还是有可能),否则就会出现稀奇古怪的问题。一个稍微好些实现如下:class Singleton(object): o 阅读全文
posted @ 2011-01-24 17:11 tqsummer 阅读(7446) 评论(0) 推荐(0) 编辑
摘要: 先给出一个四人团对Decorator mode的定义:动态地给一个对象添加一些额外的职责。再来说说这个模式的好处:认证,权限检查,记日志,检查参数,加锁,等等等等,这些功能和系统业务无关,但又是系统所必须的,说的更明白一点,就是面向方面的编程(AOP)。AOP把与业务无关的代码十分干净的从系统中切割出来,但是Decorator mode的强大远不止于此,本文的重点在于Decorator mode在Python中的应用,所以就不再过多描述Decorator mode本身了,要想深入了解该模式,请参考四人团的经典之作《设计模式》。在Python中Decorator mode可以按照像其它编程语言如 阅读全文
posted @ 2011-01-24 17:09 tqsummer 阅读(8423) 评论(0) 推荐(0) 编辑
摘要: python中的Module是比较重要的概念。常见的情况是,事先写好一个.py文 件,在另一个文件中需要import时,将事先写好的.py文件拷贝 到当前目录,或者是在sys.path中增加事先写好的.py文件所在的目录,然后import。这样的做法,对于少数文件是可行的,但如果程序数目很 多,层级很复杂,就很吃力了。有没有办法,像Java的Package一样,将多个.py文件组织起来,以便在外部统一调用,和在内部互相调用呢?答案是有的。主要是用到python的包的概念,python __init__.py在包里起一个比较重要的作用要弄明白这个问题,首先要知道,python在执行import语 阅读全文
posted @ 2011-01-24 16:40 tqsummer 阅读(15549) 评论(4) 推荐(5) 编辑
摘要: 一、压缩你的class类文件为jar包1.假设你的需要压缩的类文件存在的包为:cn.mbq.test1和cn.mbq.test22.进入你的classes目录(这里是在MyEclipse平台里建一个web项目,类编译后的文件是存放在classes文件夹里的),在DOS窗口中执行命令:jar cf mytest.jar cn.mbq.test1 cn.mbq.test2这一步其实可以使用MyEclipse来打成jar包,只选择需要的那些类就可以了。3.执行命令后你会在当前目录中找到mytest.jar文件,这个就是刚才生成的档案文件。你可以修改它的后缀为rar,然后使用winrar压缩程序打开它 阅读全文
posted @ 2011-01-19 12:05 tqsummer 阅读(8568) 评论(1) 推荐(1) 编辑
摘要: os和os.path模块os.listdir(dirname):列出dirname下的目录和文件os.getcwd():获得当前工作目录os.curdir:返回但前目录('.')os.chdir(dirname):改变工作目录到dirnameos.path.isdir(name):判断name是不是一个目录,name不是目录就返回falseos.path.isfile(name):判断name是不是一个文件,不存在name也返回falseos.path.exists(name):判断是否存在文件或目录nameos.path.getsize(name):获得文件大小,如果name是目录返回0Lo 阅读全文
posted @ 2011-01-12 22:11 tqsummer 阅读(412) 评论(0) 推荐(0) 编辑
摘要: 看了几个文档,还是这个最全面,最后附上自己的日记,早遇到这个文章就不需要整理笔记了1. log4j 的配置文件Log4j 支持两种配置文件格式,一种是 XML 格式的文件,一种是 Java 特性文件 lg4j.properties (键 = 值)。1.1. log4j configuration scripts in properties formatlg4j.properties 文件作为作为常用的配置文件的方法如下:Ø 配置根 LoggerLogger 负责处理日志记录的大部分操作。其语法为:log4j.rootLogger = [ level ] , appenderName, appe 阅读全文
posted @ 2011-01-10 15:54 tqsummer 阅读(9975) 评论(0) 推荐(0) 编辑
摘要: class LazyRules:rules_filename='plural6‐rules.txt'def __init__(self):  self.pattern_file=open(self.rules_filename,encoding='utf‐8')①  self.cache=[]rules_filename是类变量,尽管访问时和实例变量一样 。(self.rules_filename),LazyRules类的所有实例共享该变量。import plural6r1=plural6.LazyRules()r2=plural6.LazyRules()r1.rule 阅读全文
posted @ 2010-12-28 13:36 tqsummer 阅读(9329) 评论(0) 推荐(0) 编辑
摘要: 在介绍yield前有必要先说明下Python中的迭代器(iterator)和生成器(constructor)。一、迭代器(iterator)在Python中,for循环可以用于Python中的任何类型,包括列表、元祖等等,实际上,for循环可用于任何“可迭代对象”,这其实就是迭代器迭代器是一个实现了迭代器协议的对象,Python中的迭代器协议就是有next方法的对象会前进到下一结果,而在一系列结果的末尾是,则会引发StopIteration。任何这类的对象在Python中都可以用for循环或其他遍历工具迭代,迭代工具内部会在每次迭代时调用next方法,并且捕捉StopIteration异常来确 阅读全文
posted @ 2010-12-27 14:30 tqsummer 阅读(100139) 评论(6) 推荐(5) 编辑
摘要: 你肯定见过罗马数字,即使你不认识他们。你可能在版权信息、老电影、电视、大学或者图书馆的题词墙看到(用CopyrightMCMXLVI表示版权信息,而不是用?“Copyrigh1946。你也可能在大纲或者目录参考中看到他们。这种系统的数字表达方式可以追溯到罗马帝国(因此而得名)。在罗马数字中,有七个不同的数字可以以不同的方式结合起来表示其他数字。 I=1 V=5 X=10 L=50 C=100 D=500 M=1000下面是几个通常的规则来构成罗马数字: 大部分时候用字符相叠加来表示数字。I 是1,II 是2,III 是3。VI 是6(挨个看来,是"5和1"的组合)VII 是7,VIII 是8  阅读全文
posted @ 2010-12-24 14:25 tqsummer 阅读(2680) 评论(0) 推荐(0) 编辑