D:\Program Files\Zend\Zend Studio for Eclipse - 6.0.1\plugins\com.zend.php.phpunit_6.0.1.v20080601\resources\library\PHPUnit\Samples\Money
object getMock($className, [array $methods, [array $arguments, [string $mockClassName, [boolean $callOriginalConstructor, [boolean $callOriginalClone, [boolean $callAutoload]]]]]])
返回一个用于指定的$className的模拟对象(见第 11 章)。缺省地,给定类的所有方法都是模拟的。当提供第二个(可选)参数时,只有名字出现在数组中的方法是模拟的。第三个(可选)参数持有参数数组,用于传入模拟对象的构造函数。第四个(可选)参数可用于为模拟对象指定类名。第五个(可选)参数可用于禁用对原始对象的__construct()方法的调用。第六个(可选)参数可用于禁用对原始对象的__clone()方法的调用。第七个(可选)参数可用于在模拟对象创建期间禁用__autoload()。
object getMock($className, [array $methods, [array $arguments, [string $mockClassName, [boolean $callOriginalConstructor, [boolean $callOriginalClone, [boolean $callAutoload]]]]]])
返回一个用于指定的$className的模拟对象(见第 11 章)。缺省地,给定类的所有方法都是模拟的。当提供第二个(可选)参数时,只有名字出现在数组中的方法是模拟的。第三个(可选)参数持有参数数组,用于传入模拟对象的构造函数。第四个(可选)参数可用于为模拟对象指定类名。第五个(可选)参数可用于禁用对原始对象的__construct()方法的调用。第六个(可选)参数可用于禁用对原始对象的__clone()方法的调用。第七个(可选)参数可用于在模拟对象创建期间禁用__autoload()。
<?php
require_once 'PHPUnit/Framework/TestCase.php';
/**
* 测试从账户中取现
*/
class AccountHolderWithdrawsCashSpec extends PHPUnit_Extensions_Story_TestCase
{
/**
* @scenario
* 场景 1: 帐户有足够的资金
*/
function AccountHasSufficientFunds()
{
$this->given('帐户余额为', 100)
->and('有效的银行卡')
->and('提款机有足够现金')
->when('帐户持有人要求取款', 20)
->then('提款机应该分发', 20)
->and('帐户余额应该为', 80)
->and('应该退还银行卡');
}
// ...
/**
* 处理 given
*/
function runGiven(&$world, $action, $arguments)
{
switch($action)
{
case '帐户余额为':
// 由于 Account 对象必须属于一个 AccountHolder(帐户持有人),
// 因此需要构造一个 AccountHolder 对象
$account_holder = new AccountHolder();
$account_holder->name = 'tester';
// 创建一个 Account 对象,并设置余额为 $arguments[0]
$world['account'] = new Account($account_holder);
$world['account']->balance = $arguments[0];
break;
case '有效的银行卡':
$card = new CreditCard($world['account']);
$card->valid = true;
$world['card'] = $card;
break;
case '提款机有足够现金':
// 确保 ATM 的余额大于帐户余额
$world['atm'] = new ATM();
$world['atm']->balance = $world['account']->balance + 1;
break;
default:
{
return $this->notImplemented($action);
}
}
}
/**
* 处理 when
*/
function runWhen(&$world, $action, $arguments)
{
/**
* 在 when 中调用对象的业务方法
*/
switch($action)
{
case '帐户持有人要求取款':
// 从指定提款机使用指定银行卡取出现金
$world['account']->drawingByATM($world['atm'], $world['card'], $arguments[0]);
break;
default:
return $this->notImplemented($action);
}
}
/**
* 处理 then
*/
function runThen(&$world, $action, $arguments)
{
/**
* 在 then 中验证业务对象的状态是否符合标准
*/
switch($action)
{
case '提款机应该分发':
// 验证提款机的余额
$this->assertEquals($arguments[0], $world['atm']->last_dispense, "提款机应该分发 {$arguments[0]}");
break;
case '帐户余额应该为':
// 验证帐户余额
$this->assertEquals($arguments[0], $world['account']->balance, "帐户余额应该为 {$arguments[0]}");
break;
case '应该退还银行卡':
// 验证银行卡没有被 ATM 锁定
$this->assertTrue($world['card']->isCheckedOut(), '应该退还银行卡');
break;
default:
return $this->notImplemented($action);
}
}
}
?>
require_once 'PHPUnit/Framework/TestCase.php';
/**
* 测试从账户中取现
*/
class AccountHolderWithdrawsCashSpec extends PHPUnit_Extensions_Story_TestCase
{
/**
* @scenario
* 场景 1: 帐户有足够的资金
*/
function AccountHasSufficientFunds()
{
$this->given('帐户余额为', 100)
->and('有效的银行卡')
->and('提款机有足够现金')
->when('帐户持有人要求取款', 20)
->then('提款机应该分发', 20)
->and('帐户余额应该为', 80)
->and('应该退还银行卡');
}
// ...
/**
* 处理 given
*/
function runGiven(&$world, $action, $arguments)
{
switch($action)
{
case '帐户余额为':
// 由于 Account 对象必须属于一个 AccountHolder(帐户持有人),
// 因此需要构造一个 AccountHolder 对象
$account_holder = new AccountHolder();
$account_holder->name = 'tester';
// 创建一个 Account 对象,并设置余额为 $arguments[0]
$world['account'] = new Account($account_holder);
$world['account']->balance = $arguments[0];
break;
case '有效的银行卡':
$card = new CreditCard($world['account']);
$card->valid = true;
$world['card'] = $card;
break;
case '提款机有足够现金':
// 确保 ATM 的余额大于帐户余额
$world['atm'] = new ATM();
$world['atm']->balance = $world['account']->balance + 1;
break;
default:
{
return $this->notImplemented($action);
}
}
}
/**
* 处理 when
*/
function runWhen(&$world, $action, $arguments)
{
/**
* 在 when 中调用对象的业务方法
*/
switch($action)
{
case '帐户持有人要求取款':
// 从指定提款机使用指定银行卡取出现金
$world['account']->drawingByATM($world['atm'], $world['card'], $arguments[0]);
break;
default:
return $this->notImplemented($action);
}
}
/**
* 处理 then
*/
function runThen(&$world, $action, $arguments)
{
/**
* 在 then 中验证业务对象的状态是否符合标准
*/
switch($action)
{
case '提款机应该分发':
// 验证提款机的余额
$this->assertEquals($arguments[0], $world['atm']->last_dispense, "提款机应该分发 {$arguments[0]}");
break;
case '帐户余额应该为':
// 验证帐户余额
$this->assertEquals($arguments[0], $world['account']->balance, "帐户余额应该为 {$arguments[0]}");
break;
case '应该退还银行卡':
// 验证银行卡没有被 ATM 锁定
$this->assertTrue($world['card']->isCheckedOut(), '应该退还银行卡');
break;
default:
return $this->notImplemented($action);
}
}
}
?>
1 范围
本标准规定了养鸡机械设备的一般要求、安全要求和安装技术条件。
本标准适用于养鸡机械设备(包括饮水器、牵引式地面刮板清粪机、孵化机、出雏机、链式和螺旋弹簧式喂料机、蛋鸡鸡笼和笼架、电热育雏保温伞等主要机械设备,以下简称机械设备)的安装和使用。其他禽类机械可参照使用。
2 引用标准
下列文件中的条款通过本标准的引用而成为本标准的条款。凡是注日期的引用文件,其随后所有的修改单(不包括勘误的内容)或修订版均不适用于本标准,然而,鼓励根据本标准达成协议的各方研究是否可使用这些文件的最新版本。凡是不注日期的引用文件,其最新版本适用于本标准。
GB5023 1—1997 额定电压 450/750V及以下聚氯乙烯绝缘电缆 第 1部分:一般要求
GB10395 1—2001 农林拖拉机和机械 安全技术要求 第 1部分:总则
GB10396—1999 农林拖拉机和机械、草坪和园艺动力机械 安全标志和危险图形总则
JB/T7718—1995 鸡用杯式饮水器
JB/T7719—1995 电热育雏保温伞
JB/T7720—1995 鸡用乳头式饮水器
JB/T7725—1995 鸡用牵引式地面刮板清粪机
JB/T7727—1995 鸡用链式喂料机
JB/T7728—1995 鸡用螺旋弹簧式喂料机
JB/T7729—1995 蛋鸡鸡笼和笼架
JB/T9809 1—1999 孵化机 技术条件
JB/T9809 2—1999 孵化机 试验方法
阅读全文
本标准规定了养鸡机械设备的一般要求、安全要求和安装技术条件。
本标准适用于养鸡机械设备(包括饮水器、牵引式地面刮板清粪机、孵化机、出雏机、链式和螺旋弹簧式喂料机、蛋鸡鸡笼和笼架、电热育雏保温伞等主要机械设备,以下简称机械设备)的安装和使用。其他禽类机械可参照使用。
2 引用标准
下列文件中的条款通过本标准的引用而成为本标准的条款。凡是注日期的引用文件,其随后所有的修改单(不包括勘误的内容)或修订版均不适用于本标准,然而,鼓励根据本标准达成协议的各方研究是否可使用这些文件的最新版本。凡是不注日期的引用文件,其最新版本适用于本标准。
GB5023 1—1997 额定电压 450/750V及以下聚氯乙烯绝缘电缆 第 1部分:一般要求
GB10395 1—2001 农林拖拉机和机械 安全技术要求 第 1部分:总则
GB10396—1999 农林拖拉机和机械、草坪和园艺动力机械 安全标志和危险图形总则
JB/T7718—1995 鸡用杯式饮水器
JB/T7719—1995 电热育雏保温伞
JB/T7720—1995 鸡用乳头式饮水器
JB/T7725—1995 鸡用牵引式地面刮板清粪机
JB/T7727—1995 鸡用链式喂料机
JB/T7728—1995 鸡用螺旋弹簧式喂料机
JB/T7729—1995 蛋鸡鸡笼和笼架
JB/T9809 1—1999 孵化机 技术条件
JB/T9809 2—1999 孵化机 试验方法
阅读全文
指定端口进行拷贝:
实践中为了稳妥:
* 复制目录:
* 命令格式:
scp -r local_folder remote_username@remote_ip:remote_folder
或者
scp -r local_folder remote_ip:remote_folder
第1个指定了用户名,命令执行后需要再输入密码;
第2个没有指定用户名,命令执行后需要输入用户名和密码;
* 例子:
scp -r /home/space/music/ root@www.cumt.edu.cn:/home/root/others/
scp -r /home/space/music/ www.cumt.edu.cn:/home/root/others/
上面 命令 将 本地 music 目录 复制 到 远程 others 目录下,即复制后有 远程 有 ../others/music/ 目录
======
从 远程 复制到 本地
======
从 远程 复制到 本地,只要将 从 本地 复制到 远程 的命令 的 后2个参数 调换顺序 即可;
例如:
scp root@www.cumt.edu.cn:/home/root/others/music /home/space/music/1.mp3
scp -r www.cumt.edu.cn:/home/root/others/ /home/space/music/
最简单的应用如下 :
scp 本地用户名 @IP 地址 : 文件名 1 远程用户名 @IP 地址 : 文件名 2
[ 本地用户名 @IP 地址 :] 可以不输入 , 可能需要输入远程用户名所对应的密码 .
可能有用的几个参数 :
-v 和大多数 linux 命令中的 -v 意思一样 , 用来显示进度 . 可以用来查看连接 , 认证 , 或是配置错误 .
-C 使能压缩选项 .
-P 选择端口 . 注意 -p 已经被 rcp 使用 .
-4 强行使用 IPV4 地址 .
-6 强行使用 IPV6 地址 .
注意两点:
1.如果远程服务器防火墙有特殊限制,scp便要走特殊端口,具体用什么端口视情况而定,命令格式如下:
#scp -p 4588 remote@www.abc.com:/usr/local/sin.sh /home/administrator
2.使用scp要注意所使用的用户是否具有可读取远程服务器相应文件的权限。 [/code]
除了ftp方式复制文件外,大多数人经常会用到scp这个命令,但是很多主机出于安全考虑,更改了ssh默认的连接端口,如改成5198,这时就要用到-P(P是大写)选项,来制定端口
推文件:scp -P 5198 /dir/files user@host:/dir/files
拷贝文件:scp -P 5198 user@host:/dir/files /dir/files
拷贝目录:
拷贝单个文件:
下载远程文档或目录到本地,假如想上传或想下载目录,最好的办法是采用tar压缩一下,是最明智的选择.
scp user@host:/path/file /localpath 假如拷目录就 scp -r user@host:/dirpath /localpath
上传本地目录或文档到远程
或 scp localfile user@host:/dirpath
scp -r localdir user@host:/dirpath
sftp 是个交互式文档传输程式。他类似于 ftp, 但他进行加密传输,比FTP有更高的安全性。下边就简单介绍一下如何远程连接主机,进行文档的上传和下载,连同一些相关操作。
举例,如远程主机的 IP 是 202.206.64.33或是域名
www.hebust.edu.cn
,用户名是 fyt ,在命令行模式下:sftp fyt@202.206.64.33或 fyt@
www.hebust.edu.cn
。回车提示输入密码。进入提示符
sftp>
假如登陆远程机器不是为了上传下载文档,而是要修改远程主机上的某些文档。能够
ssh fyt@202.206.64.33 (其实sftp就是ssh 的一个程式。)
sftp> get /var/www/fuyatao/index.php /home/fuyatao/
_ x `/x9d2dGuest这条语句将从远程主机的 /var/www/fuyatao/目录下将 index.php 下载到本地 /home/fuyatao/目录下。
sftp> put /home/fuyatao/downloads/Linuxgl.pdf /var/www/fuyatao/挨踢圈 -- 技术·资讯·教育·服务·社区;z m9r O&S U6H
这条语句将把本地 /home/fuyatao/downloads/目录下的 linuxgl.pdf文档上传至远程主机/var/www/fuyatao/ 目录下。
您假如不知道远程主机的目录是什么样, pwd命令能够帮您查询远程主机的当前路径。查询本机当前工作目录 lpwd.
改变路径能够用cd ,改变本机路径能够用 lcd;
ls rm rmdir mkdir 这些命令都能够使用。同理调用本机都是加 l , 即 lls lrm.
要离开sftp,用exit 或quit、 bye 均可。周详情况能够查阅 man sftp.
假如觉得在命令行模式下不太方便,能够 sudo apt-get install gftp。在图像界面下操作就简便多了
sftp -oport=2230 dmtsai@192.168.1.12
实践中为了稳妥:
* 复制目录:
* 命令格式:
scp -r local_folder remote_username@remote_ip:remote_folder
或者
scp -r local_folder remote_ip:remote_folder
第1个指定了用户名,命令执行后需要再输入密码;
第2个没有指定用户名,命令执行后需要输入用户名和密码;
* 例子:
scp -r /home/space/music/ root@www.cumt.edu.cn:/home/root/others/
scp -r /home/space/music/ www.cumt.edu.cn:/home/root/others/
上面 命令 将 本地 music 目录 复制 到 远程 others 目录下,即复制后有 远程 有 ../others/music/ 目录
======
从 远程 复制到 本地
======
从 远程 复制到 本地,只要将 从 本地 复制到 远程 的命令 的 后2个参数 调换顺序 即可;
例如:
scp root@www.cumt.edu.cn:/home/root/others/music /home/space/music/1.mp3
scp -r www.cumt.edu.cn:/home/root/others/ /home/space/music/
最简单的应用如下 :
scp 本地用户名 @IP 地址 : 文件名 1 远程用户名 @IP 地址 : 文件名 2
[ 本地用户名 @IP 地址 :] 可以不输入 , 可能需要输入远程用户名所对应的密码 .
可能有用的几个参数 :
-v 和大多数 linux 命令中的 -v 意思一样 , 用来显示进度 . 可以用来查看连接 , 认证 , 或是配置错误 .
-C 使能压缩选项 .
-P 选择端口 . 注意 -p 已经被 rcp 使用 .
-4 强行使用 IPV4 地址 .
-6 强行使用 IPV6 地址 .
注意两点:
1.如果远程服务器防火墙有特殊限制,scp便要走特殊端口,具体用什么端口视情况而定,命令格式如下:
#scp -p 4588 remote@www.abc.com:/usr/local/sin.sh /home/administrator
2.使用scp要注意所使用的用户是否具有可读取远程服务器相应文件的权限。 [/code]
除了ftp方式复制文件外,大多数人经常会用到scp这个命令,但是很多主机出于安全考虑,更改了ssh默认的连接端口,如改成5198,这时就要用到-P(P是大写)选项,来制定端口
推文件:scp -P 5198 /dir/files user@host:/dir/files
拷贝文件:scp -P 5198 user@host:/dir/files /dir/files
拷贝目录:
scp -P36000 -r /root/tmp root@172.25.39.108:/usr/local/tads/htdocs/
拷贝单个文件:
$ scp -P 3000 trial_a.jpg 404@myip:/home/404
404@myip's password:
trial_a.jpg 100% 89KB 88.8KB/s 00:00
404@myip's password:
trial_a.jpg 100% 89KB 88.8KB/s 00:00
下载远程文档或目录到本地,假如想上传或想下载目录,最好的办法是采用tar压缩一下,是最明智的选择.
scp user@host:/path/file /localpath 假如拷目录就 scp -r user@host:/dirpath /localpath
上传本地目录或文档到远程
或 scp localfile user@host:/dirpath
scp -r localdir user@host:/dirpath
sftp 是个交互式文档传输程式。他类似于 ftp, 但他进行加密传输,比FTP有更高的安全性。下边就简单介绍一下如何远程连接主机,进行文档的上传和下载,连同一些相关操作。
举例,如远程主机的 IP 是 202.206.64.33或是域名
www.hebust.edu.cn
,用户名是 fyt ,在命令行模式下:sftp fyt@202.206.64.33或 fyt@
www.hebust.edu.cn
。回车提示输入密码。进入提示符
sftp>
假如登陆远程机器不是为了上传下载文档,而是要修改远程主机上的某些文档。能够
ssh fyt@202.206.64.33 (其实sftp就是ssh 的一个程式。)
sftp> get /var/www/fuyatao/index.php /home/fuyatao/
_ x `/x9d2dGuest这条语句将从远程主机的 /var/www/fuyatao/目录下将 index.php 下载到本地 /home/fuyatao/目录下。
sftp> put /home/fuyatao/downloads/Linuxgl.pdf /var/www/fuyatao/挨踢圈 -- 技术·资讯·教育·服务·社区;z m9r O&S U6H
这条语句将把本地 /home/fuyatao/downloads/目录下的 linuxgl.pdf文档上传至远程主机/var/www/fuyatao/ 目录下。
您假如不知道远程主机的目录是什么样, pwd命令能够帮您查询远程主机的当前路径。查询本机当前工作目录 lpwd.
改变路径能够用cd ,改变本机路径能够用 lcd;
ls rm rmdir mkdir 这些命令都能够使用。同理调用本机都是加 l , 即 lls lrm.
要离开sftp,用exit 或quit、 bye 均可。周详情况能够查阅 man sftp.
假如觉得在命令行模式下不太方便,能够 sudo apt-get install gftp。在图像界面下操作就简便多了
sftp -oport=2230 dmtsai@192.168.1.12
<?php
error_reporting(E_ALL);
define ('DEF_MC_PREFIX', "app10"); //MC的前缀
include_once '../libs/sinainterface.class.php';
//include_once '../../libs/applogger.class.php';
require_once '../libs/mysqlpdo.class.php';
require_once '../config/db_config1.php';
require_once '../config/commstr1.php';
$test3 = new orderlist(0);
$test3->set_memcache_values(1);
print_r($test3->get_memcache_values(1));
?>
<?php
class OrderList
{
private $uid;//自己的uid号,取好友要用到
private $obj_mc;
private $mcop = true;//假如有了memcache就是true,否则没有true,不写缓存
public $int_all_order_count;
private $int_friend_order_count;
private $return_param;
function __construct($uid)
{
$this->uid = $uid;
$this->s_id = APP_SID;
$this->obj_db = new mysqlpdo ( );
if ($this->mcop) {
$re = $this->ConnectMc ( $mobj );
if ($re) {
$this->obj_mc = $mobj;
} else {
$this->mcop = false;
}
}
}
public function get_memcache_values($int_page)
{
if ($this->mcop)
{
$arr_subject = $this->obj_mc->get ( DEF_MC_PREFIX . APP_SID . '_' . $int_page );
$arr_acount = $this->obj_mc->get(DEF_MC_PREFIX . "_c" .APP_SID);
if ($arr_subject&&$arr_acount)
{
$this->int_all_order_count = $arr_acount ;
return $arr_subject;
}
}else{
//取数据库和调用set_memcache_values()进行赋值
//$this->obj_mc->set(DEF_MC_PREFIX . "_c".APP_SID, $arr_count [0] ['p_count'] , 0 ,60*60*12); //对memcache赋值。
}
}
public function set_memcache_values($int_page)
{
$arr_subject=array("uid" => "1212", "content" => "this ia a test by xiangdong...");
if($this->mcop)
{ //把循环出来的$arr_subject放入MC变量(MC有规则的含$i,以后便于取)
$this->obj_mc->set ( DEF_MC_PREFIX . APP_SID . '_' . $int_page, $arr_subject, 0 ,60 * 60 * 12 );
}
return 1;
}
public function ConnectMc(&$mcobj)
{
global $MC_CONFIG;
echo $MC_CONFIG;
$server = explode ( ":", $MC_CONFIG );
$mcobj = new Memcache ( );
$re = $mcobj->connect ( $server [0], $server [1] );
if (! $re)
return 0;
return 1;
}
}
?>
<?php
?>
error_reporting(E_ALL);
define ('DEF_MC_PREFIX', "app10"); //MC的前缀
include_once '../libs/sinainterface.class.php';
//include_once '../../libs/applogger.class.php';
require_once '../libs/mysqlpdo.class.php';
require_once '../config/db_config1.php';
require_once '../config/commstr1.php';
$test3 = new orderlist(0);
$test3->set_memcache_values(1);
print_r($test3->get_memcache_values(1));
?>
<?php
class OrderList
{
private $uid;//自己的uid号,取好友要用到
private $obj_mc;
private $mcop = true;//假如有了memcache就是true,否则没有true,不写缓存
public $int_all_order_count;
private $int_friend_order_count;
private $return_param;
function __construct($uid)
{
$this->uid = $uid;
$this->s_id = APP_SID;
$this->obj_db = new mysqlpdo ( );
if ($this->mcop) {
$re = $this->ConnectMc ( $mobj );
if ($re) {
$this->obj_mc = $mobj;
} else {
$this->mcop = false;
}
}
}
public function get_memcache_values($int_page)
{
if ($this->mcop)
{
$arr_subject = $this->obj_mc->get ( DEF_MC_PREFIX . APP_SID . '_' . $int_page );
$arr_acount = $this->obj_mc->get(DEF_MC_PREFIX . "_c" .APP_SID);
if ($arr_subject&&$arr_acount)
{
$this->int_all_order_count = $arr_acount ;
return $arr_subject;
}
}else{
//取数据库和调用set_memcache_values()进行赋值
//$this->obj_mc->set(DEF_MC_PREFIX . "_c".APP_SID, $arr_count [0] ['p_count'] , 0 ,60*60*12); //对memcache赋值。
}
}
public function set_memcache_values($int_page)
{
$arr_subject=array("uid" => "1212", "content" => "this ia a test by xiangdong...");
if($this->mcop)
{ //把循环出来的$arr_subject放入MC变量(MC有规则的含$i,以后便于取)
$this->obj_mc->set ( DEF_MC_PREFIX . APP_SID . '_' . $int_page, $arr_subject, 0 ,60 * 60 * 12 );
}
return 1;
}
public function ConnectMc(&$mcobj)
{
global $MC_CONFIG;
echo $MC_CONFIG;
$server = explode ( ":", $MC_CONFIG );
$mcobj = new Memcache ( );
$re = $mcobj->connect ( $server [0], $server [1] );
if (! $re)
return 0;
return 1;
}
}
?>
<?php
?>
参考:http://blog.csdn.net/chinalinuxzend/archive/2007/10/07/1813599.aspx
阅读全文
一男赶集卖猪,天黑遇雨,二十头猪未卖成,甚是苦恼,这时候只好到一农家借宿。
农家只有一少妇,少妇说:家里只一人不便。
(潜在客户说出难题,这不是拒绝,只是个异议,你要理解成机会的信号;)
男:求你了大妹子,给猪一头。
(诱之以利,想获得什么必须先懂付出。)
女:好吧,但家只有一床。
(客户资源有限,不愿意把资源分享给你,是因为你还没有给客户带来足够的利益)
男:我也到床上睡,再给猪一头。
(再接再厉,处处想着客户的利益,你们才能站在同一个阵营)
女:同意。半夜男商女,我到你上面睡,女不肯。
男:给猪两头。女允,要求上去不能动。
(要想跟客户建立更为亲密的关系,你要懂得更大的投入,跟客户得寸进尺是完全能够做到的,关键是你也要让顾客感觉到她是在不断地收获附加值)
少顷,男忍不住,央求动一下,女不肯。
男:动一下给猪两头。女同意。
(客户长期光顾,是因为能够得到长期的利益)
男动了八次停下,女问为何不动?男说猪没了。女小声说:要不我给你猪……天亮后,男吹着口哨赶30头(含少妇家的10头)猪赶集去了.....
(让客户产生依赖,让客户在某种环境下没有选择余地,产生非消费不可的理由,这时候客户就由被动消费到主动消费,就会产生绝对的忠诚,你也是收获利润最为丰厚的时候).
如果觉得不过瘾,请看: 老板让我买了联想手机:【点击进入】
最后,还出了个加强版,在这儿也补上:
管理:卖猪记(加强篇)
一男赶集卖猪,天黑遇雨,二十头猪未卖成,到一农家借宿。
少妇说:家里只一人不便。
男:求你了大妹子,给猪一头。
女:好吧,但家只有一床。
男:我也到床上睡,再给猪一头。
女:同意。
半夜男与女商量,我到你上面睡,女不肯。
男:给猪两头。
女允,要求上去不能动。
少顷,男忍不住,央求动一下,女不肯。
男:动一下给猪两头。女同意。
男动了八次停下,女问为何不动?
男说猪没了。
女小声说:要不我给你猪……
天亮后,男吹着口哨赶30头(含少妇家的10头)猪赶集去了……
哈佛导师评论:要发现用户潜在需求,前期必须引导,培养用户需求,因此产生的投
入是符合发展规律的。
另一男得知此事,决意如法炮制,遂赶集卖猪,天黑遇雨,二十头猪未卖成,到一农
家借宿
少妇说:家里只一人不便。
男:求你了大妹子,给猪一头
女:好吧,但家只有一床。
男:我也到床上睡,再给猪一头。
女:同意。
半夜男商女,我到你上面睡,女不肯。
男:给猪两头。
女允,要求上去不能动。
少顷,男忍不住,央求动一下,女不肯。
男:动一下给猪两头。女同意。
男动了七次停下,女问为何不动?
男说:完事了~~~女:......
天亮后,男低著头赶2头猪赶集去了......
哈佛导师评论:要结合企业自身规模进行谨慎投资,谨防资金链断裂问题
又一男得知此事,决意如法炮制兼吸取教训,遂先用一头猪去换一粒伟哥,事必,天
亮后,男吹着口哨赶38头(含少妇家的18头)猪赶集去了……
哈佛导师评论:企业如果获得金融资本的帮助,自身经营能力将得到倍增。
知道此法男多,伟哥供不应求,逐渐要2头,3头猪换一粒伟哥。
哈佛导师评论:这就是通货膨胀。
当伟哥价格涨到16头一粒的时候,哈佛导师评论:该男已经进入边际成本,除了拥有对
自身能力的自信和未来良好愿望以外,实际现猪流已经为零。
但换猪男越来越多,卖伟哥的决定,扩展生产能力,推出一种次级伟哥,如果你缺一
头猪,只要你承诺可以到该女房中一夜,就可以先借,事成后补交猪款,这个方法大
大促进了伟哥销售。
哈佛导师评论:这就是贷款,让企业可以根据未来的收益选择借支流动资金
伟哥专卖店后来在即使你一头猪都没有,只要你承诺可以到该女房中一夜,就可以先
借,事成后补交猪款。
哈佛导师评论:这就是金融创新,让现在的人花未来的钱,反正等你老了未来的钱你
也花不动。
消息一出,换猪男越来越多,有人找伟哥专卖店,这个项目太好了,我们把它变成优
质基金,对外销售债卷,你们也就可以分享我的收益,如何?
结果伟哥专卖店觉得甚好,于是该公司把换猪男分三类,一类是拿现猪换的,一类是
一部分现猪贷的,一类是完全没有现猪借的,发行三种债卷。大家踊跃而上。纷纷购
买伟哥专卖店的债卷,伟哥专卖店生意太好,就把债卷销售外包给另外一家公司运
作,该公司也一并大发其财,公司越做越大,甚至可以脱离实际伟哥销售情况来发
行,给自己和伟哥专卖店带来巨大的现金收益。
哈佛导师评论:这就是专业的人做专业的事,从实体经营到资本运作,经济进入了更
高的层次。
为了防止自己债卷未来有损失,该公司决定给它买上保险,这样债卷销售就更容易,
因为一旦债卷出现问题,还可以获得保险公司的赔付,哇,债券公司销售这下子太好
了,保险公司也获得巨大平白无故的保险收入。
哈佛导师评论:这就是风险对冲,策略联盟,提高了企业的抗风险能力,也保护了消
费者利益。
换猪男太多,排长队等待,该女无法承受,说老娘不干了,我搬家,一时间有无数拥
有伟哥的欠猪男。
哈佛导师评论:这是个别现象,属于市场的正常波动,不会影响整个经济。
结果该女迟迟不肯搬回。一部分欠猪男没有收入,只好赖帐,结果大量债卷到期无法
换现猪吃,债卷公司一看,一粒伟哥16头猪,这哪里还得起,宣布倒闭
哈佛导师评论:这是次贷危机,不会影响整个金融行业。
哪里晓得债卷公司还把债卷上了保险,保险公司一看,这哪里赔得起,于是也宣布要
倒闭。
哈佛导师评论:这是金融危机,还不会影响整个实体经济。
后文:据说该女已搬到中国定居。
农家只有一少妇,少妇说:家里只一人不便。
(潜在客户说出难题,这不是拒绝,只是个异议,你要理解成机会的信号;)
男:求你了大妹子,给猪一头。
(诱之以利,想获得什么必须先懂付出。)
女:好吧,但家只有一床。
(客户资源有限,不愿意把资源分享给你,是因为你还没有给客户带来足够的利益)
男:我也到床上睡,再给猪一头。
(再接再厉,处处想着客户的利益,你们才能站在同一个阵营)
女:同意。半夜男商女,我到你上面睡,女不肯。
男:给猪两头。女允,要求上去不能动。
(要想跟客户建立更为亲密的关系,你要懂得更大的投入,跟客户得寸进尺是完全能够做到的,关键是你也要让顾客感觉到她是在不断地收获附加值)
少顷,男忍不住,央求动一下,女不肯。
男:动一下给猪两头。女同意。
(客户长期光顾,是因为能够得到长期的利益)
男动了八次停下,女问为何不动?男说猪没了。女小声说:要不我给你猪……天亮后,男吹着口哨赶30头(含少妇家的10头)猪赶集去了.....
(让客户产生依赖,让客户在某种环境下没有选择余地,产生非消费不可的理由,这时候客户就由被动消费到主动消费,就会产生绝对的忠诚,你也是收获利润最为丰厚的时候).
如果觉得不过瘾,请看: 老板让我买了联想手机:【点击进入】
最后,还出了个加强版,在这儿也补上:
管理:卖猪记(加强篇)
一男赶集卖猪,天黑遇雨,二十头猪未卖成,到一农家借宿。
少妇说:家里只一人不便。
男:求你了大妹子,给猪一头。
女:好吧,但家只有一床。
男:我也到床上睡,再给猪一头。
女:同意。
半夜男与女商量,我到你上面睡,女不肯。
男:给猪两头。
女允,要求上去不能动。
少顷,男忍不住,央求动一下,女不肯。
男:动一下给猪两头。女同意。
男动了八次停下,女问为何不动?
男说猪没了。
女小声说:要不我给你猪……
天亮后,男吹着口哨赶30头(含少妇家的10头)猪赶集去了……
哈佛导师评论:要发现用户潜在需求,前期必须引导,培养用户需求,因此产生的投
入是符合发展规律的。
另一男得知此事,决意如法炮制,遂赶集卖猪,天黑遇雨,二十头猪未卖成,到一农
家借宿
少妇说:家里只一人不便。
男:求你了大妹子,给猪一头
女:好吧,但家只有一床。
男:我也到床上睡,再给猪一头。
女:同意。
半夜男商女,我到你上面睡,女不肯。
男:给猪两头。
女允,要求上去不能动。
少顷,男忍不住,央求动一下,女不肯。
男:动一下给猪两头。女同意。
男动了七次停下,女问为何不动?
男说:完事了~~~女:......
天亮后,男低著头赶2头猪赶集去了......
哈佛导师评论:要结合企业自身规模进行谨慎投资,谨防资金链断裂问题
又一男得知此事,决意如法炮制兼吸取教训,遂先用一头猪去换一粒伟哥,事必,天
亮后,男吹着口哨赶38头(含少妇家的18头)猪赶集去了……
哈佛导师评论:企业如果获得金融资本的帮助,自身经营能力将得到倍增。
知道此法男多,伟哥供不应求,逐渐要2头,3头猪换一粒伟哥。
哈佛导师评论:这就是通货膨胀。
当伟哥价格涨到16头一粒的时候,哈佛导师评论:该男已经进入边际成本,除了拥有对
自身能力的自信和未来良好愿望以外,实际现猪流已经为零。
但换猪男越来越多,卖伟哥的决定,扩展生产能力,推出一种次级伟哥,如果你缺一
头猪,只要你承诺可以到该女房中一夜,就可以先借,事成后补交猪款,这个方法大
大促进了伟哥销售。
哈佛导师评论:这就是贷款,让企业可以根据未来的收益选择借支流动资金
伟哥专卖店后来在即使你一头猪都没有,只要你承诺可以到该女房中一夜,就可以先
借,事成后补交猪款。
哈佛导师评论:这就是金融创新,让现在的人花未来的钱,反正等你老了未来的钱你
也花不动。
消息一出,换猪男越来越多,有人找伟哥专卖店,这个项目太好了,我们把它变成优
质基金,对外销售债卷,你们也就可以分享我的收益,如何?
结果伟哥专卖店觉得甚好,于是该公司把换猪男分三类,一类是拿现猪换的,一类是
一部分现猪贷的,一类是完全没有现猪借的,发行三种债卷。大家踊跃而上。纷纷购
买伟哥专卖店的债卷,伟哥专卖店生意太好,就把债卷销售外包给另外一家公司运
作,该公司也一并大发其财,公司越做越大,甚至可以脱离实际伟哥销售情况来发
行,给自己和伟哥专卖店带来巨大的现金收益。
哈佛导师评论:这就是专业的人做专业的事,从实体经营到资本运作,经济进入了更
高的层次。
为了防止自己债卷未来有损失,该公司决定给它买上保险,这样债卷销售就更容易,
因为一旦债卷出现问题,还可以获得保险公司的赔付,哇,债券公司销售这下子太好
了,保险公司也获得巨大平白无故的保险收入。
哈佛导师评论:这就是风险对冲,策略联盟,提高了企业的抗风险能力,也保护了消
费者利益。
换猪男太多,排长队等待,该女无法承受,说老娘不干了,我搬家,一时间有无数拥
有伟哥的欠猪男。
哈佛导师评论:这是个别现象,属于市场的正常波动,不会影响整个经济。
结果该女迟迟不肯搬回。一部分欠猪男没有收入,只好赖帐,结果大量债卷到期无法
换现猪吃,债卷公司一看,一粒伟哥16头猪,这哪里还得起,宣布倒闭
哈佛导师评论:这是次贷危机,不会影响整个金融行业。
哪里晓得债卷公司还把债卷上了保险,保险公司一看,这哪里赔得起,于是也宣布要
倒闭。
哈佛导师评论:这是金融危机,还不会影响整个实体经济。
后文:据说该女已搬到中国定居。
1:Global的作用是定义全局变量,但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括include或require的所有文件
总结:在函数体内定义的global变量,函数体外可以使用,在函数体外定义的global变量不能在函数体内使用,
//再看看下面一例
2:global问题解析:
question:我在config.inc.php中定义了一些变量($a),在别的文件中函数外部 include("config.inc.php"),函数内部需要使用这些变量$a,如果没有声明的话,echo $a是打印不出来任何东西的。因此声明global $a,但是有很多函数和很多变量,总不能不断重复的这样声明吧?有什么好的解决办法,请指点。
answer1:先在config.inc.php里定义常量:define(常量名,常量值)
再在其他需要用到的地方require 'config.inc.php',
然后就能在这个文件里直接使用这个常量了。
answer2:我也有个办法,就是定义数组,如$x[a],$x,那样就只要声明global $x一个了。
answer3:我试了你的这个方法,不行啊。
answer4:改你的php.ini文件。
设置global 为 on
$a=123;
function aa()
{
Global $a; //如果不把$a定义为global变量,函数体内是不能访问$a的
echo $a;
}
aa();
function aa()
{
Global $a; //如果不把$a定义为global变量,函数体内是不能访问$a的
echo $a;
}
aa();
总结:在函数体内定义的global变量,函数体外可以使用,在函数体外定义的global变量不能在函数体内使用,
$glpbal $a;
$a=123;
function f()
{
echo $a; //错误,
}
$a=123;
function f()
{
echo $a; //错误,
}
//再看看下面一例
function f()
{
global $a;
$a=123;
}
f();
echo $a; //正确,可以使用
{
global $a;
$a=123;
}
f();
echo $a; //正确,可以使用
2:global问题解析:
question:我在config.inc.php中定义了一些变量($a),在别的文件中函数外部 include("config.inc.php"),函数内部需要使用这些变量$a,如果没有声明的话,echo $a是打印不出来任何东西的。因此声明global $a,但是有很多函数和很多变量,总不能不断重复的这样声明吧?有什么好的解决办法,请指点。
answer1:先在config.inc.php里定义常量:define(常量名,常量值)
再在其他需要用到的地方require 'config.inc.php',
然后就能在这个文件里直接使用这个常量了。
answer2:我也有个办法,就是定义数组,如$x[a],$x,那样就只要声明global $x一个了。
answer3:我试了你的这个方法,不行啊。
answer4:改你的php.ini文件。
设置global 为 on
http://kiwi.csie.chu.edu.tw/blog/archives/23
$this->assertEquals("xiangdong",$this->search->searchblog());
$this->assertFalse($this->search->searchblog());
$this->assertRegExp("/xiang/",$this->search->searchblog());
$this->assertEquals("xiangdong",$this->search->searchblog());
$this->assertFalse($this->search->searchblog());
$this->assertRegExp("/xiang/",$this->search->searchblog());
group by
分组
通用数据库具有基于表的特定列对数据进行分析的能力。
可按照在 GROUP BY 子句中定义的组对行进行分组。以其最简单的形式,组由称为分组列的列组成。 SELECT 子句中的列名必须为分组列或列函数。列函数对于 GROUP BY 子句定义的每个组各返回一个结果。下列示例产生一个列出每个部门编号的最高薪水的结果:
SELECT DEPT, MAX(SALARY) AS MAXIMUM
FROM STAFF
GROUP BY DEPT
此语句产生下列结果:
DEPT MAXIMUM
------ ---------
10 22959.20
15 20659.80
20 18357.50
38 18006.00
42 18352.80
51 21150.00
66 21000.00
84 19818.00
注意:计算的是每个部门(由 GROUP BY 子句定义的组)而不是整个公司的 MAX(SALARY)。
将 WHERE 子句与 GROUP BY 子句一起使用
分组查询可以在形成组和计算列函数之前具有消除非限定行的标准 WHERE 子句。必须在GROUP BY 子句之前指定 WHERE 子句。例如:
SELECT WORKDEPT, EDLEVEL, MAX(SALARY) AS MAXIMUM
FROM EMPLOYEE
WHERE HIREDATE > '1979-01-01'
GROUP BY WORKDEPT, EDLEVEL
ORDER BY WORKDEPT, EDLEVEL
结果为:
WORKDEPT EDLEVEL MAXIMUM
-------- ------- -----------
D11 17 18270.00
D21 15 27380.00
D21 16 36170.00
D21 17 28760.00
E11 12 15340.00
E21 14 26150.00
注意:在 SELECT 语句中指定的每个列名也在 GROUP BY 子句中提到。未在这两个地方提到的列名将产生错误。GROUP BY 子句对 WORKDEPT 和 EDLEVEL 的每个唯一组合各返回一行。
在 GROUP BY 子句之后使用 HAVING 子句
可应用限定条件进行分组,以便系统仅对满足条件的组返回结果。为此,在GROUP BY 子句后面包含一个 HAVING 子句。 HAVING 子句可包含一个或多个用 AND 和 OR 连接的谓词。每个谓词将组特性(如 AVG(SALARY))与下列之一进行比较:
该组的另一个特性
例如:
HAVING AVG(SALARY) > 2 * MIN(SALARY)
常数
例如:
HAVING AVG(SALARY) > 20000
例如,下列查询寻找雇员数超过 4 的部门的最高和最低薪水:
SELECT WORKDEPT, MAX(SALARY) AS MAXIMUM, MIN(SALARY) AS MINIMUM
FROM EMPLOYEE
GROUP BY WORKDEPT
HAVING COUNT(*) > 4
ORDER BY WORKDEPT
此语句产生下列结果:
WORKDEPT MAXIMUM MINIMUM
-------- ----------- -----------
D11 32250.00 18270.00
D21 36170.00 17250.00
E11 29750.00 15340.00
有可能(虽然很少见)查询有 HAVING 子句但没有 GROUP BY 子句。在此情况下,DB2 将整个表看作一个组。因为该表被看作是单个组,所以最多可以有一个结果行。如果 HAVING 条件对整个表为真,则返回选择的结果(该结果必须整个由列函数组成);否则不返回任何行。
官方讲是按组操作,
或者好理解点就是按类操作..
看个例子你就明白了,表如下:
ID 名称 仓库 数量
01 西瓜 一号 10
02 西瓜 二号 30
03 大米 一号 30
04 苹果 一号 40
05 苹果 二号 45
06 苹果 三号 5
Select name,Sun(price) From 表 Group By name
以上SQL将返回各种商品的总数量,而不管是哪个仓库的..
结果:
西瓜,40
大米,30
苹果,90
分组
通用数据库具有基于表的特定列对数据进行分析的能力。
可按照在 GROUP BY 子句中定义的组对行进行分组。以其最简单的形式,组由称为分组列的列组成。 SELECT 子句中的列名必须为分组列或列函数。列函数对于 GROUP BY 子句定义的每个组各返回一个结果。下列示例产生一个列出每个部门编号的最高薪水的结果:
SELECT DEPT, MAX(SALARY) AS MAXIMUM
FROM STAFF
GROUP BY DEPT
此语句产生下列结果:
DEPT MAXIMUM
------ ---------
10 22959.20
15 20659.80
20 18357.50
38 18006.00
42 18352.80
51 21150.00
66 21000.00
84 19818.00
注意:计算的是每个部门(由 GROUP BY 子句定义的组)而不是整个公司的 MAX(SALARY)。
将 WHERE 子句与 GROUP BY 子句一起使用
分组查询可以在形成组和计算列函数之前具有消除非限定行的标准 WHERE 子句。必须在GROUP BY 子句之前指定 WHERE 子句。例如:
SELECT WORKDEPT, EDLEVEL, MAX(SALARY) AS MAXIMUM
FROM EMPLOYEE
WHERE HIREDATE > '1979-01-01'
GROUP BY WORKDEPT, EDLEVEL
ORDER BY WORKDEPT, EDLEVEL
结果为:
WORKDEPT EDLEVEL MAXIMUM
-------- ------- -----------
D11 17 18270.00
D21 15 27380.00
D21 16 36170.00
D21 17 28760.00
E11 12 15340.00
E21 14 26150.00
注意:在 SELECT 语句中指定的每个列名也在 GROUP BY 子句中提到。未在这两个地方提到的列名将产生错误。GROUP BY 子句对 WORKDEPT 和 EDLEVEL 的每个唯一组合各返回一行。
在 GROUP BY 子句之后使用 HAVING 子句
可应用限定条件进行分组,以便系统仅对满足条件的组返回结果。为此,在GROUP BY 子句后面包含一个 HAVING 子句。 HAVING 子句可包含一个或多个用 AND 和 OR 连接的谓词。每个谓词将组特性(如 AVG(SALARY))与下列之一进行比较:
该组的另一个特性
例如:
HAVING AVG(SALARY) > 2 * MIN(SALARY)
常数
例如:
HAVING AVG(SALARY) > 20000
例如,下列查询寻找雇员数超过 4 的部门的最高和最低薪水:
SELECT WORKDEPT, MAX(SALARY) AS MAXIMUM, MIN(SALARY) AS MINIMUM
FROM EMPLOYEE
GROUP BY WORKDEPT
HAVING COUNT(*) > 4
ORDER BY WORKDEPT
此语句产生下列结果:
WORKDEPT MAXIMUM MINIMUM
-------- ----------- -----------
D11 32250.00 18270.00
D21 36170.00 17250.00
E11 29750.00 15340.00
有可能(虽然很少见)查询有 HAVING 子句但没有 GROUP BY 子句。在此情况下,DB2 将整个表看作一个组。因为该表被看作是单个组,所以最多可以有一个结果行。如果 HAVING 条件对整个表为真,则返回选择的结果(该结果必须整个由列函数组成);否则不返回任何行。
官方讲是按组操作,
或者好理解点就是按类操作..
看个例子你就明白了,表如下:
ID 名称 仓库 数量
01 西瓜 一号 10
02 西瓜 二号 30
03 大米 一号 30
04 苹果 一号 40
05 苹果 二号 45
06 苹果 三号 5
Select name,Sun(price) From 表 Group By name
以上SQL将返回各种商品的总数量,而不管是哪个仓库的..
结果:
西瓜,40
大米,30
苹果,90
<html>
<body bgcolor="green">
<font color=black size=5>发布最新新闻消息!</font>
<form methoud="get" action="index.asp">
<font color=red size=3>
1.发布时间:<input type="text" name="postdate" size=8 onfocus="hint()"><br>
2.新闻标题:<input type="text" name="title" size=60 ><br>
3.新闻内容:<br><textarea name="content" cols="82" rows="15">
输入内容:
</textarea> </font>
<br>
<input type="submit" value="确定发布">
<input type="reset" value="取消发布">
</form>
<script language="vbscript">
function hint
msgbox"发布时间的输入格式为@@@@-@@-@@"
end function
</script>
</html>
<body bgcolor="green">
<font color=black size=5>发布最新新闻消息!</font>
<form methoud="get" action="index.asp">
<font color=red size=3>
1.发布时间:<input type="text" name="postdate" size=8 onfocus="hint()"><br>
2.新闻标题:<input type="text" name="title" size=60 ><br>
3.新闻内容:<br><textarea name="content" cols="82" rows="15">
输入内容:
</textarea> </font>
<br>
<input type="submit" value="确定发布">
<input type="reset" value="取消发布">
</form>
<script language="vbscript">
function hint
msgbox"发布时间的输入格式为@@@@-@@-@@"
end function
</script>
</html>
<form action="charu1.asp" method="post">
请搜索你想要删除的标题:<input name="name" value="3">
<input type="submit" value="提交">
<%
set rs=server.createobject("adodb.recordset")
rs.open "select * from s3","dsn=q3;" %>
<%rs.pagesize=request("name")%>
<%rs.absolutepage=request("name")
%>
<%for i=1 to request("name")
%>
<tr><td><%=rs("title")%></td>
<td><%=rs("content")%></td>
<td<%=rs("postdate")%><td></tr>
<br>
<%rs.movenext
next%>
<%set cn=server.createobject("adodb.connection")
cn.open "dsn=q3;"
strsql="delete from s3 where id= '"&request("name")&"' "
%>
<%
rs.close
set rs=nothing
cn.close
set cn=nothing
%>
请搜索你想要删除的标题:<input name="name" value="3">
<input type="submit" value="提交">
<%
set rs=server.createobject("adodb.recordset")
rs.open "select * from s3","dsn=q3;" %>
<%rs.pagesize=request("name")%>
<%rs.absolutepage=request("name")
%>
<%for i=1 to request("name")
%>
<tr><td><%=rs("title")%></td>
<td><%=rs("content")%></td>
<td<%=rs("postdate")%><td></tr>
<br>
<%rs.movenext
next%>
<%set cn=server.createobject("adodb.connection")
cn.open "dsn=q3;"
strsql="delete from s3 where id= '"&request("name")&"' "
%>
<%
rs.close
set rs=nothing
cn.close
set cn=nothing
%>
http://www.guogoul.com/2008/09/15/raid/
http://www.docin.com/p-777759021.html
raid5:
1)最多容错量:1
2)RAID5的大小为(n-1)*单个磁盘大小即(3-1)*5GB。
3)经测试3块挂了一块还是可以用的。
http://www.docin.com/p-777759021.html
raid5:
1)最多容错量:1
2)RAID5的大小为(n-1)*单个磁盘大小即(3-1)*5GB。
3)经测试3块挂了一块还是可以用的。
(一)爱的宣言
大一,我们处于对爱情充满遐想的年龄。晚上关灯后,我们躺在床上袒露各自倾慕的异性,也假设将来可能面对的各种情形。
一天,忘了是谁问:“如果将来有两个对你一样好的男生,一个很有钱,一个很穷,你们会选择哪个呢?”我从床上一跃而起,大声地郑重宣布:“我会选择那个穷的!”话音刚落,众人一片哗然。
此后,她们就一直将我的那句“宣言”记在心上。
阅读全文
大一,我们处于对爱情充满遐想的年龄。晚上关灯后,我们躺在床上袒露各自倾慕的异性,也假设将来可能面对的各种情形。
一天,忘了是谁问:“如果将来有两个对你一样好的男生,一个很有钱,一个很穷,你们会选择哪个呢?”我从床上一跃而起,大声地郑重宣布:“我会选择那个穷的!”话音刚落,众人一片哗然。
此后,她们就一直将我的那句“宣言”记在心上。
阅读全文
想问一下,空格有多少种?以前换行的\r\n和\r和\n就把我折磨得够呛."\s"匹配的是哪一种空格?
\s匹配任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格:
\s 空白字符:[ \t\n\x0B\f\r] //这个市重点!
\t 制表符 ('\u0009')
\n 新行(换行)符 ('\u000A')
\r 回车符 ('\u000D')
\f 换页符 ('\u000C')
\a 报警 (bell) 符 ('\u0007')
\e 转义符 ('\u001B')
\cx 对应于 x 的控制符
#相当于/
\s指制表符空格符等
+表示至少一个或多个
i表示不区分大小写
1. 什么是正则表达式:
正则表达式(regular expression)描述了一种字符串匹配的模式,是一种描述一段文本模式的方法,可以用来检查一个串是否含有某种子串、
将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。例如:字符串"wuleying"匹配正则表达式"wuleying",
它也可以匹配正则表达式"wu"、"le"等等。除了精确匹配字符外,还可以用特殊字符来来指定表达示的元意(列如:.、*、+等,一会儿讲到)
2. 正则表达式的历史
正则表达式的“祖先”可以一直上溯至对人类神经系统如何工作的早期研究。Warren McCulloch 和 Walter Pitts
这两位神经生理学家研究出一种数学方式来描述这些神经网络。1956 年, 一位叫 Stephen Kleene 的数学家在 McCulloch 和 Pitts
早期工作的基础上,发表了一篇标题为“神经网事件的表示法”的论文,引入了正则表达式的概念。
正则表达式就是用来描述他称为“正则集的代数”的表达式,因此采用“正则表达式”这个术语。
随后,发现可以将这一工作应用于使用 Ken Thompson 的计算搜索算法的一些早期研究,Ken Thompson 是 Unix 的主要发明人。
正则表达式的第一个实用应用程序就是 Unix 中的 qed 编辑器。如他们所说,剩下的就是众所周知的历史了。
从那时起直至现在正则表达式都是基于文本的编辑器和搜索工具中的一个重要部分。
3. PHP支持两种风格的正则表达式语法:POSIX与PERL。
3.1 POSIX 扩展正则表达式函数
ereg_replace -- 替换正则表达式
ereg -- 正则表达式匹配
eregi_replace -- 不区分大小写替换正则表达式
eregi -- 不区分大小写的正则表达式匹配
split -- 用正则表达式将字符串分割到数组中
spliti -- 用正则表达式不区分大小写将字符串分割到数组中
sql_regcase -- 产生用于不区分大小的匹配的正则表达式
3.2 Perl 兼容正则表达式函数
preg_grep -- 返回与模式匹配的数组单元
preg_match_all -- 进行全局正则表达式匹配
preg_match -- 进行正则表达式匹配
preg_quote -- 转义正则表达式字符
preg_replace_callback -- 用回调函数执行正则表达式的搜索和替换
preg_replace -- 执行正则表达式的搜索和替换
preg_split -- 用正则表达式分割字符串
3.1 普通字符
由所有那些未显式指定为元字符的打印和非打印字符组成。这包括所有的大写和小写字母字符,所有数字,所有标点符号以及一些符号。
阅读全文
\s匹配任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格:
\s 空白字符:[ \t\n\x0B\f\r] //这个市重点!
\t 制表符 ('\u0009')
\n 新行(换行)符 ('\u000A')
\r 回车符 ('\u000D')
\f 换页符 ('\u000C')
\a 报警 (bell) 符 ('\u0007')
\e 转义符 ('\u001B')
\cx 对应于 x 的控制符
<?php
$str = "d dj";
echo preg_replace("#\s+#is","-",$str);
?>
$str = "d dj";
echo preg_replace("#\s+#is","-",$str);
?>
#相当于/
\s指制表符空格符等
+表示至少一个或多个
i表示不区分大小写
1. 什么是正则表达式:
正则表达式(regular expression)描述了一种字符串匹配的模式,是一种描述一段文本模式的方法,可以用来检查一个串是否含有某种子串、
将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。例如:字符串"wuleying"匹配正则表达式"wuleying",
它也可以匹配正则表达式"wu"、"le"等等。除了精确匹配字符外,还可以用特殊字符来来指定表达示的元意(列如:.、*、+等,一会儿讲到)
2. 正则表达式的历史
正则表达式的“祖先”可以一直上溯至对人类神经系统如何工作的早期研究。Warren McCulloch 和 Walter Pitts
这两位神经生理学家研究出一种数学方式来描述这些神经网络。1956 年, 一位叫 Stephen Kleene 的数学家在 McCulloch 和 Pitts
早期工作的基础上,发表了一篇标题为“神经网事件的表示法”的论文,引入了正则表达式的概念。
正则表达式就是用来描述他称为“正则集的代数”的表达式,因此采用“正则表达式”这个术语。
随后,发现可以将这一工作应用于使用 Ken Thompson 的计算搜索算法的一些早期研究,Ken Thompson 是 Unix 的主要发明人。
正则表达式的第一个实用应用程序就是 Unix 中的 qed 编辑器。如他们所说,剩下的就是众所周知的历史了。
从那时起直至现在正则表达式都是基于文本的编辑器和搜索工具中的一个重要部分。
3. PHP支持两种风格的正则表达式语法:POSIX与PERL。
3.1 POSIX 扩展正则表达式函数
ereg_replace -- 替换正则表达式
ereg -- 正则表达式匹配
eregi_replace -- 不区分大小写替换正则表达式
eregi -- 不区分大小写的正则表达式匹配
split -- 用正则表达式将字符串分割到数组中
spliti -- 用正则表达式不区分大小写将字符串分割到数组中
sql_regcase -- 产生用于不区分大小的匹配的正则表达式
3.2 Perl 兼容正则表达式函数
preg_grep -- 返回与模式匹配的数组单元
preg_match_all -- 进行全局正则表达式匹配
preg_match -- 进行正则表达式匹配
preg_quote -- 转义正则表达式字符
preg_replace_callback -- 用回调函数执行正则表达式的搜索和替换
preg_replace -- 执行正则表达式的搜索和替换
preg_split -- 用正则表达式分割字符串
3.1 普通字符
由所有那些未显式指定为元字符的打印和非打印字符组成。这包括所有的大写和小写字母字符,所有数字,所有标点符号以及一些符号。
阅读全文
看到这个标题,大家可能要说我没常识,php根本不支持多线程啊,没错,php本身是不支持多线程,但是别忘了php的好搭档,apache和linux可是支持的,呵呵,lamp才是最佳组合,还在使用win服务器的现在知道为什么要用linux吧?好久没在phpchina说教了,今天水一帖,写个简单的代码演示下如何借助shell脚本实现多线程。
先写个简单的php代码,这里为了让脚本执行时间更长,方便看效果,sleep一下,呵呵!先看下test.php的代码: 复制PHP内容到剪贴板
PHP代码:
在看下shell脚本的代码,非常简单 复制内容到剪贴板
代码:
注意到在请求php代码的那行有一个&符号吗,这个是关键,不加的话是不能进行多线程的,&表示讲服务推送到后台执行,因此,在shell的每次的循环中不必等php的代码全部执行完在请求下一个文件,而是同时进行的,这样就实现了多线程,下面运行下shell看下效果,这里你将看到10个test.php进程再跑,再利用linux的定时器,定时请求这个shell,在处理一些需要多线程的任务,例如,批量下载时,非常好用!
结果出现:
先写个简单的php代码,这里为了让脚本执行时间更长,方便看效果,sleep一下,呵呵!先看下test.php的代码: 复制PHP内容到剪贴板
PHP代码:
<?php
for ($i=0;$i<10;$i++) {
echo $i;
sleep(10);
}
?>
for ($i=0;$i<10;$i++) {
echo $i;
sleep(10);
}
?>
在看下shell脚本的代码,非常简单 复制内容到剪贴板
代码:
#!/bin/bash
for i in 1 2 3 4 5 6 7 8 9 10
do
php -q ./thread.php &
done
for i in 1 2 3 4 5 6 7 8 9 10
do
php -q ./thread.php &
done
注意到在请求php代码的那行有一个&符号吗,这个是关键,不加的话是不能进行多线程的,&表示讲服务推送到后台执行,因此,在shell的每次的循环中不必等php的代码全部执行完在请求下一个文件,而是同时进行的,这样就实现了多线程,下面运行下shell看下效果,这里你将看到10个test.php进程再跑,再利用linux的定时器,定时请求这个shell,在处理一些需要多线程的任务,例如,批量下载时,非常好用!
结果出现:
0000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999
第一,培养对互联网的产业理解能力和市场的感觉。
有些人天生具有良好的商业感觉,但是商业感觉并不是不可学习的,经过多年的浸润,是可以培养出良好商业感觉的。
为了培养理解互联网行业的能力,可以经常阅读互联网的相关行业新闻,培养对互联网趋势的感觉。除了培养对互联网趋势的感觉外,还有很重要的是要培养商业的感觉,对于大多数网站来说,不是做公益事业,而需要盈利来支撑网站的发展。经常浏览受用户欢迎的网站,看看哪些新技术,哪些新应用,也许能发现新的商业潜力的产品,找到与现有市场产品能够形成差别化的新产品。
灵感从来都不是只有天才才有的,是需要积累才能诞生的。
第二,增强网站产品可行性评估能力。
比如网站产品的成功可能性概率有多高?网站定位的市场优势有多大?投入实施需要花费多少资源?什么时候能够收回成本?面对未来的事情,从来都没有确定的答案,评估就是能够可提高成功的概率。可在实际过程中,形成一个可执行的模板文档。
第三, 培养研究用户需求的能力。
阅读全文
有些人天生具有良好的商业感觉,但是商业感觉并不是不可学习的,经过多年的浸润,是可以培养出良好商业感觉的。
为了培养理解互联网行业的能力,可以经常阅读互联网的相关行业新闻,培养对互联网趋势的感觉。除了培养对互联网趋势的感觉外,还有很重要的是要培养商业的感觉,对于大多数网站来说,不是做公益事业,而需要盈利来支撑网站的发展。经常浏览受用户欢迎的网站,看看哪些新技术,哪些新应用,也许能发现新的商业潜力的产品,找到与现有市场产品能够形成差别化的新产品。
灵感从来都不是只有天才才有的,是需要积累才能诞生的。
第二,增强网站产品可行性评估能力。
比如网站产品的成功可能性概率有多高?网站定位的市场优势有多大?投入实施需要花费多少资源?什么时候能够收回成本?面对未来的事情,从来都没有确定的答案,评估就是能够可提高成功的概率。可在实际过程中,形成一个可执行的模板文档。
第三, 培养研究用户需求的能力。
阅读全文
int()字段类型长度 问题
一直以来我定义int数据类型时填写的长度都是为11,只知道int类型的数据可表达的范围:
有符号值:-2147683648 到 2147683647
无符号值:0 到 4294967295
小弟想问下,定义了int数据类型后,后面填写的长度具体有什么用?
如果长度为4,请问最大的数是多少?如果是自增的可以是多少条?
答:最大为11位,最少为4位,不够在前面补空格
这个可选的宽度规格说明是用于在数值显示时,对某些值的宽度短于该列宽度的值进行左填补显示的,而不是为了限制在该列中存储值的宽度,也 不是为了限制那些超过该列指定宽度的值的可被显示的数字位数。注意,如果在一个整型列中存储一个超过显示宽度的更大值时,当 mysql 为某些复杂的联结(join)生成临时表时,你可能会遇到问题,因为在这种情况下,mysql 信任地认为所有的值均适合原始的列宽度。
而int本身就是4个字节 bigint是8个字节 所以说int(X)的含义就是 int决定数据存储的字节 X表示期望数据的列宽度
在SQL语句中int代表你要创建字段的类型,int代表整型,11代表字段的长度。
这个代表显示宽度
整数列的显示宽度与mysql需要用多少个字符来显示该列数值,与该整数需要的存储空间的大小都没有关系,比如,不管设定了显示宽度是多少个字符,bigint都要占用8个字节。
一直以来我定义int数据类型时填写的长度都是为11,只知道int类型的数据可表达的范围:
有符号值:-2147683648 到 2147683647
无符号值:0 到 4294967295
小弟想问下,定义了int数据类型后,后面填写的长度具体有什么用?
如果长度为4,请问最大的数是多少?如果是自增的可以是多少条?
答:最大为11位,最少为4位,不够在前面补空格
这个可选的宽度规格说明是用于在数值显示时,对某些值的宽度短于该列宽度的值进行左填补显示的,而不是为了限制在该列中存储值的宽度,也 不是为了限制那些超过该列指定宽度的值的可被显示的数字位数。注意,如果在一个整型列中存储一个超过显示宽度的更大值时,当 mysql 为某些复杂的联结(join)生成临时表时,你可能会遇到问题,因为在这种情况下,mysql 信任地认为所有的值均适合原始的列宽度。
而int本身就是4个字节 bigint是8个字节 所以说int(X)的含义就是 int决定数据存储的字节 X表示期望数据的列宽度
在SQL语句中int代表你要创建字段的类型,int代表整型,11代表字段的长度。
这个代表显示宽度
整数列的显示宽度与mysql需要用多少个字符来显示该列数值,与该整数需要的存储空间的大小都没有关系,比如,不管设定了显示宽度是多少个字符,bigint都要占用8个字节。
1. 安装:http://www.imagemagick.org下载tar源码包
引用
#tar -jxvf ImageMagick-6.4.3-4.tar.gz
#cd ImageMagick-6.4.3-4
#./configure –enable-shared –enable-lzw –without-perl –with-modules
#make
#make install
不指定安装路径--prefix,就默认将可执行程序安装到/usr/local/bin/目录下(该目录默认在path中)。
2. 测试:
1). 版本察看
简单地执行:
引用
convert -version
如果看到下面的信息说明安装已经成功
引用
Version: ImageMagick 6.4.3 2008-08-27 Q16 OpenMP http://www.imagemagick.org
Copyright: Copyright (C) 1999-2008 ImageMagick Studio LLC
2). 压缩图片.
当前目录下有一个文件名字叫hill.png,执行
引用
convert -sample 25%x25% hill.png hill_t.png
将缩小hill.png为原来的25%,生成新的文件名叫hill_t.png
如果出现如下错误提示:
引用
convert: error while loading shared libraries: libMagickCore.so.1: cannot open shared object file: No such file or directory
将so所在的路径加入到LD_LIBRARY_PATH(前面的安装方式默认安装so到/usr/local/lib目录下)
引用
export LD_LIBRARY_PATH=/usr/local/lib
当执行jpg图片缩放的时候,
3). 压缩jpg图片
引用
convert -sample 25%x25% water.png water_t.png
系统提示:
引用
convert: no decode delegate for this image format `water.jpg'.
convert: missing an image filename `t_water.jpg'.
II. 安装 MagickWand For PHP
假设这一步之前,你已经将php安装好,目录为/usr/local/php。然后去 http://www.magickwand.org/下载 MagickWandForPHP-1.0.7.tar.gz。
引用
#/usr/local/php/bin/phpize // phpize安装php5.2.6默认安装好了,这一步生成configure文件
如果这一步提示没有autoconf,则需要在你机器上安装autoconf软件,我用Ubuntu,就用apt-get安装,没在上面浪费很多时间。
引用
#./configure --prefix=/usr/local/magickwand --enable-shared --with-php-config=/usr/local/php/bin/php-config --with-magickwand=/usr/local/imagemagick
./configure命令的--with-php-config参数指定php-config所在路径,php-config随php一起安装,如果php安装在/usr/local/php/,那么php-config位于/usr/local/php/bin/
引用
#make
#make install
如果命令运行无误,就会在php目录下编译成功magickwand.so文件(在我这里位于/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613)
III. 修改php.ini的配置
将magickwand.so加入到php.ini中,如extension="/usr/local/php/lib/magickwand.so",重启Apache即可。
运行phpinfo()看看是否有magickwand的信息
引用
#tar -jxvf ImageMagick-6.4.3-4.tar.gz
#cd ImageMagick-6.4.3-4
#./configure –enable-shared –enable-lzw –without-perl –with-modules
#make
#make install
不指定安装路径--prefix,就默认将可执行程序安装到/usr/local/bin/目录下(该目录默认在path中)。
2. 测试:
1). 版本察看
简单地执行:
引用
convert -version
如果看到下面的信息说明安装已经成功
引用
Version: ImageMagick 6.4.3 2008-08-27 Q16 OpenMP http://www.imagemagick.org
Copyright: Copyright (C) 1999-2008 ImageMagick Studio LLC
2). 压缩图片.
当前目录下有一个文件名字叫hill.png,执行
引用
convert -sample 25%x25% hill.png hill_t.png
将缩小hill.png为原来的25%,生成新的文件名叫hill_t.png
如果出现如下错误提示:
引用
convert: error while loading shared libraries: libMagickCore.so.1: cannot open shared object file: No such file or directory
将so所在的路径加入到LD_LIBRARY_PATH(前面的安装方式默认安装so到/usr/local/lib目录下)
引用
export LD_LIBRARY_PATH=/usr/local/lib
当执行jpg图片缩放的时候,
3). 压缩jpg图片
引用
convert -sample 25%x25% water.png water_t.png
系统提示:
引用
convert: no decode delegate for this image format `water.jpg'.
convert: missing an image filename `t_water.jpg'.
II. 安装 MagickWand For PHP
假设这一步之前,你已经将php安装好,目录为/usr/local/php。然后去 http://www.magickwand.org/下载 MagickWandForPHP-1.0.7.tar.gz。
引用
#/usr/local/php/bin/phpize // phpize安装php5.2.6默认安装好了,这一步生成configure文件
如果这一步提示没有autoconf,则需要在你机器上安装autoconf软件,我用Ubuntu,就用apt-get安装,没在上面浪费很多时间。
引用
#./configure --prefix=/usr/local/magickwand --enable-shared --with-php-config=/usr/local/php/bin/php-config --with-magickwand=/usr/local/imagemagick
./configure命令的--with-php-config参数指定php-config所在路径,php-config随php一起安装,如果php安装在/usr/local/php/,那么php-config位于/usr/local/php/bin/
引用
#make
#make install
如果命令运行无误,就会在php目录下编译成功magickwand.so文件(在我这里位于/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613)
III. 修改php.ini的配置
将magickwand.so加入到php.ini中,如extension="/usr/local/php/lib/magickwand.so",重启Apache即可。
运行phpinfo()看看是否有magickwand的信息





