平时的工作会涉及到服务器管理、PHP程序、前台脚本编程,有合适的内容就跟大家分享
When You Learn,Teach;When You Get,Give!
When You Learn,Teach;When You Get,Give!
备忘脚本
date取得分钟数
$(()) 运算
date取得分钟数
$(()) 运算
#execute every 5 minutes
a=`date +%M`
b=$(( $a % 5 ))
if [ $b = 0 ] ; then
echo "execute it"
else
echo "Not execute"
fi
a=`date +%M`
b=$(( $a % 5 ))
if [ $b = 0 ] ; then
echo "execute it"
else
echo "Not execute"
fi
此需求的可能性:
做所有的数据库同步需要很多无用的空间,如果仅仅用到其中一个数据库,那就做一个数据库的同步就足够了。
步骤一 主数据库开通replication用户
按需求不一样名称和密码以及IP不同:
步骤二 取得当前数据备份,备份mysql库和你要的database2
方式1 从master取得
做所有的数据库同步需要很多无用的空间,如果仅仅用到其中一个数据库,那就做一个数据库的同步就足够了。
步骤一 主数据库开通replication用户
按需求不一样名称和密码以及IP不同:
CREATE USER 'slave'@'192.168.1.2' IDENTIFIED BY '***';
GRANT REPLICATION SLAVE ON * . * TO 'slave'@'192.168.1.2' IDENTIFIED BY '***' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
GRANT REPLICATION SLAVE ON * . * TO 'slave'@'192.168.1.2' IDENTIFIED BY '***' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
步骤二 取得当前数据备份,备份mysql库和你要的database2
方式1 从master取得
FLUSH TABLES WITH READ LOCK; //锁定所有表
show master status; //取得当前日志点
//打包文件或者是直接导出数据,比停止服务好的地方就是有一段读数据库的时间
unlock tables; //解锁
show master status; //取得当前日志点
//打包文件或者是直接导出数据,比停止服务好的地方就是有一段读数据库的时间
unlock tables; //解锁
注释 $ 匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,那么 $ 还匹配 \n 或 \r 前面的位置。若要匹配 $ 字符本身,请使用 \$。
( ) 标记子表达式的开始和结束。可以捕获子表达式以供以后使用。若要匹配这两个字符,请使用 \( 和 \)。
* 零次或多次匹配前面的字符或子表达式。若要匹配 * 字符,请使用 \*。
+ 一次或多次匹配前面的字符或子表达式。若要匹配 + 字符,请使用 \+。
. 匹配除换行符 \n 之外的任何单个字符。若要匹配 .,请使用 \。 [ ] 标记中括号表达式的开始。若要匹配这些字符,请使用 \[ 和 \]。
? 零次或一次匹配前面的字符或子表达式,或指示“非贪心”限定符。若要匹配 ? 字符,请使用 \?。
\ 将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,字符 n 匹配字符 n。\n 匹配换行符。序列 \\ 匹配 \,序列 \( 匹配 (。
/ 表示文本正则表达式的开始或结束。若要匹配 / 字符,请使用 \/。
^ 匹配输入字符串开始处的位置,但在中括号表达式中使用的情况除外,在那种情况下它对字符集求反。若要匹配 ^ 字符本身,请使用 \^。
{ } 标记限定符表达式的开始。若要匹配这些字符,请使用 \{ 和 \}。
| 指出在两个项之间进行选择。若要匹配 | ,请使用 \|
( ) 标记子表达式的开始和结束。可以捕获子表达式以供以后使用。若要匹配这两个字符,请使用 \( 和 \)。
* 零次或多次匹配前面的字符或子表达式。若要匹配 * 字符,请使用 \*。
+ 一次或多次匹配前面的字符或子表达式。若要匹配 + 字符,请使用 \+。
. 匹配除换行符 \n 之外的任何单个字符。若要匹配 .,请使用 \。 [ ] 标记中括号表达式的开始。若要匹配这些字符,请使用 \[ 和 \]。
? 零次或一次匹配前面的字符或子表达式,或指示“非贪心”限定符。若要匹配 ? 字符,请使用 \?。
\ 将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,字符 n 匹配字符 n。\n 匹配换行符。序列 \\ 匹配 \,序列 \( 匹配 (。
/ 表示文本正则表达式的开始或结束。若要匹配 / 字符,请使用 \/。
^ 匹配输入字符串开始处的位置,但在中括号表达式中使用的情况除外,在那种情况下它对字符集求反。若要匹配 ^ 字符本身,请使用 \^。
{ } 标记限定符表达式的开始。若要匹配这些字符,请使用 \{ 和 \}。
| 指出在两个项之间进行选择。若要匹配 | ,请使用 \|
官方介绍:
MogileFS分布式文件存储系统,是由Six Apart所开发的,下面我们就来列出他的一些特性进行简要介绍。
应用层——不需要特殊的核心组件
无单点失败——mogileFS分布式文件存储系统安装的三个组件(存储节点、跟踪器、跟踪用的数据库),均可运行在多个 机器上,因此没有单点失败。(你也可以将跟踪器和存储节点运行在同一台机器上,这样你就没有必要用4台机器)推荐至少两台机器。
自动的文件复制——基于不同的文件“分类”,文件可以被自动的复制到多个有足够存储空间的存储节点上,这样可以满足这个“类别”的最少复制要求。比如你有一个图片网站,你可以设置原始的JPEG图片需要复制 至少三份,但实际只有1or2份拷贝,如果丢失了数据,那么mogileFS分布式文件存储系统可以重新建立遗失的拷贝数。用这种办法,MogileFS(不做RAID)可以节约磁盘,否则你将存储同样的拷贝多份,完全没有必要。
“比RAID好多了”——在一个非存储区域网络的RAID(non-SAN RAID)的建立中,磁盘是冗余的,但主机不是,如果你整个机器坏了,那么文件也将不能访问。 mogileFS分布式文件存储系统在不同的机器之间进行文件复制,因此文件始终是可用的。
MogileFS分布式文件存储系统,是由Six Apart所开发的,下面我们就来列出他的一些特性进行简要介绍。
应用层——不需要特殊的核心组件
无单点失败——mogileFS分布式文件存储系统安装的三个组件(存储节点、跟踪器、跟踪用的数据库),均可运行在多个 机器上,因此没有单点失败。(你也可以将跟踪器和存储节点运行在同一台机器上,这样你就没有必要用4台机器)推荐至少两台机器。
自动的文件复制——基于不同的文件“分类”,文件可以被自动的复制到多个有足够存储空间的存储节点上,这样可以满足这个“类别”的最少复制要求。比如你有一个图片网站,你可以设置原始的JPEG图片需要复制 至少三份,但实际只有1or2份拷贝,如果丢失了数据,那么mogileFS分布式文件存储系统可以重新建立遗失的拷贝数。用这种办法,MogileFS(不做RAID)可以节约磁盘,否则你将存储同样的拷贝多份,完全没有必要。
“比RAID好多了”——在一个非存储区域网络的RAID(non-SAN RAID)的建立中,磁盘是冗余的,但主机不是,如果你整个机器坏了,那么文件也将不能访问。 mogileFS分布式文件存储系统在不同的机器之间进行文件复制,因此文件始终是可用的。
读取文件列表时,获取到文件的修改时间,但怎么转换为正常可辨的时间值呢?
把大小转换为易读的格式,这里偷懒,最大是M的:
//function A
//CODE...
File myfile = new File(apk);
long mytime = myfile.lastModified();
String timeStr = time2String( mytime );
//end of A
private String time2String( long time ){
//方式1 按系统的日期方式
// Calendar cal = Calendar.getInstance();
// cal.setTimeInMillis( time );
// return cal.getTime().toLocaleString();
//方式2 按自定义格式
SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
Date currentTime = new Date( time );
return format1.format(currentTime);
}
//CODE...
File myfile = new File(apk);
long mytime = myfile.lastModified();
String timeStr = time2String( mytime );
//end of A
private String time2String( long time ){
//方式1 按系统的日期方式
// Calendar cal = Calendar.getInstance();
// cal.setTimeInMillis( time );
// return cal.getTime().toLocaleString();
//方式2 按自定义格式
SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
Date currentTime = new Date( time );
return format1.format(currentTime);
}
把大小转换为易读的格式,这里偷懒,最大是M的:
引用
ProxyPassMatch Directive
Description: Maps remote servers into the local server URL-space using regular expressions
Syntax: ProxyPassMatch [regex] !|url [key=value [key=value ...]]
Context: server config, virtual host, directory
Status: Extension
Module: mod_proxy
Compatibility: available in Apache 2.2.5 and later
Description: Maps remote servers into the local server URL-space using regular expressions
Syntax: ProxyPassMatch [regex] !|url [key=value [key=value ...]]
Context: server config, virtual host, directory
Status: Extension
Module: mod_proxy
Compatibility: available in Apache 2.2.5 and later
比如,把asp的请求放到8080端口的服务器
<VirtualHost *:80>
ServerAdmin webmaster@aslibra.com
DocumentRoot "E:/webapps/www.aslibra.com"
ServerName www.aslibra.com
ErrorLog "logs/test.localhost-error.log"
CustomLog "logs/test.localhost-access.log" common
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPassMatch .*\.asp http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
</VirtualHost>
ServerAdmin webmaster@aslibra.com
DocumentRoot "E:/webapps/www.aslibra.com"
ServerName www.aslibra.com
ErrorLog "logs/test.localhost-error.log"
CustomLog "logs/test.localhost-access.log" common
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPassMatch .*\.asp http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
</VirtualHost>
这个会对给proxy带来很大的灵活性,参考官方介绍:
http://httpd.apache.org/docs/current/mod/mod_proxy.html





