今天来讨论一下装饰器。装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志、性能测试、事务处理等。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量函数中与函数功能本身无关的雷同代码并继续重用。概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能。1.装饰器入门1.1.需求是怎么来的?装饰器的定义很是抽象,我们来看一个小例子。复制代码代码如下:deffoo():print'infoo()'foo()这是一个很无聊
系统 2019-09-27 17:45:33 2180
前言在安装完python及pip,setuptools等工具后,即可以创建virualenv虚拟环境了,这个类似于虚拟机的工具,可以让同一台电脑中运行多个不同版本的python程序,互不影响,不用的时候,可以退出或删除,挺不错的一个开发工具。一、安装virtualenv#installpiponmacbrewinstallpythoncurlhttps://bootstrap.pypa.io/ez_setup.py-o-|sudopythonsudoeas
系统 2019-09-27 17:45:32 2180
大体上把Python中的数据类型分为如下几类:Number(数字)包括int,long,float,complexString(字符串)例如:hello,"hello",helloList(列表)例如:[1,2,3],[1,2,3,[1,2,3],4]Dictionary(字典)例如:{1:"nihao",2:"hello"}Tuple(元组)例如:(1,2,3,abc)Bool(布尔)包括True、False由于Python中认为所有的东西都是对象,所以
系统 2019-09-27 17:38:45 2180
大家请注意:这篇文中假设我们都用的是Python31.列表推导式你有一个list:bag=[1,2,3,4,5]现在你想让所有元素翻倍,让它看起来是这个样子:[2,4,6,8,10]大多初学者,根据之前语言的经验会大概这样来做bag=[1,2,3,4,5]foriinrange(len(bag)):bag[i]=bag[i]*2但是有更好的方法:bag=[elem*2foreleminbag]很简洁对不对?这叫做Python的列表推导式。2.遍历列表继续,
系统 2019-09-27 17:38:30 2180
如果不想允许随意修改一个类的某个属性,常用的方法是使用property装饰器以及在属性前加下划线。classV:def__init__(self,x):self._x=x@propertydefx(self):returnself._x虽然这样是没法直接修改x了,但还是可以通过_x很轻易地修改x。>>>v=V(5)>>>v.x5>>>v._x5>>>v.x=4Traceback(mostrecentcalllast):File"",line1,inAttr
系统 2019-09-27 17:37:43 2180
FreeMarker是QuakeWang推荐我使用的。刚学FreeMarker的时候,发现freemarker真的很棒!简单易用,功能强大。但是用它做了几个项目以后开始不爽了。一宗罪:freemarker的变量必须有值,没有被赋值的变量就会抛出异常,那个黄黄的freemarker出错页面,真是让人看了太难过了。freemarker的FAQ上面冠冕堂皇的说,未赋值的变量强制抛错可以杜绝很多潜在的错误,如缺失潜在的变量命名,或者其他变量错误。但是实际的效果是:
系统 2019-08-29 23:30:00 2180
AS3版本的FMSStreamingFLV的方法与前一篇的Progressive的方法基本一致,我们只需要把前一篇中的代码的某些部分做改动即可。注意看区别就在nc.connect的参数部分,下面是代码:package{importflash.display.Sprite;importflash.net.NetConnection;importflash.net.NetStream;importflash.media.Video;importflash.di
系统 2019-08-29 23:29:06 2180
Cassandra0.7版本现在还处于beta状态,但是毋庸置疑很快将发布稳定版,拭目以待吧,新版本对旧版本有了很多的改动,这里挑几个比较重要的说:1、首先就是实现了动态的管理keyspace和columnfamily,可以在执行过程中使用thrift接口实现增删改,对于配置文件中的keyspace只能通过bean的方式load进去,即可以使用Jconsole连接,然后找到下图所示的loadSchemaFromYAML,点击执行即可载入:另外注意的是,需要
系统 2019-08-29 23:21:09 2180
如果你使用Mina开发一个复杂的网络应用时,你可能在某些地方会遇到那个古老而又好用的状态模式,来使用这个模式解决你的复杂应用。然而,在你做这个决定之前,你或许想检出Mina的状态机的代码,它会根据当前对象的状态来返回对接收到的简短的数据的处理信息。注意:现在正式发布Mina的状态机。因此你要自己在Mina的SVN服务器上检出该代码,并自己编译,请参考开发指南,来获取更多的关于检出和编译Mina源码的信息。Mina的状态机可以和所有已经发布的版本Mina配合
系统 2019-08-29 23:01:53 2180
系统 2019-08-29 22:47:05 2180