单引号和双引号的区别和效率问题,但还是很多朋友包括本人了解的不是很清楚,一直以为PHP中单引号和双引号是互通的,到有一天,发现单引号和双引号出现错误的时候才去学习研究。所以今天再拿出来谈谈他们的区别,希望大家不要再为此困惑。
” ” 双引号里面的字段会经过编译器解释,然后再当作HTML代码输出。阅读全文
” ” 双引号里面的字段会经过编译器解释,然后再当作HTML代码输出。阅读全文
一直搞不明白三者区别,今天写下。
htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。
预定义的字符是:
& (和号) 成为 &
" (双引号) 成为 "
' (单引号) 成为 '
< (小于) 成为 <
> (大于) 成为 >
addslashes() 函数在指定的预定义字符前添加反斜杠。
这些预定义字符是:
单引号 (')
双引号 (")
反斜杠 (\)
NULL
Who's John Adams? This is not safe in a database query.
Who\'s John Adams? This is safe in a database query.
strip_tags() 函数剥去 HTML、XML 以及 PHP 的标签。
即不带任何的标记,转换成字符串。
strip_tags(string,allow)
参数 描述
string 必需。规定要检查的字符串。
allow 可选。规定允许的标签。这些标签不会被删除
htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。
预定义的字符是:
& (和号) 成为 &
" (双引号) 成为 "
' (单引号) 成为 '
< (小于) 成为 <
> (大于) 成为 >
addslashes() 函数在指定的预定义字符前添加反斜杠。
这些预定义字符是:
单引号 (')
双引号 (")
反斜杠 (\)
NULL
Who's John Adams? This is not safe in a database query.
Who\'s John Adams? This is safe in a database query.
strip_tags() 函数剥去 HTML、XML 以及 PHP 的标签。
即不带任何的标记,转换成字符串。
strip_tags(string,allow)
参数 描述
string 必需。规定要检查的字符串。
allow 可选。规定允许的标签。这些标签不会被删除
[个人原创]Curl模拟Host和Ip对应关系实现POST和GET请求,不用设置Host文件也可直接访问对应的虚拟机和IP对应位置。以及如何模拟客户端IP的方法。
Unix/LinuxC技术 jackxiang 2011-7-1 19:56
背景:http://jackxiang.com/post/2656/ 里有通过php进行curl配置并进行模拟IP来进行请求:PHP的curl扩展为我们用了CURLOPT_HTTPHEADER来做host的工作, curl -l -H "Host:test3.qq.com" http://17.2*.*.70/index.php,这儿讲一下用shell下的curl来一行进行模拟及其用wireshark进行抓包发现其http的头的原理。自己之前写过放在这儿:jackxiang.com/post/2656/
____________实践有用的Curl强大功能________________
用Curl直接模拟Host方法,Curl伪造Refer的方法:
http://jackxiang.com/post/6201/
获取cookie后,模拟refer并带上cookie通过curl访问某个接口:
http://jackxiang.com/post/4082/
PHP用CURL伪造IP和来源:
http://jackxiang.com/post/6201/
______________________________________________
参考:http://get.ftqq.com/9091.get
完整示例只传入data,其它项默认即可:
调用示例:
实现GET请求成功,注意 header是数组,参考来自:http://get.ftqq.com/9091.get ,关于Host: xxx.xx.com在Header里是数组,否则会报警告:
第三行改为
$header[] = "Content-type: text/xml"; // 改为数组解决
配置文件:
'SETEGGSHOST' => 'Host: wx.xxx.com',
'SETEGGSHTTP' => 'http://%s/Api/Eggs/Eggs/doSetTemp',
'SETEGGSPARA' => 'eid=%s&temp=%s&humi=%s',
最后,Host: wx.xx.com =数组传入=》 $setEggsHostArr = array(Config::getInstance()->getConf('SETEGGSHOST'));得注意。
Host: wx.xx.com eid=83419527&temp=38.2&humi=45 http://wx.xx.com/Api/Eggs/Eggs/doSetTempbool
—————————————————————Curl模拟Host和Ip对应关系—————————————————————
一个是Linux命令行来实现,二是从PHP编码上来实现不用修改Linux的Host就可能实现对虚拟主机的访问,实现如下:
一.假如70上有一个test3.qq.com ,我们在Windows下还需要通过
对Host加入配置:
后,
才能通过浏览器访问,而我们如果不加就不能访问。
现在,可以通过Curl来不用修改host文件也能访问,如下:
去Host:
用Curl直接模拟Host如下:
如果看代码图片:
curl -l -H "Host:mytv.jackxiang.com" http://127.0.0.1/uploads/temp/201310261334109440.jpg > xdy.jpg
-----------------------------------------------------------------------------------------------------------------------------------------------------------
如果有&号连接的Url需要对Url加引号:
curl -l --silent -v -H "Host:api.xdxp.cn" "http://115.182.35.108/general/getVideoCategoryList?uid=100&videoCategoryIds=15,16,17,18,19,20,31&format=json"
* Trying 115.182.35.108... connected
* Connected to 115.182.35.108 (115.182.35.108) port 80 (#0)
> GET /general/getVideoCategoryList?uid=100&videoCategoryIds=15,16,17,18,19,20,31&format=json HTTP/1.1
不加引号的情况:
curl -l --silent -v -H "Host:api.xdxp.cn" http://115.182.35.108/general/getVideoCategoryList?uid=100&videoCategoryIds=15,16,17,18,19,20,31&format=json
* About to connect() to 115.182.35.108 port 80 (#0)
* Trying 115.182.35.108... connected
* Connected to 115.182.35.108 (115.182.35.108) port 80 (#0)
> GET /general/getVideoCategoryList?uid=100 HTTP/1.1
-----------------------------------------------------------------------------------------------------------------------------------------------------------
与此同时,我们还能通过在Linux自己带的Curl来进行不用设置/etc/hosts来实现我们自己的模拟host访问。这样在调试接口等就不用我们自己每次都修改Host文件了,带来了极大的方便。
二.我们在PHP代码编程使用中PHP设置Curl参数来实现的代码片段如下,注意传入的是IP,而Host设置在函数的代码中:
如一个域名有两个IP,如何来实现调用的简单实现,这样有利于分担接口负载,如下:
综上所述,其本质是模拟了Http协议的头,想了解更多请看我之前写的一篇文章:
《PHP CURL CURLOPT_HTTPHEADER设置HOST(也就是不用配置host访问),Curl伪造Refer的方法及其杂谈》
Url:http://jackxiang.com/post/4022/
—————————————————————伪造客户端IP—————————————————————
一)这就是伪造的Curl的PHP代码:
curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-FORWARDED-FOR:'.$sendip, 'CLIENT-IP:'.$sendip));
来自:http://www.phpec.org/php/curl.html
参考:http://www.onlypo.com/archives/7
二)在Linux的Shell环境下如何不用PHP设置Header呢?
linux curl http header处理:
设置http请求头信息:
curl -A "Mozilla/5.0 Firefox/21.0" http://www.baidu.com #设置http请求头User-Agent
curl -e "http://pachong.org/" http://www.baidu.com #设置http请求头Referer
curl -H "Connection:keep-alive \n User-Agent: Mozilla/5.0" http://www.aiezu.com
来自:http://www.aiezu.com/system/linux/linux_curl_syntax.html
于是,如果忽悠下服务器端简单获取客户端的IP,实践如下,用-H参数即可:
于是日志显示:2013/12/06 21:05:57 HostIp:jackxiang.com--ClientIp:192.168.1.108--
果然被curl给忽悠了吧,其被忽悠的代码如下:
X-Forwarded-For:192.168.1.108 在http头里通过linux下的curl注入头里即可!
调用如下:
file_put_contents($logFile, date("Y/m/d H:i:s") . "\t" . $type .'HostIp:'.$this->request->getHttpHost().'--'.'ClientIp:'.$this->request->getClientIp().'--'. "\t" . var_export($msg, true) . "\n", FILE_APPEND);
代码片段如下:
模拟修改Host的IP,不用修改Host文件的方法也是-H参数,能否合并起来使用呢?实践是不行的,如下探讨研究:
但是把上面两个写在一块用\n分开,实践好像不行,尽管上面有这样一个示例:
curl -H "Connection:keep-alive \n User-Agent: Mozilla/5.0" http://www.aiezu.com
实践是可行的,如:curl -H "Connection:keep-alive \n User-Agent: Mozilla/5.0" http://www.baidu.com
Connection:keep-alive \n User-Agent: Mozilla/5.0
但是把Curl模拟Host所对IP及如模拟客户端IP放一块,实践不Ok,如下:
出现接口返回不对,Nginx如下,只能单用吗?疑惑,因为这都是\r\n拼接的呀,\r\n也不行,如:http://www.myhack58.com/Article/html/3/62/2012/34944_2.htm
<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx</center>
</body>
</html>
很有可能是一个要非ip的字母数字作为域名,而另一个是要ip冲突导致矛盾吧?
Add Time:2013-12-19
在实践中用到,一外包兄弟写的代码经过队列调时出现没有入库,但是线上有多台机器,而所配置的机器的/etc/hosts指向是虚拟IP,不能修改,于是否,用这个方法找到了问题所在,其双方沟通的接口参数不一致导致,当时是怎么说通了,这个真是玄乎,代码如下:
对下面这个链接进行tcpdump抓包查看其请求是怎么样的,这儿python主要是想对json输出不能轻易读取加上json输出一行进行格式化:
第一点:直接用ip访问就不用找dns了,直接对IP访问,这是一定的。
第二点:这个-H主要体现在头上,也就是服务器(如:WebServer nginx apache tomcat都是对这个解析进行分发到或是php-fpm进行解析这个头作返回)
User-Agent: curl/7.15.5 (x86_64-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5
Accept: */*
Host:t43.jackxiang.com
也就是说,根据nginx里的conf文件进行分发时核对Host,或是php-fpm进行分发,这块还需要进一步研究,自己写server时可能会用到,也就这儿可以作为标志,至于怎么去的,我们可以直接用域名作对比:
1)域名直接访问(会先读host或dns得到一个ip后直接对其发起连接),curl "http://t43.jackxiang.com/json.php":
Source Destination Protocol
192.168.131.6 115.182.9.243 HTTP
GET /json.php HTTP/1.1
User-Agent: curl/7.17.0 (i586-pc-mingw32msvc) libcurl/7.17.0 zlib/1.2.2
Host: t43.jackxiang.com
Accept: */*
附:curl -H"Host:t43.jackxiang.com" "http://115.182.9.243/json.php"
2)用-H的curl通过localhost进行访问:
Source Destination Protocol
127.0.0.1 127.0.0.1 HTTP
User-Agent: curl/7.15.5 (x86_64-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5
Accept: */*
Host:t43.jackxiang.com
直接访问IP是不行的,加一个错误的头也是不行的,说明的的确确是这个Host:xxx进行解析:
C:\>curl -H"t43.jackxiang.com" "http://115.182.9.243/json.php"
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx</center>
</body>
</html>
C:\>curl -H"Host:t43.jackxiang.com" "http://115.182.9.243/json.php"
{ "status":200, "data": [ { "id":1000, "name":"John" }, { "id":1004
, "name":"Tom" } ] }
____________实践有用的Curl强大功能________________
用Curl直接模拟Host方法,Curl伪造Refer的方法:
http://jackxiang.com/post/6201/
获取cookie后,模拟refer并带上cookie通过curl访问某个接口:
http://jackxiang.com/post/4082/
PHP用CURL伪造IP和来源:
http://jackxiang.com/post/6201/
______________________________________________
参考:http://get.ftqq.com/9091.get
完整示例只传入data,其它项默认即可:
调用示例:
实现GET请求成功,注意 header是数组,参考来自:http://get.ftqq.com/9091.get ,关于Host: xxx.xx.com在Header里是数组,否则会报警告:
第三行改为
$header[] = "Content-type: text/xml"; // 改为数组解决
配置文件:
'SETEGGSHOST' => 'Host: wx.xxx.com',
'SETEGGSHTTP' => 'http://%s/Api/Eggs/Eggs/doSetTemp',
'SETEGGSPARA' => 'eid=%s&temp=%s&humi=%s',
最后,Host: wx.xx.com =数组传入=》 $setEggsHostArr = array(Config::getInstance()->getConf('SETEGGSHOST'));得注意。
Host: wx.xx.com eid=83419527&temp=38.2&humi=45 http://wx.xx.com/Api/Eggs/Eggs/doSetTempbool
—————————————————————Curl模拟Host和Ip对应关系—————————————————————
一个是Linux命令行来实现,二是从PHP编码上来实现不用修改Linux的Host就可能实现对虚拟主机的访问,实现如下:
一.假如70上有一个test3.qq.com ,我们在Windows下还需要通过
对Host加入配置:
后,
才能通过浏览器访问,而我们如果不加就不能访问。
现在,可以通过Curl来不用修改host文件也能访问,如下:
去Host:
用Curl直接模拟Host如下:
如果看代码图片:
curl -l -H "Host:mytv.jackxiang.com" http://127.0.0.1/uploads/temp/201310261334109440.jpg > xdy.jpg
-----------------------------------------------------------------------------------------------------------------------------------------------------------
如果有&号连接的Url需要对Url加引号:
curl -l --silent -v -H "Host:api.xdxp.cn" "http://115.182.35.108/general/getVideoCategoryList?uid=100&videoCategoryIds=15,16,17,18,19,20,31&format=json"
* Trying 115.182.35.108... connected
* Connected to 115.182.35.108 (115.182.35.108) port 80 (#0)
> GET /general/getVideoCategoryList?uid=100&videoCategoryIds=15,16,17,18,19,20,31&format=json HTTP/1.1
不加引号的情况:
curl -l --silent -v -H "Host:api.xdxp.cn" http://115.182.35.108/general/getVideoCategoryList?uid=100&videoCategoryIds=15,16,17,18,19,20,31&format=json
* About to connect() to 115.182.35.108 port 80 (#0)
* Trying 115.182.35.108... connected
* Connected to 115.182.35.108 (115.182.35.108) port 80 (#0)
> GET /general/getVideoCategoryList?uid=100 HTTP/1.1
-----------------------------------------------------------------------------------------------------------------------------------------------------------
与此同时,我们还能通过在Linux自己带的Curl来进行不用设置/etc/hosts来实现我们自己的模拟host访问。这样在调试接口等就不用我们自己每次都修改Host文件了,带来了极大的方便。
二.我们在PHP代码编程使用中PHP设置Curl参数来实现的代码片段如下,注意传入的是IP,而Host设置在函数的代码中:
如一个域名有两个IP,如何来实现调用的简单实现,这样有利于分担接口负载,如下:
综上所述,其本质是模拟了Http协议的头,想了解更多请看我之前写的一篇文章:
《PHP CURL CURLOPT_HTTPHEADER设置HOST(也就是不用配置host访问),Curl伪造Refer的方法及其杂谈》
Url:http://jackxiang.com/post/4022/
—————————————————————伪造客户端IP—————————————————————
一)这就是伪造的Curl的PHP代码:
curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-FORWARDED-FOR:'.$sendip, 'CLIENT-IP:'.$sendip));
来自:http://www.phpec.org/php/curl.html
参考:http://www.onlypo.com/archives/7
二)在Linux的Shell环境下如何不用PHP设置Header呢?
linux curl http header处理:
设置http请求头信息:
curl -A "Mozilla/5.0 Firefox/21.0" http://www.baidu.com #设置http请求头User-Agent
curl -e "http://pachong.org/" http://www.baidu.com #设置http请求头Referer
curl -H "Connection:keep-alive \n User-Agent: Mozilla/5.0" http://www.aiezu.com
来自:http://www.aiezu.com/system/linux/linux_curl_syntax.html
于是,如果忽悠下服务器端简单获取客户端的IP,实践如下,用-H参数即可:
于是日志显示:2013/12/06 21:05:57 HostIp:jackxiang.com--ClientIp:192.168.1.108--
果然被curl给忽悠了吧,其被忽悠的代码如下:
X-Forwarded-For:192.168.1.108 在http头里通过linux下的curl注入头里即可!
调用如下:
file_put_contents($logFile, date("Y/m/d H:i:s") . "\t" . $type .'HostIp:'.$this->request->getHttpHost().'--'.'ClientIp:'.$this->request->getClientIp().'--'. "\t" . var_export($msg, true) . "\n", FILE_APPEND);
代码片段如下:
模拟修改Host的IP,不用修改Host文件的方法也是-H参数,能否合并起来使用呢?实践是不行的,如下探讨研究:
但是把上面两个写在一块用\n分开,实践好像不行,尽管上面有这样一个示例:
curl -H "Connection:keep-alive \n User-Agent: Mozilla/5.0" http://www.aiezu.com
实践是可行的,如:curl -H "Connection:keep-alive \n User-Agent: Mozilla/5.0" http://www.baidu.com
Connection:keep-alive \n User-Agent: Mozilla/5.0
但是把Curl模拟Host所对IP及如模拟客户端IP放一块,实践不Ok,如下:
出现接口返回不对,Nginx如下,只能单用吗?疑惑,因为这都是\r\n拼接的呀,\r\n也不行,如:http://www.myhack58.com/Article/html/3/62/2012/34944_2.htm
<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx</center>
</body>
</html>
很有可能是一个要非ip的字母数字作为域名,而另一个是要ip冲突导致矛盾吧?
Add Time:2013-12-19
在实践中用到,一外包兄弟写的代码经过队列调时出现没有入库,但是线上有多台机器,而所配置的机器的/etc/hosts指向是虚拟IP,不能修改,于是否,用这个方法找到了问题所在,其双方沟通的接口参数不一致导致,当时是怎么说通了,这个真是玄乎,代码如下:
对下面这个链接进行tcpdump抓包查看其请求是怎么样的,这儿python主要是想对json输出不能轻易读取加上json输出一行进行格式化:
第一点:直接用ip访问就不用找dns了,直接对IP访问,这是一定的。
第二点:这个-H主要体现在头上,也就是服务器(如:WebServer nginx apache tomcat都是对这个解析进行分发到或是php-fpm进行解析这个头作返回)
User-Agent: curl/7.15.5 (x86_64-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5
Accept: */*
Host:t43.jackxiang.com
也就是说,根据nginx里的conf文件进行分发时核对Host,或是php-fpm进行分发,这块还需要进一步研究,自己写server时可能会用到,也就这儿可以作为标志,至于怎么去的,我们可以直接用域名作对比:
1)域名直接访问(会先读host或dns得到一个ip后直接对其发起连接),curl "http://t43.jackxiang.com/json.php":
Source Destination Protocol
192.168.131.6 115.182.9.243 HTTP
GET /json.php HTTP/1.1
User-Agent: curl/7.17.0 (i586-pc-mingw32msvc) libcurl/7.17.0 zlib/1.2.2
Host: t43.jackxiang.com
Accept: */*
附:curl -H"Host:t43.jackxiang.com" "http://115.182.9.243/json.php"
2)用-H的curl通过localhost进行访问:
Source Destination Protocol
127.0.0.1 127.0.0.1 HTTP
User-Agent: curl/7.15.5 (x86_64-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5
Accept: */*
Host:t43.jackxiang.com
直接访问IP是不行的,加一个错误的头也是不行的,说明的的确确是这个Host:xxx进行解析:
C:\>curl -H"t43.jackxiang.com" "http://115.182.9.243/json.php"
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx</center>
</body>
</html>
C:\>curl -H"Host:t43.jackxiang.com" "http://115.182.9.243/json.php"
{ "status":200, "data": [ { "id":1000, "name":"John" }, { "id":1004
, "name":"Tom" } ] }
[个人原创]用firebug调试JS时,利用其单步进入功能分析多层嵌套函数后能快速找到多层函数原型所在的文件名的方法
Php/Js/Shell/Go jackxiang 2011-6-30 23:40
现在你想看函数里的变量和值,你只需要在js里某个地输入:debugger; 即可,否则,你要想看变量是不可能的,或者加断点也成。
断点继续运行:F8
单步进入嵌套调用的函数体实现内部:F11
单步跳过:F10
单步退出:Shift+F11
从知道函数入口的函数中嵌套的函数在另外一个文件,可以通过单步进入查看进入后,就能知道另外一个文件的Js文件的名称,知道文件名后是快速解决Js问题的基础,如下图:
阅读全文
断点继续运行:F8
单步进入嵌套调用的函数体实现内部:F11
单步跳过:F10
单步退出:Shift+F11
从知道函数入口的函数中嵌套的函数在另外一个文件,可以通过单步进入查看进入后,就能知道另外一个文件的Js文件的名称,知道文件名后是快速解决Js问题的基础,如下图:
阅读全文
[个人原创]使用PHP的Socket来模拟RFC协议中的网页POST上传图片
Php/Js/Shell/Go jackxiang 2011-6-25 20:08
content-length: 这个值是从--$boundary,\r\nContent-Disposition: form-data; name=\"".rawurlencode($k)."\"\r\n\r\n, ...文件内容。。。\r\n".$boundary_2."--\r\n\r\n结束。注意:
最后的content的分割符也就是boundary还有两个--,表示结束。
其实协议是一个规化,代码是一个实现,久而久之,规划成为了规则,如:RFC协议就是一个大家在开发浏览器必须遵守的协议(http的(RFC 1867):让HTML表单可以提交文件。它对HTML表单的扩展),而也具有开放性,为此,各种程序都可以实现这个协议,程序为协议而生,协议为功能而用,下面我们来实现一个通过PHP的Socket来模拟一次浏览器上传一张图片的提交代码,如下:
模拟浏览器遵循的Http协议发送图片程序,boundary开始时有一个 --,结束时:也有有 --,真正结束后有\r\n\r\n:
PHP接收发送过来的图片程序:
测试返回:
为何出现这样的情况呢?查找代码片段imageaaa,这个修改为file即可,修改后如下所示,上传成功:
说明是Ok的,查下upload目录下,果然是在这个图片的,证明PHP是完全可以通过fsocket来模拟Http上传图片协议来实现浏览器上传的。
阅读全文
最后的content的分割符也就是boundary还有两个--,表示结束。
其实协议是一个规化,代码是一个实现,久而久之,规划成为了规则,如:RFC协议就是一个大家在开发浏览器必须遵守的协议(http的(RFC 1867):让HTML表单可以提交文件。它对HTML表单的扩展),而也具有开放性,为此,各种程序都可以实现这个协议,程序为协议而生,协议为功能而用,下面我们来实现一个通过PHP的Socket来模拟一次浏览器上传一张图片的提交代码,如下:
模拟浏览器遵循的Http协议发送图片程序,boundary开始时有一个 --,结束时:也有有 --,真正结束后有\r\n\r\n:
PHP接收发送过来的图片程序:
测试返回:
为何出现这样的情况呢?查找代码片段imageaaa,这个修改为file即可,修改后如下所示,上传成功:
说明是Ok的,查下upload目录下,果然是在这个图片的,证明PHP是完全可以通过fsocket来模拟Http上传图片协议来实现浏览器上传的。
阅读全文
打乱1~10000这个数组,然后取前200
C 语言不像 PHP/Python 等动态语言, 可以无缝地将 JSON 数据结构转为自身的数据结构, 所以操作起来会有些麻烦.
来源:http://www.ideawu.net/blog/2010/08/c%E8%AF%AD%E8%A8%80%E8%A7%A3%E6%9E%90json.html
阅读全文
来源:http://www.ideawu.net/blog/2010/08/c%E8%AF%AD%E8%A8%80%E8%A7%A3%E6%9E%90json.html
阅读全文
由于一段时间服务器负载较重,占用了2g的虚拟内存。这段时间过后,在不重启机器的情况下如何将这2g的虚拟内存释放出来?
用vmstat查看虚拟内存使用量swpd 就是交换的虚拟内存:
我的办法就是:
root@darkstar:~# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 264 986380 323224 156860 0 0 0 0 0 0 0 0 100 0
root@darkstar:~# swapoff -a
root@darkstar:~# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 0 986752 323240 157240 0 0 0 0 0 0 0 0 100 0
root@darkstar:~# swapon -a
root@darkstar:~# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 0 986652 323292 157188 0 0 0 0 0 0 0 0 100 0
Windows下释放虚拟内存的方法:
右键单击“我的电脑”--“属性”—“高级”,在“性能”栏中,点击“设置”—“高级”—将“处理器计划”、“内存使用”,均点选“程序”。 单击“虚拟内存”区“更改”--在驱动器列表中选中系统盘符--自定义大小--在“初始大小”和“最大值”中设定数值,然后单击“设置”按钮,最后点击“确定”按钮退出。虚拟内存最小值物理内存1.5—2倍,最大值为物理内存的2—3倍。
来源:http://bbs.chinaunix.net/thread-2052543-1-1.html
来源2:http://wenwen.soso.com/z/q141265413.htm
用vmstat查看虚拟内存使用量swpd 就是交换的虚拟内存:
我的办法就是:
root@darkstar:~# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 264 986380 323224 156860 0 0 0 0 0 0 0 0 100 0
root@darkstar:~# swapoff -a
root@darkstar:~# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 0 986752 323240 157240 0 0 0 0 0 0 0 0 100 0
root@darkstar:~# swapon -a
root@darkstar:~# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 0 986652 323292 157188 0 0 0 0 0 0 0 0 100 0
Windows下释放虚拟内存的方法:
右键单击“我的电脑”--“属性”—“高级”,在“性能”栏中,点击“设置”—“高级”—将“处理器计划”、“内存使用”,均点选“程序”。 单击“虚拟内存”区“更改”--在驱动器列表中选中系统盘符--自定义大小--在“初始大小”和“最大值”中设定数值,然后单击“设置”按钮,最后点击“确定”按钮退出。虚拟内存最小值物理内存1.5—2倍,最大值为物理内存的2—3倍。
来源:http://bbs.chinaunix.net/thread-2052543-1-1.html
来源2:http://wenwen.soso.com/z/q141265413.htm
我暂时还不清楚 HTTP 文件上传的具体细节, 但是我知道通过浏览器上传文件, 然后用 PHP 接收, 需要使用 PHP 的预定义变量 $_FILES. 最近我有一个应用需要使用 PHP 的预定义变量 $_POST 获取上传的文件(或者任何数据), 也就是通过 HTTP POST 参数传递二进制数据.
工作在 ContentType = “application/x-www-form-urlencoded” 的模式下时, HTTP 协议使用 ASCII 字符集的一个子集来编码要传输的字节流. 如字符串 “a@” 如果以 ASCII 编码存在于内存中(以字节数组的形式), 也就是内存按字节读取为 HEX 是: 0×61 0×40, 那么该字节数组被传输时会被编码(URL 编码)成为 0×61 0×25 0×34 0×30, 被编码后字节数组如果按照 ASCII 编码显示, 就是 “a%40″. 也就是说, 当你想传输 0×61 0×40 时, HTTP 传输的是 0×61 0×25 0×34 0×30.
这种编码过程几乎所有的编程语言都提供支持, 在 C# 中你可以使用 HttpUtility.UrlEncode(), 输入一个字节数组, 返回一个 URL 编码的 字节数组.
在 PHP 脚本中, 当你使用 $_POST['data'] 获取数组时, 该数组已经被 PHP 自动解码了. 按照上面的例子, $_POST['data'] 所指向的内存内容为 0×61 0×40 — 但是, 默认情况下并不总是, 如果该数据包含单引号等少数几个字符, 那么它们的前面会被 PHP 加上 \.
下面先给出 PHP 脚本, 保存一个通过 HTTP 参数传递的文件:
如果你要测试的文件小于 8K, 可以直接使用上面的程序测试. 如果大于, 你可以加大 buffer 的容量.
上传成功后, 使用文件比较工具对比两个文件是否一致:
diff test.jpg up_test.jpg
这种方式的典型的应用是自定义文件上传, 你只需要更改少量的代码就可以实现支持断点续传功能的文件上传.
来源:http://www.ideawu.net/blog/2007/08/%E9%80%9A%E8%BF%87-HTTP-POST-%E5%8F%91%E9%80%81%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%95%B0%E6%8D%AE.html
工作在 ContentType = “application/x-www-form-urlencoded” 的模式下时, HTTP 协议使用 ASCII 字符集的一个子集来编码要传输的字节流. 如字符串 “a@” 如果以 ASCII 编码存在于内存中(以字节数组的形式), 也就是内存按字节读取为 HEX 是: 0×61 0×40, 那么该字节数组被传输时会被编码(URL 编码)成为 0×61 0×25 0×34 0×30, 被编码后字节数组如果按照 ASCII 编码显示, 就是 “a%40″. 也就是说, 当你想传输 0×61 0×40 时, HTTP 传输的是 0×61 0×25 0×34 0×30.
这种编码过程几乎所有的编程语言都提供支持, 在 C# 中你可以使用 HttpUtility.UrlEncode(), 输入一个字节数组, 返回一个 URL 编码的 字节数组.
在 PHP 脚本中, 当你使用 $_POST['data'] 获取数组时, 该数组已经被 PHP 自动解码了. 按照上面的例子, $_POST['data'] 所指向的内存内容为 0×61 0×40 — 但是, 默认情况下并不总是, 如果该数据包含单引号等少数几个字符, 那么它们的前面会被 PHP 加上 \.
下面先给出 PHP 脚本, 保存一个通过 HTTP 参数传递的文件:
如果你要测试的文件小于 8K, 可以直接使用上面的程序测试. 如果大于, 你可以加大 buffer 的容量.
上传成功后, 使用文件比较工具对比两个文件是否一致:
diff test.jpg up_test.jpg
这种方式的典型的应用是自定义文件上传, 你只需要更改少量的代码就可以实现支持断点续传功能的文件上传.
来源:http://www.ideawu.net/blog/2007/08/%E9%80%9A%E8%BF%87-HTTP-POST-%E5%8F%91%E9%80%81%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%95%B0%E6%8D%AE.html
“因为TCP端口号是16位无符号整数, 最大65535, 所以一台服务器最多支持65536个TCP socket连接.” – 一个非常经典的误解! 即使是有多年网络编程经验的人, 也会持有这个错误结论.阅读全文
富贵不超过三代。为什么呢?白手起家的第一代往往是因为缺乏各种条件,要接受很多现实的折磨,同时感觉如果自己不格外努力根本没有出头的日子。因此辛辛苦苦的经营,创立了良好的基础。第二代、第三代如对此一基础能善于运用,要谋成就必定比第一代方便而容易。但事实往往相反,平顺安逸的生活环境非但不易养成,反而可能消蚀人奋斗向上的志气,因此第二代就比第一代弱,第三代就更糟了。---From:王勇庆谈中国式管理。
昨天以前的成败都可以看作是运气,今天以后就绝不能有碰运气的念头。改善没有终止,边学边改,累积经验正可以作为管理的最坚实基础。
力行不够导致失败
我们做事应和树有细根一样,必须从根源起着手,才能理出头绪,使事务的管理趋于合理化。否则,以人事管理而论,即无根据评估人员工作的品质及各人的贡献度,良莠就无法分辨,不公平不合理的事件就会层出不穷。在处理事务方面言,哪一件事比较重要,哪一件事情是次要的,一定要能分得清楚,轻重缓急不分的话就会滋生紊乱,事情一旦率乱,不但白费时间,而且会糊涂起来。
谈企业经营管理最重要的课题,大家都很清楚,那就是要人。要什么人呢?要懂事情的人,要会做事的人。怎样才是会做事的人?就是要有实务经验,实实在在在做事的。我们特别强调的是实实在在的从实务方面着手,大多数人都有能力来做好实务工作,但是大部分都停留在徒具形式,空喊口号怕阶段,说得多做得少是我们当前社会上普遍存在的一个很可怕的现象。
譬如说,我们都知道身体要适当运动和锻炼,究竟一般人实行了多少?说得更彻底一点,这还不只是衽了多少的问题,应当要百分之百的实行才对。如果以这个标准来衡量的话,有多少人做到了更是一个疑问,这只是比喻。
刚才讲到企业需要人,但是人需要培养,怎样养成一个有用的人,这是一个问题。养成人要有一套计划,使人员能够循着庙宇的训练课程逐步渐进,就像是开一条路,让他们能够照着路走,而今天大部分的企业没有这条路可走。
谈到这里,我想到为什么我们中国人讲“百年树人”,一个人能活到七、八十岁就很不错了,如何说百年才能树人呢?这道理是不是这样:比如说我自己,我没有接受工业及管理方面知识的正式教育,也没有这个机会。因为过去我们没有什么工业,对这方面没有基础,所以我自己就要从许多问题的根本追求,把基础建立起来,而这种工作,也不是那么容易做的。如今天的工业是多元化的,而利用三数十坪地盖个工厂的多如牛毛。但改善一件事情就不能说到今天已经做到了完善的地步,仍然要配合时代的进步和变化,没有休止的加以改善,所以改善是不会终止的。
既然改善是没有终止,就必须一边学,一边改,将经验累积下来作为管理的基础。但是即使我们确确实实按照上述的步骤全力以赴,到目前为止我们的经验和绩效还是不够的,还是有限的,还是不如欧美那些大公司,拥有一百多年,甚至好好几百年的历史,经过不断的改善,经验的累积,才有今日相当完善的基础。
所以我也必须承认,我所领导的台塑企业,在管理方面还要努力,不断的发掘问题,慢慢建立基础,所以我深深感觉“百年树人”这句话是很对的。因为将来我总有一天要将公司的经营交给公司的同仁,而他们不了解的地方还很多,再加上我难免会带有一点不良习惯积存下来,而公司第二代年轻的同仁,还需要借用人家的长处,来修正、改善我的缺点,我留下的不良习惯,并要不断的发现,示得更好的做法。就这样一代三十年,要经过二、三代才能真正的成为“百年树人”。
所以讲到人的问题,如果没有施了一套系统的训练的话,如何能造就出有用的人来。构相信在我们中华民国也好,其他先进国家也好,人才都是不够的,你愈是追求进步,愈感觉不够。但如果身为董事长、总经理,而本身马马虎虎的话,那就成了有一大堆的人,没有经过训练、考核,这个人也好,那个人也可以用,而无形中的损失,就不知有多大了。
育人之前先育已
我个人认为如果认真输训练考核就会感觉人才不足,进而经常就会注意寻找适用的人做适当的工作。虽然不一定找得到,但却不会滥用人,我认为这样取用的人会具有某种程度的水准。所说企业要培养人才,以我们目前的基础仍然相当的薄弱,这一点我不客气的提出来,让我们共同来认识我们的管理基础是不健全的,我们必须承认这一点。
再谈到臬来做好管理,谈管理首先要讲求实务工作。实务工作方面是要实实在在的追根究底,彻底追求实在而有效的改善,才能称之为实务检讨,否则是检讨不了的。所以在目前这种情形下,企业要人才的话,是相当困难的。
我认为今天要发展一个企业,就必须自己以身作则,卖力苦干,如不这样做,而只在外边到处挖角,都是没有用的。一个人如果比你能干,比你会做生意,他自己不做跑来替你卖力,这是不可能的。所以你不要想得太轻松,应该要自己卖力,自己苦干,这样建立起基础,然后再教人家,这是你的本事。
所以要培养人就必须先培养自己,然后再教人,这样才会有人才可用,否则是找不到人才的。如果不这样去培养人才的话,纵使有几十个,几百个人,也是没有用。因为这样的人光是要他照着规章做事还可以做得出来,但要求在工作上实际有所发挥就难了。
谈管理用人可以简单的一句话讲就是“对事不对人”,本省也有一句话:“断理不断亲”。讲起来是很简单,其实不然。要先懂得道理,才能对事不对人。处理做人要公平的话,应该要就事来评断人,这一点是很重要的,但是要了解这个人做事的品质,要将他所做的各件事综合起来,作一个整体的判断,然后才能知人善任,使人员待物适才适所。
我们常说应该实施职业分类制度等等,就是要做到对事不对人。一般而言,人总会有理想、抱负,也希望将事情做好,往往就因为实务方面下的工夫不足,经过长期的等待而落空,变成了口号。这是多年以来一直存在到今天的可怕现象。
企业存亡操纵在自己手中
昨天以前的成败都可以看作是运气,今天以后就绝不能有碰运气的念头。改善没有终止,边学边改,累积经验正可以作为管理的最坚实基础。
力行不够导致失败
我们做事应和树有细根一样,必须从根源起着手,才能理出头绪,使事务的管理趋于合理化。否则,以人事管理而论,即无根据评估人员工作的品质及各人的贡献度,良莠就无法分辨,不公平不合理的事件就会层出不穷。在处理事务方面言,哪一件事比较重要,哪一件事情是次要的,一定要能分得清楚,轻重缓急不分的话就会滋生紊乱,事情一旦率乱,不但白费时间,而且会糊涂起来。
谈企业经营管理最重要的课题,大家都很清楚,那就是要人。要什么人呢?要懂事情的人,要会做事的人。怎样才是会做事的人?就是要有实务经验,实实在在在做事的。我们特别强调的是实实在在的从实务方面着手,大多数人都有能力来做好实务工作,但是大部分都停留在徒具形式,空喊口号怕阶段,说得多做得少是我们当前社会上普遍存在的一个很可怕的现象。
譬如说,我们都知道身体要适当运动和锻炼,究竟一般人实行了多少?说得更彻底一点,这还不只是衽了多少的问题,应当要百分之百的实行才对。如果以这个标准来衡量的话,有多少人做到了更是一个疑问,这只是比喻。
刚才讲到企业需要人,但是人需要培养,怎样养成一个有用的人,这是一个问题。养成人要有一套计划,使人员能够循着庙宇的训练课程逐步渐进,就像是开一条路,让他们能够照着路走,而今天大部分的企业没有这条路可走。
谈到这里,我想到为什么我们中国人讲“百年树人”,一个人能活到七、八十岁就很不错了,如何说百年才能树人呢?这道理是不是这样:比如说我自己,我没有接受工业及管理方面知识的正式教育,也没有这个机会。因为过去我们没有什么工业,对这方面没有基础,所以我自己就要从许多问题的根本追求,把基础建立起来,而这种工作,也不是那么容易做的。如今天的工业是多元化的,而利用三数十坪地盖个工厂的多如牛毛。但改善一件事情就不能说到今天已经做到了完善的地步,仍然要配合时代的进步和变化,没有休止的加以改善,所以改善是不会终止的。
既然改善是没有终止,就必须一边学,一边改,将经验累积下来作为管理的基础。但是即使我们确确实实按照上述的步骤全力以赴,到目前为止我们的经验和绩效还是不够的,还是有限的,还是不如欧美那些大公司,拥有一百多年,甚至好好几百年的历史,经过不断的改善,经验的累积,才有今日相当完善的基础。
所以我也必须承认,我所领导的台塑企业,在管理方面还要努力,不断的发掘问题,慢慢建立基础,所以我深深感觉“百年树人”这句话是很对的。因为将来我总有一天要将公司的经营交给公司的同仁,而他们不了解的地方还很多,再加上我难免会带有一点不良习惯积存下来,而公司第二代年轻的同仁,还需要借用人家的长处,来修正、改善我的缺点,我留下的不良习惯,并要不断的发现,示得更好的做法。就这样一代三十年,要经过二、三代才能真正的成为“百年树人”。
所以讲到人的问题,如果没有施了一套系统的训练的话,如何能造就出有用的人来。构相信在我们中华民国也好,其他先进国家也好,人才都是不够的,你愈是追求进步,愈感觉不够。但如果身为董事长、总经理,而本身马马虎虎的话,那就成了有一大堆的人,没有经过训练、考核,这个人也好,那个人也可以用,而无形中的损失,就不知有多大了。
育人之前先育已
我个人认为如果认真输训练考核就会感觉人才不足,进而经常就会注意寻找适用的人做适当的工作。虽然不一定找得到,但却不会滥用人,我认为这样取用的人会具有某种程度的水准。所说企业要培养人才,以我们目前的基础仍然相当的薄弱,这一点我不客气的提出来,让我们共同来认识我们的管理基础是不健全的,我们必须承认这一点。
再谈到臬来做好管理,谈管理首先要讲求实务工作。实务工作方面是要实实在在的追根究底,彻底追求实在而有效的改善,才能称之为实务检讨,否则是检讨不了的。所以在目前这种情形下,企业要人才的话,是相当困难的。
我认为今天要发展一个企业,就必须自己以身作则,卖力苦干,如不这样做,而只在外边到处挖角,都是没有用的。一个人如果比你能干,比你会做生意,他自己不做跑来替你卖力,这是不可能的。所以你不要想得太轻松,应该要自己卖力,自己苦干,这样建立起基础,然后再教人家,这是你的本事。
所以要培养人就必须先培养自己,然后再教人,这样才会有人才可用,否则是找不到人才的。如果不这样去培养人才的话,纵使有几十个,几百个人,也是没有用。因为这样的人光是要他照着规章做事还可以做得出来,但要求在工作上实际有所发挥就难了。
谈管理用人可以简单的一句话讲就是“对事不对人”,本省也有一句话:“断理不断亲”。讲起来是很简单,其实不然。要先懂得道理,才能对事不对人。处理做人要公平的话,应该要就事来评断人,这一点是很重要的,但是要了解这个人做事的品质,要将他所做的各件事综合起来,作一个整体的判断,然后才能知人善任,使人员待物适才适所。
我们常说应该实施职业分类制度等等,就是要做到对事不对人。一般而言,人总会有理想、抱负,也希望将事情做好,往往就因为实务方面下的工夫不足,经过长期的等待而落空,变成了口号。这是多年以来一直存在到今天的可怕现象。
企业存亡操纵在自己手中
如今使用HTTP协议定制API已经是十分常见的事情,在普通的GET和POST请求中传递些参数估计人人都会,但是如果我们需要上传文件呢?如果只是传递单个文件,那么将数据流POST给服务器端即可。但如果需要上传多个文件,或是在文件之外需要附带一些信息,那么又该怎么做呢?之前我遇到过一些朋友是这么打算的,他们说,不如就把文件流转化为文本,然后把它当作一个普通的字段传递。这么做自然可以“实现功能”,但缺点也很多。首先,将二进制流转化为文本会增大体积(例如最常见的BASE64编码会增大1/3的数据量);其次,既然互联网上存在相关的协议,又为何要自定义一套规则呢?其实这便是《RFC 1867 - Form-based File Upload in HTML》,它是我们用HTML表单上传文件时使用的传输协议,虽然十分常用,但似乎了解它的人并不多。阅读全文
如果你有多块移动硬盘,想从中找到某个文件该怎么做呢?挨个连接电脑搜索?不用这么麻烦,最新测试版的 Everything 已经实现了离线搜索并且可以快速找到文件所在硬盘。@Appinn
BlogBlogBlog感谢 xbeta 帮我向作者反馈的此建议,1.3 测试版的最新版本终于将文件列表名称添加进了排序栏,这样就实现了使用 Everything 离线搜索(不连接移动硬盘)多个移动硬盘文件,并快速定位文件所在移动硬盘!另外 HTTP/FTP 服务器功能回复。
BlogEverything 就是一神器!
Blog再次解释下什么是 Everything 的文件列表功能:
Blog文件列表:将 U盘、移动硬盘等路径添加进 Everything 的文件列表并保存,今后就可以在不连接移动设备的情况下搜索文件(即离线搜索功能)
Blog只需要几步:
Blog首先,需要用 Everything 针对不同储存设备创建不同的文件列表,注意文件列表命名与硬件设备一一对应,这样才能在将来快速找到它。
BlogBlogBlog其次,Everything 支持在启动时加载多个文件列表,以便随时搜索。
BlogBlogBlog最后,搜索结果中找到 File List Filename(可能需要右键排序栏调出),根据文件列表名称快速找到硬件然后连接电脑,读取文件,完成不可能任务。
Blog另外续注意创建文件列表时的盘符如果与后来不同,Everything 还无法自动识别(谁来解决固定移动硬盘盘符的问题)。
mlocate
slocate
locate
阅读全文
BlogBlogBlog感谢 xbeta 帮我向作者反馈的此建议,1.3 测试版的最新版本终于将文件列表名称添加进了排序栏,这样就实现了使用 Everything 离线搜索(不连接移动硬盘)多个移动硬盘文件,并快速定位文件所在移动硬盘!另外 HTTP/FTP 服务器功能回复。
BlogEverything 就是一神器!
Blog再次解释下什么是 Everything 的文件列表功能:
Blog文件列表:将 U盘、移动硬盘等路径添加进 Everything 的文件列表并保存,今后就可以在不连接移动设备的情况下搜索文件(即离线搜索功能)
Blog只需要几步:
Blog首先,需要用 Everything 针对不同储存设备创建不同的文件列表,注意文件列表命名与硬件设备一一对应,这样才能在将来快速找到它。
BlogBlogBlog其次,Everything 支持在启动时加载多个文件列表,以便随时搜索。
BlogBlogBlog最后,搜索结果中找到 File List Filename(可能需要右键排序栏调出),根据文件列表名称快速找到硬件然后连接电脑,读取文件,完成不可能任务。
Blog另外续注意创建文件列表时的盘符如果与后来不同,Everything 还无法自动识别(谁来解决固定移动硬盘盘符的问题)。
mlocate
slocate
locate
阅读全文
无废话版本。以下的插件均指“可被插件管理器识别并管理的插件”,非模块插件。阅读全文
SVN是我认为目前最方便的版本管理体系。我最早一次接触版本管理是2004年,当时学校BBS的代码要求用CVS管理;第二次亲密接触是在2006年,当时公司的代码使用Eclipse+CVS管理;而第一次使用SVN则是在2007年的一个封闭开发项目。
我十分喜欢SVN的方便,无论是在Linux下的命令行操作还是在Windows下的资源管理器插件,都十分简易。而且code.google.com也支持SVN来供我们发布、维护开源项目(例如我的WordPress主题TES)然而,久而久之,SVN文件夹下会有许多.svn的“meta数据”。这些数据久而久之会带来不少麻烦。尤其是基于资源管理器交互的Windows系统。
今天看了Jon Galloway的一个注册表脚本,十分方便,分享如下:
建立一个文本文件,取名为kill-svn-folders.reg(扩展名由txt改为reg),内容如下:
保存之后,双击这个reg文件。成功后,在每一个文件夹上点击右键都会有一个“Delete SVN Folders”的选项,点击之后,既可以删除这个文件下下面所有的.svn文件了:
本文来自:http://www.awflasher.com/blog/archives/1585
我十分喜欢SVN的方便,无论是在Linux下的命令行操作还是在Windows下的资源管理器插件,都十分简易。而且code.google.com也支持SVN来供我们发布、维护开源项目(例如我的WordPress主题TES)然而,久而久之,SVN文件夹下会有许多.svn的“meta数据”。这些数据久而久之会带来不少麻烦。尤其是基于资源管理器交互的Windows系统。
今天看了Jon Galloway的一个注册表脚本,十分方便,分享如下:
建立一个文本文件,取名为kill-svn-folders.reg(扩展名由txt改为reg),内容如下:
保存之后,双击这个reg文件。成功后,在每一个文件夹上点击右键都会有一个“Delete SVN Folders”的选项,点击之后,既可以删除这个文件下下面所有的.svn文件了:
本文来自:http://www.awflasher.com/blog/archives/1585
使用不定个数的参数构造查询字符串之可变参数个数的函数
Php/Js/Shell/Go jackxiang 2011-6-16 13:55
写CDB类库的时候,就有一个查询是要求写出一个,具有可变参数个数的函数,类似于sprintf,fsql定义了数据格式,v1, v2等变量定义了要替换的值,然后将替换后的字符串作为数据库查询进行执行.
先举一个实现后的例子:
queryf("select * from glove_user where name = '%s' and site = '%s'", 'glove', 'glovely.info');
这其实就是一个select语句,其中不同的地方就是第一个参数中的name的值%s用后面的’glove’来替换,site的值%s用后面的’glovely.info’来替换,这些可以替换的参数是不限定个数的.
也就是说这个函数像我们用的sprintf一样,是带有不定个数的参数的.阅读全文
先举一个实现后的例子:
queryf("select * from glove_user where name = '%s' and site = '%s'", 'glove', 'glovely.info');
这其实就是一个select语句,其中不同的地方就是第一个参数中的name的值%s用后面的’glove’来替换,site的值%s用后面的’glovely.info’来替换,这些可以替换的参数是不限定个数的.
也就是说这个函数像我们用的sprintf一样,是带有不定个数的参数的.阅读全文
jquery的append与prepend:阅读全文