Thursday, June 25, 2009 by linyupark - Filed under ZZ
1. C:\WINDOWS\system.ini打开然后在最底下加一行参数ConservativeSwapfileUsage=1
2. CMD -> regedit
寻找HKEY_LOCAL_XXX\SYSEM\CurrentControlSet\Control\SessionManager\Memory Management点选Memory Management机码后请到右边寻找DisablePagingExecutive鼠标器点两下,把框框里原本的”0”改成”1”右边选十六进位。
Permalink
Wednesday, June 24, 2009 by linyupark - Filed under PHP
XDebug 官方网站为:http://www.xdebug.org/
下载的时候请注意跟自己的PHP版本匹配
.dll文件改成php_xdebug.dll,在php.ini中加入
extension=php_xdebug.dll
[XDebug]
zend_extension_ts="yourpath\ext\php_xdebug.dll"
xdebug.profiler_enable="on"
xdebug.trace_output_dir="yourpath\xdebug-trace"
xdebug.profiler_output_dir="yourpath\xdebug-profile"
wincachegrind下载地址:http://sourceforge.net/projects/wincachegrind/
Permalink
Wednesday, June 17, 2009 by linyupark - Filed under PostgreSQL
连接查询
注意区别以下三种情况
SELECT *
FROM weather, cities
WHERE city = name;
SELECT *
FROM weather
LEFT OUTER JOIN cities ON (weather.city = cities.name);
SELECT W1.city, W1.temp_lo AS low, W1.temp_hi AS high,
W2.city, W2.temp_lo AS low, W2.temp_hi AS high
FROM weather W1, weather W2
WHERE W1.temp_lo < W2.temp_lo
AND W1.temp_hi > W2.temp_hi;
在聚集函数使用下WHERE 和 HAVING 的基本区别
WHERE 在分组和聚集计算之前选取输入行(它控制哪些行进入聚集计算),而 HAVING 在分组和聚集之后选取输出行。因此,WHERE 子句不能包含聚集函数;因为试图用聚集函数判断那些行将要输入给聚集运算是没有意义的。相反,HAVING 子句总是包含聚集函数。当然,你可以写不使用聚集的 HAVING 子句,但这样做没什么好处,因为同样的条件可以更有效地用于 WHERE 阶段。
Permalink
Tuesday, June 16, 2009 by linyupark - Filed under PostgreSQL
为何选择PostgreSQL
SUN已被Oracle收购,MySQL定位中小型数据库几乎为定局,真正开源的数据库除了非C/S的SQLite就只有PostgreSQL可以选择一下了。还有一点让人选择它的理由:
PostgreSQL 是目前世界上可以获得的最先进的开放源码数据库系统。
相关连接
官方网站
几个操作系统的下载点:
FreeBSD · Linux · Mac OS X · Solaris · Windows
创建数据库
#createdb -U 用户名 数据库名
进入数据库控制台
#psql -U 用户名 -d 数据库名
Permalink
Saturday, June 13, 2009 by linyupark - Filed under PHP
以前总是没办法理解为什么PHP5里面的类要分静态方法跟一般的方法,属性也分静态属性跟一般的属性,之间区别一直不是很清楚,看了篇IBM developerWorks 中国中的开始了解 PHP V5 中的对象,下面整理下自己的心得。
类的方法、属性VS类实例化对象的方法、属性
静态方法不是类实例化后的方法,而是它自身的,所以可以直接用 类名::方法(参数) 这样的形式进行使用。在静态方法中不能使用非静态的属性和方法,其原因也简单,因为那些属性是给实例化后的对象使用的而不是类自身的,我们平时看到类中的 $this 可以理解为这个类将来实例化后的对象。
class Dictionary {
}
$obj1 = new Dictionary();
$obj2 = new Dictionary();
$obj3 = new Dictionary();
上面的$obj1到3都是Dictionary类所实例化后的对象,就可以将他们理解为Dictionary类中的$this ,因此他们可以使用Dictionary类中的所有相关方法或访问其属性,而且Dictionary中的静态方法它们也可以使用,但不能通过 $obj1::方法() 这样的方式,依然得使用 $obj1->方法()。
但有个例外,对象无法使用类的静态变量,如果我们想这样去取一个类中的静态变量则会报错:
<?php
class A
{
public static $foo = 'aaa';
static function bar($a, $b)
{
return $a+$b.self::$var;
}
}
$obj = new A();
echo $obj->foo; // 这样就会出错
echo A::$foo; // 应该这样访问
?>
总结:实例化的对象可以使用类中可使用方法,即便是静态的。用静态方式只能使用类中的静态方法,且该方法内不能有非静态的属性或是方法使用,比如
<?php
class A
{
public static $var = 'aaa';
public $a = 1;
public $b = 2;
static function add()
{
return $this->a + $this->b;
}
}
echo A::add();
?>
A类的静态方法add中因为使用了该类的两个非静态属性所以导致出错,因此静态方法跟属性是属于类自身的,不能有任何依赖需要实例化的数据。
什么时候应该使用静态方法?
引用IBM developerWorks 文章中的话就是
“需要使用静态方法有两个重要原因。首先,实用程序操作可能不需要对象实例来做它的工作。通过声明为静态,为客户机代码节省了创建对象的工作量。第二,静态方法是全局可用的。这意味着可以设置一个所有对象实例都可以访问的值,而且使得静态方法成为共享系统上关键数据的好办法。”
结合上篇 php工厂模式的好处 静态方法还有一个好处是可以结合工厂模式,而且代码更加优雅。
此文章为原创,如需转载烦请注明出处
Permalink