但是使用这个之后,可能导致flash与父div之间产生间隔。是代沟么。
个么需要其它的解决办法了。
既然设置为透明不行,那就设置为opaque好了。
<param name=”wmode” value=”opaque”>
wmode=”opaque”
You are currently browsing the monthly archives for January 2010
但是使用这个之后,可能导致flash与父div之间产生间隔。是代沟么。
个么需要其它的解决办法了。
既然设置为透明不行,那就设置为opaque好了。
<param name=”wmode” value=”opaque”>
wmode=”opaque”
数据库版本:5.1.24。
4.x版本的数据库请自己去找相应文档。
英文版文档的原文地址:http://dev.mysql.com/doc/refman/5.1/en/replication-howto.html
1 在主服务器(master)正常运行的情况下,创建一个专门用来同步数据的用户。
CREATE USER ‘用户名’@'从服务器IP’ IDENTIFIED BY ‘密码’;
GRANT REPLICATION SLAVE ON *.* TO ‘用户名’@'从服务器IP’;
这个用户名和密码(明文)以后会自动保存到从服务器上的master.info里面。
2 修改主服务器上面的my.cnf
[mysqld]
log-bin=mysql-bin
server-id=1
这个镜像系统中的每一台mysql主机都需要一个不同的server-id (1~2的32次方-1)
PS:如果使用了innodb, 还需要加上:
innodb_flush_log_at_trx_commit=1
sync_binlog=1
PS again: 主服务配置文件里面一定不能有 skip-networking
PS3: 主服务器防火墙开放3306端口给从服务器。
然后重新启动主服务器的mysqld,使配置生效。
3 获取主服务器状态信息并复制数据。
3.1 获取主服务器二进制日志的座标
在主服务器上运行一个mysql客户端,
mysql> FLUSH TABLES WITH READ LOCK;
这会flush所有的数据表,并且阻塞所有的写入操作。
对于innodb类型的表,COMMIT 语句也会阻塞。
不要退出这个mysql客户端,否则这个read lock会失效。
在主服务器上重新打开一个mysql客户端,
mysql > SHOW MASTER STATUS;
+—————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+—————+———-+————–+——————+
| mysql-bin.003 | 73 | test | manual,mysql |
+—————+———-+————–+——————+
File 字段显示的是二进制日志的文件名
Position 显示的是此文件中的偏移量。 抄下来这二个数据。
They represent the replication coordinates at which the slave should begin processing new updates from the master.
3.2复制数据
3.2.1 使用mysqldump
适用于数据量比较小的情况。
注意唉,现在主数据库还处于只读状态,阻塞着所有的写入操作呢,也就是说你的网站处于瘫痪状态呢。如果数据库的数据量太大,dump时间过长,有得你受的。
Shell下面执行 mysqldump –all-databases –lock-all-tables >dbdump.db
然后在FLUSH TABLES WITH READ LOCK;的那个mysql客户端里面运行:
UNLOCK TABLES;
这时,主服务器的业务恢复正常。
可以把dbdump.db复制到所有的从服务器上面了。
3.2.2 直接复制数据库文件。
适用于myisam数据量比较大的情况。
PS:使用了完全cache型的数据表可能会丢失数据。比如memory类型的表。
PS2:如果你的表使用了全文索引(full-text indexes),并且主从服务器上面的 ft_stopword_file, ft_min_word_len, ft_max_word_len 变量的值不相同的话,可能会出问题。
关闭主数据库mysqladmin shutdown,
使用cp tar 或者rsync scp等来复制数据文件(不包括日志文件,不包括mysql库的数据文件)。
开启mysqld服务。
4 关闭从数据库,并且修改从数据库上面的my.cnf
[mysqld]
server-id=2
就是这么简单。 Server-id不要和其它服务器冲突就行了。
PS:从服务器上面是否开启二进制日志都无所谓。个人建议开了好,方便数据恢复。
PS2: 不要启动从数据库。
5 从数据库导入数据。
5.1 如果数据是以mysqldump方式导出的:
使用 –skip-slave-start –replicate-ignore-db=mysql参数启动从数据库 。
然后用 mysql –uroot –p < fulldb.dump 导入。
5.2 如果是直接复制的数据文件:
把文件复制到从服务器正确的位置。
然后使用 –skip-slave-start –replicate-ignore-db=mysql参数启动从数据库。
6 在从数据库上配置镜像信息:
mysql> CHANGE MASTER TO MASTER_HOST=’master_host_name’, MASTER_USER=’replication_user_name’, MASTER_PASSWORD=’replication_password’, MASTER_LOG_FILE=’recorded_log_file_name’, MASTER_LOG_POS=recorded_log_position;
注: master_host_name 为主服务器IP
replication_user_name 为第一步时候我们创建的用户名
replication_password 为第一步时候我们创建的密码
recorded_log_file_name 为第三步时候SHOW MASTER STATUS 获得的File字段。
recorded_log_position 为第三步时候 SHOW MASTER STATUS 获得到的Position字段。
7 在从数据库上开启镜像功能:
Mysql> start slave;
基本上这条语句是不会报错的,请查看从数据库的日志。
一旦从数据库开始进行数据同步,就会在从服务器上面生成二个文件:
master.info 和 relay-log.info
不要修改或删除这二个文件。看看是可以的。
8 重复4-7步,添加多台从服务器。
9 对于每一台从服务器,mysqld重启的话,都要加上 –replicate-ignore-db=mysql 参数,表示不同步mysql这个库。如果你有多个库需要忽略,那么就重复写这个参数。不要试图用逗号分隔多个库名,没用的。
mysql> SHOW BINARY LOGS;
+—————+———–+
| Log_name | File_size |
+—————+———–+
| binlog.000015 | 724935 |
| binlog.000016 | 733481 |
+—————+———–+
show master logs 与 show binary logs 功能相同。
SHOW BINLOG EVENTS
[IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]
显示二进制日志里面发生的事情
mysql> SHOW MASTER STATUS;
+—————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+—————+———-+————–+——————+
| mysql-bin.003 | 73 | test | manual,mysql |
+—————+———-+————–+——————+
mysql> SHOW SLAVE HOSTS;
+————+———–+——+———–+
| Server_id | Host | Port | Master_id |
+————+———–+——+———–+
| 192168010 | iconnect2 | 3306 | 192168011 |
| 1921680101 | athena | 3306 | 192168011 |
+————+———–+——+———–+
只有从服务器启动的时候加了 –report-host=host_name 参数,才会显示在这里。
mysql> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: localhost
Master_User: root
Master_Port: 3306
Connect_Retry: 3
Master_Log_File: gbichot-bin.005
Read_Master_Log_Pos: 79
Relay_Log_File: gbichot-relay-bin.005
Relay_Log_Pos: 548
……
安装vim:
cd /usr/ports/editors/vim
make install clean
在经过漫长的版本搜索后会安装一个vim 7.x
采用符号链接的形式,把原来的vi,换成现在的vim
rm /usr/bin/vi
ln -s /usr/local/bin/vim /usr/bin/vi
设置vim:
[root@super /data/tmp]# cat /root/.vimrc
set nu
syntax on
set nocompatible
打开一个文件,如果还是没有语法高亮,那么 logout之后,再重新登录试一下。
安装lftp:
cd /usr/ports/ftp/lftp
make install clean
lftp 有一个 -f的选项,可以执行一个文件里面的FTP指令,然后退出。
如: xxx.ftp内容如下:
open -u 用户名,密码 -p 端口 IP
lcd /data/tmp
cd /data/bak/mysql
put mysql_bk.tar.gz
bye
然后在命令行或者脚本里面用 /usr/local/bin/lftp -f xxx.ftp 来运行。
为了使lftp正常工作,防火墙 /etc/ipf.rules 需要做如下的配置:
# Allow out LAN PC client FTP to public Internet
# Active and passive modes
pass out quick on rl0 proto tcp from any to any port = 21 flags S keep state
# Allow out passive mode data channel high order port numbers
pass out quick on rl0 proto tcp from any to any port > 1024 flags S keep state
# Active mode let data channel in from FTP server
pass in quick on rl0 proto tcp from any to any port = 20 flags S keep state
安装rsyncd和rsync:
cd /usr/ports/net/rsync
make install clean
编辑配置文件:
vi /usr/local/etc/rsyncd.conf
[bak]
path = /data/tmp
comment = backup of mysql and apache
uid = nobody
gid = nobody
auth users = huarong_rsync
secrets file = /usr/local/etc/rsyncd.secrets
修改文件权限:
chmod 600 /usr/local/etc/rsyncd.secrets
设置密码:
vi /usr/local/etc/rsyncd.secrets
huarong_rsync:密码
设置为开机启动:
vi /etc/rc.conf
rsyncd_enable=”YES”
启动:
/usr/local/etc/rc.d/rsyncd start
查看rsyncd是否正常启动:
[root@super /usr/ports/net/rsync]# ps aux|grep rsync
root 2132 0.0 0.0 3140 1156 ?? Is 3:23PM 0:00.00 /usr/local/bin/rsync –daemon
root 2246 0.0 0.0 3344 980 p1 S+ 3:25PM 0:00.00 grep rsync
[root@super /usr/ports/net/rsync]# sockstat | grep rsync
root rsync 2132 3 dgram -> /var/run/logpriv
root rsync 2132 4 tcp6 *:873 *:*
root rsync 2132 5 tcp4 *:873 *:*
防火墙需要做如下配置:
[root@super /data/tmp]# cat /etc/ipf.rules | grep 873
pass in quick on em0 proto tcp from rsync客户端IP to any port = 873 flags S keep state
pass out quick on em0 proto tcp from any port = 873 to rsync客户端IP flags S keep state
RSYNC客户端配置
1、配置rsyncd.secrets
vi /etc/rsyncd.secrets //加入以下内容
RXHOEqat6Dhon4HRsM31 //Rsync Server上的认证密码,不用输入用户名
chmod 600 /etc/rsyncd.secrets
2、进行第一次同步
rsync -avzP –delete –password-file=/etc/rsyncd.secrets huarong_rsync@远程服务器IP::bak /data/bak
大家都知道费波纳切数列1,1,2,3,5,8,13(第三项是前两项的和),它的通项公式为:f(x)=f(x-1)+f(x-2),f(0)=0,f(1)=1
我们用PHP来求f(40)吧
方式一:
递归。最单纯的递归。
function f($i)
{
if ($i==0) return 0;
if ($i==1) return 1;
return f($i-1) + f($i-2);
}
$start = microtime(true); print f(40); // 我的电脑,PHP超时了,还没计算出来,估计是要2-3分钟的 $end = microtime(true); print $sum. ":" .($end-$start)."<BR>\n"; 这个显然是太慢了。
我们对方式一进行改进:
方式一的主要问题在于: 求f(y)的时候要去计算f(y-1) f(y-2)….直到f(3) f(2) (1) f(0), 在这个过程中,为了计算出f(y-2) 的值,又要去重复计算f(y-3) f(y-4)…直到f(3) f(2) f(1) f(0) ,显然有了太多的重复计算了。
那么我们就加上缓存吧
$cache = array();
function f2($i)
{
global $cache;
if ($i==0) $cache[$i] = 0;
if ($i==1) $cache[$i] = 1;
if (!isset($cache[$i])) $cache[$i] = f2($i-1) + f2($i-2); return $cache[$i]; }
$start = microtime(true); print f2(40); //0.000317096710205 秒 $end = microtime(true); print $sum. ":" .($end-$start)."<BR>\n";
很牛了吧,速度提升了N个数量级。但是这还不是最快的。
你想一下,我们递归了多少次, f2 被调用了多少次?这次用循环试试看吧
方法三:
$a = 0; $b = 1;
$start = microtime(true);
for ($i=0; $i<40;$i++)
{
$sum = $a+$b;
$b = $a;
$a = $sum;
}
$end = microtime(true);
print $sum. ":" .($end-$start)."<BR>\n"; //2.59876251221E-5 秒
又快了一个数量级!
看来还是循环最快啊。
大家都知道费波纳切数列1,1,2,3,5,8,13(第三项是前两相的和)
<style>
#box {
color:red !important; /** FF safari IE7**/
}
#box {
color:blue; /** IE6 **/
}
#box2 {
color:red !important; /** FF safari IE7**/
color:blue; /** IE6 **/
}
#box3 {
color: red;
}
#box3 {
color:blue;
}
</style>
<div id="Box"> 为啥我是红色?</div>
<div id="Box2">IE6蓝色,其它浏览器红色</div>
<div id="Box3">为啥我是蓝色?</div>
我搞不清楚了。。。
据说!important是FF IE7 都支持的, IE6不支持。
背部挺直地坐着,或身体平衡地躺着。
领略自身与座位或地板接触的感觉,体会所有的接触点,注意保处压力最大,同时还要注意压力会随着呼吸稍起变化。
从双脚的大脚趾开始,体会它们所有的感受;如果没感觉,只要晓得没感觉就可以了。然后继续去体会另一对脚趾的感受,要同时注意左右二趾。
不断移动注意力,从脚往上移,注意所有感受上细微的区别—-冷暖、沉重、刺痛、钝锐、悸动等—-只是注意,只是感觉,而不在感觉中加入自己的看法。
继续将注意力从腿上移至臀,然后手指开始,将注意力沿着手、臂上移至肩。接着将注意力下移至脊柱底端,再一个脊椎一个脊椎地慢慢往上移,一心观察每一阶段的感受,观察脊柱本身,也观察躯干的其余部分。注意所有与内脏和呼吸相关的感受,尽可能只是去感觉,而不予以分类或分析。
到达颈部时,继续将注意力沿颈、喉往上移,同时体会内外的感觉,如是持续至口。然后在心中了知的情况下,让注意力行经面部和头部内外的各部分,最后停在头顶的中央。
接着将注意力移动的方向倒转,移动的速度加快。想像自身中空,充满了水。拔掉脚底的塞子,水即泻出,你要随着体内水位的逐渐下降去体会全身各处的感受。而不是把身体分段,专注某一部分。回到脚趾时,注意呼吸在全身之内的活动。
在该次修行的其余时间里,只是以放松而不局限于一点的方式观察呼吸的活动,修毕,舒展全身。
首先,坐在地上保持身体的安稳,体会全身及四周的环境,然后深深呼吸,从一数到五(或四或六,怎样自然怎样做)。屏息,数到五,然后呼气,数到五—-从口呼出。不要在呼出气后屏息,而要自然地接着吸气。
每次呼气时,都要观想所有紧张之感全部流出,如倒尽瓶中不新鲜的水一般,让心自由自在。
如是至少重复三次或四次。