用Javascript生成不重复的随机数

前几天在淘宝上买双色球,发现上面有个自动选号的功能,用着不错,做起来感觉也应该是比较简单的,于是就打算自己做一个。由于没有考虑周全,第一个程序虽然做出来了,却发现有很多bug,第一个是生成的结果有相同的数字,第二个生成的结果不能自动排列。
实际上它是一个很简单的问题,在一定的范围内,随机取出几个数字就行了,最重要的是取出结果之后,对相同数字的判断和排序。
首先是相同数字的判断,可以这样做,生成一个数组,每次从这个数组中随机拿出一个结果,然后删除数组的这个元素,去除的数字就不会重复;排序方面的话,可以把取出的数字组合成数组,然后利用Javascript数组的sort()进行排序,就OK了。
…阅读更多>>

eaccelerator.shm_size设置过大导致php-fpm启动失败

前几天遇到了这样的问题:在一台Godaddy Linux环境的VPS中,我编译安装了nginx, php,mysql。由于网站比较多,我选择安装了eaccelerator来缓存php以提供响应时间,eaccelerator编译完成并通过模块方式载入到php中,一切运行正常。但是通过控制eaccelerator_control.php的控制脚本看到了共享内存只有32M,于是设置eaccelerator.shm_size=”128”,重启之后发现php-fpm启动失败,而且没有任何提示。
找了很多资料,最后在github.com上找到了如下答案:
…阅读更多>>

Javascript和PHP中对调用对象的类型控制

在PHP中,有这样三个类,妻子,丈夫和银行,妻子和丈夫各有三个属性,分别为:性别,拥有多少钱,和各自一个不同的方法。妻子的方法是每个月把丈夫挣到的钱收起来,丈夫呢,则是每个月把钱上交给妻子。剩下的一个银行类,有两个属性,一个是拥有的资产数量,另外一个是方法,把钱上交给央行,在php中,我们可以这样定义这三个类:

class Wife{
	public $sex="female";
	public $money=10000;
	public function savemoney($people){
		$this->money+=$people->handed(1000);
	}
}
class Husband{
	public $sex="male";
	public $money=10000;
	public function handed($num){
		$this->money-=$num;
		return $num;
	}
}
class Bank{
	public $money=100000000;
	public function handed($num){
		$this->money-=$num;
		return $num;
	}
}

…阅读更多>>

为什么实例化的对象没有prototype属性

问题来源于这里:

<script>
	function Human(){
		this.height=180;	
		this.say=function(){
			alert("我在说话");
		}
	}
	var he = new Human();
	alert(Human.prototype);//Object Object
	alert(he.prototype);   //undefined
</script>

其实说起来很简单,因为prototype是构造器/函数才具有的属性。也就是说,只要这个函数不是构造函数,那么它便不具有prototype这个属性。 为了彻底弄明白继承,我们来看一下Javascript的原型集成机制。JavaScript内置的构造器有以下几个:
Object,Number,Boolean,String,Array,RegExp,Date,Function,Error,Math,JSON等,其中Math和JSON是以对象形式存在的,无需new便可创建。当我们用 var mm=new Math(1234565);的时候,会报错。
…阅读更多>>

Javascript对象与继承,__proto__,prototype,constructor含义及比较

最近在学习PHP的类,对封装,继承和多态有了进一步的认识,于是反过来学习Javascript中面向对象的方法,想把这一部分原来没有理解的,彻底弄明白。PHP和Javascript的封装在博客中进行了对比,可以说这一块还是比较好理解的。但是到了继承这一块,理解起来就有点难度,主要是集中在__proto__,prototype,constructor这三个属性的理解方面。Constructor比较好理解,就是一个构造函数,那么其它两个属性的含义呢?
最先遇到问题的是下面一个例子:
…阅读更多>>

PHP封装和Javascript封装的比较

隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读取和修改的访问级别 — 百度百科
我们知道,在严格的面向对象的语言如java, c++中,对对象的封装是比较容易的。那么在javascript和php中,怎么去封装一个对象,并且隐藏对象的属性和细节呢?先看在PHP中怎么实现,由于PHP中提供了class关键字,我们可以用来定义一个类:

<?php
class Workers{
	public $age;  
	public $name;
	public $sex;
	private $wage=5000;

	public function __construct($a,$b,$c){
		$this->age=$a;
		$this->name=$b;
		$this->sex=$c;	
	}
	public function saypay(){
		echo $this->wage;
	}
}
?>

…阅读更多>>