2014年8月29日星期五

如何变得大气

问:如何变得大气?

答:和人相处上有时不要太追究细节,也别自寻烦恼,通常比较敏感的人都让人觉得不够大气,所以别想太多,只要自己做的没错就别太过于考虑别人的感受而忽视了自己的需求

答:当你因为一件小事不高兴时,想想自己为什么要不高兴呢,为什么要生气呢?然后再想想为这样一件事生气值得吗。想完了就没气了,有时候还会把不高兴变高兴呢!

答:当你因为一件小事不高兴时,想想自己为什么要不高兴呢,为什么要生气呢?然后再想想为这样一件事生气值得吗。想完了就没气了,有时候还会把不高兴变高兴呢!

答:不小气呗,凡事想开点,或者干脆不去想,对别人要求要放到最低,对自己要求放到最高

答:我觉得一个东西不在乎它的话,对待它的时候就不会小气。越在乎一件事情,就越发会显得小气。

答:你必须改 主动去跟朋友说话 不必要太过介怀 其实很多事说开了就什么事都没有了 大家也不会一直放在心上的 你也只是自尊心作祟 不要太好强

2014年8月28日星期四

高洛峰-PHP面向对象笔记

面向对象编程(Object Oriented Programming, OOP, 面向对象程序设计);

类是具有相同属性和服务的一组对象的集合。

它为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分;在面向对象的编程语言中;

类是一个独立的程序单位,它应该有一个类名并包括属性说明和服务说明两个主要部分;


对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。

类与对象的关系就如模具和铸件的关系,类的实例化结果就是对象,而对一类对象的抽象就是类。


打个比方:清单就是类,清单里面的东西是对象,把东西买回来就是实例化对象;



类的定义:

class 类名{

}




比如说,一个人就是一个对象,你怎么把一个你看好的人推荐给你们领导呢?当然是越详细越好了:

首先,你会介绍这个人姓名、性别、年龄、身高、体重、电话、家庭住址等等。

然后,你要介绍这个人能做什么,可以开车,会说英语,可以使用电脑等等。



属性,像上面我们看到的,人的姓名、性别、年龄、身高、体重、电话、家庭住址等等;


动态上也就是人的这个对象的功能,比如这个人可以开车,会说英语,可以使用电脑等等,抽象成程序时,

我们把动态的写成函数或者说是方法;




class 人{

成员属性:姓名、性别、年龄、身高、体重、电话、家庭住址

成员方法:可以开车, 会说英语, 可以使用电脑

}



通过在类定义中使用关键字" var"来声明变量


<?php

class Person

{

//下面是人的成员属性

var $name//人的名字

var $sex//人的性别

var $age//人的年龄

//下面是人的成员方法

function say() //这个人可以说话的方法

{

echo "这个人在说话";

}

function run() //这个人可以走路的方法

{

echo "这个人在走路";

}

}

$p1=new Person();

$p2=new Person();

$p3=new Person();

//下面三行是给$p1对象属性赋值

$p1->name="张三";

$p1->sex="男";

$p1->age=20;

//下面三行是访问$p1对象的属性

echo "this is p1's name".$p1->name."<br>";

echo "p1 is a ".$p1->sex."<br>";

echo "p1 ".$p1->age."'s old.<br>";

//下面两行访问$p1对象中的方法

$p1->say();

$p1->run();

?>


 

“$this”的使用


<?php

class Person

{

//下面是人的成员属性

var $name//人的名字

var $sex//人的性别

var $age//人的年龄

//下面是人的成员方法

function say() //这个人可以说话的方法

{

echo "我的名字叫:".$this->name." 性别:".$this->sex." 我的年龄是:

".$this->age."<br>";

}

function run() //这个人可以走路的方法

{

echo "这个人在走路";

}

}

$p1=new Person(); //创建实例对象$p1

$p2=new Person(); //创建实例对象$p2

$p3=new Person(); //创建实例对象$p3

//下面三行是给$p1对象属性赋值

$p1->name="张三";

$p1->sex="男";

$p1->age=20;

//下面访问$p1对象中的说话方法

$p1->say();

?>  




构造方法与析构方法

通常用 构造方法 执行一些有用的初始化任务。


比如对成属性在创建对象的时候赋初值。

通过构造方法后实例化和赋值同时完成;

析构函数允许在销毁一个类之前执行的一些操作或完成一些功能,比如说关闭文件,释放结果集等;



<?

//创建一个人类

class Person

{

//下面是人的成员属性

var $name;//人的名字

var $sex;//人的性别

var $age;//人的年龄

//定义一个构造方法参数为姓名$name、性别$sex和年龄$age

function __construct($name, $sex, $age)

{

//通过构造方法传进来的$name给成员属性$this->name赋初使值

$this->name=$name;

//通过构造方法传进来的$sex给成员属性$this->sex赋初使值

$this->sex=$sex;

//通过构造方法传进来的$age给成员属性$this->age赋初使值

$this->age=$age;

}

//这个人的说话方法

function say()

{

echo "我的名字叫:".$this->name." 性别:".$this->sex." 我的年龄是:

".$this->age."<br>";

}

//这是一个析构函数,在对象销毁前调用

function __destruct(){

    echo "bye bye ".$this->name."<br>";

}

}

//通过构造方法创建3个对象$p1、p2、$p3,分别传入三个不同的实参为姓名、性别和年龄

$p1=new Person("貂蝉""女""23");

$p2=new Person("吕布""男""26");

//下面访问$p1对象中的说话方法

$p1->say();

//下面访问$p2对象中的说话方法

$p2->say();

?>




封装性


封装性就是把对象的属性和服务结合成一个独立的相同单位,并尽可能隐蔽对象的内部细节

包含两个含义:1.把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位(即对象)。

2.信息隐蔽,即尽可能隐蔽对象的内部细节,对外形成一个边界〔或者说形成一道屏障〕,只保留有限的对外接口使之与外部发生联系。



比如某个人的对象中有年龄和工资等属性,像这样个人隐私的属性是不想让其它人随意就能获得到的;


再比如说,个人电脑都有一个密码,不想让其它人随意的登陆,在你的电脑里面拷贝和粘贴。

还有就是像人这个对象,身高和年龄的属性,只能是自己来增长,不可以让别人随意的赋值等等。

使用 private 这个关键字来对属性和方法进行封装:




<?php 

class Person

{

//下面是人的成员属性

private $name//人的名字,被private封装上了

private $sex//人的性别, 被private封装上了

private $age//人的年龄, 被private封装上了

//这个人可以说话的方法

function say()

{

echo "我的名字叫:".$this->name." 性别:".$this->sex." 我的年龄是:

".$this->age."<br>";

}

//这个人可以走路的方法, 被private封装上了

private function run()

{

echo "这个人在走路";

}

}

//实例化一个人的实例对象

$p1=new Person();

//以下给private的属性或方法 赋值,调用的任何操作都会报错;  

//试图去给私有的属性赋值, 结果会发生错误

$p1->name="张三";

$p1->sex="男";

$p1->age=20;

//试图去打印私有的属性, 结果会发生错误

echo $p1->name."<br>";

//试图去打印私有的成员方法, 结果会发生错误

$p1->run();

?>


1


 

这个时候就只能访问公用的这个say()方法,而不能调用private的$name,$age,$sex属性了;


如果强行加上 echo $p1->name; 就会出现如下fatal error; 访问private function

2 3

所以私有成员只能在本对象内部自己访问

构造方法是默认的公有方法,所以可以用构造方法给私有的属性赋初值。

 


<?php 

class Person

{

//下面是人的成员属性

private $name//人的名字,被private封装上了

private $sex//人的性别, 被private封装上了

private $age//人的年龄, 被private封装上了

function __construct($name,$sex,$age){

    $this->name=$name; 

    //通过构造方法传进来的$name给私有成员属性$this->name赋初使值;

    $this->sex=$sex;

    $this->age=$age;    

}

//这个人可以说话的方法

function say()

{

echo "我的名字叫:".$this->name." 性别:".$this->sex." 我的年龄是:

".$this->age."<br>";

}

//这个人可以走路的方法, 被private封装上了

private function run()

{

echo "这个人在走路";

}

}

//实例化一个人的实例对象

$p1=new Person("feng""male""32");

echo $p1->say();

//可以通过构造方法的参数传递来访问私有数据;但还是不能直接访问private;

//就是私有的成员只能在类的内部使用

?>


接口,可以为私有属性在类外部提供设置方法和获取方法,来操作私有属性;

 

__set() __get() __isset() __unset()四个方法的应用

 


“__set()”和“__get()”这两个方法,这两个方法不是默认存在的,而是我们手
工添加到类里面去的,像构造方法(__construct())一样, 类里面添加了才会存在;




__get()方法:这个方法用来获取私有成员属性值的;

__get()只有一个参数,参数传入你要获取的成员属性的名称,返回获取的属性值。

__set()方法:这个方法用来为私有成员属性设置值的;

__set()有两个参数,第一个参数为你要为设置值的属性名,第二个参数是要给属性设置的值,没有返回值。



<?php

class Person

{

//下面是人的成员属性, 都是封装的私有成员

private $name//人的名字

private $sex//人的性别

private $age//人的年龄

//__get()方法用来获取私有属性

private function __get($property_name)

{

echo "在直接获取私有属性值的时候,自动调用了这个__get()方法<br>";

if(isset($this->$property_name))

{

return($this->$property_name);

}

else

{

    return(NULL);

}

}

//__set()方法用来设置私有属性

private function __set($property_name, $value)

{

echo "在直接设置私有属性值的时候,自动调用了这个__set()方法为私有属性赋值<br>";

$this->$property_name = $value;

}

}

$p1=new Person();

//直接为私有属性赋值的操作, 会自动调用__set()方法进行赋值

$p1->name="张三";

$p1->sex="男";

$p1->age=20;

//直接获取私有属性的值, 会自动调用__get()方法,返回成员属性的值

echo "姓名:".$p1->name."<br>";

echo "性别:".$p1->sex."<br>";

echo "年龄:".$p1->age."<br>";

?>



类的继承

 


<?php

class person{

    var $name;

    var $sex;

    var $age;


    function __construct($name,$sex,$age){

        $this->age=$age;

        $this->name=$name;

        $this->sex=$sex;        

    }

    function say(){

        echo "my name is ".$this->name." ".$this->age."years old "."i am a ".$this->sex."<br>";

    }    

}

//定义一个子类“学生类“使用”extends”关键字来继承”人”类

class student extends person{

    var $school;

    function study(){

        echo "my name is ".$this->name."i am learning at ".$this->school."<br>";

    }

}


?>  



 

重载新的方法

 

重载新的方法就是子类覆盖父类的已有的方法,那为什么要这么做呢?


因为继承过来的方法需要扩展,然后使用;继承过来的属性、方法不能被删除;


 PHP 里面不能定义同名的方法, 但是在父子关系的两个类中,我们可以在子类中定义和父类同名的方法,这样就把父类中继承过来的方法覆盖掉了。


<?php

class person{

    var $name;

    var $sex;

    var $age;


    function __construct($name,$sex,$age){

        $this->age=$age;

        $this->name=$name;

        $this->sex=$sex;        

    }

    function say(){

        echo "my name is ".$this->name." ".$this->age."years old "."i am a ".$this->sex."<br>";

    }

    

}

//定义一个子类“学生类“使用”extends”关键字来继承”人”类

class student extends person{

    var $school;

//重载say方法;

function say(){

    parent::say();


    //使用父类的“类名::“来调用父类中被覆盖的方法;

    //或者使用“parent::”的方试来调用父类中被覆盖的方法;  



    //尽可能的使用parent方式来调用,以便以后的修改;

    echo "通过parent扩展这个继承的方法,";

}

    function study(){

        echo "my name is ".$this->name."i am learning at ".$this->school."<br>";

    }

}

$p1=new student("张三","male","23","xiaoxue");

echo $p1->age."<br>";

echo $p1->name."<br>";

echo $p1->sex."<br>";

echo $p1->say();

?>



访问类型


PHP5 支持如下 3 种访问修饰符:

public(公有的、默认的),

private(私有的)

protected(受保护的)


4


final 关键字的应用

 

使用 final 关键标记的方法不能被子类覆盖,是最终版本;

这个关键字只能用来定义类和定义方法,不能使用 final 这个关键字来定义成员属性


static 和 const 关键字的使用



static 成员能够限制外部的访问,因为static 的成员是属于类的,是不属于任何对象实例,是在类第一次被加载的时候分配的空间,其他

类是无法访问的,只对类的实例共享,能一定程度对类该成员形成保护。


类的静态变量,非常类似全局变量,能够被所有类的实例共享,类的静态方法也是一样的,类似于全局函数。


<?php 

class person{

    public static $mycountry='usa '//静态属性

    public static function say(){

        //静态方法

        echo "i love usa ,i have a american dram!";

    }

public static function say2(){


//在静态方法里,可以使用这个方法所在的类的“类名”,也可以使用“self”来访问其它静态成员,

//如果没有特殊情况的话,我们通常使用后者,即“self::成员属性”的方式。


    echo "i love ".self::$mycountry;

}


}

//输出静态属性和方法;

//静态成员是在类第一次加载的时候就创建的,所以在类的外部不需要对象而使用类名就可以访问的到静态的成员;

//使用对象访问不到静态成员的; 就是说实化后不能通过$p1->mycontury这种形式访问这个静态成员;

echo person::$mycountry;

person::say();

//给静态属性重新赋值;

person::$mycountry="china";

echo person::$mycountry;

echo person::say2();

?>



const 是一个定义常量的关键字

 

在 PHP 中定义常量使用的是“define()”这个函数,但是在类里面定义常量使用的是“const”这个关键字;


<?php

class MyClass

{

//定义一个常量 constant

const constant = 'constant value';

function showConstant() {

echo self::constant . "\n"//使用 self 访问,不要加”$”

}

}

echo MyClass::constant . "\n"//使用类名来访问,也不加”$”

$class = new MyClass();

$class->showConstant();

// echo $class::constant; 是不允许的

?>  



__toString()方法

 


在类里面声明“__”开始的方法名的方法(PHP 给我们提供的),都是在某一时刻不同情况下自动调用执行的方法;

“__toString()”方法也是一样自动被调用的,是在直接输出对象引用时自动调用的,


 


<?php

// Declare a simple class

class TestClass

{

public $foo;

public function __construct($foo) {

$this->foo = $foo;

}

//定义一个__toString方法,返加一个成员属性$foo

public function __toString() {

return $this->foo;

}

}

$class = new TestClass('Hello');

//直接输出对象

echo $class;

?>  



 

克隆对象

 


需要在一个项目里面,使用两个或多个一样的对象,如果你使用“new”关键字重新创建对象的话,再赋值上相同的属性,这样做比较烦琐而且也容易出错,所以要根据一个对象完全克隆出一个一模一样的对象,是非常有必要的,而且克隆以后,两个对象互不干扰。




<?php

class Person

{

//下面是人的成员属性

var $name//人的名字

var $sex;

//人的性别

var $age;

//人的年龄

//定义一个构造方法参数为属性姓名$name、性别$sex 和年龄$age 进行赋值


function __construct($name="", $sex="", $age="")

{

$this->name=$name;

$this->sex=$sex;

$this->age=$age;

}

//这个人可以说话的方法, 说出自己的属性

function say()

{

echo "我的名字叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."<br>";

}

//对象克隆时自动调用的方法, 如果想在克隆后改变原对象的内容,需要在__clone()中重写原本的属性和方法

function __clone()

{

//$this 指的复本 p2, 而$that 是指向原本 p1,这样就在本方法里,改变了复本的属性。

$this->name="我是假的";

$this->age=30;

}

}

$p1=new Person("张三","男", 20);

$p2=clone $p1;

$p1->say();

$p2->say();

?>  




__call 处理调用错误


如果调用对象不存在的内部方法时候,程序会退出不能继续执行。

__call可以在程序调用对象内部不存在的方法时,提示我们调用的方法及使用的参数不存在,且程序还可以继续执行;


 


<?php

//这是一个测试的类,里面没有属性和方法

class Test

{

//调用不存的方法时自动调用的方法,第一个参数为方法名,第二个参数是数组参数;

function __call($function_name, $args)

{

print "你所调用的函数:$function_name(参数:";

print_r($args);

print ")不存在!<br>\n";

}

}

//产生一个Test类的对象

$test=new Test();

//调用对象里不存在的方法

$test->demo("one""two""three");

//程序不会退出可以执行到这里

echo "this is a test<br>";

?>



抽象方法和抽象类


抽象方法就是为了方便继承而引入的;

只要一个类里面有一个方法是抽象方法;

抽象类不能产生实例对象,所以也不能直接使用;


我们是将抽象方法是作为子类重载的模板使用的,定义抽象类就相当于定义了一种规范,这种规范要求子类去遵守,子类继承抽象类之后,把抽象类里面的抽象方法按照子类的需要实现。


子类必须把父类中的抽象方法全部都实现,

否则子类中还存在抽象方法,那么子类还是抽象类,还是不能实例化;


 

php5 接口技术

 

PHP 引入接口是为了解决不支持多重继承;

接口的思想是指定了一个实现了该接口的类必须实现的一系列方法。


接口里面所有的方法必须都是声明为抽象方法,另外接口里面不能声明变量,

而且接口里面所有的成员都是 public 权限的。所以子类在实现的时候也一定要使用 public 权限实限。


我们定义一个接口的子类去实现接口中全部抽象方法使用的关键字是“implements”,而不是我们前面所说的“extends”;


接口就是全都是公用的 public的 ,拿来调用的,可不可以这样说?

父类是一个接口,所以子类就必须要实现父类的抽象方法?

5 6 7





多态的应用

 

所谓多态性是指一段程序能够处理多种类型对象的能力;

<?


//定义了一个形状的接口,里面有两个抽象方法让子类去实现

interface Shape

{

function area();

function perimeter();

}

//定义了一个矩形子类实现了形状接口中的周长和面积

class Rect implements Shape

{

private $width;

private $height;

function __construct($width, $height)

{

$this->width=$width;

$this->height=$height;

}

function area()

{

return "矩形的面积是:".($this->width*$this->height);

}

function perimeter()

{

return "矩形的周长是:".(2*($this->width+$this->height));

}

}

//定义了一个圆形子类实现了形状接口中的周长和面积

class Circular implements Shape

{

private $radius;

function __construct($radius)

{

$this->radius=$radius;

}

function area()

{

return "圆形的面积是:".(3.14*$this->radius*$this->radius);

}

function perimeter()

{

return "圆形的周长是:".(2*3.14*$this->radius);

}

}

//把子类矩形对象赋给形状的一个引用

$shape=new Rect(5, 10);

echo $shape->area()."<br>";

echo $shape->perimeter()."<br>";

//把子类圆形对象赋给形状的一个引用


$shape=new Circular(10);

echo $shape->area()."<br>";

echo $shape->perimeter()."<br>";

?>  



通过上例我们看到,把矩形对象和圆形对象分别赋给了变量$shape,调用$shape 引用中的面积和周长的方法,出现了不同的结果,这就是一种多态的应用;

 

把对象串行化


把一个对象在网络上传输,为了方便传输,可以把整个对象转化为二进制串,等到达另一端时,再还原为原来的对象,这个过程称之为串行化


串行化有两个过程,一个是串行化,就是把对象转化为二进制的字符串,我们使用 serialize()函数;

另一个是反串行化,就是把对象转化的二进制字符串再转化为对象, 我们使用 unserialize()函数;






<?

class Person

{

//下面是人的成员属性

var $name//人的名字

var $sex;

//人的性别

var $age;

//人的年龄

//定义一个构造方法参数为属性姓名$name、性别$sex 和年龄$age 进行赋值

function __construct($name="",$sex="", $age="")

{

$this->name=$name;

$this->sex=$sex;

$this->age=$age;

}

//这个人可以说话的方法, 说出自己的属性


function say()

{

echo "我的名字叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."<br>";

}

/*在 php5 中有两个魔术方法__sleep()方法和__wakeup()方法,在对象串行化的时候,会调用一

个__sleep()方法来完成一些睡前的事情;而在重新醒来,即由二进制串重新组成一个对象的时候,

则会自动调用 PHP 的另一个函数__wakeup(),做一些对象醒来就要做的动作。*/

//末被包含的属性将在串行化时被忽略,如果没有__sleep()方法,PHP 将保存所有属性。

//指定串行化时把返回的数组中$name 和$age 值串行化,忽略没在数组中的属性$sex

function __sleep(){

    $arr=array("name","age");

    return $arr;

}

//重新生成对象时,并重新赋值$age为40

function __wakeup(){

    $this->age=40;

}



}

$p1=new Person("张三""男", 20);

$p1_string=serialize($p1); //把一个对象串行化,返一个字符串

echo $p1_string."<br>"//串行化的字符串我们通常不去解析

$p2=unserialize($p1_string); //把一个串行化的字符串反串行化形成对象$p2

$p2->say();

?>




自动加载类 


 

 可以定义一个__autoload()函数,它会在试图使用尚未被定义的类时自动调用;


本例尝试分别从 MyClass1.php 和 MyClass2.php 文件中加载 MyClass1 和 MyClass2 类;



<?php

function __autoload($classname)

{

require_once $classname . '.php';

}

//MyClass1 类不存在自动调用__autoload()函数,传入参数”MyClass1”

$obj = new MyClass1();

//MyClass2 类不存在自动调用__autoload()函数,传入参数”MyClass2”

$obj2 = new MyClass2();

?>  




1、如果类存在继承关系(例如:ClassB extends ClassA),并且ClassA不在ClassB所在目录利用__autoload魔术函数实例化ClassB的时候就会受到一个致命错误:Fatal error: Class ‘Classd’ not found in ……ClassB.php on line 2,

2、另外一个需要注意的是,类名和类的文件名必须一致,才能更方便的使用魔术函数__autoload;

3、在CLI模式下运行PHP脚本的话这个方法无效;(PHP CLI模式开发不需要任何一种Web服务器(包括Apache或MS IIS等));

4、如果你的类名称和用户的输入有关——或者依赖于用户的输入,一定要注意检查输入的文件名,例如:.././这样的文件名是非常危险的。

关于医闹之我见

今天一大早又在群上看到这样招聘信息,联想到昨天的的新闻,某地的医护人员罢工抗议医闹……觉得医闹就是医院自找的。

guan-yu-yi-nao-zhi-wo-jian

现在的实际情况是确实有一小部分患者无理取闹,但大部分的医院,医生都是以赚钱为目的;

所以看到医闹这样的新闻,我们是没有办法分清谁对谁错的;

 

看看这些招聘信息,有点了解百度竞价和网站优化的人就能知道我为什么这样说了。

医院为什么要竞价?为什么要编辑?为什么要文案?为什么要咨询员?说到底就一句话,为了骗患者!!!为了骗钱!!!!
他们能过百度竞价,SEO优化把医院网站展示在百度首页,这样患者通过搜索进入他们的网站,然后通过咨询口若悬河把患者骗过来~
再然后大家都懂的了。。。。。至于他们到底有多少先进设备,医生有多少技术经验这些还重要吗?至于能不能治好病,什么时候治好这些还重要吗?重要的给患者多开药,多做检查,多做手术;至于患者身体怎么样,承不承受得了,谁管你那么多?
了解一点的人都知道,百度竞价就是一个烧钱的过程,一个热门关键字点击一次几十块钱是再正常不过的了,这些钱从哪里来?羊毛出在羊身上!!!最后还不是患者来承担!!

唉,不想多说了 ~感觉多悲哀的。

2014年8月23日星期六

谷歌搜索在2013年改进了890多次

转载这个只是为了吐槽一下,为什么那么多好的东西在我大天朝就是不能用?!悲哀悲哀啊!!


google search


北京时间8月21消息,据美国科技网站SearchEngineLand报道,谷歌搜索负责人Amit Singhal日前在Google+上撰文称:“谷歌搜索在过去一年里进行了超过890次的改进。”


2009年,谷歌对外称,在前一年针对搜索做了350-400次改进,在2010年的前一年做了550次的改进。谷歌工程师Matt Cutts曾在2010年的一段视频中表示,对于核心搜索算法每天都会修改一次。众所周知,谷歌每天都会测试上百次的修改,但只会采用极少一部分。


Amit 所提到的890次改进则是指搜索业务,它主要包括UI、自动完成和Google Now等诸多方面的改进,不仅仅是算法。


Amit 也分享了2004年以来谷歌搜索的十个大事件,来回顾谷歌IPO十年来搜索业务的发展历程。具体详情如下:


1. 自动完成。当用户正在搜索时,我们能够预测出他们最有可能输入的单词或短句,并即时给出相关的搜索结果。例如:菜谱名“silky gingered zucchini soup”,你完全不需要输入完整的菜名,只需前部分。


2. 翻译。谷歌翻译在十年前仅仅是一个测试版。如今,谷歌翻译每天需要支持超过80种语言和十亿条的翻译。例如,在谷歌搜索框输入“translate 10 years into German”,就会得到你想要的结果。


3. 交通。以前我们只能搜索网页,但通过地图服务我们可以搜索现实世界了。你可以在问“How far is it to Santa Cruz?”,还可以选择步行、骑车、公交车或开车,甚至是选择最快路线来避开交通拥堵的路段。


4. 普适搜索。用户想要的搜索结果不仅仅是文字,还包括图片和视频等。如果你搜索John F. Kennedy总统的“Moon Speech”,那么你是想看Kennedy演讲。因此,谷歌会给出适用各种设备的视频格式,不管你是使用手机还是PC进行搜索。


5. 移动搜索。随着时代的发展,新兴平台骤增,但谷歌搜索依然支持这些设备——平板、手机、智能手表和电视等。


6. 语音搜索。输入笨重关键词的时代已经成为过去时了,用户完全可以通过语音来进行搜索。例如:你以前在查询天气时会输入:“weather chicago”,现在你仅需要说:“我明天需要带伞吗?”目前,谷歌语音搜索已支持38种语言。


7. 操作。使用谷歌的搜索应用时,你可以快速的发短信、发邮件或者打电话,无需查找和输入号码或地址。你只需要说:“Ok Google,发邮件给Jason:小伙伴,你是否愿意在周六和我们一起去海边野炊?”你甚至可以设置一个高级提醒。例如:“在我下次去超市时提醒我买一个咖啡过滤机”,那么当你下一次出现在超市附近时,手机就会给你发送提醒。


8. 知识图谱。我们生活的世界是由实物组成的,而不仅仅是文字。因此,谷歌建立了知识图谱将搜索结果的知识体系完整的呈现出来,来揭示事物之间的联系。


9. 定制信息。如果你有一份航班的信息保存在Gmai中,你可以使用谷歌搜索“我的飞机停靠在哪个廊桥?”你会直接获得答案。同样,你可以问快递、上课等情况。这一切都是属于你的定制信息。


10. 提前回答。如果你安装了谷歌搜索应用,你的日常生活将会变得智能化。当你需要的时候,谷歌会告诉你航班、公交车和火车的相关信息,又或者赶赴约会时会提前告诉你交通状况等。(文/钱曙光 责编/单明珠)

php文章搜索实例代码

<?php
//站内搜索
/*
* SQL模糊查询
* select * form fengxd where fengname like '冯%';
* 搜索以冯开头的
* select * form fengxd where fengname like '%冯';
* 搜索以冯结束的
* select * form fengxd where fengname like '%冯%';
* 搜索包含冯的
* %号相当于*号,代表任意多个字符;
* _号相当于?,代表一个字符;这个用得少;
*/
$con=mysqli_connect("localhost","root","") or die (mysqli_error());
mysqli_select_db($con,'test');
if(isset($_POST['submit'])){
if(!empty($_POST['title'])&&!empty($_POST['author'])){
$title=mysqli_real_escape_string($con,trim($_POST['title']));
$author=mysqli_real_escape_string($con,trim($_POST['author']));
$ins="insert into wenzhang (title,author,date) values('$title','$author',now())";
$query=mysqli_query($con,$ins) or die(mysqli_error());
}else
{
echo "input all information";
}
}

if(isset($_GET['key'])){
$key=mysqli_real_escape_string($con,trim($_GET['key']));
$sql="select * from wenzhang where title like '%$key%'";
$query2=mysqli_query($con,$sql);
while ($row=mysqli_fetch_array($query2)){
echo $row['title']."<br>";
}
}
?>
<html>
<form action="" method="post">
title<input type="text" name="title"><br>
author<input type="text" name="author"><br>
<input type="submit" name="submit"><br>
</form>
<div>
<form action="" method="get">
Search<input type="text" name="key"><br>
<input type="submit" name="search"><br>
</form>
</div>
</html>

 

2014年8月12日星期二

PHP基础重点


<?php
define(“DBHOST”,“localhost”);
define(“DBUSER”,“root”);
define(“DBPWD”, “”);
define(“DBNAME”, “guestbook”);
$dbc2=mysqli_connect(DBHOST,DBUSER,DBPWD,DBNAME);
?>

//使用常量时不需要加单引号,或双引号;
$sqlin=”INSERT INTO userinfo(username,email,regtime,passowrd) VALUES (‘$username’,’$email’,NOW(),SHA($pwd1))”;
/*在SQL语句中使用变量需要用”括起来;//表名和字段前后不加符号,值用’单引号括起来;
在插入语句中自动增加的ID就不要写入insert语句了,免得出错!
*/
select * from ‘test’ where ‘uid’ like ‘%feng%’;
/*like的用法,%是相当于*号;
双引号和单引号的区别
在双引号中,可以解析变量,而在单引号中,是不能解析变量的。所以变量不能放在双引号中!!!
双引号字符串中可以识别以下转义字符:\” \n \r \t \\
单引号只能识别以下转义字符: \’ \\
如果是双引号,则变量解析,如果是单引号,则不解析。如果非要在双引号中使用变量又不希望被解析,则可以使用\对$符进行转义;
在双引号中,支持所有的转义字符。
在单引号中,只支持’ 和 \
*/
//定界符
<?php
$str3=<<<ABCD<br />
<script>
alert(“sdfsf”);
</srcipt>
ABCD;
//定界符可以识别的转义符:\n \r \t \\ \$
// 这个范围内的任何内容都是属于str3这个字符串的内容;常用来插入html,js等;
//<<<叫定界符字符串;ABCD可以随便命名;
结束的行只能出现ABCD和;号不能出现其它任何内容,包括空格,也不能缩进;
?>
//提交按钮的type是submit

<input type=”submit” value=”提交” name=”submit” />

/*为什么这里是submin,而不是botton?
submit默认为form提交,可以提交表单(form).
button则响应用户自定义的事件,如果不指定onclick等事件处理函数,它是不做任何事情;
通过使用 htmlspecialchars() 函数能够避免 $_SERVER["PHP_SELF"] 被利用。
*/
<form method=”post” action=”<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>“>
//字符格式验证,如email,网址,
$name = test_input($_POST["name"]);
if (!preg_match(“/^[a-zA-Z ]*$/”,$name)) {
$nameErr = “只允许字母和空格!”;
}

 

2014年8月8日星期五

a sad day

女儿在妈面前说我不带她;

确实如些;

我和她打招呼十次有9次她都不理我,还想要我带她玩?

今天一早起来,跟她打了招呼,还用手点了一下她,结果她直接转了个身背对我。。。

后来我又喊了她,结果她给我说:不要喊我。。。。当即我就火了,喊一下都不行了。。。妈的,还是不是我的女了?

吃早饭的时候,她还要跟她妈换位置,不挨着我一起坐。。。。。。。。。。。

当爹当成这样,也是够悲剧了。。。。。。。。。

要不要这么失败??????