firefox 浏览器ajax提交中文乱码完美解决
最近在做一个项目,遇到AJAX中文乱码问题,经过一个下午的努力终于完美解决,现将心得写下来,希望对那些还困绕在这个问题而头痛不已的人们有所帮助。
众所周知,使用AJAX传送和接收中文参数时,如果不在客户端和服务器做相应的处理就会出现乱码问题,在网上相应的文章也不少,但是有的情况下很难从中找到符合自己理想的答案,我今天就是在网上找了很多,但是都差不多,讲ASP和JSP的比较多(我是用的PHP),所以到最后都没找到自己满意的答案。
AJAX的中文乱码可以大概分为两中,第一种是向服务器端发送中文参数时(xmlhttp.open(“get|post”,url,true)), 服务器端接收到的为乱码,这个也是我今天遇到的问题,没做处理之前,在IE里是正常的,但是在Firefox里面就出现了乱码,我先把接收到参数输出到一个文本里,没有发现什么问题,郁闷了,然后我就把查询语句在输出来观察(我这里是要从数据库里查出与参数相关的东西),终于发现问题,IE和 Firefox输出的参数不一样,虽然汉字上都一样,但是和前后连接上有细小的区别,于是认定了是编码问题,在网上查找了相关资料,都没能解决问题,但是得到一些启示,因为AJAX发送数据都是采用UTF-8编码的方式发送的,所以要在服务器端进行编码转换(我这里页面是采用GB2312编码的,如果是采用UTF-8的话应该不会有这步的问题),所以我在服务器端进行了UTF-8转GB2312,
$str=iconv(“UTF-8″,”GB2312″,$str);
然后测试,在Firefox上顺利解决了问题,以为大公告成了,可是再到IE下测试,发现IE又出现了问题,服务器端接收到的参数没值,这下就郁闷了,突然看到发送头设置了setRequestHeader(“Content-Type”,”application/x-www-form- urlencoded”);,就找到问题所在了,然后就在发送那里进行了参数编码:
geturl=encodeURI(geturl);
geturl=encodeURI(geturl); //两次也可以写成geturl=encodeURI(encodeURI(geturl));
xmlhttp.open(“GET”,geturl,true);
然后再到服务器端进行URL解码:
$str=urldecode($str); //解码
$ str =iconv(“UTF-8″,”GB2312″,$ str); //编码转换
注意:解码必须在编码转换前面,不然得不到正确值
保存测试,IE和Firefox都能正常了。
第二种就是服务器端向客户端输出中文时出现乱码,这类问题网上的答案就比较多了,也都能解决,为了避免各位再去查找,我在这里就COPY下J
原因:AJAX在接收responseText或responseXML的值的时候是按照UTF-8的格式来解码的,如果服务器段发送的数据不是UTF-8的格式,那么接收responseText或responseXML的值有可能为乱码。
ajax乱码解决办法一:
在服务器指定发送数据的格式:
在jsp文件中:
response.setContentType(“text/text;charset=UTF-8″);//返回的是txt文本文件
或是
response.setContentType(“text/xml;charset=UTF-8″);//返回的xml文件
PHP:header(”Content-Type:text/html;charset=GB2312”);
ajax乱码解决方法二:
PHP发送中文、Ajax接收
只需在php顶部加入一句:
header(‘Content-type: text/html;charset=GB2312′);
xmlHttp会正确解析其中的中文。
Ajax发送中文、PHP接收
这个比较复杂:
Ajax中先用encodeURIComponent对要提交的中文进行编码
PHP中:
$GB2312string=iconv( ‘UTF-8′, ‘gb2312//IGNORE’ , $RequestAjaxString);
PHP写入MySQL数据库
建立conn时,query一下set names “gb2312″
==================================================
注意红色部分!!!否则无法使用!!!具体原因自己猜!
iconv( “UTF-8″,”GBK” , $gametypes["name"]);
原创:
我的乱码问题是AJAX取数据时产生乱码,本来页面是采用GBK编码的。后来显示为乱码,我使用UE把它转换成UTF-8后,
页面上原来的元素就可以显示正确了。但是,数据库取出来的值还是会乱码。
ob_get_contents ();
取出所有的显示数据,然后输出到日志文件,显示全是乱码。
使用UE把文件再转换成GBK,然后再输出,显示就正确了。
这里再使用:header(‘Content-Type:text/html;charset=GBK’);
前台页面显示就正常。
来源:http://www.chhua.com/web-note313
最近在做一个项目,遇到AJAX中文乱码问题,经过一个下午的努力终于完美解决,现将心得写下来,希望对那些还困绕在这个问题而头痛不已的人们有所帮助。
众所周知,使用AJAX传送和接收中文参数时,如果不在客户端和服务器做相应的处理就会出现乱码问题,在网上相应的文章也不少,但是有的情况下很难从中找到符合自己理想的答案,我今天就是在网上找了很多,但是都差不多,讲ASP和JSP的比较多(我是用的PHP),所以到最后都没找到自己满意的答案。
AJAX的中文乱码可以大概分为两中,第一种是向服务器端发送中文参数时(xmlhttp.open(“get|post”,url,true)), 服务器端接收到的为乱码,这个也是我今天遇到的问题,没做处理之前,在IE里是正常的,但是在Firefox里面就出现了乱码,我先把接收到参数输出到一个文本里,没有发现什么问题,郁闷了,然后我就把查询语句在输出来观察(我这里是要从数据库里查出与参数相关的东西),终于发现问题,IE和 Firefox输出的参数不一样,虽然汉字上都一样,但是和前后连接上有细小的区别,于是认定了是编码问题,在网上查找了相关资料,都没能解决问题,但是得到一些启示,因为AJAX发送数据都是采用UTF-8编码的方式发送的,所以要在服务器端进行编码转换(我这里页面是采用GB2312编码的,如果是采用UTF-8的话应该不会有这步的问题),所以我在服务器端进行了UTF-8转GB2312,
$str=iconv(“UTF-8″,”GB2312″,$str);
然后测试,在Firefox上顺利解决了问题,以为大公告成了,可是再到IE下测试,发现IE又出现了问题,服务器端接收到的参数没值,这下就郁闷了,突然看到发送头设置了setRequestHeader(“Content-Type”,”application/x-www-form- urlencoded”);,就找到问题所在了,然后就在发送那里进行了参数编码:
geturl=encodeURI(geturl);
geturl=encodeURI(geturl); //两次也可以写成geturl=encodeURI(encodeURI(geturl));
xmlhttp.open(“GET”,geturl,true);
然后再到服务器端进行URL解码:
$str=urldecode($str); //解码
$ str =iconv(“UTF-8″,”GB2312″,$ str); //编码转换
注意:解码必须在编码转换前面,不然得不到正确值
保存测试,IE和Firefox都能正常了。
第二种就是服务器端向客户端输出中文时出现乱码,这类问题网上的答案就比较多了,也都能解决,为了避免各位再去查找,我在这里就COPY下J
原因:AJAX在接收responseText或responseXML的值的时候是按照UTF-8的格式来解码的,如果服务器段发送的数据不是UTF-8的格式,那么接收responseText或responseXML的值有可能为乱码。
ajax乱码解决办法一:
在服务器指定发送数据的格式:
在jsp文件中:
response.setContentType(“text/text;charset=UTF-8″);//返回的是txt文本文件
或是
response.setContentType(“text/xml;charset=UTF-8″);//返回的xml文件
PHP:header(”Content-Type:text/html;charset=GB2312”);
ajax乱码解决方法二:
PHP发送中文、Ajax接收
只需在php顶部加入一句:
header(‘Content-type: text/html;charset=GB2312′);
xmlHttp会正确解析其中的中文。
Ajax发送中文、PHP接收
这个比较复杂:
Ajax中先用encodeURIComponent对要提交的中文进行编码
PHP中:
$GB2312string=iconv( ‘UTF-8′, ‘gb2312//IGNORE’ , $RequestAjaxString);
PHP写入MySQL数据库
建立conn时,query一下set names “gb2312″
==================================================
注意红色部分!!!否则无法使用!!!具体原因自己猜!
iconv( “UTF-8″,”GBK” , $gametypes["name"]);
原创:
我的乱码问题是AJAX取数据时产生乱码,本来页面是采用GBK编码的。后来显示为乱码,我使用UE把它转换成UTF-8后,
页面上原来的元素就可以显示正确了。但是,数据库取出来的值还是会乱码。
ob_get_contents ();
取出所有的显示数据,然后输出到日志文件,显示全是乱码。
使用UE把文件再转换成GBK,然后再输出,显示就正确了。
这里再使用:header(‘Content-Type:text/html;charset=GBK’);
前台页面显示就正常。
来源:http://www.chhua.com/web-note313
php中需要查看错误log,如何设置?
首先需要在php.ini打开开关和制定错误log路径
log_errors = On
error_log = d://phperror.log //windows下的设置
如果是在linux 下,使用lighttpd服务器,则可以使用如下方式查看log文件
tail -n 20 /usr/local/lighttpd/log/php-error.log
在php代码中如何记录log,在PHP官方文档中有个函数error_log(),使用方法如下:
定义和用法
error_log() 函数向服务器错误记录、文件或远程目标发送一个错误。
若成功,返回 true,否则返回 false。
语法
error_log(error,type,destination,headers)
______________________________________________________________
ini_set("error_log", "F:/wwwroot/7751/logs/php_error.log");
error_log("index.php exec...", 0);
如果要打印出sql,则相应的query方法里加上error_log($sql,0);即可
error_log是要系统权限的,safe_mode下不能使用。
首先需要在php.ini打开开关和制定错误log路径
log_errors = On
error_log = d://phperror.log //windows下的设置
如果是在linux 下,使用lighttpd服务器,则可以使用如下方式查看log文件
tail -n 20 /usr/local/lighttpd/log/php-error.log
在php代码中如何记录log,在PHP官方文档中有个函数error_log(),使用方法如下:
定义和用法
error_log() 函数向服务器错误记录、文件或远程目标发送一个错误。
若成功,返回 true,否则返回 false。
语法
error_log(error,type,destination,headers)
______________________________________________________________
ini_set("error_log", "F:/wwwroot/7751/logs/php_error.log");
error_log("index.php exec...", 0);
如果要打印出sql,则相应的query方法里加上error_log($sql,0);即可
error_log是要系统权限的,safe_mode下不能使用。
Firefox浏览器模拟iPad
下载一个 User Agent Switch 的插件。
安装之后,点击 工具 > Default User Agent > Edit User Agent,添加一个 iPad 的 User Agent。
User Agent 上面有了。
App Code Name 输入:iPad。
App Name 输入:Mobile Safari
App Version 输入:5.0 (Macintosh; en-US)
最新内存管理插件:
addons-memory firefox内存优化
发布一个快捷切换hosts的小工具:SwitchHosts!
http://oldj.net/article/switchhosts/
DownLoad:
https://github.com/oldj/SwitchHosts/downloads
http://cloud.github.com/downloads/oldj/SwitchHosts/SwitchHosts_v0.2.2.1785.zip
_______________________________________________________________
问:
那我在内网host,外网host,这块切换环境有没有好的Firefox插件?
答:
switchhost
chrome有插件
firefox上的post get工具:
最佳答案: 扩展 Live HTTP Headers 或者poster
DNS FLusher 2.0.5
Firefox插件 web developer查看cookie及Form表单值很方便,及其它两款不错的插件:
web developer https://addons.mozilla.org/zh-CN/firefox/addon/60/
小D词典
SecureLogin
Memory Fox简介:
这是一个具备释放Firefox内存功能的Firefox扩展,而且经过试用后发现效果相当明显,不仅具备给Firefox释放内存的功能,还具备给当前系统运行的所有程序释放内存的功能,而且使用起来非常简单,启用后一切事情全是自动的了,非常方便。
http://www.softinn.org/memory-fox/
我们采用Firefox的插件Regular Expression Tester(意思是“正则表达式测试工具”):
使用Regular Expression Tester
在Firefox的菜单栏选择“工具——扩展”,下拉菜单中选择Regular Expression Tester,就可以看到Regular Expression Tester的主界面。 我们可以看到,这个工具分为三大块,最上面的Regular Expression文本框用于输入正则表达式,中间的Search Text文本框用于输入待匹配的文本,下面的Result则显示匹配(还包括替换,将来我们会看到)的结果,左下角显示正则表达式操作进行的时间,右下角显示匹配发生的次数。
----------------------------------------------
HTML Regex Data Extractor正则表达式匹配,抓站神马的最合适了。
----------------------------------------------
有firefox缓存查看的插件么?新加插件:cache Viewer Continued 0.8。
第一名:Firebug firephp firecookie
switchHosts Change Hosts DNS Flusher pagediff web developer httpfox
第二名:Easy DragToGo
第三名:Web Develope
Firebug的jQuery开发伴侣 FireQueryr :blog.sina.com.cn/s/blog_4b93170a0102dt2s.html
LinrLightWeb :这软件帮 助你检查你的网页是否符合标准,结果将帮助你迅速地解决问题。
Html Validator :小巧有用。
Total Validator :安装前,请确认您已安装Firebug插件,1. 开启网页编辑模式,随意编辑网页——Fiddler的好搭档;
firequery
dns flusher
httpfox
firecookie
PageDiff
第四名:SecureLogin
第五名:IE Tab
第六名:MediaWrap
第七名:FlashGot
第八名:支持英语、日语的小D词典
第九名:让FireFox使用IE收藏夹的PlainOldFavorites
第十名:Adblock_Plus
Fast Dial 3.4: Fast Dial 用一套网站的缩略图面板它取代了“about:blank”页面。右键点击缩略图,在上下文菜单依次选择“Fast Dial”、“设置URL”。选取一个 URL 之后点击“OK”。一两秒之后就会出现一个缩略图,以后只需点击缩略图就可以打开网站了。你也可以右键点击页面在上下文菜单中选择“添加到Fast Dial”来指定任何网页。
https://addons.mozilla.org/zh-cn/firefox/addon/fast-dial-5721/
下载一个 User Agent Switch 的插件。
安装之后,点击 工具 > Default User Agent > Edit User Agent,添加一个 iPad 的 User Agent。
User Agent 上面有了。
App Code Name 输入:iPad。
App Name 输入:Mobile Safari
App Version 输入:5.0 (Macintosh; en-US)
最新内存管理插件:
addons-memory firefox内存优化
发布一个快捷切换hosts的小工具:SwitchHosts!
http://oldj.net/article/switchhosts/
DownLoad:
https://github.com/oldj/SwitchHosts/downloads
http://cloud.github.com/downloads/oldj/SwitchHosts/SwitchHosts_v0.2.2.1785.zip
_______________________________________________________________
问:
那我在内网host,外网host,这块切换环境有没有好的Firefox插件?
答:
switchhost
chrome有插件
firefox上的post get工具:
最佳答案: 扩展 Live HTTP Headers 或者poster
DNS FLusher 2.0.5
Firefox插件 web developer查看cookie及Form表单值很方便,及其它两款不错的插件:
web developer https://addons.mozilla.org/zh-CN/firefox/addon/60/
小D词典
SecureLogin
Memory Fox简介:
这是一个具备释放Firefox内存功能的Firefox扩展,而且经过试用后发现效果相当明显,不仅具备给Firefox释放内存的功能,还具备给当前系统运行的所有程序释放内存的功能,而且使用起来非常简单,启用后一切事情全是自动的了,非常方便。
http://www.softinn.org/memory-fox/
我们采用Firefox的插件Regular Expression Tester(意思是“正则表达式测试工具”):
使用Regular Expression Tester
在Firefox的菜单栏选择“工具——扩展”,下拉菜单中选择Regular Expression Tester,就可以看到Regular Expression Tester的主界面。 我们可以看到,这个工具分为三大块,最上面的Regular Expression文本框用于输入正则表达式,中间的Search Text文本框用于输入待匹配的文本,下面的Result则显示匹配(还包括替换,将来我们会看到)的结果,左下角显示正则表达式操作进行的时间,右下角显示匹配发生的次数。
----------------------------------------------
HTML Regex Data Extractor正则表达式匹配,抓站神马的最合适了。
----------------------------------------------
有firefox缓存查看的插件么?新加插件:cache Viewer Continued 0.8。
第一名:Firebug firephp firecookie
switchHosts Change Hosts DNS Flusher pagediff web developer httpfox
第二名:Easy DragToGo
第三名:Web Develope
Firebug的jQuery开发伴侣 FireQueryr :blog.sina.com.cn/s/blog_4b93170a0102dt2s.html
LinrLightWeb :这软件帮 助你检查你的网页是否符合标准,结果将帮助你迅速地解决问题。
Html Validator :小巧有用。
Total Validator :安装前,请确认您已安装Firebug插件,1. 开启网页编辑模式,随意编辑网页——Fiddler的好搭档;
firequery
dns flusher
httpfox
firecookie
PageDiff
第四名:SecureLogin
第五名:IE Tab
第六名:MediaWrap
第七名:FlashGot
第八名:支持英语、日语的小D词典
第九名:让FireFox使用IE收藏夹的PlainOldFavorites
第十名:Adblock_Plus
Fast Dial 3.4: Fast Dial 用一套网站的缩略图面板它取代了“about:blank”页面。右键点击缩略图,在上下文菜单依次选择“Fast Dial”、“设置URL”。选取一个 URL 之后点击“OK”。一两秒之后就会出现一个缩略图,以后只需点击缩略图就可以打开网站了。你也可以右键点击页面在上下文菜单中选择“添加到Fast Dial”来指定任何网页。
https://addons.mozilla.org/zh-cn/firefox/addon/fast-dial-5721/
string strip_tags ( string str [, string allowable_tags] ) 返回一个去除了HTML标签的字符串;可以使用第二个参数来设置不需要删除的标签。 这个函数是用来把HTML标签 还有XML标签 包括PHP标签都给省略去的一个函数。
使用方法:
前提:假如现在有这样一个字符串,
PHP代码
$str = "<p>我来自<b><a href='http://www.jackxiang.com'>Jackxiang的博客站</a></b></p>";
1.不保留任何HTML标签,代码会是这样:
PHP代码
echo strip_tags($str);
// 输出:我来自Jackxiang的博客站
2. 只保留<a>一个标签的话,只需要将<a>字符串写到strip_tags的第二个参数中,代码会是这样:
PHP代码
echo strip_tags($str, "<a>");
// 输出:我来自<a href='http://www.jackxiang.com'>Jackxiang的博客站</a>
3. 我们要保留<p>与<b>…多个标签,只需要将多个标签用空格分隔后写到strip_tags的第二个参数中,代码会是这样:
PHP代码
echo strip_tags($str, "<p> <b>");
// 输出:<p>我来自<b>Jackxiang的博客站</b></p>
问:这个标签可以多个不去掉吗?
空格间隔:上面的:
使用方法:
前提:假如现在有这样一个字符串,
PHP代码
$str = "<p>我来自<b><a href='http://www.jackxiang.com'>Jackxiang的博客站</a></b></p>";
1.不保留任何HTML标签,代码会是这样:
PHP代码
echo strip_tags($str);
// 输出:我来自Jackxiang的博客站
2. 只保留<a>一个标签的话,只需要将<a>字符串写到strip_tags的第二个参数中,代码会是这样:
PHP代码
echo strip_tags($str, "<a>");
// 输出:我来自<a href='http://www.jackxiang.com'>Jackxiang的博客站</a>
3. 我们要保留<p>与<b>…多个标签,只需要将多个标签用空格分隔后写到strip_tags的第二个参数中,代码会是这样:
PHP代码
echo strip_tags($str, "<p> <b>");
// 输出:<p>我来自<b>Jackxiang的博客站</b></p>
问:这个标签可以多个不去掉吗?
空格间隔:上面的:
echo strip_tags($str, "<p> <b>");
,空格隔开了<p>这儿是空格<b>; 即可!
linux的优势我想大家都知道,就是作为服务器,它非常高效稳定。然后对于一些24*7的服务器系统来说,即使系统非常稳定,也不能保证服务器时时刻刻都在运行,比如断电,服务进程异常停止,受到攻击崩溃点情况。为了解决这些问题,现在比较流行两台或者多台服务器集群,一台作为主服务器,令一台作为备用服务器,当主服务器的服务停止后,备用服务器立刻能够接管起主服务器的工作。
通过研究,发现linux下的这种工具很丰富。有免费的,也有收费的,比如linux-HA(http://www.linux-ha.org/),cman(也是不错的软件,通过图形界面来管理服务器节点)。还看到一个日本人开发的集群套件,单价几百万日元,当然这是因为收费的大多数原因是他们提供技术支持。
既然如此,到底这些集群软件是怎么实现的呢?其实并不复杂。
我写个简单的脚本来示范一下集群软件的工作原理,一台服务器是否在工作,我们可以形象地解释它有没有“心跳”
测试主机心跳点评脚本:我是以局域网中两台配置相同的机器,一台作为主服务器master(ip 192.168.0.1),令一台作
为备用服务器slave(ip 192.168.0.2,来提供httpd网站服务,网站的地址是192.168.0.111,属于master上一个浮动ip。
首先让主服务器开启网站服务,然后备用服务器关闭网站服务,运行如上脚本,然后slave会去ping master的IPI,并把
结果存入变量。光能ping通主机并不能保证网站服务还是可用的,于是我们用抓包软件抓取master的一张,若成功了,隔
三秒后再去重复以上步骤,ping不通slave就直接新建一个浮动ip,并开启httpd服务
若ping的通而抓不到包则slave也接管服务,并将master上的httpd服务当掉的消息存入日志。
当主服务器重新开机后,备用服务器应该把ip还给主服务器。于是当重新ping通master并抓包成功后,slave放弃浮动ip
并停止服务。
基本工作原理就是这样,区别在于集群软件用的相互之间测试心跳的途径不同,我用的是较为简单的icmp协议和测试服务
相结合的办法。简单实用,但是要考虑防火墙的具体配置情况,仅让192.168.0.2的icmp能通过,不让其他主机有机可趁于是
在master上配置防火墙。
来源:http://www.linuxdiyf.com/bbs/thread-70819-1-1.html
通过研究,发现linux下的这种工具很丰富。有免费的,也有收费的,比如linux-HA(http://www.linux-ha.org/),cman(也是不错的软件,通过图形界面来管理服务器节点)。还看到一个日本人开发的集群套件,单价几百万日元,当然这是因为收费的大多数原因是他们提供技术支持。
既然如此,到底这些集群软件是怎么实现的呢?其实并不复杂。
我写个简单的脚本来示范一下集群软件的工作原理,一台服务器是否在工作,我们可以形象地解释它有没有“心跳”
#!bin/bash
#description: I have created a cluster with two computers
#One is the master with IP--192.168.0.1
#The other one is the slave with IP--192.168.0.2
#The float_ip is 192.168.0.111
while true
do
ping 192.168.0.111 -c3 #&>/dev/null
result=$?
sleep 3
if [ $result -ne 0 ]
then
wget -t3 http://192.168.0.1 -O /dev/null #&>/dev/null
[ $? -ne 0 ] && ifconfig eth0:1 192.168.0.111
fi
&& echo "Master apache service is down">>/var/log/ha.log
if [ $result -eq 0 ]
then
ifconfig eth0:0|grep $float_ip
[ $? -ne 0 ] && ifconfig eth0:1 down
fi
done
#description: I have created a cluster with two computers
#One is the master with IP--192.168.0.1
#The other one is the slave with IP--192.168.0.2
#The float_ip is 192.168.0.111
while true
do
ping 192.168.0.111 -c3 #&>/dev/null
result=$?
sleep 3
if [ $result -ne 0 ]
then
wget -t3 http://192.168.0.1 -O /dev/null #&>/dev/null
[ $? -ne 0 ] && ifconfig eth0:1 192.168.0.111
fi
&& echo "Master apache service is down">>/var/log/ha.log
if [ $result -eq 0 ]
then
ifconfig eth0:0|grep $float_ip
[ $? -ne 0 ] && ifconfig eth0:1 down
fi
done
测试主机心跳点评脚本:我是以局域网中两台配置相同的机器,一台作为主服务器master(ip 192.168.0.1),令一台作
为备用服务器slave(ip 192.168.0.2,来提供httpd网站服务,网站的地址是192.168.0.111,属于master上一个浮动ip。
首先让主服务器开启网站服务,然后备用服务器关闭网站服务,运行如上脚本,然后slave会去ping master的IPI,并把
结果存入变量。光能ping通主机并不能保证网站服务还是可用的,于是我们用抓包软件抓取master的一张,若成功了,隔
三秒后再去重复以上步骤,ping不通slave就直接新建一个浮动ip,并开启httpd服务
若ping的通而抓不到包则slave也接管服务,并将master上的httpd服务当掉的消息存入日志。
当主服务器重新开机后,备用服务器应该把ip还给主服务器。于是当重新ping通master并抓包成功后,slave放弃浮动ip
并停止服务。
基本工作原理就是这样,区别在于集群软件用的相互之间测试心跳的途径不同,我用的是较为简单的icmp协议和测试服务
相结合的办法。简单实用,但是要考虑防火墙的具体配置情况,仅让192.168.0.2的icmp能通过,不让其他主机有机可趁于是
在master上配置防火墙。
iptables -I INPUT -p icmp --snat 192.168.0.2 -j accept
iptables -I INPUT -P icmp -j drop
对于基于TCP协议80端口的httpd服务也类似配置,这样就可以既实用又保证安全性了。iptables -I INPUT -P icmp -j drop
来源:http://www.linuxdiyf.com/bbs/thread-70819-1-1.html
1.数据库的操作:
perl对多种数据库操作都方法一样,且操作极其方便,简单,并且能够直接得到对数据库的操作结果。
Php对不同数据库操作方法不同,需要调用不同函数,且不能直接得到对数据库的操作结果。
Mod_perl对ORACLE数据库的访问速度快,在数据库访问速度上快于php。
2.Perl语言历史较长,在网上有很多的共享资源,实现各种功能的成熟的函数包内容丰富,性能稳定,经过了长期的测试,php的共
享资源没有perl丰富,因此在扩展性上不如perl.
Perl语言更能实现程序的模块化,面向对象,利于长期开发和大型网站,随着开发的深入,能够写出高效率的代码,代码的重用性高
,有利于后续版本的开发。
Php的嵌入式语言结构决定了它在代码重用和模块化管理上不如perl,它适用于短期的快速开发,但随着开发的深入,它比不过perl.
C语言也有很长的历史,但它不支持面向对象。
Java支持面向对象,优点很多,但限于目前的人力和能力,暂时无法使用。
3.在代码执行速度上,mod_perl与FastCGI采取了更好的解决方案,页面下载速度大为提高,并不次于php,优秀的函数包和访问率
高的页面可以采用驻留内存的方法。需要强调的是页面的下载速度是与多种因素有关的,如果采用模块化的编程,精简代码,速度怎
么会慢?只有效率不高的代码速度才会慢。
比较起来C和Java在执行速度上才具备真正的优势。
C也属于CGI脚本范畴,由perl向C语言转化比较容易,很多网站都采用这样的方式。
4.Perl的安装也更简单,perl是apache自带的,说明它们的结合更紧密,php需要自行安装。
5.放眼现在,国外真正优秀的门户网站都是用CGI编程,速度不慢,因为硬件设备是决定速度的关键。着眼未来,perl是一种稳定的
,扩展性强的,利于长期开发的语言,使用perl不会错。
Perl、PHP、ASP、JSP技术比较
本文将对目前最常用的四种动态网页语言Perl(Practical Extraction and Report Language)、PHP(Hypertext
Preprocessor)、ASP(Active Server Pages)、JSP(JavaServer Pages)进行一些技术性的比较。
Perl
Perl(Practical Extraction and Report Language)是一种很古老的脚本语言。最初的Web应用大多是用Perl编写的,Perl很
像C语言,使用非常灵活,对于文件操作和处理具有和C语言一样的方便快捷。
也正是因为Perl的灵活性和“过度”的冗余语法,也因此导致许多Perl程序的代码令人难以阅读和维护,因此使用的人在逐渐减
少,并且目前有被Python替代的可能。
另外Perl对于CPU的消耗似乎较高,效率似乎有一些不足。
Perl开发的成功案例:
Movable Type — 世界上使用最多的Blog系统之一,功能强大的足以和一个CMS系统相比拟。
Awstats — 非常经典的日志系统,速度极快,功能也非常强大。
结论:Perl在部分应用中能发挥很大优势,但其维护性差使得其普及变得很困难。
PHP
PHP(Hypertext Preprocessor)是一种嵌入HTML页面中的脚本语言。它大量地借用C和Perl语言的语法, 并结合PHP自己的特性
,使Web开发者能够快速地写出动态产生页面。
PHP是完全免费的开源产品,不用花钱,Apache和MYSQL也是用样免费开源,在国外非常流行,PHP和MYSQL搭配使用,可以非常快
速的搭建一套不错的动态网站系统,因此国外大多数主机系统都配有免费的APACHE+PHP+MYSQL。通常认为这种搭配的执行效率比
IIS+ASP+ACCESS要高,而后者的使用还必须另外交钱给微软。
PHP的语法和Perl很相似,但是PHP所包含的函数却远远多于Perl,PHP没有命名空间,编程时候必须努力避免模块的名称冲突。
一个开源的语言虽然需要简单的语法和丰富的函数,但PHP内部结构的天生缺陷导致了PHP不适合于编写比中小型业余网站更大的网站
。
PHP开发的成功案例:
MediaWiki — 著名的维基百科(Wiki)程序,如此庞大的条目居然只用PHP+MYSQL就能够支持,真是不可思议。
WordPress — 著名的Blog系统,功能上丝毫不输于Movable Type,不少用户都纷纷从Movable Type转移到了WordPress。
结论:PHP语法简单,非常易学易用,很利于快速开发各种功能不同的定制网站,PHP因为结构上的缺陷,使的PHP在复杂的大型
项目上的开发和维护都比较困难。
ASP
ASP(Active Server Pages)微软的Windows IIS系统自带的脚本语言,利用它可以执行动态的Web服务应用程序。ASP的语法非
常类似Visual BASIC,学过VB的人可以很快上手,ASP也是这几种脚本语言中最简单易学的开发语言。但ASP也是这几种语言中唯一的
一个不能很好支持跨平台的语言。
因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。
ASP在国内异常流行,因为国内大多使用的是盗版的Windows和盗版的SQLServer,而ASP+COM+SQLServer实际上也是一种不错的
搭配,其性能也不输于PHP+MYSQL,特别是Windows系统和SQLServer都有图形界面,比APACHE和MYSQL易于维护,因此对于不重视知识
产权的国家来说也是一种不错的选择。
不过,正因为ASP很简单,所以单纯使用ASP所能完成的功能也是有限的,好在COM(Component Object Model)技术拯救了ASP,
微软提供了COM/DCOM技术,极大拓宽了ASP的应用范围,使得ASP几乎具有无限可扩充性。
结论:和PHP一样,ASP简单而易于维护,很适合小型网站应用,通过DCOM和MTS技术,ASP甚至还可以完成小规模的企业应用,但
ASP的致命缺点就是不支持跨平台的系统,在大型项目开发和维护上非常困难。
JSP
JSP(JavaServer Pages)是Sun公司推出的一种动态网页技术。JSP技术是以Java语言作为脚本语言的,熟悉JAVA语言的人可以
很快上手。
JSP本身虽然也是脚本语言,但是却和PHP、ASP有着本质的区别。PHP和ASP都是由语言引擎解释执行程序代码,而JSP代码却被编
译成Servlet并由Java虚拟机执行,这种编译操作仅在对JSP页面的第一次请求时发生。因此普遍认为JSP的执行效率比PHP和ASP都高
。
JSP是一种服务器端的脚本语言,最大的好处就是开发效率较高,JSP可以使用JavaBeans或者EJB(Enterprise JavaBeans)来执
行应用程序所要求的更为复杂的处理,但是这种网站架构因为其业务规则代码与页面代码混为一团,不利于维护,因此并不适应大型
应用的要求,取而代之的是基于MVC的Web架构。MVC的核心思想是将应用分为模型、视图和控制器三部分。模型是指应用程序的数据
,以及对这些数据的操作;视图是指用户界面;控制器负责用户界面和程序数据之间的同步。通过MVC的Web架构,可以弱化各个部分
的耦合关系,并将业务逻辑处理与页面以及数据分离开来,这样当其中一个模块的代码发生改变时,并不影响其他模块的正常运行,
所以基于MVC的Web架构更适应于大型应用开发的潮流。
因此,不少国外的大型企业系统和商务系统都使用以上的MVC架构,能够支持高度复杂的基于Web的大型应用。
结论:JSP对于网站开发来讲不像PHP和ASP那样易学易用,支持JAVA的主机也少于支持PHP的主机,这从一定程度上限制了Java技
术在网站上的发展,不过在企业软件应用上来讲,MVC还是拥有相当大的优势的,虽然其配置和部署相对其他脚本语言来说要复杂一
些,但对于跨平台的中大型企业应用系统来讲,基于JAVA技术的MVC架构几乎成为唯一的选择。
周偶然与fcicq讨论到一个关于perlcc的优化问题。据说用perlcc将perl程序编译成C程序后再用gcc -O3进行优化,速度可能会快一些。于是就测了测,顺便试了试其他语言的情况。
测试程序是Ackermann函数。也许用它来做benchmark不太合适,但毕竟这是个纯数学+多次递归+耗时的运算,也能反映一定问题吧。
先来看Perl的原版。
$ cat ack.pl
#!/usr/bin/perl
sub ackermann {
my ( $m, $n ) = @_;
return $n + 1 if $m == 0;
return ackermann( $m - 1, 1 ) if $n == 0;
return ackermann( $m - 1, ackermann( $m, $n - 1 ) );
}
print ackermann( 3, 10 ), "\n";
#!/usr/bin/perl
sub ackermann {
my ( $m, $n ) = @_;
return $n + 1 if $m == 0;
return ackermann( $m - 1, 1 ) if $n == 0;
return ackermann( $m - 1, ackermann( $m, $n - 1 ) );
}
print ackermann( 3, 10 ), "\n";
$ time ./ack.pl
8189
real 1m5.044s
user 1m4.412s
sys 0m0.620s结果约为65秒。然后用perlcc编译并gcc -O3优化试试:
$ cp /usr/lib/perl5/5.8.8/i386-linux-thread-multi/auto/DynaLoader/DynaLoader.a .
$ ar xv DynaLoader.a # 先弄个必要的DynaLoader.o否则会连接错误
$ perl -c -o ack-perlcc.c ack.pl
$ gcc -O3 -c -o ack-perlcc.o `perl -MExtUtils::Embed -e ccopts` ack-perlcc.c
$ gcc -o ack-perlcc `perl -MExtUtils::Embed -e ldopts` DynaLoader.o ack-perlcc.o
$ time ./ack-perlcc
8189
real 1m3.487s
user 1m3.012s
sys 0m0.484s用了63秒,跟perl是同一数量级的。可见这个perlcc之后没什么效果。
遗憾之余顺手写了个纯C版本:
$ cat myack.c
#include <stdio.h>
int ackermann(int m, int n);
int main() {
int result = ackermann(3, 10);
printf("%d\n", result);
return 0;
}
int ackermann(int m, int n) {
if (m == 0) return n+1;
if (n == 0) return ackermann(m-1, 1);
return ackermann(m-1, ackermann(m, n-1));
}
int ackermann(int m, int n);
int main() {
int result = ackermann(3, 10);
printf("%d\n", result);
return 0;
}
int ackermann(int m, int n) {
if (m == 0) return n+1;
if (n == 0) return ackermann(m-1, 1);
return ackermann(m-1, ackermann(m, n-1));
}
$ gcc -O3 -o myack myack.c
$ time ./myack
8189
real 0m0.231s
user 0m0.228s
sys 0m0.004s哇!0.23秒,比perl语言快了280倍以上。看来谈到效率时果然C语言才是王道。也难怪为什么C程序员的待遇那么高了。
当然这个程序是纯粹的数学运算,发挥不出perl的长处,才会让perl效率如此低吧。
PHP也有同样的问题。还是这个Ackermann函数,用纯PHP写出来的效率很低,但如果将函数写成php extension再调用,效率几乎等同于C语言的效率。于是得出个结论,复杂的算法还是不要用PHP直接实现,而是写成extension吧。
浏览器显示出了json串,如何打印串里面的内容咧?
如访问:www.jackxiang.com/json.php出现如下内容:
我们在浏览器里面输入下面的javascript后,就可以取出里面的comment:
多重Json的打印方法:
浏览器器显示Json串如下:
通过在浏览器输入网址的地方输入Js打印多维Json如下:
类型判断:
多维数组的类型判断如下:
显示:string
如访问:www.jackxiang.com/json.php出现如下内容:
{"comment":"\u6bcf\u4e2aQQ\u6bcf\u4e2a\u5956\u54c1\u80fd\u4e2d\u51e0\u6b21,\u6bcf\u4e2aQQ\u6bcf\u4e2a\u5956\u54c1\u80fd\u4e2d\u51e0\u6b21","code":100,"message":"\u5f88\u9057\u61be\uff0c\u60a8\u6ca1\u6709\u4e2d\u5956\uff0c\u518d\u63a5\u518d\u5389\u54e6\uff01","gotoUrl":"","view":"component\/view\/json.php"}
我们在浏览器里面输入下面的javascript后,就可以取出里面的comment:
javascript:eval("var c = " + document.body.innerHTML);alert(c.comment);
多重Json的打印方法:
浏览器器显示Json串如下:
通过在浏览器输入网址的地方输入Js打印多维Json如下:
类型判断:
多维数组的类型判断如下:
显示:string
默认情况下,find 是区分大小写的。对于不区分大小写的 find,将 -iname 测试替换为 -name 测试。
find downloads -iname "*.gif"
downloads/.xvpics/Calendar05_enlarged.gif
downloads/lcmgcfexsmall.GIF
不区分大小写的find命令的写法:
find downloads -iname "*.gif"
downloads/.xvpics/Calendar05_enlarged.gif
downloads/lcmgcfexsmall.GIF
[~/find]# ll
total 12K
-rw-r--r-- 1 root 5 2010-10-12 15:13 aa.txt
-rw-r--r-- 1 root 5 2010-10-12 15:10 a.txt
-rw-r--r-- 1 root 5 2010-10-12 15:10 A.TXT
total 12K
-rw-r--r-- 1 root 5 2010-10-12 15:13 aa.txt
-rw-r--r-- 1 root 5 2010-10-12 15:10 a.txt
-rw-r--r-- 1 root 5 2010-10-12 15:10 A.TXT
不区分大小写的find命令的写法:
[~/find]# find . -iname "a.txt"
./A.TXT
./a.txt
./A.TXT
./a.txt
关于解释型编程语言,比如VB,比如word里,excel的宏,比如javascript,比如网游客户端安装升级程序.都是脚本语言,小型的娱乐型游戏也可以用脚本语言来编写.
解释型语言的优点,在于简单,易学,但是最重要的是它有编译型语言无可比拟的动态性!!!
多少年来,编译型语言就在努力的向解释型语言进化,比如从C到C++的动态编译技术.什么继承,重载,多态等.而之后更为高级的COM技术.实现了动态链接.(接口标准化)
但是,即使编译型语言做了这么多,依然无法和解释型语言的动态性相比.因为编译语言为了追求它的高速效率,不得不将程序固定化为机器语言.它依然无法做到,在程序运行时根据环境自己为自己编写新的程序.
比如javascript 的动态创建函数 var sum = new Function("x","y",mstring),其中的msting是个字符串变量,是程序在运行时才产生的代码.实在是太强了....
解释型语言就像人,而编译型语言就像机器,虽然机器在力量,速度上比人厉害很多,但是却没有人的学习能力和创造力.
一直一直以来,我就在想,未来有智能机器人么.未来的机器人能产生智慧么?在学C的时候挺失望,在学C++时有那么点希望,现在则是很有希望的.
编译型语言不是说不能做到动态化生成新程序,只是现在还没有,因为太难,还没有天才发明出来,但是理论上是可以的.
从某种意义上说,编译器都是一个超智能的程序,而且是动态生成新程序的程序.
来源:http://hi.baidu.com/lalafengche/blog/item/8f4202d17870ebdd562c840a.html
解释型语言的优点,在于简单,易学,但是最重要的是它有编译型语言无可比拟的动态性!!!
多少年来,编译型语言就在努力的向解释型语言进化,比如从C到C++的动态编译技术.什么继承,重载,多态等.而之后更为高级的COM技术.实现了动态链接.(接口标准化)
但是,即使编译型语言做了这么多,依然无法和解释型语言的动态性相比.因为编译语言为了追求它的高速效率,不得不将程序固定化为机器语言.它依然无法做到,在程序运行时根据环境自己为自己编写新的程序.
比如javascript 的动态创建函数 var sum = new Function("x","y",mstring),其中的msting是个字符串变量,是程序在运行时才产生的代码.实在是太强了....
解释型语言就像人,而编译型语言就像机器,虽然机器在力量,速度上比人厉害很多,但是却没有人的学习能力和创造力.
一直一直以来,我就在想,未来有智能机器人么.未来的机器人能产生智慧么?在学C的时候挺失望,在学C++时有那么点希望,现在则是很有希望的.
编译型语言不是说不能做到动态化生成新程序,只是现在还没有,因为太难,还没有天才发明出来,但是理论上是可以的.
从某种意义上说,编译器都是一个超智能的程序,而且是动态生成新程序的程序.
来源:http://hi.baidu.com/lalafengche/blog/item/8f4202d17870ebdd562c840a.html
R表示run
s代表sleep
那么R与s合起来是什么?
以及大写S与小写s有什么区别.
经常看到Ss的状态。
发现这个版本的ps和top里面是有Ss的
man了一下 ps和top
解释如下
PROCESS STATE CODES
Here are the different values that the s, stat and state output specifiers
(header "STAT" or "S") will display to describe the state of a process.
D Uninterruptible sleep (usually IO)
R Running or runnable (on run queue)
S Interruptible sleep (waiting for an event to complete)
T Stopped, either by a job control signal or because it is being traced.
W paging (not valid since the 2.6.xx kernel)
X dead (should never be seen)
Z Defunct ("zombie") process, terminated but not reaped by its parent.
For BSD formats and when the stat keyword is used, additional characters may
be displayed:
< high-priority (not nice to other users)
N low-priority (nice to other users)
L has pages locked into memory (for real-time and custom IO)
s is a session leader
l is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)
+ is in the foreground process group
s代表sleep
那么R与s合起来是什么?
以及大写S与小写s有什么区别.
经常看到Ss的状态。
发现这个版本的ps和top里面是有Ss的
man了一下 ps和top
解释如下
PROCESS STATE CODES
Here are the different values that the s, stat and state output specifiers
(header "STAT" or "S") will display to describe the state of a process.
D Uninterruptible sleep (usually IO)
R Running or runnable (on run queue)
S Interruptible sleep (waiting for an event to complete)
T Stopped, either by a job control signal or because it is being traced.
W paging (not valid since the 2.6.xx kernel)
X dead (should never be seen)
Z Defunct ("zombie") process, terminated but not reaped by its parent.
For BSD formats and when the stat keyword is used, additional characters may
be displayed:
< high-priority (not nice to other users)
N low-priority (nice to other users)
L has pages locked into memory (for real-time and custom IO)
s is a session leader
l is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)
+ is in the foreground process group
C:\Documents and Settings\jackxiang>tracert 172.25.38.70
Tracing route to neatframework.qq.com [172.25.38.70]
over a maximum of 30 hops:
..........
Trace complete.
Tracing route to neatframework.qq.com [172.25.38.70]
over a maximum of 30 hops:
..........
Trace complete.
1.最基本,最常用的,测试物理网络的
ping 192.168.0.8 -t ,参数-t是等待用户去中断测试
2.查看DNS、IP、Mac等
A.Win98:winipcfg
B.Win2000以上:Ipconfig/all
C.NSLOOKUP:如查看河北的DNS
C:\>nslookup
Default Server: ns.hesjptt.net.cn
Address: 202.99.160.68
>server 202.99.41.2 则将DNS改为了41.2
> pop.pcpop.com
Server: ns.hesjptt.net.cn
Address: 202.99.160.68
Non-authoritative answer:
Name: pop.pcpop.com
Address: 202.99.160.212
3.网络信使 (经常有人问的~)
Net send 计算机名/IP|* (广播) 传送内容,注意不能跨网段
net stop messenger 停止信使服务,也可以在面板-服务修改
net start messenger 开始信使服务
4.探测对方对方计算机名,所在的组、域及当前用户名 (追捕的工作原理)
ping -a IP -t ,只显示NetBios名
nbtstat -a 192.168.10.146 比较全的
5.netstat -a 显示出你的计算机当前所开放的所有端口
netstat -s -e 比较详细的显示你的网络资料,包括TCP、UDP、ICMP 和 IP的统计等
6.探测arp绑定(动态和静态)列表,显示所有连接了我的计算机,显示对方IP和MAC地址
arp -a
7.在代理服务器端
捆绑IP和MAC地址,解决局域网内盗用IP!:
ARP -s 192.168.10.59 00 -50-ff-6c-08-75
解除网卡的IP与MAC地址的绑定:
arp -d 网卡IP
8.在网络邻居上隐藏你的计算机 (让人家看不见你!)
net config server /hidden:yes
net config server /hidden:no 则为开启
9.几个net命令
A.显示当前工作组服务器列表 net view,当不带选项使用本命令时,它就会显示当前域或网络上的计算机上的列表。
比如:查看这个IP上的共享资源,就可以
C:\>net view 192.168.10.8
在 192.168.10.8 的共享资源
资源共享名 类型 用途 注释
--------------------------------------
网站服务 Disk
命令成功完成。
B.查看计算机上的用户帐号列表 net user
C.查看网络链接 net use
例如:net use z: \\192.168.10.8\movie 将这个IP的movie共享目录映射为本地的Z盘
D.记录链接 net session
例如:
C:\>net session
计算机 用户名 客户类型 打开空闲时间
-------------------------------------------------------------------------------
\\192.168.10.110 ROME Windows 2000 2195 0 00:03:12
\\192.168.10.51 ROME Windows 2000 2195 0 00:00:39
命令成功完成。
10.路由跟踪命令
A.tracert pop.pcpop.com
B.pathping pop.pcpop.com 除了显示路由外,还提供325S的分析,计算丢失包的%
11.关于共享安全的几个命令
A.查看你机器的共享资源 net share
B.手工删除共享(可以编个bat文件,开机自运行,把共享都删了!)
net share c$ /d
net share d$ /d
net share ipc$ /d
net share admin$ /d
注意$后有空格。
C.增加一个共享:
c:\net share mymovie=e:\downloads\movie /users:1
mymovie 共享成功。
同时限制链接用户数为1人。
12.在DOS行下设置静态IP
A.设置静态IP
CMD
netsh
netsh>int
interface>ip
interface ip>set add "本地链接" static IP地址 mask gateway
B.查看IP设置
interface ip>show address
Arp
显示和修改“地址解析协议 (ARP)”缓存中的项目。ARP 缓存中包含一个或多个表,它们用于存储 IP 地址及其经过解析的以太网或令牌环物理地址。计算机上安装的每一个以太网或令牌环网络适配器都有自己单独的表。如果在没有参数的情况下使用,则 arp 命令将显示帮助信息。
语法
arp [-a [InetAddr] [-N IfaceAddr]] [-g [InetAddr] [-N IfaceAddr]] [-d InetAddr [IfaceAddr]] [-s InetAddr EtherAddr [IfaceAddr]]
参数
-a [InetAddr] [-N IfaceAddr]
显示所有接口的当前 ARP 缓存表。要显示指定 IP 地址的 ARP 缓存项,请使用带有 InetAddr 参数的 arp -a,此处的 InetAddr 代表指定的 IP 地址。要显示指定接口的 ARP 缓存表,请使用 -N IfaceAddr 参数,此处的 IfaceAddr 代表分配给指定接口的 IP 地址。-N 参数区分大小写。
-g [InetAddr] [-N IfaceAddr]
与 -a 相同。
-d InetAddr [IfaceAddr]
删除指定的 IP 地址项,此处的 InetAddr 代表 IP 地址。对于指定的接口,要删除表中的某项,请使用 IfaceAddr
参数,此处的 IfaceAddr 代表分配给该接口的 IP 地址。要删除所有项,请使用星号 (*) 通配符代替 InetAddr。
-s InetAddr EtherAddr [IfaceAddr]
向 ARP 缓存添加可将 IP 地址 InetAddr 解析成物理地址 EtherAddr 的静态项。要向指定接口的表添加静态 ARP 缓存项,请使用 IfaceAddr 参数,此处的 IfaceAddr 代表分配给该接口的 IP 地址。
/?
在命令提示符显示帮助。
注释
InetAddr 和 IfaceAddr 的 IP 地址用带圆点的十进制记数法表示。
物理地址 EtherAddr 由六个字节组成,这些字节用十六进制记数法表示并且用连字符隔开(比如,00-AA-00-4F-2A-9C)。
通过 -s 参数添加的项属于静态项,它们不会 ARP 缓存中超时。如果终止 TCP/IP 协议后再启动,这些项会被删除。要创建永久的静态 ARP 缓存项,请在批处理文件中使用适当的 arp 命令并通过“计划任务程序”在启动时运行该批处理文件。
只有当网际协议 (TCP/IP) 协议在 网络连接中安装为网络适配器属性的组件时,该命令才可用。
范例
要显示所有接口的 ARP 缓存表,可键入:
arp -a
对于指派的 IP 地址为 10.0.0.99 的接口,要显示其 ARP 缓存表,可键入:
arp -a -N 10.0.0.99
要添加将 IP 地址 10.0.0.80 解析成物理地址 00-AA-00-4F-2A-9C 的静态 ARP 缓存项,可键入:
arp -s 10.0.0.80 00-AA-00-4F-2A-9C
cat命令功能用于显示整个文件的内容单独使用没有翻页功能因此经常和more命令搭配使用,cat命令还有就是将数个文件合并成一个文件的功能。
more命令功能:让画面在显示满一页时暂停,此时可按空格健继续显示下一个画面,或按Q键停止显示。
less命令功能:less命令的用法与more命令类似,也可以用来浏览超过一页的文件。所不同的是less命令除了可以按空格键向下显示文件外,还可以利用上下键来卷动文件。当要结束浏览时,只要在less命令的提示符“:”下按Q键即可。
其实这三个命令除了cat命令有合并文件的功能,其余功能上相近,只是从浏览习惯和显示方式上有所不同。
less 是 Linux 平台下最常用全屏文件查看程序……(此处省略一万字)……可谓”人类的好朋友“ ^_^!!
但是 less 显示的内容总是灰头土脸的,很让人不爽
我无意中发现一个秘密,可以让 less 摇身一变,摩登又靓丽
首先安装 source-highlight (这个工具主要用途是将文件转换为语法高亮的 html 页面,有兴趣的话可以试一下)
在 shell 的配置文件中添加以下语句 (如果是 bash 的话就是 .bashrc)
PAGER='less -X -M' export LESSOPEN="| /usr/bin/src-hilite-lesspipe.sh %s" export LESS=' -R '
看看效果 source .bashrc less xxx
/usr/share/source-highlight/default.lang 文件可以设置默认语言类型,添加 include "sh.lang" 然后 less .bashrc
less 是 Linux 平台下最常用全屏文件查看程序……(此处省略一万字)……可谓”人类的好朋友“ ^_^!!
但是 less 显示的内容总是灰头土脸的,很让人不爽
我无意中发现一个秘密,可以让 less 摇身一变,摩登又靓丽
首先安装 source-highlight
(这个工具主要用途是将文件转换为语法高亮的 html 页面,有兴趣的话自己研究下吧)
然后在 shell 的配置文件中写入以下语句
(如果是 bash 的话,就是 .bashrc)
PAGER='less -X -M'
#src-hilite-lesspipe.sh 文件的路径在不同的系统中可能会不一样
export LESSOPEN="| /usr/bin/src-hilite-lesspipe.sh %s"
export LESS=' -R '
然后就可以试验一下效果了:)
source .bashrc
less xxx(责任编辑:A6)
原文链接:http://linuxtoy.org/archives/less-highlight.html
more命令功能:让画面在显示满一页时暂停,此时可按空格健继续显示下一个画面,或按Q键停止显示。
less命令功能:less命令的用法与more命令类似,也可以用来浏览超过一页的文件。所不同的是less命令除了可以按空格键向下显示文件外,还可以利用上下键来卷动文件。当要结束浏览时,只要在less命令的提示符“:”下按Q键即可。
其实这三个命令除了cat命令有合并文件的功能,其余功能上相近,只是从浏览习惯和显示方式上有所不同。
less 是 Linux 平台下最常用全屏文件查看程序……(此处省略一万字)……可谓”人类的好朋友“ ^_^!!
但是 less 显示的内容总是灰头土脸的,很让人不爽
我无意中发现一个秘密,可以让 less 摇身一变,摩登又靓丽
首先安装 source-highlight (这个工具主要用途是将文件转换为语法高亮的 html 页面,有兴趣的话可以试一下)
在 shell 的配置文件中添加以下语句 (如果是 bash 的话就是 .bashrc)
PAGER='less -X -M' export LESSOPEN="| /usr/bin/src-hilite-lesspipe.sh %s" export LESS=' -R '
看看效果 source .bashrc less xxx
/usr/share/source-highlight/default.lang 文件可以设置默认语言类型,添加 include "sh.lang" 然后 less .bashrc
less 是 Linux 平台下最常用全屏文件查看程序……(此处省略一万字)……可谓”人类的好朋友“ ^_^!!
但是 less 显示的内容总是灰头土脸的,很让人不爽
我无意中发现一个秘密,可以让 less 摇身一变,摩登又靓丽
首先安装 source-highlight
(这个工具主要用途是将文件转换为语法高亮的 html 页面,有兴趣的话自己研究下吧)
然后在 shell 的配置文件中写入以下语句
(如果是 bash 的话,就是 .bashrc)
PAGER='less -X -M'
#src-hilite-lesspipe.sh 文件的路径在不同的系统中可能会不一样
export LESSOPEN="| /usr/bin/src-hilite-lesspipe.sh %s"
export LESS=' -R '
然后就可以试验一下效果了:)
source .bashrc
less xxx(责任编辑:A6)
原文链接:http://linuxtoy.org/archives/less-highlight.html
1、人一定要做自己喜欢并擅长的事情;
2、认准了,就去做;不跟风,不动摇;
3、专注如一;4、把事情做到极致;
5、少许诺、多兑现;
6、让数据说话;
7、问题驱动;
8、不唯上;
9、对事不对人;
10、创新求变;
11、允许试错;
12、迅速迭代,越变越美;
13、保持学习心态;
14、遇到新事物,先看看别人是怎么干的;
15、高效率执行;
16、用流程解决共性问题;
17、你不是孤军;
18、打破部门樊篱;
19、主动分享;
20、一定要找最优秀的人才;
21、给最自由的空间;
22、证明自己,用结果说话;
23、一个人最重要的能力是判断力;
24、每个人都要捡起地上的垃圾;
25、百度不仅是李彦宏的,更是每一个百度人的;
26、用户需求决定一切;
27、听多数人的意见,和少数人商量,自己做决定;
28、帮助别人,成就自己;
29、公司离破产永远只有30天。
2、认准了,就去做;不跟风,不动摇;
3、专注如一;4、把事情做到极致;
5、少许诺、多兑现;
6、让数据说话;
7、问题驱动;
8、不唯上;
9、对事不对人;
10、创新求变;
11、允许试错;
12、迅速迭代,越变越美;
13、保持学习心态;
14、遇到新事物,先看看别人是怎么干的;
15、高效率执行;
16、用流程解决共性问题;
17、你不是孤军;
18、打破部门樊篱;
19、主动分享;
20、一定要找最优秀的人才;
21、给最自由的空间;
22、证明自己,用结果说话;
23、一个人最重要的能力是判断力;
24、每个人都要捡起地上的垃圾;
25、百度不仅是李彦宏的,更是每一个百度人的;
26、用户需求决定一切;
27、听多数人的意见,和少数人商量,自己做决定;
28、帮助别人,成就自己;
29、公司离破产永远只有30天。
在href后面写javascript往往会出现重定向的问题,特别是有return false的情况,如下: return false;
如何阻止其重定向咧?有下面的一些方法:
方法1:
方法2:
<a href="javascript:;" onclick="return qianpiao()">
方法3:
直接浏览器工具输入栏中的调试防止重新定向的方法:
javascript:qiangpiao();alert(1); //这样来直接调试某些js代码的函数,不加alert(1)会直接重定向,就不好调试了,必须加上!
function qiangpiao()
{
alert("温馨提示:功能近期开放,敬请期待!");
return false;
}
{
alert("温馨提示:功能近期开放,敬请期待!");
return false;
}
如何阻止其重定向咧?有下面的一些方法:
方法1:
<a href="javascript:qiangpiao();void(0);">
<div style="background:#ffffff" onmouseover="style.backgroundColor='#800800'" onmouseout="style.backgroundColor='#ffffff'">我要抢票</div></a>
<div style="background:#ffffff" onmouseover="style.backgroundColor='#800800'" onmouseout="style.backgroundColor='#ffffff'">我要抢票</div></a>
方法2:
<a href="javascript:;" onclick="return qianpiao()">
<a href="javascript:;" onclick="return qiangpiao()">
<div style="background:#ffffff" onmouseover="style.backgroundColor='#800800'" onmouseout="style.backgroundColor='#ffffff'">我要抢票</div></a>
<div style="background:#ffffff" onmouseover="style.backgroundColor='#800800'" onmouseout="style.backgroundColor='#ffffff'">我要抢票</div></a>
方法3:
直接浏览器工具输入栏中的调试防止重新定向的方法:
javascript:qiangpiao();alert(1); //这样来直接调试某些js代码的函数,不加alert(1)会直接重定向,就不好调试了,必须加上!
javascript:qiangpiao();void(0);
这样也OK的!javascript:alert(document.body.innerHTML);
有位兄台确实有点毅力,自己定位了一个交友的项目,利用业余时间,耗时一年多,从市场调研,到需求,到设计,到开发,到测试,到服务器架设部署,直到正式上线,全都是他一个人做的,甚至连美工的活他也给做了。前段脑门一热,用私房钱,扛了个Dell的服务器回来,近2W的机器他竟说这是为了表明在投资自己,鼓励自己继续做下去,晕倒!!不过这样也好,这才像个网站,像个做事的主儿。
记住!要有这样的毅力才有可能会成功!只要做好一件事情就行了!
记住!要有这样的毅力才有可能会成功!只要做好一件事情就行了!
开始迷茫,不知道学什么好……
我很喜欢linux,还有喜欢嵌入式,还有mini2440板,梦想是做linux工程师
近两个月了,从shell到python到qt4到linux内核,都是我涉猎学习的对象,孜孜不倦。有时停下来,问自己,明年毕业,你找得到好工作吗?听说现在工作都好难找,特别是我们本科生,哎。不想也放弃读研,因为我是山区出来的,家里情况不太好
我已经对linux渐渐熟悉了,但觉得自己学的东西都是肤浅的,开始想找个方向往深度发展下去,也为明年毕业找工作准备,就在这时,我迷茫了
大家帮帮我,讨论下我下步应该深入学习什么好,怎么规划好我的人生?
把C学好,你就能找到嵌入式的工作。
至于其它的,等你找到工作再学也不迟,有C的底子搞其它也不是太难的事情。
至于qt/gtk/python之类的,不是说不用,而是具体的公司有具体的用途,去了再学也不迟。
编程的话,学习基本的编程思想,打好基本功,胜过一切。
那些“框架”“图形库”之类的完全没有必要学,因为每个公司都有自己的一套,你学任何一种,换个公司就没用了。
C怎么学?不抄代码,完全靠自己写一年的代码,一年大概就是三五万行代码的经验,明年这时候你想找不到工作都难。
多想不如多做。语言其实都一样。
如果想搞一辈子技术,起码你可以精通两种语言(脚本),熟练应用至少4种语言(脚本)。所以说现在学什么都已样。我说是涉猎广的话,就是完全有精力去多学语言和不同领域,因为不同领域所用到的语言都几乎不同的。但归根结底是“内功”。
如果不想搞一辈子技术,只想通过技术吃口饭,那么学什么都可以吃饭的,所以为什么要挑呢?
看出发点吧。想做嵌入式,还是学C。
想做Linux应用还是学C/C++最好。
python写的好的人C都不错。
而写C写的好的,算法和数据结构都比较牛。
所以总结来说:想搞Linux,C是必经之路。或者就是你的尚方宝剑。宝剑是否锋利全在算法和数据结构中了。
个人拙见。。欢迎拍砖。
C怎么学?不抄代码,完全靠自己写一年的代码,一年大概就是三五万行代码的经验,明年这时候你想找不到工作都难。
俺听 poet 大虾的!
来源:http://forum.ubuntu.org.cn/viewtopic.php?f=88&t=210926&start=15
我很喜欢linux,还有喜欢嵌入式,还有mini2440板,梦想是做linux工程师
近两个月了,从shell到python到qt4到linux内核,都是我涉猎学习的对象,孜孜不倦。有时停下来,问自己,明年毕业,你找得到好工作吗?听说现在工作都好难找,特别是我们本科生,哎。不想也放弃读研,因为我是山区出来的,家里情况不太好
我已经对linux渐渐熟悉了,但觉得自己学的东西都是肤浅的,开始想找个方向往深度发展下去,也为明年毕业找工作准备,就在这时,我迷茫了
大家帮帮我,讨论下我下步应该深入学习什么好,怎么规划好我的人生?
把C学好,你就能找到嵌入式的工作。
至于其它的,等你找到工作再学也不迟,有C的底子搞其它也不是太难的事情。
至于qt/gtk/python之类的,不是说不用,而是具体的公司有具体的用途,去了再学也不迟。
编程的话,学习基本的编程思想,打好基本功,胜过一切。
那些“框架”“图形库”之类的完全没有必要学,因为每个公司都有自己的一套,你学任何一种,换个公司就没用了。
C怎么学?不抄代码,完全靠自己写一年的代码,一年大概就是三五万行代码的经验,明年这时候你想找不到工作都难。
多想不如多做。语言其实都一样。
如果想搞一辈子技术,起码你可以精通两种语言(脚本),熟练应用至少4种语言(脚本)。所以说现在学什么都已样。我说是涉猎广的话,就是完全有精力去多学语言和不同领域,因为不同领域所用到的语言都几乎不同的。但归根结底是“内功”。
如果不想搞一辈子技术,只想通过技术吃口饭,那么学什么都可以吃饭的,所以为什么要挑呢?
看出发点吧。想做嵌入式,还是学C。
想做Linux应用还是学C/C++最好。
python写的好的人C都不错。
而写C写的好的,算法和数据结构都比较牛。
所以总结来说:想搞Linux,C是必经之路。或者就是你的尚方宝剑。宝剑是否锋利全在算法和数据结构中了。
个人拙见。。欢迎拍砖。
C怎么学?不抄代码,完全靠自己写一年的代码,一年大概就是三五万行代码的经验,明年这时候你想找不到工作都难。
俺听 poet 大虾的!
来源:http://forum.ubuntu.org.cn/viewtopic.php?f=88&t=210926&start=15