这个是ie时候的页面,IE:
<object id="FlashID" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="1003" height="299">
<param name="allowScriptAccess" value="always">
<param name="movie" value="top.swf">
<param name="quality" value="high">
<param name="wmode" value="opaque">
<param name="swfversion" value="8.0.35.0">
</object>
这个是firefox时候的页面,fireFox:
<embed src="top.swf" width="1003" height="299" id="FlashID" ></embed>
兼容IE,firefox:
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="1002" height="770" id="FlashID">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="/swf/index.swf" />
<param name="quality" value="high" />
<param name="wmode" value="transparent" />
<embed src="/swf/index.swf" width="1002" height="770" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" allowscriptaccess="sameDomain" type="application/x-shockwave-flash" wmode="transparent" id="FlashID"></embed>
</object>
兼容IE和Firefox的透明Flash代码:
兼容IE和Firefox的透明Flash代码,测试通过,opeara没测试。
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="100" height="50">
<param name="movie" value="myflash.swf"/>
<param name="quality" value="high" />
<param name="wmode" value="transparent"/>
<param name="menu" value="false"/>
<embed src="myflash.swf" width="100" height="50" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" wmode="transparent" menu="false"></embed>
</object>
<object id="FlashID" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="1003" height="299">
<param name="allowScriptAccess" value="always">
<param name="movie" value="top.swf">
<param name="quality" value="high">
<param name="wmode" value="opaque">
<param name="swfversion" value="8.0.35.0">
</object>
这个是firefox时候的页面,fireFox:
<embed src="top.swf" width="1003" height="299" id="FlashID" ></embed>
兼容IE,firefox:
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="1002" height="770" id="FlashID">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="/swf/index.swf" />
<param name="quality" value="high" />
<param name="wmode" value="transparent" />
<embed src="/swf/index.swf" width="1002" height="770" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" allowscriptaccess="sameDomain" type="application/x-shockwave-flash" wmode="transparent" id="FlashID"></embed>
</object>
兼容IE和Firefox的透明Flash代码:
兼容IE和Firefox的透明Flash代码,测试通过,opeara没测试。
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="100" height="50">
<param name="movie" value="myflash.swf"/>
<param name="quality" value="high" />
<param name="wmode" value="transparent"/>
<param name="menu" value="false"/>
<embed src="myflash.swf" width="100" height="50" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" wmode="transparent" menu="false"></embed>
</object>
来源:
http://down.chinazhan.net/article/12/20/ChinaZhan_22527.html
http://www.blueidea.com/tech/program/2009/6787.asp
[ Web Service介绍 ]
Web Service就是为了异构系统的通信而产生的,它基本的思想就是使用基于XML的HTTP的远程调用提供一种标准的机制,而省去建立一种新协议的需求。目前进行Web Service通信有两种协议标准,一种是XML-RPC,另外一种是SOAP。XML-RPC比较简单,出现时间比较早,SOAP比较复杂,主要是一些需要稳定、健壮、安全并且复杂交互的时候使用。
PHP中集成了XML-RPC和SOAP两种协议的访问,都是集中在xmlrpc扩展当中。另外,在PHP的PEAR中,不管是PHP 4还是PHP 5,都已经默认集成了XML-RPC扩展,而且该扩展跟xmlrpc扩展无关,能够独立实现XML-RPC的协议交互,如果没有xmlrpc扩展,建议使用PEAR::XML-RPC扩展。
我们这里主要是以XML-RPC来简单描述Web Service的交互过程,部分内容来自PHP手册,更详细内容,建议参考手册。
[ 安装xmlrpc扩展 ]
阅读全文
http://down.chinazhan.net/article/12/20/ChinaZhan_22527.html
http://www.blueidea.com/tech/program/2009/6787.asp
[ Web Service介绍 ]
Web Service就是为了异构系统的通信而产生的,它基本的思想就是使用基于XML的HTTP的远程调用提供一种标准的机制,而省去建立一种新协议的需求。目前进行Web Service通信有两种协议标准,一种是XML-RPC,另外一种是SOAP。XML-RPC比较简单,出现时间比较早,SOAP比较复杂,主要是一些需要稳定、健壮、安全并且复杂交互的时候使用。
PHP中集成了XML-RPC和SOAP两种协议的访问,都是集中在xmlrpc扩展当中。另外,在PHP的PEAR中,不管是PHP 4还是PHP 5,都已经默认集成了XML-RPC扩展,而且该扩展跟xmlrpc扩展无关,能够独立实现XML-RPC的协议交互,如果没有xmlrpc扩展,建议使用PEAR::XML-RPC扩展。
我们这里主要是以XML-RPC来简单描述Web Service的交互过程,部分内容来自PHP手册,更详细内容,建议参考手册。
[ 安装xmlrpc扩展 ]

create table b as select a.id, a.name, a.address from user a;
create table b as select * from a where 1<>1
create table b as select * from a where 1<>1
呵呵,胡兄弟少了Create语句
于兄弟的SQL应该用得比我好,这是转载的,不过其实这里sql的子查询语句只是为了获得原表的结构,如果需要的只是某些列也可以将*改为那些列的名字。
复制表的某些列也可以使用这样的方法:
create table b as select a.id, a.name, a.address from user a;
讨论很有意思
参考:http://www.w3schools.com/sql/sql_select_into.asp
SQL SELECT INTO Example
Make a Backup Copy - Now we want to make an exact copy of the data in our "Persons" table.
We use the following SQL statement:
SELECT *
INTO Persons_Backup
FROM Persons
We can also use the IN clause to copy the table into another database:
SELECT *
INTO Persons_Backup IN 'Backup.mdb'
FROM Persons
We can also copy only a few fields into the new table:
SELECT LastName,FirstName
INTO Persons_Backup
FROM Persons
--------------------------------------------------------------------------------
SQL SELECT INTO - With a WHERE Clause
We can also add a WHERE clause.
The following SQL statement creates a "Persons_Backup" table with only the persons who lives in the city "Sandnes":
SELECT LastName,Firstname
INTO Persons_Backup
FROM Persons
WHERE City='Sandnes'
--------------------------------------------------------------------------------
SQL SELECT INTO - Joined Tables
Selecting data from more than one table is also possible.
The following example creates a "Persons_Order_Backup" table contains data from the two tables "Persons" and "Orders":
SELECT Persons.LastName,Orders.OrderNo
INTO Persons_Order_Backup
FROM Persons
INNER JOIN Orders
ON Persons.P_Id=Orders.P_Id
阅读全文
SQL SELECT INTO Example
Make a Backup Copy - Now we want to make an exact copy of the data in our "Persons" table.
We use the following SQL statement:
SELECT *
INTO Persons_Backup
FROM Persons
We can also use the IN clause to copy the table into another database:
SELECT *
INTO Persons_Backup IN 'Backup.mdb'
FROM Persons
We can also copy only a few fields into the new table:
SELECT LastName,FirstName
INTO Persons_Backup
FROM Persons
--------------------------------------------------------------------------------
SQL SELECT INTO - With a WHERE Clause
We can also add a WHERE clause.
The following SQL statement creates a "Persons_Backup" table with only the persons who lives in the city "Sandnes":
SELECT LastName,Firstname
INTO Persons_Backup
FROM Persons
WHERE City='Sandnes'
--------------------------------------------------------------------------------
SQL SELECT INTO - Joined Tables
Selecting data from more than one table is also possible.
The following example creates a "Persons_Order_Backup" table contains data from the two tables "Persons" and "Orders":
SELECT Persons.LastName,Orders.OrderNo
INTO Persons_Order_Backup
FROM Persons
INNER JOIN Orders
ON Persons.P_Id=Orders.P_Id

简单来说:pkg_add -r kde4即可完成安装,然后安装chinese里面的中文包即可。
最近在用awk拼写一段sql语句时,遇到了 单引号不能输出的 问题 。
实在让人很困惑 !
awk中如何输出单引号 如何在awk中打印输出单引号呢 shell如何处理单引号呢 ?
也就是shell中对单引号的处理问题
解决办法
awk '{print " '\'' "}'
把转义的单引号',用两个单引号括起来,使其不执行
原因是 :括在双引号中的三种特殊字符不被忽略:$,\,` ,即双引号会解释字符串的特别意思,而单引号直接使用字符串输出.
那么shell如何处理特殊字符的呢
1. 单引号 ( ' ' )
如果我们想查找的是Susan Goldberg,不能直接使用grep Susan Goldberg phonebook命令,grep会把Goldberg和phonebook当作需要搜索的文件
howard@0[script]$ grep 'Susan Gold' phonebook
Susan Goldberg 403-212-4921
当shell碰到第一个单引号时,它忽略掉其后直到右引号的所有特殊字符
2. 双引号 ( " " )
双引号作用与单引号类似,区别在于它没有那么严格。单引号告诉shell忽略所有特殊字符,而双引号只要求忽略大多数,具体说,括在双引号中的三种特殊字符不被忽略:$,\,` ,即双引号会解释字符串的特别意思,而单引号直接使用字符串.如果使用双引号将字符串赋给变量并反馈它,实际上与直接反馈变量并无差别。如果要查询包含空格的字符串,经常会用到双引号。
howard@0[script]$ x=*
howard@0[script]$ echo $x
hello.sh menus.sh misc.sh phonebook tshift.sh
howard@0[script]$ echo '$x'
$x
howard@0[script]$ echo "$x"
*
这个例子可以看出无引号、单引号和双引号之间的区别。在最后一种情况中,双引号告诉shell在引号内照样进行变量名替换,所以shell把$x替换为*,因为双引号中不做文件名替换,所以就把*作为要显示的值传递给echo。
对于第一种情况需要进一步说明,shell在给变量赋值时不进行文件名替换(这从第三种情况中也能看出来),各步骤发生的精确次序如下:
shell扫描命令行,把x的值设为星号*;
shell再次扫描命令行,碰到星号*,把它替换成当前目录下的文件清单;
shell启动执行echo命令,把文件清单作为参数传递给echo.
这个赋值的先后次序非常重要:shell先作变量替换,然后作文件名替换,最后把这行处理为参数
双引号直接斜杠转义:
cat C.txt |awk '{print "grep -r '\''^" $1 " '\'' ./36107_game_20100910.txt"}'|awk '{print $0 "|awk '\''{print awk $1 \"" " \" $2}'\''"}'
cat C.txt |awk '{print "grep -r '\''^" $1 " '\'' ./36107_game_20100910.txt"}'|awk '{print $0 "|awk '\''{print awk $1 \"" " \" $2}'\'' >> DDD.txt"}' > CCC.txt
3. 反引号(``)
命令替换是指shell能够将一个命令的标准输出插在一个命令行中任何位置。shell中有两种方法作命令替换:把shell命令用反引号或者$(...)结构括起来,其中,$(...)格式受到POSIX标准支持,也利于嵌套。
howard@0[script]$ echo The date and time is `date`
The date and time is 三 6月 15 06:10:35 CST 2005
howard@0[script]$ echo Your current working directory is $(pwd)
Your current working directory is /home/howard/script.
4. 反斜杠 backslash-escaped( \ )
反斜杠一般用作转义字符,或称逃脱字符,linux如果echo要让转义字符发生作用,就要使用-e选项,且转义字符要使用双引号
echo -e "\n"
反斜杠的另一种作用,就是当反斜杠用于一行的最后一个字符时,shell把行尾的反斜杠作为续行,这种结构在分几行输入长命令时经常使用。
awk详解
a w k是一种程序语言,对文档资料的处理具有很强的功能。awk 名称是由它三个最初设计
者的姓氏的第一个字母而命名的: Alfred V. Aho、Peter J. We i n b e rg e r、Brian W. Kernighan。
a w k最初在1 9 7 7年完成。1 9 8 5年发表了一个新版本的a w k,它的功能比旧版本增强了不少。a w k
能够用很短的程序对文档里的资料做修改、比较、提取、打印等处理。如果使用C 或P a s c a l
等语言编写程序完成上述的任务会十分不方便而且很花费时间,所写的程序也会很大。
a w k不仅仅是一个编程语言,它还是L i n u x系统管理员和程序员的一个不可缺少的工具。

做为现实中的美工,截屏乃每日所需,近期总结了一些资料,如下:
1.Gimp,linux 下最强大的图形处理软件,带截屏功能
2.KDE 下的 ksnapshot
3.gnome-screenshot以及
gnome-panel-screenshot。区别在于后者可以抓取提示信息,比如此图中的“西安咸阳”
sleep 5;gnome-panel-screenshot
趁5妙时间未到,赶紧摆好pose吧… -window 参数截取当前激活窗口
BTW:ubuntu 附件 中的“抓图”正是 gnome-screenshot
4.ImageMagick(需要安装) 的 import
import -window root xxx.jpg
chvt 7 ; sleep 5 ; XAUTHORITY=/var/gdm/:0.Xauth DISPLAY=:0.0 import -window root /tmp/gdm-shot.png
在 tty1 中,截取 tty7 中x window登录界面
ubuntu中应该是
…XAUTHORITY=/var/lib/gdm/…
用 ps aux | grep gdm 可以查到 gdm 具体位置。
5.xwd,x window自带,无须安装。下面命令可以截取 x win 图像
sleep 3; xwd -display :0.0 -out root.xwd -root
但我在 tty 1中执行,想拿到 tty 7 的 x window 登录,得到的是花屏图像(执行,然后马上 ctrl+alt+7 切换回 tty7)。
BTW:.xwd 文件可以用 gimp 打开。
6.scrot
scrot -d 5 /tmp/1.jpeg
5秒钟后把屏幕抓图保存在/tmp/1.jpeg中
scrot -s
用鼠标选定范围,在范围内抓图
7.抓video的工具:xvidcap
8.fbgrab
9.Captrua
10.byzanz,记录你的桌面或者一个窗口,也可以包括鼠标在内的活动图象,并且保存为gif格式
参考资料:
import -window root ~/tmp/screenshot.jpeg && display -resize 50% ~/tmp/screenshot.jpeg
截取全屏并用 display 打开(50%显示)
import ~/tmp/screenshot.jpeg && display -resize 50% ~/tmp/screenshot.jpeg
截取当前窗口并用 display 打开(50%显示)
1.Gimp,linux 下最强大的图形处理软件,带截屏功能
2.KDE 下的 ksnapshot
3.gnome-screenshot以及
gnome-panel-screenshot。区别在于后者可以抓取提示信息,比如此图中的“西安咸阳”
sleep 5;gnome-panel-screenshot
趁5妙时间未到,赶紧摆好pose吧… -window 参数截取当前激活窗口
BTW:ubuntu 附件 中的“抓图”正是 gnome-screenshot
4.ImageMagick(需要安装) 的 import
import -window root xxx.jpg
chvt 7 ; sleep 5 ; XAUTHORITY=/var/gdm/:0.Xauth DISPLAY=:0.0 import -window root /tmp/gdm-shot.png
在 tty1 中,截取 tty7 中x window登录界面
ubuntu中应该是
…XAUTHORITY=/var/lib/gdm/…
用 ps aux | grep gdm 可以查到 gdm 具体位置。
5.xwd,x window自带,无须安装。下面命令可以截取 x win 图像
sleep 3; xwd -display :0.0 -out root.xwd -root
但我在 tty 1中执行,想拿到 tty 7 的 x window 登录,得到的是花屏图像(执行,然后马上 ctrl+alt+7 切换回 tty7)。
BTW:.xwd 文件可以用 gimp 打开。
6.scrot
scrot -d 5 /tmp/1.jpeg
5秒钟后把屏幕抓图保存在/tmp/1.jpeg中
scrot -s
用鼠标选定范围,在范围内抓图
7.抓video的工具:xvidcap
8.fbgrab
9.Captrua
10.byzanz,记录你的桌面或者一个窗口,也可以包括鼠标在内的活动图象,并且保存为gif格式
参考资料:
import -window root ~/tmp/screenshot.jpeg && display -resize 50% ~/tmp/screenshot.jpeg
截取全屏并用 display 打开(50%显示)
import ~/tmp/screenshot.jpeg && display -resize 50% ~/tmp/screenshot.jpeg
截取当前窗口并用 display 打开(50%显示)
Linux 学习笔记
限制 ssh root 登录和尝试次数
vi /etc/ssh/sshd_config
# #LoginGraceTime 2m
# PermitRootLogin no
# #StrictModes yes
# MaxAuthTries 4
解压 .7z 文件
sudo apt-get install p7zip
p7zip -d putyourfilename.7z
-d : decompress
mysql 备份
mysqldump -u user -p [database] > database.sql
阅读全文
限制 ssh root 登录和尝试次数
vi /etc/ssh/sshd_config
# #LoginGraceTime 2m
# PermitRootLogin no
# #StrictModes yes
# MaxAuthTries 4
解压 .7z 文件
sudo apt-get install p7zip
p7zip -d putyourfilename.7z
-d : decompress
mysql 备份
mysqldump -u user -p [database] > database.sql

越来越发现 chrome 和 mediawiki 好玩得很。昨天玩 mediawiki 的装 whosonline 的时候,一不留神犯了一个愚蠢而低级的错误,:(
whosonline 需要 revoke 然后重新 grant 权限,貌似我的 wiki 是直接用 root 连接的,所以俺想都没想就 revoke all from root@localshost 了,然后 grant 的时候,傻眼了…没有权限!
搜索半天,大约方法有二:
1.跳过授权表启动MYSQL。
MYSQLD –SKIP-GRANT-TABLES
来启动 MYSQL。这个时候你对所有的表都具有操作权限。更新的MYSQL.USER表的所有字段中为N的为Y就可以了。
2、就是COPY 别的有权限的MYSQL 库考到你原来的目录。不过原来的一定要备份。之后的操作和上面的一样。
注:linux shell 下 mysqladmin。
whosonline 需要 revoke 然后重新 grant 权限,貌似我的 wiki 是直接用 root 连接的,所以俺想都没想就 revoke all from root@localshost 了,然后 grant 的时候,傻眼了…没有权限!
搜索半天,大约方法有二:
1.跳过授权表启动MYSQL。
MYSQLD –SKIP-GRANT-TABLES
来启动 MYSQL。这个时候你对所有的表都具有操作权限。更新的MYSQL.USER表的所有字段中为N的为Y就可以了。
2、就是COPY 别的有权限的MYSQL 库考到你原来的目录。不过原来的一定要备份。之后的操作和上面的一样。
注:linux shell 下 mysqladmin。
假设你有网站A,以下代码可以使从域名访问网站A正常,而从百度、Google、雅虎搜索进入网站A的来源全部转向到http://www.jackxiang.com,使得后者的IP大大提升。
有兴趣的人可以自己试试。
<script>
var slyar=document.referrer
if(slyar.indexOf("baidu")>0)
self.location="http://www.jackxiang.com";
else if(slyar.indexOf("yahoo")>0)
self.location="http://www.jackxiang.com";
else if(slyar.indexOf("google")>0)
self.location="http://www.jackxiang.com";
</script>
有兴趣的人可以自己试试。
<script>
var slyar=document.referrer
if(slyar.indexOf("baidu")>0)
self.location="http://www.jackxiang.com";
else if(slyar.indexOf("yahoo")>0)
self.location="http://www.jackxiang.com";
else if(slyar.indexOf("google")>0)
self.location="http://www.jackxiang.com";
</script>
解压缩PHP压缩包到C:\php目录下(这里假设C:盘是系统盘,如果系统盘是D盘,则解压缩到D:\php目录下,以此类推)。
打开“我的电脑”->“属性”->“高级”->“环境变量”->“系统变量”->“path”,编辑其值,在前面增加下面的路径地址:
C:\php;C:\php\dlls;C:\php\extensions;C:\php\sapi;
将php.ini-dist 复制到C:\Windows 目录下,并改名为php.ini,下面配置php.ini,不说了。
打开“我的电脑”->“属性”->“高级”->“环境变量”->“系统变量”->“path”,编辑其值,在前面增加下面的路径地址:
C:\php;C:\php\dlls;C:\php\extensions;C:\php\sapi;
将php.ini-dist 复制到C:\Windows 目录下,并改名为php.ini,下面配置php.ini,不说了。
我们在解析域名时经常出现 TTL 这个字段,里面默认写的是 3600 。
另外,有时候我们PING某域名或IP的时候,会出现TTL= XXX 今天就这个问题叙说如下:
什么是域名的TTL值?
TTL(Time-To-Live),就是一条域名解析记录在DNS服务器中的存留时间。当各地的DNS服务器接受到解析请求时,就会向域名指定的NS服务器发出解析请求从而获得解析记录;在获得这个记录之后,记录会在DNS服务器中保存一段时间,这段时间内如果再接到这个域名的解析请求,DNS服务器将不再向NS服务器发出请求,而是直接返回刚才获得的记录;而这个记录在DNS服务器上保留的时间,就是TTL值。
TTL值设置的应用:
一.增大TTL值,以节约域名解析时间,给网站访问加速。
一般情况下,域名的各种记录是极少更改的,很可能几个月、几年内都不会有什么变化。我们完全可以增大域名记录的TTL值让记录在各地DNS服务器中缓存的时间加长,这样在更长的一段时间内,我们访问这个网站时,本地ISP的DNS服务器就不需要向域名的NS服务器发出解析请求,而直接从缓存中返回域名解析记录。
国内和国际上很多平台的TTL值都是以秒为单位的,很多的默认值都是3600,也就是默认缓存1小时,这个值实在有点小了,难道会有人一个小时就改一次域名记录吗?您可以根据自己的需要把这个值适当的扩大,例如要缓存一天就设置成86400。Godaddy的TTL设置比较直观,但总共只有5个值可以选定,即时切换到高级设置模式也是如此,有点死板了。网站赢利
环境所迫,LifeTyper.com的TTL值是设置成了最大值1周,设置成更大的值可能会有写不必要的麻烦,例如当您要更换空间时,这些旧的记录要很久才过期并被更新。
二.减小TTL值,减少更换空间时的不可访问时间。
更换空间99.9%会有DNS记录更改的问题,因为缓存的问题,新的域名记录在有的地方可能生效了,但在有的地方可能等上一两天甚至更久才生效。结果就是有的人可能访问到了新服务器,有的人访问到了旧服务器。仅仅是访问的话,这也不是什么大问题,但如果涉及到了邮件发送,这个就有点麻烦了,说不定哪封重要信件就被发送到了那已经停掉的旧服务器上。
为了尽可能的减小这个各地的解析时间差,合理的做法是:
1.先查看域名当前的TTL值,我们假定是1天。
2.修改TTL值为可设定的最小值,可能的话,建议为1分钟,就是60。
3.等待一天,保证各地的DNS服务器缓存都过期并更新了记录。
4.设置修改新记录,这个时候各地的DNS就能以最快的速度更新到新的记录。
5.确认各地的DNS已经更新完成后,把TTL值设置成您想要的值,TTL=60还是太小了点。
记住,这一切都能起作用的前提,是那些DNS服务器完全遵守这些标准和规范,否则NS服务器上怎么设置TTL都是白搭,但目前来看还没发现这么不讲规矩的DNS服务器。
问题是,没有真正意义上的高速NS和DNS服务器。就像这里提到的,在国内速度表现尚可的万网,在国外的评测网站中得分很低,而在国外评测拿到最高分的Godaddy,在国内使用时速度比万网快不了多少。如果您有钱像Google、微软那样在全世界部署大量的CDN加速服务器和NS服务器,那当然没问题,问题是这对绝大部分网站来说都不可能,国内国外不是不可兼得,而是很难。网站赢利
也许有人以为可以通过给域名指定两个NS记录(一个国内一个国外)来提高解析速度,但这也是不可能的,只有在DNS服务器从第一个NS服务器那里获取记录失败时才会向第二个NS服务器发送解析请求。我所知道的一个最廉价和有效的提速方法,就是修改刚才上面说的域名记录的TTL值。
返回结果PING命令,修改其TTL值来防护安全:
在一般情况下我们通过ping对方让对方返回给您的TTL值大小,粗略的判断目标主机的系统类型是Windows系列还是UNIX/Linux系列,通常Windows系列的系统返回的TTL值在100-130之间,而UNIX/Linux系列的系统返回的TTL值在240-255之间,例如PING www.ieeye.com返回的TTL是240,对方的系统很可能是Linux,而第二个目标的TTL是120,那么说明它使用的系统也许是Windows。
阅读全文
另外,有时候我们PING某域名或IP的时候,会出现TTL= XXX 今天就这个问题叙说如下:
什么是域名的TTL值?
TTL(Time-To-Live),就是一条域名解析记录在DNS服务器中的存留时间。当各地的DNS服务器接受到解析请求时,就会向域名指定的NS服务器发出解析请求从而获得解析记录;在获得这个记录之后,记录会在DNS服务器中保存一段时间,这段时间内如果再接到这个域名的解析请求,DNS服务器将不再向NS服务器发出请求,而是直接返回刚才获得的记录;而这个记录在DNS服务器上保留的时间,就是TTL值。
TTL值设置的应用:
一.增大TTL值,以节约域名解析时间,给网站访问加速。
一般情况下,域名的各种记录是极少更改的,很可能几个月、几年内都不会有什么变化。我们完全可以增大域名记录的TTL值让记录在各地DNS服务器中缓存的时间加长,这样在更长的一段时间内,我们访问这个网站时,本地ISP的DNS服务器就不需要向域名的NS服务器发出解析请求,而直接从缓存中返回域名解析记录。
国内和国际上很多平台的TTL值都是以秒为单位的,很多的默认值都是3600,也就是默认缓存1小时,这个值实在有点小了,难道会有人一个小时就改一次域名记录吗?您可以根据自己的需要把这个值适当的扩大,例如要缓存一天就设置成86400。Godaddy的TTL设置比较直观,但总共只有5个值可以选定,即时切换到高级设置模式也是如此,有点死板了。网站赢利
环境所迫,LifeTyper.com的TTL值是设置成了最大值1周,设置成更大的值可能会有写不必要的麻烦,例如当您要更换空间时,这些旧的记录要很久才过期并被更新。
二.减小TTL值,减少更换空间时的不可访问时间。
更换空间99.9%会有DNS记录更改的问题,因为缓存的问题,新的域名记录在有的地方可能生效了,但在有的地方可能等上一两天甚至更久才生效。结果就是有的人可能访问到了新服务器,有的人访问到了旧服务器。仅仅是访问的话,这也不是什么大问题,但如果涉及到了邮件发送,这个就有点麻烦了,说不定哪封重要信件就被发送到了那已经停掉的旧服务器上。
为了尽可能的减小这个各地的解析时间差,合理的做法是:
1.先查看域名当前的TTL值,我们假定是1天。
2.修改TTL值为可设定的最小值,可能的话,建议为1分钟,就是60。
3.等待一天,保证各地的DNS服务器缓存都过期并更新了记录。
4.设置修改新记录,这个时候各地的DNS就能以最快的速度更新到新的记录。
5.确认各地的DNS已经更新完成后,把TTL值设置成您想要的值,TTL=60还是太小了点。
记住,这一切都能起作用的前提,是那些DNS服务器完全遵守这些标准和规范,否则NS服务器上怎么设置TTL都是白搭,但目前来看还没发现这么不讲规矩的DNS服务器。
问题是,没有真正意义上的高速NS和DNS服务器。就像这里提到的,在国内速度表现尚可的万网,在国外的评测网站中得分很低,而在国外评测拿到最高分的Godaddy,在国内使用时速度比万网快不了多少。如果您有钱像Google、微软那样在全世界部署大量的CDN加速服务器和NS服务器,那当然没问题,问题是这对绝大部分网站来说都不可能,国内国外不是不可兼得,而是很难。网站赢利
也许有人以为可以通过给域名指定两个NS记录(一个国内一个国外)来提高解析速度,但这也是不可能的,只有在DNS服务器从第一个NS服务器那里获取记录失败时才会向第二个NS服务器发送解析请求。我所知道的一个最廉价和有效的提速方法,就是修改刚才上面说的域名记录的TTL值。
返回结果PING命令,修改其TTL值来防护安全:
在一般情况下我们通过ping对方让对方返回给您的TTL值大小,粗略的判断目标主机的系统类型是Windows系列还是UNIX/Linux系列,通常Windows系列的系统返回的TTL值在100-130之间,而UNIX/Linux系列的系统返回的TTL值在240-255之间,例如PING www.ieeye.com返回的TTL是240,对方的系统很可能是Linux,而第二个目标的TTL是120,那么说明它使用的系统也许是Windows。

线程池的原理:
来看一下线程池究竟是怎么一回事?其实线程池的原理很简单,类似于操作系统中的缓冲区的概念,它的流程如下:先启动若干数量的线程,并让这些线程都处于睡眠状态,当客户端有一个新请求时,就会唤醒线程池中的某一个睡眠线程,让它来处理客户端的这个请求,当处理完这个请求后,线程又处于睡眠状态。可能你也许会问:为什么要搞得这么麻烦,如果每当客户端有新的请求时,我就创建一个新的线程不就完了?这也许是个不错的方法,因为它能使得你编写代码相对容易一些,但你却忽略了一个重要的问题??性能!就拿我所在的单位来说,我的单位是一个省级数据大集中的银行网络中心,高峰期每秒的客户端请求并发数超过100,如果为每个客户端请求创建一个新线程的话,那耗费的CPU时间和内存将是惊人的,如果采用一个拥有200个线程的线程池,那将会节约大量的的系统资源,使得更多的CPU时间和内存用来处理实际的商业应用,而不是频繁的线程创建与销毁。
数据库连接池:
数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。
一个数据库连接对象均对应一个物理数据库连接,每次操作都打开一个物理连接,使用完都关闭连接,这样造成系统的 性能低下。 数据库连接池的解决方案是在应用程序启动时建立足够的数据库连接,并讲这些连接组成一个连接池(简单说:在一个“池”里放了好多半成品的数据库联接对象),由应用程序动态地对池中的连接进行申请、使用和释放。对于多于连接池中连接数的并发请求,应该在请求队列中排队等待。并且应用程序可以根据池中连接的使用率,动态增加或减少池中的连接数。
连接池技术尽可能多地重用了消耗内存地资源,大大节省了内存,提高了服务器地服务效率,能够支持更多的客户服务。通过使用连接池,将大大提高程序运行效率,同时,我们可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。
1) 最小连接数是连接池一直保持的数据库连接,所以如果应用程序对数据库连接的使用量不大,将会有大量的数据库连接资源被浪费;
2) 最大连接数是连接池能申请的最大连接数,如果数据库连接请求超过此数,后面的数据库连接请求将被加入到等待队列中,这会影响之后的数据库操作。
有空写写rpc来做c++ mysql实现连接池!
Sun提出rpc后,rpc应用很少。。。
幸运的是,Sun公司通过JDBC-2.0“可选”接口,完成了JDBC中连接池概念的标准化实施,所有主要应用服务器均实施了能够与MySQL Connector/J一起良好工作的这类API。
阅读全文
来看一下线程池究竟是怎么一回事?其实线程池的原理很简单,类似于操作系统中的缓冲区的概念,它的流程如下:先启动若干数量的线程,并让这些线程都处于睡眠状态,当客户端有一个新请求时,就会唤醒线程池中的某一个睡眠线程,让它来处理客户端的这个请求,当处理完这个请求后,线程又处于睡眠状态。可能你也许会问:为什么要搞得这么麻烦,如果每当客户端有新的请求时,我就创建一个新的线程不就完了?这也许是个不错的方法,因为它能使得你编写代码相对容易一些,但你却忽略了一个重要的问题??性能!就拿我所在的单位来说,我的单位是一个省级数据大集中的银行网络中心,高峰期每秒的客户端请求并发数超过100,如果为每个客户端请求创建一个新线程的话,那耗费的CPU时间和内存将是惊人的,如果采用一个拥有200个线程的线程池,那将会节约大量的的系统资源,使得更多的CPU时间和内存用来处理实际的商业应用,而不是频繁的线程创建与销毁。
数据库连接池:
数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。
一个数据库连接对象均对应一个物理数据库连接,每次操作都打开一个物理连接,使用完都关闭连接,这样造成系统的 性能低下。 数据库连接池的解决方案是在应用程序启动时建立足够的数据库连接,并讲这些连接组成一个连接池(简单说:在一个“池”里放了好多半成品的数据库联接对象),由应用程序动态地对池中的连接进行申请、使用和释放。对于多于连接池中连接数的并发请求,应该在请求队列中排队等待。并且应用程序可以根据池中连接的使用率,动态增加或减少池中的连接数。
连接池技术尽可能多地重用了消耗内存地资源,大大节省了内存,提高了服务器地服务效率,能够支持更多的客户服务。通过使用连接池,将大大提高程序运行效率,同时,我们可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。
1) 最小连接数是连接池一直保持的数据库连接,所以如果应用程序对数据库连接的使用量不大,将会有大量的数据库连接资源被浪费;
2) 最大连接数是连接池能申请的最大连接数,如果数据库连接请求超过此数,后面的数据库连接请求将被加入到等待队列中,这会影响之后的数据库操作。
有空写写rpc来做c++ mysql实现连接池!
Sun提出rpc后,rpc应用很少。。。
幸运的是,Sun公司通过JDBC-2.0“可选”接口,完成了JDBC中连接池概念的标准化实施,所有主要应用服务器均实施了能够与MySQL Connector/J一起良好工作的这类API。

HTPC机箱:多彩MS-126
技嘉 MA78GPM-UD2H
魅影h920机箱
多彩DL-K1000U
索泰 魅酷主机
http://item.taobao.com/item.htm?id=12333546791
http://item.taobao.com/item.htm?id=13279078580&_u=l6nuj2a391a
技嘉 MA78GPM-UD2H
魅影h920机箱
多彩DL-K1000U
索泰 魅酷主机
http://item.taobao.com/item.htm?id=12333546791
http://item.taobao.com/item.htm?id=13279078580&_u=l6nuj2a391a
一、环境描述
硬件设备:IBM X3650 M2
操作系统:CentOS 5.4
数据库:Oracle 10g 10.2.0.1
PS:此安装文档在上述真实环境下测试成功。
二、系统安装时需要的软件包
·桌面
-X窗口系统
-Gnome桌面环境
·开发
-开发工具
·系统
-管理工具
-系统工具(在细节中选上sysstat)
三、安装Oracle 10g时检查的软件包
binutils-2.17.50.0.6-12.el5
compat-db-4.2.52-5.1
control-center-2.16.0-16.el5
gcc-4.1.2-46.el5_4.1
gcc-c++-4.1.2-46.el5_4.1
glibc-2.5-42
glibc-common-2.5-42
libstdc++-4.1.2-46.el5_4.1
libstdc++-devel-4.1.2-46.el5_4.1
make-3.81-3.el5
pdksh-5.2.14-36.el5
sysstat-7.0.2-3.el5
libaio-0.3.106-3.2
openmotif22-2.2.3-18
libXp-1.0.0-8.1.el5
如果系统里没有上面的任何软件包,均可在安装光盘中找到。
三、配置内核参数
#cat >> /etc/sysctl.conf <<EOF
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_default = 262144
net.core.wmem_max = 262144
EOF
运行sysctl -p命令使内核生效
四、增加用户组和用户
#groupadd oinstall
#groupadd dba
#useradd -m -g oinstall -G dba oracle
#passwd oracle
五、建立目录并授权
#mkdir -p /opt/oracle
#chown -R oracle:oinstall /opt/oracle
#chmod 775 /opt/oracle
六、设置oracle用户的环境变量
#vi .bash_profile
ORACLE_BASE=/opt/oracle;export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/10.2.0/Db_1;export ORACLE_HOME
ORACLE_SID=mven;export ORACLE_SID
PATH=$ORACLE_HOME/bin:$PATH; export PATH
TNS_ADMIN=$ORACLE_HOME/network/admin;export TNS_ADMIN
NLS_LANG='simplified chinese'_china.ZHS16GBK;export NLS_LANG
DISPLAY=:0.0;export DISPLAY
七、修改操作系统版本
#cat > /etc/redhat-release << EOF
Red Hat Enterprise Linux AS release 3 (Taroon)
EOF
八、配置Xwindow
#xhost +
九、准备工作已完成,开始安装Oracle。
来源:http://eryin.blog.51cto.com/320220/244313
硬件设备:IBM X3650 M2
操作系统:CentOS 5.4
数据库:Oracle 10g 10.2.0.1
PS:此安装文档在上述真实环境下测试成功。
二、系统安装时需要的软件包
·桌面
-X窗口系统
-Gnome桌面环境
·开发
-开发工具
·系统
-管理工具
-系统工具(在细节中选上sysstat)
三、安装Oracle 10g时检查的软件包
binutils-2.17.50.0.6-12.el5
compat-db-4.2.52-5.1
control-center-2.16.0-16.el5
gcc-4.1.2-46.el5_4.1
gcc-c++-4.1.2-46.el5_4.1
glibc-2.5-42
glibc-common-2.5-42
libstdc++-4.1.2-46.el5_4.1
libstdc++-devel-4.1.2-46.el5_4.1
make-3.81-3.el5
pdksh-5.2.14-36.el5
sysstat-7.0.2-3.el5
libaio-0.3.106-3.2
openmotif22-2.2.3-18
libXp-1.0.0-8.1.el5
如果系统里没有上面的任何软件包,均可在安装光盘中找到。
三、配置内核参数
#cat >> /etc/sysctl.conf <<EOF
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_default = 262144
net.core.wmem_max = 262144
EOF
运行sysctl -p命令使内核生效
四、增加用户组和用户
#groupadd oinstall
#groupadd dba
#useradd -m -g oinstall -G dba oracle
#passwd oracle
五、建立目录并授权
#mkdir -p /opt/oracle
#chown -R oracle:oinstall /opt/oracle
#chmod 775 /opt/oracle
六、设置oracle用户的环境变量
#vi .bash_profile
ORACLE_BASE=/opt/oracle;export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/10.2.0/Db_1;export ORACLE_HOME
ORACLE_SID=mven;export ORACLE_SID
PATH=$ORACLE_HOME/bin:$PATH; export PATH
TNS_ADMIN=$ORACLE_HOME/network/admin;export TNS_ADMIN
NLS_LANG='simplified chinese'_china.ZHS16GBK;export NLS_LANG
DISPLAY=:0.0;export DISPLAY
七、修改操作系统版本
#cat > /etc/redhat-release << EOF
Red Hat Enterprise Linux AS release 3 (Taroon)
EOF
八、配置Xwindow
#xhost +
九、准备工作已完成,开始安装Oracle。
来源:http://eryin.blog.51cto.com/320220/244313
在CentOS5 下的nginx+php+mysql的解决方案有多个,本文介绍其中的解决方案之一。
本文基于64位的CentOS 5 ,如果是32位的,请在相应部分做修改。
本解决方案使用瑞豪开源自己编译的最新稳定版本的Nginx,fastcgi进程管理使用spawn-fcgi,还有CentOS 5自带的5.0.45版本的MySQL和5.1.6版本的php。
优缺点
本方案的优点是使用CentOS5自带的php和mysql,扩展性好,php的各种扩展yum库里面都有,都可以直接使用;另外,由于使用系统自带的php和mysql,安全性要好一些,如果有什么漏洞都可以直接升级为centos官方的最新版本。由于使用spawn-fcgi,所以无须重新编译php。
本方案的缺点有:
php和mysql都是centos自带的版本,不是最新版本,万一用到php最新版本的某些特性则就不行了。
安装Nginx
到 http://rashost.com/download 下载nginx-0.7.61-1.x86_64.rpm
#rpm -ivh nginx-0.7.61-1.x86_64.rpm
service nginx start
ntsysv nginx on
rpm -ql nginx
上面的rpm -ql nginx命令是看看nginx的文件都安装在哪些目录下面了,可以看到nginx的缺省网页目录应该是/usr/share/nginx/html/
通过浏览器访问,应该能看到nginx的缺省网页了,说明nginx正常工作了!
安装MySQL
#yum -y install mysql-server
##ntsysv
选中mysql
#service mysql start
或者 /etc/init.d/mysqld start
改密码
/usr/bin/mysqladmin -u root password '123456'
安装PHP
yum install -y php-cgi php-mysql
安装spawn-fcgi
到http://rashost.com/download 下载 spawn-fcgi-1.6.2-1.32.x86_64.rpm
rpm -ivh spawn-fcgi-1.6.2-1.32.x86_64.rpm
然后在/etc/rc.local里面加入spawn-fcgi的启动命令:
#spawn-fcgi -C 10 -a 127.0.0.1 -p 9000 -u nginx -d /tmp -f php-cgi
其中的-C 10参数是指启动的php fastcgi的进程数目,这个数值可以根据网站的访问量和内存大小修改。
然后先手工启动一下php:
spawn-fcgi -C 10 -a 127.0.0.1 -p 9000 -u nginx -d /tmp -f php-cgi
整合
首先在/usr/share/nginx/html目录下创建文件test.php,其内容很简单,只要下面一行:
通过浏览器访问http://192.168.1.5/test.php是得不到正确的显示结果的。
修改nginx的配置文件/etc/nginx/nginx.conf,在文件内搜索fastcgi_pass,修改该部分内容为:
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include fastcgi_params;
}
然后重启nginx:
/etc/init.d/nginx/restart
然后在浏览器中访问test.php页面,就应该能正确显示了,reboot 测试一下,各个模块应该都能自带启动。
来源:http://rashost.com/blog/centos5-vps-nginx-solution1
本文基于64位的CentOS 5 ,如果是32位的,请在相应部分做修改。
本解决方案使用瑞豪开源自己编译的最新稳定版本的Nginx,fastcgi进程管理使用spawn-fcgi,还有CentOS 5自带的5.0.45版本的MySQL和5.1.6版本的php。
优缺点
本方案的优点是使用CentOS5自带的php和mysql,扩展性好,php的各种扩展yum库里面都有,都可以直接使用;另外,由于使用系统自带的php和mysql,安全性要好一些,如果有什么漏洞都可以直接升级为centos官方的最新版本。由于使用spawn-fcgi,所以无须重新编译php。
本方案的缺点有:
php和mysql都是centos自带的版本,不是最新版本,万一用到php最新版本的某些特性则就不行了。
安装Nginx
到 http://rashost.com/download 下载nginx-0.7.61-1.x86_64.rpm
#rpm -ivh nginx-0.7.61-1.x86_64.rpm
service nginx start
ntsysv nginx on
rpm -ql nginx
上面的rpm -ql nginx命令是看看nginx的文件都安装在哪些目录下面了,可以看到nginx的缺省网页目录应该是/usr/share/nginx/html/
通过浏览器访问,应该能看到nginx的缺省网页了,说明nginx正常工作了!
安装MySQL
#yum -y install mysql-server
##ntsysv
选中mysql
#service mysql start
或者 /etc/init.d/mysqld start
改密码
/usr/bin/mysqladmin -u root password '123456'
安装PHP
yum install -y php-cgi php-mysql
安装spawn-fcgi
到http://rashost.com/download 下载 spawn-fcgi-1.6.2-1.32.x86_64.rpm
rpm -ivh spawn-fcgi-1.6.2-1.32.x86_64.rpm
然后在/etc/rc.local里面加入spawn-fcgi的启动命令:
#spawn-fcgi -C 10 -a 127.0.0.1 -p 9000 -u nginx -d /tmp -f php-cgi
其中的-C 10参数是指启动的php fastcgi的进程数目,这个数值可以根据网站的访问量和内存大小修改。
然后先手工启动一下php:
spawn-fcgi -C 10 -a 127.0.0.1 -p 9000 -u nginx -d /tmp -f php-cgi
整合
首先在/usr/share/nginx/html目录下创建文件test.php,其内容很简单,只要下面一行:
通过浏览器访问http://192.168.1.5/test.php是得不到正确的显示结果的。
修改nginx的配置文件/etc/nginx/nginx.conf,在文件内搜索fastcgi_pass,修改该部分内容为:
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include fastcgi_params;
}
然后重启nginx:
/etc/init.d/nginx/restart
然后在浏览器中访问test.php页面,就应该能正确显示了,reboot 测试一下,各个模块应该都能自带启动。
来源:http://rashost.com/blog/centos5-vps-nginx-solution1