法一:
法二:
可选参数。指定小数位数
实例,参数2是指定小数位数为2位:
如下,制定后三位开始四舍五入:
第二位小于5,情况:
阅读全文
<?php
$num = 10.2323;
echo number_format($num, 2);
?>
$num = 10.2323;
echo number_format($num, 2);
?>
[~]# php test.php
10.23
10.23
法二:
可选参数。指定小数位数
实例,参数2是指定小数位数为2位:
如下,制定后三位开始四舍五入:
<?php
echo(round(0.6025,3));
?>
echo(round(0.6025,3));
?>
[~]# php test.php
0.603
0.603
第二位小于5,情况:
<?php
echo(round(0.6024,3));
?>
echo(round(0.6024,3));
?>
[~]# php test.php
0.602
0.602
阅读全文
var_export 输出,所有的数据是可以作为组织好的变量输出的,都是能够作为直接赋值使用:
需要注意的一点是, var_export对于资源型的变量会输出NULL!
debug_zval_dump 输出结果跟 var_dump 类似,唯一增加的一个值是refcount,就是记录一个变量被引用了多少次,这是php的 copy on write (写时复制) 的机制的一个重要特点[
(PHP 4 >= 4.2.0, PHP 5)
var_export -- 输出或返回一个变量的字符串表示
描述
mixed var_export ( mixed expression [, bool return])
此函数返回关于传递给该函数的变量的结构信息,它和 var_dump() 类似,不同的是其返回的表示是合法的 PHP 代码。
您可以通过将函数的第二个参数设置为 TRUE,从而返回变量的表示。
上面代码将在页面打印:
array ( 'user' => 'yyy', 'psw' => 'xxx', )
'string'
也就是变量在php脚本中的表示。
所以常用于生成缓存文件。
例:
以上代码会生成有一个数组的php缓存文件。
array (
'user' => 'yyy',
'psw' => 'xxx',
)
'user' => 'yyy',
'psw' => 'xxx',
)
需要注意的一点是, var_export对于资源型的变量会输出NULL!
debug_zval_dump 输出结果跟 var_dump 类似,唯一增加的一个值是refcount,就是记录一个变量被引用了多少次,这是php的 copy on write (写时复制) 的机制的一个重要特点[
(PHP 4 >= 4.2.0, PHP 5)
var_export -- 输出或返回一个变量的字符串表示
描述
mixed var_export ( mixed expression [, bool return])
此函数返回关于传递给该函数的变量的结构信息,它和 var_dump() 类似,不同的是其返回的表示是合法的 PHP 代码。
您可以通过将函数的第二个参数设置为 TRUE,从而返回变量的表示。
<?php
$array = array( 'user' => 'yyy', 'psw' => 'xxx' );
$var="string";
echo var_export($array,true);
echo "<br />";
echo var_export($var,true);
?>
$array = array( 'user' => 'yyy', 'psw' => 'xxx' );
$var="string";
echo var_export($array,true);
echo "<br />";
echo var_export($var,true);
?>
上面代码将在页面打印:
array ( 'user' => 'yyy', 'psw' => 'xxx', )
'string'
也就是变量在php脚本中的表示。
所以常用于生成缓存文件。
例:
<?php
$cache_file_path = ROOT_PATH . '/temp/static_caches/' . $cache_name . '.php';
$content = "<?php\r\n";
$content .= "\$data = " . var_export($caches, true) . ";\r\n";
$content .= "?>";
file_put_contents($cache_file_path, $content, LOCK_EX);
?>
$cache_file_path = ROOT_PATH . '/temp/static_caches/' . $cache_name . '.php';
$content = "<?php\r\n";
$content .= "\$data = " . var_export($caches, true) . ";\r\n";
$content .= "?>";
file_put_contents($cache_file_path, $content, LOCK_EX);
?>
以上代码会生成有一个数组的php缓存文件。
一般我们把数组缓存到文件中的话,都是先要转成字符串的形式,然后再存入文本文件中,一般有两种机制把数组转成字符串,
第一种是
$str = var_export($arr, true);
第二种是
$str = serialize($arr);
这两种机制转换之后的字符串是不一样的,第一种是数组的原型模式,第二种是序列化后的形式。第一种存入文件中的只要加上<?php ?>标签,就形式了一个可用的数组原型,对调用来说,不用转换,直接返回这个数组就可以,但第二种,则需要再用一次unserialize函数反序列化一下。对于第种一说,就多了一步操作。下来我们用数据说话吧:阅读全文
第一种是
$str = var_export($arr, true);
第二种是
$str = serialize($arr);
这两种机制转换之后的字符串是不一样的,第一种是数组的原型模式,第二种是序列化后的形式。第一种存入文件中的只要加上<?php ?>标签,就形式了一个可用的数组原型,对调用来说,不用转换,直接返回这个数组就可以,但第二种,则需要再用一次unserialize函数反序列化一下。对于第种一说,就多了一步操作。下来我们用数据说话吧:阅读全文
来源:http://www.javaeye.com/topic/131139
# 软件安装形式
* rpm安装包:使用在RedHat集成套件中
* deb安装包:使用在Debian及其相关的集成套件中,其中包括Corel Linux
* slp:使用在stampede基础套件中,目的是尽可能少的取决于软件包管理器
* tar:tar-ball,一种压缩形式的tar格式文件
* 源代码安装包,需要自己编译具有高度的可配置性
# rpm包安装
* rpm -q 查询rpm数据库
* rpm -V 根据原始软件包验证已安装的文件
* rpm -U 升级或安装软件包
* rpm -e webmin 卸载软件
* rpm -qip webmin-0.89.rpm 查询某个软件包的基本信息
* rpm -qf /etc/sendmail.cf 或者 rpm -qif /etc/sendmail.cf 查询文件属于某个软件包,并带有完整的版本信息
* rpm -qlf /etc/sendmail.cf 查询某个含有/etc/sendmail.cf文件的软件包 并列该软件包的所有文件
* rpm -qacv 查询所有rpm包的详细信息,类似于ls -l
* rpm -va > rmp_verify.txt 强制验证整个软件包,并将信息写道文件中
* rpm -Uvf webmin0.78.rpm 或者 rpm -Uvf ×.rpm 安装软件
源代码安装
* 阅读Readme 和install文件
* 配置:运行configure的脚本文件
* 编译:运行make 编译源代码
* 安装:运行make install
# 软件安装形式
* rpm安装包:使用在RedHat集成套件中
* deb安装包:使用在Debian及其相关的集成套件中,其中包括Corel Linux
* slp:使用在stampede基础套件中,目的是尽可能少的取决于软件包管理器
* tar:tar-ball,一种压缩形式的tar格式文件
* 源代码安装包,需要自己编译具有高度的可配置性
# rpm包安装
* rpm -q 查询rpm数据库
* rpm -V 根据原始软件包验证已安装的文件
* rpm -U 升级或安装软件包
* rpm -e webmin 卸载软件
* rpm -qip webmin-0.89.rpm 查询某个软件包的基本信息
* rpm -qf /etc/sendmail.cf 或者 rpm -qif /etc/sendmail.cf 查询文件属于某个软件包,并带有完整的版本信息
* rpm -qlf /etc/sendmail.cf 查询某个含有/etc/sendmail.cf文件的软件包 并列该软件包的所有文件
* rpm -qacv 查询所有rpm包的详细信息,类似于ls -l
* rpm -va > rmp_verify.txt 强制验证整个软件包,并将信息写道文件中
* rpm -Uvf webmin0.78.rpm 或者 rpm -Uvf ×.rpm 安装软件
源代码安装
* 阅读Readme 和install文件
* 配置:运行configure的脚本文件
* 编译:运行make 编译源代码
* 安装:运行make install
每间隔3小时启动php去执行makescore.php程序:
0 */3 * * * /usr/local/php/bin/php /usr/local/tads/htdocs/*/src/cron/makescore.php
crontab格式:
第1列分钟1~59
第2列小时1~23(0表示子夜)
第3列日1~31
第4列月1~12
第5列星期0~6(0表示星期天)
第6列要运行的命令
下面是crontab的格式:
分 时 日 月 星期 要运行的命令
这里有crontab文件条目的一些例子:
30 21 * * * /usr/local/apache/bin/apachectl restart
上面的例子表示每晚的21:30重启apache。
45 4 1,10,22 * * /usr/local/apache/bin/apachectl restart
上面的例子表示每月1、10、22日的4 : 45重启apache。
10 1 * * 6,0 /usr/local/apache/bin/apachectl restart
上面的例子表示每周六、周日的1 : 10重启apache。
0,30 18-23 * * * /usr/local/apache/bin/apachectl restart
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。
0 23 * * 6 /usr/local/apache/bin/apachectl restart
上面的例子表示每星期六的11 : 00 pm重启apache。
* */1 * * * /usr/local/apache/bin/apachectl restart
每一小时重启apache
* */1 * * * /usr/local/apache/bin/apachectl restart
每一小时重启apache
* 23-7/1 * * * /usr/local/apache/bin/apachectl restart
晚上11点到早上7点之间,每隔一小时重启apache
0 11 4 * mon-wed /usr/local/apache/bin/apachectl restart
每月的4号与每周一到周三的11点重启apache
0 4 1 jan * /usr/local/apache/bin/apachectl restart
一月一号的4点重启apache
crontab命令:
crontab查看,编辑,重启,停止,开始
crontab -[l,e] service crond [restart,stop,start]
值得注意的地方,crontab里定时调用命令时,命令如果不在crontab的classpath里,要带全路径。
比如mysql应该写为 /usr/local/mysql/bin/mysql
阅读全文
经常开发php程序,老是找不到php的文件,于是否,想加入path,又看不到.bash_profile文件,只好建立这个文件,输入如下内容:
vi /root/.bash_profile
TERM=xterm
LANG=en_US.UTF-8
export PATH=$PATH
alias vi='vim'
alias ll='ls -lh'
alias la='ls -al'
alias ls='ls -GF'
alias chtdoc='cd /data0/htdocs'
alias cphp='cd /usr/local/webserver/php'
alias cmysql='cd /usr/local/webserver/mysql'
alias capache='cd /usr/local/webserver/apache'
Jackxiang:/root # source .bash_profile
修改加入PHP的路径:
其实不止这些:
1、直接用export命令:
#export PATH=$PATH:/opt/au1200_rm/build_tools/bin
查看是否已经设好,可用命令export查看:
[root@localhost bin]# export
declare -x BASH_ENV="/root/.bashrc"
declare -x G_BROKEN_FILENAMES="1"
declare -x HISTSIZE="1000"
declare -x HOME="/root"
declare -x HOSTNAME="localhost.localdomain"
declare -x INPUTRC="/etc/inputrc"
declare -x LANG="zh_CN.GB18030"
declare -x LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
declare -x LESSOPEN="|/usr/bin/lesspipe.sh %s"
declare -x LOGNAME="root"
declare -x LS_COLORS="no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35:"
declare -x MAIL="/var/spool/mail/root"
declare -x OLDPWD="/opt/au1200_rm/build_tools"
declare -x PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin:/opt/au1200_rm/build_tools/bin"
declare -x PWD="/opt/au1200_rm/build_tools/bin"
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x SSH_ASKPASS="/usr/libexec/openssh/gnome-ssh-askpass"
declare -x SSH_AUTH_SOCK="/tmp/ssh-XX3LKWhz/agent.4242"
declare -x SSH_CLIENT="10.3.37.152 2236 22"
declare -x SSH_CONNECTION="10.3.37.152 2236 10.3.37.186 22"
declare -x SSH_TTY="/dev/pts/2"
declare -x TERM="linux"
declare -x USER="root"
declare -x USERNAME="root"
可以看到,环境变量已经设好,PATH里面已经有了我要加的编译器的路径。
2、修改profile文件:
#vi /etc/profile
在里面加入:
export PATH="$PATH:/opt/au1200_rm/build_tools/bin"
3. 修改.bashrc文件:
# vi /root/.bashrc
在里面加入:
export PATH="$PATH:/opt/au1200_rm/build_tools/bin"
后两种方法一般需要重新注销系统才能生效,最后可以通过echo命令测试一下:
# echo $PATH
看看输出里面是不是已经有了/my_new_path这个路径了。
vi /root/.bash_profile
TERM=xterm
LANG=en_US.UTF-8
export PATH=$PATH
alias vi='vim'
alias ll='ls -lh'
alias la='ls -al'
alias ls='ls -GF'
alias chtdoc='cd /data0/htdocs'
alias cphp='cd /usr/local/webserver/php'
alias cmysql='cd /usr/local/webserver/mysql'
alias capache='cd /usr/local/webserver/apache'
Jackxiang:/root # source .bash_profile
修改加入PHP的路径:
其实不止这些:
1、直接用export命令:
#export PATH=$PATH:/opt/au1200_rm/build_tools/bin
查看是否已经设好,可用命令export查看:
[root@localhost bin]# export
declare -x BASH_ENV="/root/.bashrc"
declare -x G_BROKEN_FILENAMES="1"
declare -x HISTSIZE="1000"
declare -x HOME="/root"
declare -x HOSTNAME="localhost.localdomain"
declare -x INPUTRC="/etc/inputrc"
declare -x LANG="zh_CN.GB18030"
declare -x LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
declare -x LESSOPEN="|/usr/bin/lesspipe.sh %s"
declare -x LOGNAME="root"
declare -x LS_COLORS="no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35:"
declare -x MAIL="/var/spool/mail/root"
declare -x OLDPWD="/opt/au1200_rm/build_tools"
declare -x PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin:/opt/au1200_rm/build_tools/bin"
declare -x PWD="/opt/au1200_rm/build_tools/bin"
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x SSH_ASKPASS="/usr/libexec/openssh/gnome-ssh-askpass"
declare -x SSH_AUTH_SOCK="/tmp/ssh-XX3LKWhz/agent.4242"
declare -x SSH_CLIENT="10.3.37.152 2236 22"
declare -x SSH_CONNECTION="10.3.37.152 2236 10.3.37.186 22"
declare -x SSH_TTY="/dev/pts/2"
declare -x TERM="linux"
declare -x USER="root"
declare -x USERNAME="root"
可以看到,环境变量已经设好,PATH里面已经有了我要加的编译器的路径。
2、修改profile文件:
#vi /etc/profile
在里面加入:
export PATH="$PATH:/opt/au1200_rm/build_tools/bin"
3. 修改.bashrc文件:
# vi /root/.bashrc
在里面加入:
export PATH="$PATH:/opt/au1200_rm/build_tools/bin"
后两种方法一般需要重新注销系统才能生效,最后可以通过echo命令测试一下:
# echo $PATH
看看输出里面是不是已经有了/my_new_path这个路径了。
在mysql中涉及到编码是最让人头疼的。
编写update.txt (注意:utf8的编码要存为utf8的txt格式,当然你也可以命名后缀改为:update.sql etc)
然后,发现php程序读出来发现是乱码。
查看mysql编码:
mysql> show variables like '%char%';
mysql> show variables like '%char%';
+--------------------------+----------------------------------------------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql-max-5.0.27-linux-i686-glibc23/share/mysql/charsets/ |
+--------------------------+----------------------------------------------------------------------+
8 rows in set (0.00 sec)
原来是:
| character_set_server | latin1 |
不是utf-8:
于是:需要,set names 'utf8';
mysql> set names "utf8";
Query OK, 0 rows affected (0.00 sec)
mysql> source /root/update.txt
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3 Changed: 3 Warnings: 0
mysql>
在php中显示中文正常,哈哈哈!
编写update.txt (注意:utf8的编码要存为utf8的txt格式,当然你也可以命名后缀改为:update.sql etc)
source的sql包含中文(位置在/root/update.txt):
update Tbl_User set FAddr="四川内江东兴区平安路148号E栋8号" where FQQ="348813422";
update Tbl_User set FAddr="四川内江东兴区平安路148号E栋8号" where FQQ="348813422";
mysql> use DB_****_2nd;
Database changed
mysql> source /root/update.txt
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3 Changed: 3 Warnings: 0
Database changed
mysql> source /root/update.txt
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3 Changed: 3 Warnings: 0
然后,发现php程序读出来发现是乱码。
查看mysql编码:
mysql> show variables like '%char%';
mysql> show variables like '%char%';
+--------------------------+----------------------------------------------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql-max-5.0.27-linux-i686-glibc23/share/mysql/charsets/ |
+--------------------------+----------------------------------------------------------------------+
8 rows in set (0.00 sec)
原来是:
| character_set_server | latin1 |
不是utf-8:
于是:需要,set names 'utf8';
mysql> set names "utf8";
Query OK, 0 rows affected (0.00 sec)
mysql> source /root/update.txt
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3 Changed: 3 Warnings: 0
mysql>
在php中显示中文正常,哈哈哈!
缘起:
REPLACE的运行与INSERT很相似。只有一点例外,假如表中的一个旧记录与一个用于PRIMARY KEY或一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除。
依赖主键或索引Mysql能够实现快速的判断,使用REPLACE,需要同时拥有表的INSERT和DELETE权限。
注意,除非表有一个PRIMARY KEY或UNIQUE索引,否则,使用一个REPLACE语句没有意义。该语句会与INSERT相同,因为没有索引被用于确定是否新行复制了其它的行。
添加唯一索引如下,实践成功:
多次replace插入实现修改唯一settingName所对应的值:
多次插入不同的温度值,的确是Ok的:
id 自增编号 settingName 变量名称 settingValue 变量数值 updatedTimes 修改次数
8 settingTempValue 40.7 8388607
正文:
讨人喜欢的 MySQL replace into 用法(insert into 的增强版)
在向表中插入数据的时候,经常遇到这样的情况:1. 首先判断数据是否存在; 2. 如果不存在,则插入;3.如果存在,则更新。
在 SQL Server 中可以这样处理:
if not exists (select 1 from t where id = 1)
insert into t(id, update_time) values(1, getdate())
else
update t set update_time = getdate() where id = 1
那么 MySQL 中如何实现这样的逻辑呢?别着急!MySQL 中有更简单的方法: replace into
replace into t(id, update_time) values(1, now());
或
replace into t(id, update_time) select 1, now();
replace into 跟 insert 功能类似,不同点在于:replace into 首先尝试插入数据到表中, 1. 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。 2. 否则,直接插入新数据。
要注意的是:插入数据的表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据。
MySQL replace into 有三种形式:
1. replace into tbl_name(col_name, ...) values(...)
2. replace into tbl_name(col_name, ...) select ...
3. replace into tbl_name set col_name=value, ...
前两种形式用的多些。其中 “into” 关键字可以省略,不过最好加上 “into”,这样意思更加直观。另外,对于那些没有给予值的列,MySQL 将自动为这些列赋上默认值。
REPLACE的运行与INSERT很相似。只有一点例外,假如表中的一个旧记录与一个用于PRIMARY KEY或一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除。
依赖主键或索引Mysql能够实现快速的判断,使用REPLACE,需要同时拥有表的INSERT和DELETE权限。
注意,除非表有一个PRIMARY KEY或UNIQUE索引,否则,使用一个REPLACE语句没有意义。该语句会与INSERT相同,因为没有索引被用于确定是否新行复制了其它的行。
添加唯一索引如下,实践成功:
多次replace插入实现修改唯一settingName所对应的值:
多次插入不同的温度值,的确是Ok的:
id 自增编号 settingName 变量名称 settingValue 变量数值 updatedTimes 修改次数
8 settingTempValue 40.7 8388607
正文:
讨人喜欢的 MySQL replace into 用法(insert into 的增强版)
在向表中插入数据的时候,经常遇到这样的情况:1. 首先判断数据是否存在; 2. 如果不存在,则插入;3.如果存在,则更新。
在 SQL Server 中可以这样处理:
if not exists (select 1 from t where id = 1)
insert into t(id, update_time) values(1, getdate())
else
update t set update_time = getdate() where id = 1
那么 MySQL 中如何实现这样的逻辑呢?别着急!MySQL 中有更简单的方法: replace into
replace into t(id, update_time) values(1, now());
或
replace into t(id, update_time) select 1, now();
replace into 跟 insert 功能类似,不同点在于:replace into 首先尝试插入数据到表中, 1. 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。 2. 否则,直接插入新数据。
要注意的是:插入数据的表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据。
MySQL replace into 有三种形式:
1. replace into tbl_name(col_name, ...) values(...)
2. replace into tbl_name(col_name, ...) select ...
3. replace into tbl_name set col_name=value, ...
前两种形式用的多些。其中 “into” 关键字可以省略,不过最好加上 “into”,这样意思更加直观。另外,对于那些没有给予值的列,MySQL 将自动为这些列赋上默认值。
我身边我认为的好男人基本上都是单身,很多都还没谈过恋爱。另外我熟悉的人中,很多人品好,工作优秀,被大家公认为的好男人的妻子却很一般。经过和朋友的交流和自己的分析,我得出了中国好男人娶不到好女人的几点原因。
首先我要说一下我眼中的好男人具有的一些品质:待人好,诚信,重情义;有进取心,有胸怀,事业心强;负责任,重承诺,有爱心。
现在我发现正是因为他们具有这些品质而导致了他们娶不到好女人,我也体会到了大家常说的一些话的深刻道理。
阅读全文
首先我要说一下我眼中的好男人具有的一些品质:待人好,诚信,重情义;有进取心,有胸怀,事业心强;负责任,重承诺,有爱心。
现在我发现正是因为他们具有这些品质而导致了他们娶不到好女人,我也体会到了大家常说的一些话的深刻道理。
阅读全文
The Linux Cookbook 一书的作者 Michael Stutz 凭借自己多年使用 UNIX 的经验,总结了 10 个良好习惯,个人认为真的很受用,现摘要如下与大家分享。
1. 建立层级目录:使用 mkdir 的 -p 选项,如 mkdir -p tmp/a/b/c。
2. 解包到指定的目录:使用 tar 的 -C 选项,如 tar xvf newarc.tar.gz -C tmp/a/b/c。
3. 联合命令:使用 ;、&&、|| 等控制运算符,如 cd tmp/a/b/c && tar xvf ~/archive.tar。
4. 小心使用变量:把变量放到 “” 中,如
~ $ ls tmp/
a b
~ $ VAR="tmp/*"
~ $ echo $VAR
tmp/a tmp/b
~ $ echo "$VAR"
tmp/*
~ $ echo $VARa
~ $ echo "$VARa"
~ $ echo "${VAR}a"
tmp/*a
~ $ echo ${VAR}a
tmp/a
~ $
5. 长命令的输入:使用 \ 分行折断,如
~ $ cd tmp/a/b/c || \
> mkdir -p tmp/a/b/c && \
> tar xvf -C tmp/a/b/c ~/archive.tar
6. 分组命令:使用 ()、{} 来分组命令,如
~ $ ( cd tmp/a/b/c/ || mkdir -p tmp/a/b/c && \
> VAR=$PWD; cd ~; tar xvf -C $VAR archive.tar ) \
> | mailx admin -S "Archive contents"
7. 使用 xargs:可以过滤输出,如
~/tmp $ ls -l | xargs
-rw-r--r-- 7 joe joe 12043 Jan 27 20:36 December_Report.pdf -rw-r--r-- 1 \
root root 238 Dec 03 08:19 README drwxr-xr-x 38 joe joe 354082 Nov 02 \
16:07 a -rw-r--r-- 3 joe joe 5096 Dec 14 14:26 archive.tar -rwxr-xr-x 1 \
joe joe 3239 Sep 30 12:40 mkdirhier.sh
~/tmp $
8. 使用 grep 的 -c 选项可以计算输出的行数,它比使用管道的 wc -l 更快,如
~ $ time grep and tmp/a/longfile.txt | wc -l
2811
real 0m0.097s
user 0m0.006s
sys 0m0.032s
~ $ time grep -c and tmp/a/longfile.txt
2811
real 0m0.013s
user 0m0.006s
sys 0m0.005s
~ $
9. 匹配输出的字段:使用 awk,如
~/tmp $ ls -l | awk '$6 == "Dec"'
-rw-r--r-- 3 joe joe 5096 Dec 14 14:26 archive.tar
-rw-r--r-- 1 root root 238 Dec 03 08:19 README
~/tmp $
10. 停用 cat 的管道输出:可用 grep 代替,如
~ $ time cat tmp/a/longfile.txt | grep and
2811
real 0m0.015s
user 0m0.003s
sys 0m0.013s
~ $ time grep and tmp/a/longfile.txt
2811
real 0m0.010s
user 0m0.006s
sys 0m0.004s
~ $
export
例如:
export $HOME=$HOME:YOUR_DIR
set 显示当前shell的变量,包括当前用户的变量
env 显示当前用户的变量
export 显示当前导出成用户变量的shell变量
每个shell有自己特有的变量(set)显示的变量,这个和用户变量是不同的,当前用户变量和你用什么shell无关,不管你用什么shell都在,比如 HOME,SHELL等这些变量,但shell自己的变量不同shell是不同的,比如BASH_ARGC, BASH等,这些变量只有set才会显示,是bash特有的,export不加参数的时候,显示哪些变量被导出成了用户变量,因为一个shell自己的变量可以通过export “导出”变成一个用户变量。
如用户想增加一目录到PATH中,操作如下:
1.vim .bashrc增加sbin目录到PATH中
$export PATH=$PATH:/sbin 或者export PATH=/sbin:$PATH
2.source到环境变量中
$source
3.查验
set|grep PATH 或env|grep PATH 或 export|grep PATH
这个set 和export很重要:
set env export区别
set 显示当前shell的变量,包括当前用户的变量
env 显示当前用户的变量
export 显示当前导出成用户变量的shell变量
每个shell有自己特有的变量(set)显示的变量,这个和用户变量是不同的,当前用户变量和你用什么shell无关,不管你用什么shell都在,比如 HOME,SHELL等这些变量,但shell自己的变量不同shell是不同的,比如BASH_ARGC, BASH等,这些变量只有set才会显示,是bash特有的,export不加参数的时候,显示哪些变量被导出成了用户变量,因为一个shell自己的变量可以通过export “导出”变成一个用户变量。
如用户想增加一目录到PATH中,操作如下:
1.vim .bashrc增加sbin目录到PATH中
$export PATH=$PATH:/sbin 或者export PATH=/sbin:$PATH
2.source到环境变量中
$source
3.查验
set|grep PATH 或env|grep PATH 或 export|grep PATH
.bashrc和.bash_profile区别
.bash_profile会用在login shell
.bashrc 使用在interactive non-login shell
Bash下每个用户都可以配置两个初始文件:.bash_profile和.bashrc。man bash中的相关解
释如下:
,------------------------------------------------------------
| ~/.bash_profile
| The personal initialization file, executed for login shells
| ~/.bashrc
| The individual per-interactive-shell startup file
`------------------------------------------------------------
* 每次bash作为login shell启动时会执行.bash_profile。
* 每次bash作为普通的交互shell(interactive shell)启动时会执行.bashrc
** 注意
1, 在shell脚本中“#!/usr/bin/bash”启动的bash并不执行.bashrc。因为这里的bash不是
interactive shell。
2, bash作为login shell(login bash)启动时并不执行.bashrc。虽然该shell也是interactive shell,
但它不是普通的shell。
* 一般.bash_profile里都会调用.bashrc
尽管login bash启动时不会自动执行.bashrc,惯例上会在.bash_profile中显式调用.bashrc。
.bashrc 使用在interactive non-login shell。意思是你每次运行一个bash脚本的话,.bashrc就会被执行一次。有个简单的方法,你在.bash_profile和.bashrc里都用echo打印点什么东西。你就可以看到着两个文件都是什么时候被执行的了.
显示环境变量HOME
$ echo $HOME
设置一个新的环境变量hello
$ export HELLO="Hello!"
$ echo $HELLO
使用env命令显示所有的环境变量
$ env
使用set命令显示所有本地定义的Shell变量
$ set
还可以使用export设置
如:
#export DISPLAY=127.0.0.1:0.0
编辑/etc/profile修改全局环境变量
编辑.bash_profile修改当前用户的环境变量
例如:
export $HOME=$HOME:YOUR_DIR
set 显示当前shell的变量,包括当前用户的变量
env 显示当前用户的变量
export 显示当前导出成用户变量的shell变量
每个shell有自己特有的变量(set)显示的变量,这个和用户变量是不同的,当前用户变量和你用什么shell无关,不管你用什么shell都在,比如 HOME,SHELL等这些变量,但shell自己的变量不同shell是不同的,比如BASH_ARGC, BASH等,这些变量只有set才会显示,是bash特有的,export不加参数的时候,显示哪些变量被导出成了用户变量,因为一个shell自己的变量可以通过export “导出”变成一个用户变量。
如用户想增加一目录到PATH中,操作如下:
1.vim .bashrc增加sbin目录到PATH中
$export PATH=$PATH:/sbin 或者export PATH=/sbin:$PATH
2.source到环境变量中
$source
3.查验
set|grep PATH 或env|grep PATH 或 export|grep PATH
这个set 和export很重要:
set env export区别
set 显示当前shell的变量,包括当前用户的变量
env 显示当前用户的变量
export 显示当前导出成用户变量的shell变量
每个shell有自己特有的变量(set)显示的变量,这个和用户变量是不同的,当前用户变量和你用什么shell无关,不管你用什么shell都在,比如 HOME,SHELL等这些变量,但shell自己的变量不同shell是不同的,比如BASH_ARGC, BASH等,这些变量只有set才会显示,是bash特有的,export不加参数的时候,显示哪些变量被导出成了用户变量,因为一个shell自己的变量可以通过export “导出”变成一个用户变量。
如用户想增加一目录到PATH中,操作如下:
1.vim .bashrc增加sbin目录到PATH中
$export PATH=$PATH:/sbin 或者export PATH=/sbin:$PATH
2.source到环境变量中
$source
3.查验
set|grep PATH 或env|grep PATH 或 export|grep PATH
.bashrc和.bash_profile区别
.bash_profile会用在login shell
.bashrc 使用在interactive non-login shell
Bash下每个用户都可以配置两个初始文件:.bash_profile和.bashrc。man bash中的相关解
释如下:
,------------------------------------------------------------
| ~/.bash_profile
| The personal initialization file, executed for login shells
| ~/.bashrc
| The individual per-interactive-shell startup file
`------------------------------------------------------------
* 每次bash作为login shell启动时会执行.bash_profile。
* 每次bash作为普通的交互shell(interactive shell)启动时会执行.bashrc
** 注意
1, 在shell脚本中“#!/usr/bin/bash”启动的bash并不执行.bashrc。因为这里的bash不是
interactive shell。
2, bash作为login shell(login bash)启动时并不执行.bashrc。虽然该shell也是interactive shell,
但它不是普通的shell。
* 一般.bash_profile里都会调用.bashrc
尽管login bash启动时不会自动执行.bashrc,惯例上会在.bash_profile中显式调用.bashrc。
.bashrc 使用在interactive non-login shell。意思是你每次运行一个bash脚本的话,.bashrc就会被执行一次。有个简单的方法,你在.bash_profile和.bashrc里都用echo打印点什么东西。你就可以看到着两个文件都是什么时候被执行的了.
显示环境变量HOME
$ echo $HOME
设置一个新的环境变量hello
$ export HELLO="Hello!"
$ echo $HELLO
使用env命令显示所有的环境变量
$ env
使用set命令显示所有本地定义的Shell变量
$ set
还可以使用export设置
如:
#export DISPLAY=127.0.0.1:0.0
编辑/etc/profile修改全局环境变量
编辑.bash_profile修改当前用户的环境变量
pHP是一种新型的CGI程序编写语言,易学易用,运行速度快,可以方便快捷地编写出功能强大,运行速度快,并可同时运行于 Windows、Unix、Linux平台的Web后台程序, 内置了对文件上传、密码认证、Cookies操作、邮件收发、动态GIF生成等功能,PHP 直接为很多数据库提供原本的连接,包括Oracle、Sybase、Postgres、Mysql、Informix、Dbase、Solid、 Access等,完全支持ODBC接口,用户更换平台时,无需变换PHP代码,可即拿即用.
阅读全文
阅读全文
今天发现httpwacher出现aborted,查了下:
he result column in HttpWatch may sometimes display the value (Aborted) instead of an HTTP status code:
(Aborted)
(Aborted) is one of three pseudo status codes that are used in HttpWatch to display information about HTTP requests that did not receive a status code from the server:
* (Aborted)
* (Cache)
* ERROR_*阅读全文
he result column in HttpWatch may sometimes display the value (Aborted) instead of an HTTP status code:
(Aborted)
(Aborted) is one of three pseudo status codes that are used in HttpWatch to display information about HTTP requests that did not receive a status code from the server:
* (Aborted)
* (Cache)
* ERROR_*阅读全文
经过仔细考虑,我认为数据库导入乱码问题不只跟数据库编码不仅与数据库默认编码有问题。因此,参照网上资料得出以下解决方案:
1、确定数据库默认编码,比如编码为gbk,将读入途径编码同样设为gbk,命令为:
set names gbk;
2、source d:/20080613.sql 导入数据。验证数据库中的数据是否存在乱码。
3、如果仍然存在乱码问题,这时候就要考虑改变导入文件的编码,试着导入,直至没有乱码出现。
网页数据存入乱码问题依照以上方法同样可以解决。可将网页编码改为与数据库相同的编码。问题自然解决。
另外,在windows中文件路径 d:\ftptemp\test.sql 应写成 d:/ftptemp/test.sql
我再加一句:在set names gbk前看一下:
show variables like '%char%';
1、确定数据库默认编码,比如编码为gbk,将读入途径编码同样设为gbk,命令为:
set names gbk;
2、source d:/20080613.sql 导入数据。验证数据库中的数据是否存在乱码。
3、如果仍然存在乱码问题,这时候就要考虑改变导入文件的编码,试着导入,直至没有乱码出现。
网页数据存入乱码问题依照以上方法同样可以解决。可将网页编码改为与数据库相同的编码。问题自然解决。
另外,在windows中文件路径 d:\ftptemp\test.sql 应写成 d:/ftptemp/test.sql
我再加一句:在set names gbk前看一下:
show variables like '%char%';
1 .create database test default charset GBK
2.修改MYSQL数据库编码,如果是MYSQL数据库编码不正确: 可以在MYSQL执行如下命令: ALTER DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin (这个命令就是将MYSQL的test数据库的编码设为utf8)
3.ALTER TABLE `category` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin (这个命令用来修改MYSQL表的编码)
以上命令就是将一个表category的编码改为utf8
4.修改字段的编码:
ALTER TABLE `test` CHANGE `dd` `dd` VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL
以上命令就是将MYSQL数据库test表中 dd的字段编码改为utf8
2.修改MYSQL数据库编码,如果是MYSQL数据库编码不正确: 可以在MYSQL执行如下命令: ALTER DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin (这个命令就是将MYSQL的test数据库的编码设为utf8)
3.ALTER TABLE `category` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin (这个命令用来修改MYSQL表的编码)
以上命令就是将一个表category的编码改为utf8
4.修改字段的编码:
ALTER TABLE `test` CHANGE `dd` `dd` VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL
以上命令就是将MYSQL数据库test表中 dd的字段编码改为utf8
将一个form放到td中时,form的高度老是比编辑的高度高出一截,将td撑得老高,造成了form下面一段空白,很难看 ,上网一查原来还真有解决办法。
加上<style>
form{margin: 0}
</style>
就ok了
2. 直接写如form中:
<form style='padding:0px;margin:0px;'>
阅读全文
加上<style>
form{margin: 0}
</style>
就ok了
2. 直接写如form中:
<form style='padding:0px;margin:0px;'>
阅读全文
<td width="926" bgcolor="#ffffff">
<table style="color: rgb(166, 31, 36); font-size: 12px;" width="100%%" border="0" cellpadding="0" cellspacing="0">
默认居中,于是在td里面加入 valign="top",在td里面再套table:
<td width="926" bgcolor="#ffffff" valign="top">
<table style="color: rgb(166, 31, 36); font-size: 12px;" width="100%%" border="0" cellpadding="0" cellspacing="0">
默认居中,于是在td里面加入 valign="top",在td里面再套table:
<td width="926" bgcolor="#ffffff" valign="top">
注意:
<table width=100% border="0" cellspacing="0" cellpadding="0">
如果需要5个,然而出现4个,也就按照间隔把那行排满,右边没有空行,而我们需要右边有空行(两个顺序靠左,右边剩余空着),于是得去掉: width="100%" 即可
</table>
如果需要5个,然而出现4个,也就按照间隔把那行排满,右边没有空行,而我们需要右边有空行(两个顺序靠左,右边剩余空着),于是得去掉: width="100%" 即可
</table>