月度归档:2011年07月

Head First设计模式

这是一本好书
上班第17天,今天发工资,哇咔咔
============================================
策略模式:
概念:定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
通俗来讲,就是有一个父类型,他有一些方法,子类型可以继承这些方法,但是这些方法在子类中的表现又不尽相同。
所以将父类型中的一些方法,也变成接口和类来处理,这样可以在构造子类的时候,选择对应的父类不同的方法来构造。

策略模式

观察者模式:
概念:定义了对象之间的一对多依赖,这样依赖,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。
例子是天气预报,接收到新数据后对三个指示器进行更新。指示器继承自object并都有update方法。主题对象将不同的object加入到array,在获取数据后对全部object进行自动更新。

观察者模式

装饰者模式:
概念:动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。
比如星巴兹咖啡的解决方案:先定义一个基类,有描述和花费两个方法,一般的咖啡直接继承该父类即可。如果需要加调料,使用继承自基类的装饰者类,用原始的对象构造新的对象,并添加额外的花费即可。

装饰者模式

工厂方法模式:
概念:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。
在制作pizza的时候,使用pizza工厂类,来根据不同的type选择实例化不同的pizza style。这样可以保证在对之后的处理独立。
也就是把一串的if else移到专门的工厂类里面去,保证代码的稳定性。
包括:一般工厂模式,抽象工厂模式(可以有很多不同的工厂实现自同一个抽象工厂,比如pizza的原料也可以不同)

工厂模式

单件模式:
概念:确保一个类只有一个实例,并提供一个全局访问点
Singleton模式的实现基于两个要点:
  1)不直接用类的构造函数,而另外提供一个Public的静态方法来构造类的实例。通常这个方法取名为Instance。Public保证了它的全局可见性,静态方法保证了不会创建出多余的实例。
  2)将类的构造函数设为Private,即将构造函数”隐藏”起来,任何企图使用构造函数创建实例的方法都将报错。这样就阻止了开发人员绕过上面的Instance方法直接创建类的实例。
  通过以上两点就可以完全控制类的创建:无论有多少地方需要用到这个类,它们访问的都是类的唯一生成的那个实例。

命令模式:
概念:将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。
定义一个命令接口,具有execute方法,其他命令已此为基础。使用命令的对象包含一个command,通过set方法指定不同的命令并调用execute方法即可实现命令操作。

命令模式

蟒蛇python

上班第16天,明天就发工资咯。也到月末了,可以休息一下了。
把仙剑5赶紧通关,然后弄点好吃的。
利用空闲时间学习一点python,名字还是很霸气的
=========================================
1.变量可以随便用的,也可以用global
2.def就是定义函数
3.class就是定义类
4.字符串很方便
5.无类型之说
6.while可以有else
7.没有switch
8.__init__方法类似于C++、C#和Java中的 constructor
9.不需要分号,最好一行一句逻辑语句
10.self就是this
11.类,if,def等后面都要有冒号
12.注意缩进格式,不能随便缩进
13.继承就是class ChildClass(FatherClass)
14.模块使用import引入

PHP调试时用print_r()和var_dump()的区别

上班第14天,开始为用户中心测试后台添加实际功能了。
列车追尾了,很痛心。
北京连续下雨,像疯了一样。
好好生活,珍惜生命。

==================以下是转的=============================================

print_r()结构智能地显示传递给它的东西,而不像echo 和print()那样将所有的东西都转换成字符串.字符串和数字都被简单地输出.数组以括起来的键和值的列表形式表示.以Array开头:

$arr = array(‘name’=> ‘bob’,’age’ => 20, ‘sex’ => ‘man’);

print_r($arr);

输出形如:

Array
{
[name] => bob,

[age] => 20,

[sex] => man
}

但对,用print_r()来显示布尔值和NULL是没有意义的:

如:

print_r(true); //输出1

print_r(false); //没有输出

print_r(null); //没有输出

因此,调试的时候用var_dump()比print_r()更好.var_dump()函数用适合阅读的格式显示任何PHP值:

var_dump(true); //输出 bool(true)

var_dump(false); // bool(false)

var_dump(null); // bool(null)

var_dump(array(‘name’ => ‘bob’, ‘age’ => 20));

array(2) {
[‘name’] => string(3) ‘bob’
[‘age’] => int(20)
}

正则表达式

今天周五啦,事情不多,学习学习正则表达式。昨天把Lion装完了,体验还是不错的嘛。
继续学习。。。
=================昏哥线===================
正则表达式用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。

匹配中文字符的正则表达式: [u4e00-u9fa5]
评注:匹配中文还真是个头疼的事,有了这个表达式就好办了

匹配双字节字符(包括汉字在内):[^x00-xff]
评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

匹配空白行的正则表达式:ns*r
评注:可以用来删除空白行

匹配HTML标记的正则表达式:<(S*?)[^>]*>.*?|<.*? />
评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力

匹配首尾空白字符的正则表达式:^s*|s*$
评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式

匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
评注:表单验证时很实用

匹配网址URL的正则表达式:[a-zA-z]+://[^s]*
评注:网上流传的版本功能很有限,上面这个基本可以满足需求

匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
评注:表单验证时很实用

匹配国内电话号码:d{3}-d{8}|d{4}-d{7}
评注:匹配形式如 0511-4405222 或 021-87888822

匹配腾讯QQ号:[1-9][0-9]{4,}
评注:腾讯QQ号从10000开始

匹配中国邮政编码:[1-9]d{5}(?!d)
评注:中国邮政编码为6位数字

匹配身份证:d{15}|d{18}
评注:中国的身份证为15位或18位

匹配ip地址:d+.d+.d+.d+
评注:提取ip地址时有用

匹配特定数字:
^[1-9]d*$    //匹配正整数
^-[1-9]d*$   //匹配负整数
^-?[1-9]d*$   //匹配整数
^[1-9]d*|0$  //匹配非负整数(正整数 + 0)
^-[1-9]d*|0$   //匹配非正整数(负整数 + 0)
^[1-9]d*.d*|0.d*[1-9]d*$   //匹配正浮点数
^-([1-9]d*.d*|0.d*[1-9]d*)$  //匹配负浮点数
^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$  //匹配浮点数
^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$   //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$  //匹配非正浮点数(负浮点数 + 0)
评注:处理大量数据时有用,具体应用时注意修正

匹配特定字符串:
^[A-Za-z]+$  //匹配由26个英文字母组成的字符串
^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串
^[a-z]+$  //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串
^w+$  //匹配由数字、26个英文字母或者下划线组成的字符串
评注:最基本也是最常用的一些表达式

原载地址:http://lifesinger.3322.org/myblog/?p=185

如果可以瞬移

生活充满了忙碌和奔波
一天:7点出发上班,1点吃饭了开会,2点会学校说事,4点会公司上班,6点回去吃饭
另一天:8点出发上班,12点吃饭,1点出发回学校弄视频的事,5点回公司上班,6点半回去吃饭
又一天:7点半出发去学校录视频,9点到公司上班,12点老板请客吃饭,3点回公司上班,6点回去吃饭

如果可以瞬移就好了。
今天是上班第十一天,lion发布了,变形金刚上映了。找了很多方法,发现木有信用卡,也买不了,只能买了个兑换码兑换lion,好像下载bt也不是什么好事,还是自动更新吧。
周末就要去看变形金刚啦,然后dt协会还会一起吃饭。挺有意思的。

学习php?

发现技术用来用去虽然说只有那几种,但是不一定每次你都能用到想用的技术。
以前最熟悉的是java,但是实验室开发就偏要用c++ mfc
做过的网站都是jsp和ssh框架的,但是来了百度之后就要学习php,还好数据库一般都是mysql,但是实验室就偏要用mssql。哈哈。至今还没有用过oracle,估计以后工作了就会用到的。

————以上废话—————–
1. php + zend框架、就是类似ssh的一个mvc框架,有自己的controller,view和model,挺好用的
2. 用zend studio写php还是比较顺手,本身就是基于eclipse开发的,而且不用编译,省去了jsp页面总是要重新发布的麻烦事
3. extjs和jquery都算是接触了,还是挺好用的。 extjs风格有点诡异,不过还是基于dom操作和定义的一些框架而已。
4. php script也还是不错的,写了一个识别验证码的。不知道用python会不会更好用,可惜一直想用python没有机会通过实践来学习。

百度实习第十天,期待lion的发布~