今天发现一个函数很奇怪,没有在php里面写,感觉是一个扩展,于是通过膘哥哥的这个提示后写出如下:
果然是c写的扩展,牛!!!
来源:膘叔,Jackxiang,版权所有:)
addTime:2021-03-05
php --re gd|grep imagettfbbox
--re <name> Show information about extension <name>.
php --re gd|grep images
Function [ <internal:gd> function imagesetstyle ] {
Function [ <internal:gd> function imagesetthickness ] {
Function [ <internal:gd> function imagesavealpha ] {
Function [ <internal:gd> function imagesettile ] {
Ps:
膘叔(19129540) 17:07:32
get_defined_functions
回忆未来(372647693) 17:10:04
[~]# php -r "var_dump(get_defined_functions());"|grep qp_pt2vkey_verify
string(17) "qp_pt2vkey_verify"
回忆未来(372647693) 17:10:43
膘哥你是天上太阳,没有你就没有地球,没有海洋。没有鸟笼山。。。
纯月(88659854) 17:11:01
去帮彪哥点广告去
回忆未来(372647693) 17:11:35
今天我从村里赶来,来唱这首歌,。。。
PHP5→(404926006) 17:11:55
膘叔是我们榜样,我们要像膘叔学习。
PHP5→(404926006) 17:12:49
虽然他那么猥*,虽然他那么*龊,但是我们都不在乎。。。
PHP5→(404926006) 17:13:19
只因为一个原因,因为他是我们的膘叔。
[~]# php -r "print_r(get_defined_functions());"|grep qp_pt2vkey_verify
[1198] => qp_pt2vkey_verify
[1198] => qp_pt2vkey_verify
果然是c写的扩展,牛!!!
来源:膘叔,Jackxiang,版权所有:)
addTime:2021-03-05
php --re gd|grep imagettfbbox
--re <name> Show information about extension <name>.
php --re gd|grep images
Function [ <internal:gd> function imagesetstyle ] {
Function [ <internal:gd> function imagesetthickness ] {
Function [ <internal:gd> function imagesavealpha ] {
Function [ <internal:gd> function imagesettile ] {
Ps:
膘叔(19129540) 17:07:32
get_defined_functions
回忆未来(372647693) 17:10:04
[~]# php -r "var_dump(get_defined_functions());"|grep qp_pt2vkey_verify
string(17) "qp_pt2vkey_verify"
回忆未来(372647693) 17:10:43
膘哥你是天上太阳,没有你就没有地球,没有海洋。没有鸟笼山。。。
纯月(88659854) 17:11:01
去帮彪哥点广告去
回忆未来(372647693) 17:11:35
今天我从村里赶来,来唱这首歌,。。。
PHP5→(404926006) 17:11:55
膘叔是我们榜样,我们要像膘叔学习。
PHP5→(404926006) 17:12:49
虽然他那么猥*,虽然他那么*龊,但是我们都不在乎。。。
PHP5→(404926006) 17:13:19
只因为一个原因,因为他是我们的膘叔。
目的:官方PHP7.3.12版本的代码的memcached/memcache的扩展有些不是官方的,打包后需要简单测试一下:
centos6.x:
php-7.3.12-200119174731.el6.x86_64
memcached-php73-3.1.5-200120160443.el6.x86_64
memcache-php73-4.0.5-200120133708.el6.x86_64
redis-php73-3.1.2-200120134324.el6.x86_64
centos7.x:
memcached-php73-3.1.5-200120155225.el7.centos.x86_64.rpm
php-7.3.12-191219193316.el7.centos.x86_64.rpm
memcache-php73-4.0.5-200119152756.el7.centos.x86_64.rpm
redis-php73-3.1.2-191218163944.el7.centos.x86_64.rpm
一)memcace扩展代码成功如下:
php bar.php
TK
telnet 10.71.11.4* 11211
Trying 10.71.11.4*...
Connected to 10.71.11.4*.
Escape character is '^]'.
get name
VALUE name 0 2
TK
END
set name 0 0 4
jack
STORED
get name
VALUE name 0 4
jack
END
php bar.php # //$memcache->set('name', 'TK');
jack
更多telnet 的操作:
https://jackxiang.com/post/2484/
二)memcached扩展下的PHP测试代码如下:
php memcached.php
int(1)
telnet 10.71.11.40 11211
Trying 10.71.11.40...
Connected to 10.71.11.40.
Escape character is '^]'.
get 123
VALUE 123 1 1
1
END
==========================================EOF================================
PHP代码保存数组片段如下:
<?php
date_default_timezone_set ('Asia/Shanghai');
//连接
$mem = new Memcache;
$mem->connect("10.70.33.1", 11211);
//保存数据
$mem->set('key1', 'This is first value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val ."<br />";
// 替换数据
$mem->replace('key1', 'This is replace value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br />";
//保存数组
$arr = array('aaa', 'bbb', 'ccc', 'ddd');
$mem->set('key2', $arr, 0, 60);
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br />";
//删除数据
$mem->delete('key1');
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br />";
//清除所有数据
$mem->flush();
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br />";
//关闭连接
$mem->close();
?>
如果正常的话,浏览器将输出:
php memcacheTest.php
Get key1 value: This is first value<br />Get key1 value: This is replace value<br />Get key2 value: Array
(
[0] => aaa
[1] => bbb
[2] => ccc
[3] => ddd
)
<br />Get key1 value:
<br />
程序代码分析
初始化一个Memcache的对象:
连接到我们的Memcache服务器端,第一个参数是服务器的IP地址,也可以是主机名,第二个参数是Memcache的开放的端口:
保存一个数据到Memcache服务器上,第一个参数是数据的key,用来定位一个数据,第二个参数是需要保存的数据内容,这里是一个字符串,第三个参数是一个标记,一般设置为0或者MEMCACHE_COMPRESSED就行了,第四个参数是数据的有效期,就是说数据在这个时间内是有效的,如果过去这个时间,那么会被Memcache服务器端清除掉这个数据,单位是秒,如果设置为0,则是永远有效,我们这里设置了60,就是一分钟有效时间:
从Memcache服务器端获取一条数据,它只有一个参数,就是需要获取数据的key,我们这里是上一步设置的key1,现在获取这个数据后输出输出:
现在是使用replace方法来替换掉上面key1的值,replace方法的参数跟set是一样的,不过第一个参数key1是必须是要替换数据内容的key,最后输出了:
同样的,Memcache也是可以保存数组的,下面是在Memcache上面保存了一个数组,然后获取回来并输出
现在删除一个数据,使用delte接口,参数就是一个key,然后就能够把Memcache服务器这个key的数据删除,最后输出的时候没有结果
最后我们把所有的保存在Memcache服务器上的数据都清除,会发现数据都没有了,最后输出key2的数据为空,最后关闭连接
Memcache的使用
使用Memcache的网站一般流量都是比较大的,为了缓解数据库的压力,让Memcache作为一个缓存区域,把部分信息保存在内存中,在前端能够迅速的进行存取。那么一般的焦点就是集中在如何分担数据库压力和进行分布式,毕竟单台Memcache的内存容量的有限的。我这里简单提出我的个人看法,未经实践,权当参考。
centos6.x:
php-7.3.12-200119174731.el6.x86_64
memcached-php73-3.1.5-200120160443.el6.x86_64
memcache-php73-4.0.5-200120133708.el6.x86_64
redis-php73-3.1.2-200120134324.el6.x86_64
centos7.x:
memcached-php73-3.1.5-200120155225.el7.centos.x86_64.rpm
php-7.3.12-191219193316.el7.centos.x86_64.rpm
memcache-php73-4.0.5-200119152756.el7.centos.x86_64.rpm
redis-php73-3.1.2-191218163944.el7.centos.x86_64.rpm
一)memcace扩展代码成功如下:
php bar.php
TK
telnet 10.71.11.4* 11211
Trying 10.71.11.4*...
Connected to 10.71.11.4*.
Escape character is '^]'.
get name
VALUE name 0 2
TK
END
set name 0 0 4
jack
STORED
get name
VALUE name 0 4
jack
END
php bar.php # //$memcache->set('name', 'TK');
jack
更多telnet 的操作:
https://jackxiang.com/post/2484/
二)memcached扩展下的PHP测试代码如下:
php memcached.php
int(1)
telnet 10.71.11.40 11211
Trying 10.71.11.40...
Connected to 10.71.11.40.
Escape character is '^]'.
get 123
VALUE 123 1 1
1
END
==========================================EOF================================
PHP代码保存数组片段如下:
<?php
date_default_timezone_set ('Asia/Shanghai');
//连接
$mem = new Memcache;
$mem->connect("10.70.33.1", 11211);
//保存数据
$mem->set('key1', 'This is first value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val ."<br />";
// 替换数据
$mem->replace('key1', 'This is replace value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br />";
//保存数组
$arr = array('aaa', 'bbb', 'ccc', 'ddd');
$mem->set('key2', $arr, 0, 60);
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br />";
//删除数据
$mem->delete('key1');
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br />";
//清除所有数据
$mem->flush();
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br />";
//关闭连接
$mem->close();
?>
如果正常的话,浏览器将输出:
php memcacheTest.php
Get key1 value: This is first value<br />Get key1 value: This is replace value<br />Get key2 value: Array
(
[0] => aaa
[1] => bbb
[2] => ccc
[3] => ddd
)
<br />Get key1 value:
<br />
程序代码分析
初始化一个Memcache的对象:
$mem = new Memcache;
连接到我们的Memcache服务器端,第一个参数是服务器的IP地址,也可以是主机名,第二个参数是Memcache的开放的端口:
$mem->connect("192.168.0.200", 12000);
保存一个数据到Memcache服务器上,第一个参数是数据的key,用来定位一个数据,第二个参数是需要保存的数据内容,这里是一个字符串,第三个参数是一个标记,一般设置为0或者MEMCACHE_COMPRESSED就行了,第四个参数是数据的有效期,就是说数据在这个时间内是有效的,如果过去这个时间,那么会被Memcache服务器端清除掉这个数据,单位是秒,如果设置为0,则是永远有效,我们这里设置了60,就是一分钟有效时间:
$mem->set(‘key1‘, ‘This is first value’, 0, 60);
从Memcache服务器端获取一条数据,它只有一个参数,就是需要获取数据的key,我们这里是上一步设置的key1,现在获取这个数据后输出输出:
$val = $mem->get(’key1′);
echo "Get key1 value: " . $val;
echo "Get key1 value: " . $val;
现在是使用replace方法来替换掉上面key1的值,replace方法的参数跟set是一样的,不过第一个参数key1是必须是要替换数据内容的key,最后输出了:
$mem->replace(‘key1′, ‘This is replace value’, 0, 60);
$val = $mem->get(‘key1′);
echo "Get key1 value: " . $val;
$val = $mem->get(‘key1′);
echo "Get key1 value: " . $val;
同样的,Memcache也是可以保存数组的,下面是在Memcache上面保存了一个数组,然后获取回来并输出
$arr = array(‘aaa’, ‘bbb’, ‘ccc’, ‘ddd’);
$mem->set(‘key2′, $arr, 0, 60);
$val2 = $mem->get(‘key2′);
print_r($val2);
$mem->set(‘key2′, $arr, 0, 60);
$val2 = $mem->get(‘key2′);
print_r($val2);
现在删除一个数据,使用delte接口,参数就是一个key,然后就能够把Memcache服务器这个key的数据删除,最后输出的时候没有结果
$mem->delete(‘key1′);
$val = $mem->get(‘key1′);
echo "Get key1 value: " . $val . "<br>";
$val = $mem->get(‘key1′);
echo "Get key1 value: " . $val . "<br>";
最后我们把所有的保存在Memcache服务器上的数据都清除,会发现数据都没有了,最后输出key2的数据为空,最后关闭连接
$mem->flush();
$val2 = $mem->get(‘key2′);
echo "Get key2 value: ";
print_r($val2);
echo "<br>";
$val2 = $mem->get(‘key2′);
echo "Get key2 value: ";
print_r($val2);
echo "<br>";
Memcache的使用
使用Memcache的网站一般流量都是比较大的,为了缓解数据库的压力,让Memcache作为一个缓存区域,把部分信息保存在内存中,在前端能够迅速的进行存取。那么一般的焦点就是集中在如何分担数据库压力和进行分布式,毕竟单台Memcache的内存容量的有限的。我这里简单提出我的个人看法,未经实践,权当参考。
现象:
VMware启动进入系统后,XP通过SecureCRT进行SSH进行登陆,结果怎么都登不上去。。。
在虚拟机里面用netstat看了一下,Suse上的22端口已经在侦听了,可是就是从XP上登不上去,ping都没问题。
root 身份执行:
原来是防火墙的原因!
首先,打开/etc/sysconfig/SuSEfirewall2 文件,FW_SERVICES_EXT_TCP="ssh"可以定义开放ssh的服务。
然后,打开root登陆权限,如下:
决办法:
ssh默认不支持密码方式验证.
修改/etc/ssh/sshd_config文件,把
PasswordAuthentication no
修改为:
PasswordAuthentication yes
再重启ssh服务即可:
/etc/init.d/sshd restart
防火墙设置也可以执行yast 程式,于 firewall 项目内设定允许 ssh port 22 登入存取。
后记:
如果想控制仅允许某一IP或某一网段来使用这个SSH服务呢?
修改配置文件中的FW_SERVICES_ACCEPT_EXT参数即可实现.
----------------------------------------------------------------------------
补充:
使用yast查看sshd服务的状态,在命令行输入yast回车,启动yast界面,选择 “System>SystemServices(Runlevel)”,打开SystemServices(Runlevel):Services 界面,检查sshd状态已经是Enabled。使用功能键Alt E转到ExpertMode,观察到当前sshd运行在Runlevel5, (Fullmultiuserwithnetworkanddisplaymanager),这都没有问题。
注意:service sshd restart 这样也可以启动!
VMware启动进入系统后,XP通过SecureCRT进行SSH进行登陆,结果怎么都登不上去。。。
在虚拟机里面用netstat看了一下,Suse上的22端口已经在侦听了,可是就是从XP上登不上去,ping都没问题。
root 身份执行:
linux-jvm6:/home/jackxiang/桌面 # telnet localhost 22
Trying ::1...
Connected to localhost.
Escape character is '^]'.
SSH-2.0-OpenSSH_5.2
Protocol mismatch.
Connection closed by foreign host.
Trying ::1...
Connected to localhost.
Escape character is '^]'.
SSH-2.0-OpenSSH_5.2
Protocol mismatch.
Connection closed by foreign host.
原来是防火墙的原因!
首先,打开/etc/sysconfig/SuSEfirewall2 文件,FW_SERVICES_EXT_TCP="ssh"可以定义开放ssh的服务。
然后,打开root登陆权限,如下:
决办法:
ssh默认不支持密码方式验证.
修改/etc/ssh/sshd_config文件,把
PasswordAuthentication no
修改为:
PasswordAuthentication yes
再重启ssh服务即可:
/etc/init.d/sshd restart
防火墙设置也可以执行yast 程式,于 firewall 项目内设定允许 ssh port 22 登入存取。
后记:
如果想控制仅允许某一IP或某一网段来使用这个SSH服务呢?
修改配置文件中的FW_SERVICES_ACCEPT_EXT参数即可实现.
----------------------------------------------------------------------------
补充:
使用yast查看sshd服务的状态,在命令行输入yast回车,启动yast界面,选择 “System>SystemServices(Runlevel)”,打开SystemServices(Runlevel):Services 界面,检查sshd状态已经是Enabled。使用功能键Alt E转到ExpertMode,观察到当前sshd运行在Runlevel5, (Fullmultiuserwithnetworkanddisplaymanager),这都没有问题。
注意:service sshd restart 这样也可以启动!
IntelliJ IDEA 9.0启动错误解决办法
Java开发的免费IDE除了Eclipse和Netbeans,现在又多了一个IntelliJ IDEA。IntelliJ IDEA以前并不是免费软件,仅仅对开发开源项目提供免费的license。但是供从9.0开始,IntelliJ IDEA多了一个社区版本,这个免费的社区版本相对于收费版本,减少了很多高级功能,但是仍然能够满足我日常的Java应用开发。对我个人而言,最重要的是对Groovy和Scala的支持。
既然是免费版本,先装一个体验一下。安装完成之后双击左面的idea.exe启动IDEA,弹出一个错误框,错误提示是:The JVM could not be started.The main method may have thrown an exception.如果启动java应用程序时候内存不足,jvm会提示上面的错误。IDEA会出现这个错误是因为idea.exe启动程序用exe4j制作的,exe4j运行在前,到运行idea程序的时候内存已经不足。
找到了问题原因,有三种办法可以解决上面这个问题。一种办法是修改IDEA安装目录下的bin目录下的idea.exe.vmoptions修改一下。还有一种办法是用idea.bat启动,设置一下IDEA_JDK或者JDK_HOME系统变量指到JDK的安装目录。如果觉得上面两种方法方法麻烦,最后一个办法可以打一个idea.exe补丁。
php支持插件下载地址:http://zh.sourceforge.jp/projects/sfnet_idea-php/downloads/idea-php/_7/idea-php-alpha-7.jar/
补丁在
" target="_blank">这里下载:http://www.jetbrains.net/devnet/servlet/JiveServlet/download/1185-4-11357/idea.zip,讲压缩文件里面的idea.exe替换掉IDEA安装目录下的bin目录下的同名文件即可。Java开发的免费IDE除了Eclipse和Netbeans,现在又多了一个IntelliJ IDEA。IntelliJ IDEA以前并不是免费软件,仅仅对开发开源项目提供免费的license。但是供从9.0开始,IntelliJ IDEA多了一个社区版本,这个免费的社区版本相对于收费版本,减少了很多高级功能,但是仍然能够满足我日常的Java应用开发。对我个人而言,最重要的是对Groovy和Scala的支持。
既然是免费版本,先装一个体验一下。安装完成之后双击左面的idea.exe启动IDEA,弹出一个错误框,错误提示是:The JVM could not be started.The main method may have thrown an exception.如果启动java应用程序时候内存不足,jvm会提示上面的错误。IDEA会出现这个错误是因为idea.exe启动程序用exe4j制作的,exe4j运行在前,到运行idea程序的时候内存已经不足。
找到了问题原因,有三种办法可以解决上面这个问题。一种办法是修改IDEA安装目录下的bin目录下的idea.exe.vmoptions修改一下。还有一种办法是用idea.bat启动,设置一下IDEA_JDK或者JDK_HOME系统变量指到JDK的安装目录。如果觉得上面两种方法方法麻烦,最后一个办法可以打一个idea.exe补丁。
php支持插件下载地址:http://zh.sourceforge.jp/projects/sfnet_idea-php/downloads/idea-php/_7/idea-php-alpha-7.jar/
补丁在
下载文件
来源:http://blog.interwis.net/sentom/archive/2010/01/17/intellij-idea-9.0.aspx
** 请注意! **
测试结果很大程度上依赖于机器的硬件/软件配置,并随配置变化而产生差异,因此:
本测试结果 *仅供参考*
测试用硬件:
CPU: Intel PII 300(66x4.5)
RAM: 192M
HD: IBM 20G(2M cache)
测试用软件:
OS: Slackware 7(自行编译的2.2.14核心)
Web: Apache 1.3.12(标准模块按缺省配置,所有模块静态编译)
PHP 4.0 RC1(加入了MySQL支持)
mod_perl 1.23(缺省配置,未加EVERYTHING=1)
ApacheJServ 1.1(缺省配置)
JDK: JDK 1.2.2
JSDK: JSDK 2
JSP: GNUJSP 1.0.0
JSP: GNUJSP 1.0.0
本测试是用Apache自带的Apache Bench(ab)进行的,命令为:
/www/bin/ab -c 20 -n 1000 CGI/脚本URL
此命令表示使用 20 个并发连接,进行 1000 次请求。
所有测试均在本机进行,各种测试均反复进行5次,去掉最大最小值后取平均值。
我分别测试了C写的CGI、Perl写的CGI、用mod_perl执行的Perl CGI、PHP和JSP。
各种CGI/脚本均输出内容相似的简单页面,内容如下:
html
body
h1The xxxx Hello Program/h1
p
Hello xxxx World!
/body
/html
测试结果(只取了最具代表性的 Requests per second 即每秒处理请求数这一项)
CGI/脚本类型 每秒处理请求数
C CGI 128
Perl CGI 69
mod_perl 223
PHP 237
JSP 21
除了JSP之外,其它几种CGI/脚本的表现大致是正常的。Perl程序解释执行,作为
CGI运行时又需要另外fork进程,所以最慢;mod_perl和PHP都直接在httpd内部运
行脚本,省掉了fork的消耗,所以快了很多;C程序虽然本应最快,但作为CGI 运
行时也是因为fork而使性能大打折扣。
至于JSP...我想这个结果并不具有代表性。毕竟测试用机只有192M内存,用top看
看,一个JAVA就占了11M。况且测试用机本身是一台Web server,测试时还有好几
十个httpd在跑
不过不管怎么说,在配置较低的服务器上,跑PHP、mod_perl在性能上要好过JSP
是肯定的。
附测试用程序:
C程序 hello.c
#include stdio.h
int main(void)
{
char s[] = "C CGI";
printf ("Content-Type: text/html ");
printf ("html "
"body "
"h1The C CGI Hello Program/h1 "
"p "
"Hello %s World! "
"/body "
"/html ", s);
return 0;
}
用 gcc -o hello hello.c 编译,把 hello 放到 cgi-bin目录下。
Perl程序 hello.pl
#!/usr/bin/perl
#!/usr/bin/perl
$s = "Perl CGI";
print "Content-Type: text/html ";
print <<DONE
html
body
h1The Perl CGI Hello Program/h1
p
Hello $s World!
/body
/html
DONE
把hello.pl放到cgi-bin目录下,兼作Perl CGI和mod_perl 脚本测试用。
PHP文件 hello.php
html
body
h1The PHP Hello Program/h1
<? $s = "PHP"; ?>
p
Hello <? echo $s ?> World!
/body
/body
/html
JSP文件 hello.jsp
html
body
h1The JSP Hello Program/h1
p
<% String s = "JSP"; %>
p
Hello <%= s %> World!
/body
/html
shenvo 回复于:2003-01-15 13:41:46跑jsp这么耗内存吗,这和运行什么样的服务器也有关系吧,请问斑竹tomcat,resin哪个性能更好些(同等条件下)
南非蜘蛛 回复于:2003-01-15 13:44:32[quote:afe8c42037="shenvo"]跑jsp这么耗内存吗,这和运行什么样的服务器也有关系吧,请问斑竹tomcat,resin哪个性能更好些(同等条件下)[/quote:afe8c42037]
我觉得不要钱的好,纯属个人意见,不代表版本意见,呵呵
neteagle 回复于:2003-01-16 13:48:29我的tomcat比较夸张,环境为redhat AS 2.1+apache1.3.27+tomcat 4.1.18,jdk为IBMJDK1.3.1,数据库为oracle9I,开始时每个java占用内存为25M,随着访问的增加开始上升到100多M,多时达到300多M,没有访问后java占用的内存并不释放,只有重起tomcat才能释放内存,我一直找不到原因,蜘蛛你知道吗?
南非蜘蛛 回复于:2003-01-16 13:55:17[quote:a9d1723b7c="neteagle"]我的tomcat比较夸张,环境为redhat AS 2.1+apache1.3.27+tomcat 4.1.18,jdk为IBMJDK1.3.1,数据库为oracle9I,开始时每个java占用内存为25M,随着访问的增加开始上升到100多M,多时达到..........[/quote:a9d1723b7c]
是你的程序没有释放内存吧???
neteagle 回复于:2003-01-16 14:09:15对,tomcat没有释放内存,一个java仍然占用300多M内存,
只有重起tomcat才能释放
南非蜘蛛 回复于:2003-01-16 14:11:10[quote:de9500e94e="neteagle"]对,tomcat没有释放内存,一个java仍然占用300多M内存,
只有重起tomcat才能释放[/quote:de9500e94e]
我查查资料,我觉得是你程序写的有问题,不是tomcat的问题
neteagle 回复于:2003-01-16 14:16:36我先用我自己的应用出现问题,
后来用了你上面贴里的那个helloword.jsp
用ab测试
ygzq 回复于:2003-04-03 10:52:05[quote:07cc0e3071="南非蜘蛛"]除了JSP之外,其它几种CGI/脚本的表现大致是正常的。Perl程序解释执行,作为
CGI运行时又需要另外fork进程,所以最慢;mod_perl和PHP都直接在httpd内部运
行脚本,省掉了fork的消耗,所以快了很多;C程序虽然本应最快,但作为CGI 运
行时也是因为fork而使性能大打折扣。[/quote:07cc0e3071]
simple c cgi should be much more quicker than listed.
forking a perl takes about 4 MB memory while forking a simple c program can be ignored (yes still some overhead).
agree that c cgi should simple.
price for php and mod_perl is that you end up with a much larger httpd file which needs more resources to run - no free lunch as it says. so the system can be really slow when/before it establishes its httpd process pools, and when there are a lot of users so new httpd processes need to be created.
麻辣 回复于:2003-10-20 01:47:45无意中发现这个帖子,我也测试了一下,和上面的结果完全不同
理论归理论,还是多实测,不同的代码不同的环境可能有不同的测试结果。
我的测试结果完全相反(在windows环境)perl普通状态(没有mod_perl)下不但不慢,还比PHP要快
测试完成相同加法运算,循环1000000次(如果您的机器配置比较底,可以减少循环次数)
雷鸟2000+ 256兆内存,考虑到加上编译时间,做了两个脚本:
######perl.cgi#########
#!/usr/bin/perl
use Benchmark;
$TT0 = new Benchmark;
do "test.cgi";#用DO命令调用test.cgi脚本来计算总时间
exit;
测试结果很大程度上依赖于机器的硬件/软件配置,并随配置变化而产生差异,因此:
本测试结果 *仅供参考*
测试用硬件:
CPU: Intel PII 300(66x4.5)
RAM: 192M
HD: IBM 20G(2M cache)
测试用软件:
OS: Slackware 7(自行编译的2.2.14核心)
Web: Apache 1.3.12(标准模块按缺省配置,所有模块静态编译)
PHP 4.0 RC1(加入了MySQL支持)
mod_perl 1.23(缺省配置,未加EVERYTHING=1)
ApacheJServ 1.1(缺省配置)
JDK: JDK 1.2.2
JSDK: JSDK 2
JSP: GNUJSP 1.0.0
JSP: GNUJSP 1.0.0
本测试是用Apache自带的Apache Bench(ab)进行的,命令为:
/www/bin/ab -c 20 -n 1000 CGI/脚本URL
此命令表示使用 20 个并发连接,进行 1000 次请求。
所有测试均在本机进行,各种测试均反复进行5次,去掉最大最小值后取平均值。
我分别测试了C写的CGI、Perl写的CGI、用mod_perl执行的Perl CGI、PHP和JSP。
各种CGI/脚本均输出内容相似的简单页面,内容如下:
html
body
h1The xxxx Hello Program/h1
p
Hello xxxx World!
/body
/html
测试结果(只取了最具代表性的 Requests per second 即每秒处理请求数这一项)
CGI/脚本类型 每秒处理请求数
C CGI 128
Perl CGI 69
mod_perl 223
PHP 237
JSP 21
除了JSP之外,其它几种CGI/脚本的表现大致是正常的。Perl程序解释执行,作为
CGI运行时又需要另外fork进程,所以最慢;mod_perl和PHP都直接在httpd内部运
行脚本,省掉了fork的消耗,所以快了很多;C程序虽然本应最快,但作为CGI 运
行时也是因为fork而使性能大打折扣。
至于JSP...我想这个结果并不具有代表性。毕竟测试用机只有192M内存,用top看
看,一个JAVA就占了11M。况且测试用机本身是一台Web server,测试时还有好几
十个httpd在跑
不过不管怎么说,在配置较低的服务器上,跑PHP、mod_perl在性能上要好过JSP
是肯定的。
附测试用程序:
C程序 hello.c
#include stdio.h
int main(void)
{
char s[] = "C CGI";
printf ("Content-Type: text/html ");
printf ("html "
"body "
"h1The C CGI Hello Program/h1 "
"p "
"Hello %s World! "
"/body "
"/html ", s);
return 0;
}
用 gcc -o hello hello.c 编译,把 hello 放到 cgi-bin目录下。
Perl程序 hello.pl
#!/usr/bin/perl
#!/usr/bin/perl
$s = "Perl CGI";
print "Content-Type: text/html ";
print <<DONE
html
body
h1The Perl CGI Hello Program/h1
p
Hello $s World!
/body
/html
DONE
把hello.pl放到cgi-bin目录下,兼作Perl CGI和mod_perl 脚本测试用。
PHP文件 hello.php
html
body
h1The PHP Hello Program/h1
<? $s = "PHP"; ?>
p
Hello <? echo $s ?> World!
/body
/body
/html
JSP文件 hello.jsp
html
body
h1The JSP Hello Program/h1
p
<% String s = "JSP"; %>
p
Hello <%= s %> World!
/body
/html
shenvo 回复于:2003-01-15 13:41:46跑jsp这么耗内存吗,这和运行什么样的服务器也有关系吧,请问斑竹tomcat,resin哪个性能更好些(同等条件下)
南非蜘蛛 回复于:2003-01-15 13:44:32[quote:afe8c42037="shenvo"]跑jsp这么耗内存吗,这和运行什么样的服务器也有关系吧,请问斑竹tomcat,resin哪个性能更好些(同等条件下)[/quote:afe8c42037]
我觉得不要钱的好,纯属个人意见,不代表版本意见,呵呵
neteagle 回复于:2003-01-16 13:48:29我的tomcat比较夸张,环境为redhat AS 2.1+apache1.3.27+tomcat 4.1.18,jdk为IBMJDK1.3.1,数据库为oracle9I,开始时每个java占用内存为25M,随着访问的增加开始上升到100多M,多时达到300多M,没有访问后java占用的内存并不释放,只有重起tomcat才能释放内存,我一直找不到原因,蜘蛛你知道吗?
南非蜘蛛 回复于:2003-01-16 13:55:17[quote:a9d1723b7c="neteagle"]我的tomcat比较夸张,环境为redhat AS 2.1+apache1.3.27+tomcat 4.1.18,jdk为IBMJDK1.3.1,数据库为oracle9I,开始时每个java占用内存为25M,随着访问的增加开始上升到100多M,多时达到..........[/quote:a9d1723b7c]
是你的程序没有释放内存吧???
neteagle 回复于:2003-01-16 14:09:15对,tomcat没有释放内存,一个java仍然占用300多M内存,
只有重起tomcat才能释放
南非蜘蛛 回复于:2003-01-16 14:11:10[quote:de9500e94e="neteagle"]对,tomcat没有释放内存,一个java仍然占用300多M内存,
只有重起tomcat才能释放[/quote:de9500e94e]
我查查资料,我觉得是你程序写的有问题,不是tomcat的问题
neteagle 回复于:2003-01-16 14:16:36我先用我自己的应用出现问题,
后来用了你上面贴里的那个helloword.jsp
用ab测试
ygzq 回复于:2003-04-03 10:52:05[quote:07cc0e3071="南非蜘蛛"]除了JSP之外,其它几种CGI/脚本的表现大致是正常的。Perl程序解释执行,作为
CGI运行时又需要另外fork进程,所以最慢;mod_perl和PHP都直接在httpd内部运
行脚本,省掉了fork的消耗,所以快了很多;C程序虽然本应最快,但作为CGI 运
行时也是因为fork而使性能大打折扣。[/quote:07cc0e3071]
simple c cgi should be much more quicker than listed.
forking a perl takes about 4 MB memory while forking a simple c program can be ignored (yes still some overhead).
agree that c cgi should simple.
price for php and mod_perl is that you end up with a much larger httpd file which needs more resources to run - no free lunch as it says. so the system can be really slow when/before it establishes its httpd process pools, and when there are a lot of users so new httpd processes need to be created.
麻辣 回复于:2003-10-20 01:47:45无意中发现这个帖子,我也测试了一下,和上面的结果完全不同
理论归理论,还是多实测,不同的代码不同的环境可能有不同的测试结果。
我的测试结果完全相反(在windows环境)perl普通状态(没有mod_perl)下不但不慢,还比PHP要快
测试完成相同加法运算,循环1000000次(如果您的机器配置比较底,可以减少循环次数)
雷鸟2000+ 256兆内存,考虑到加上编译时间,做了两个脚本:
######perl.cgi#########
#!/usr/bin/perl
use Benchmark;
$TT0 = new Benchmark;
do "test.cgi";#用DO命令调用test.cgi脚本来计算总时间
exit;
刚给一个朋友解决他写的Discuz!插件的问题,说到MySQL的COUNT(*)的效率,发现越说越说不清楚,干脆写下来,分享给大家。
COUNT(*)与COUNT(COL)
网上搜索了下,发现各种说法都有:
比如认为COUNT(COL)比COUNT(*)快的;
认为COUNT(*)比COUNT(COL)快的;
还有朋友很搞笑的说到这个其实是看人品的。
在不加WHERE限制条件的情况下,COUNT(*)与COUNT(COL)基本可以认为是等价的;
但是在有WHERE限制条件的情况下,COUNT(*)会比COUNT(COL)快非常多;
具体的数据参考如下:
mysql> SELECT COUNT(*) FROM cdb_posts where fid = 604;
+————+
| COUNT(fid) |
+————+
| 79000 |
+————+
1 row in set (0.03 sec)
mysql> SELECT COUNT(tid) FROM cdb_posts where fid = 604;
+————+
| COUNT(tid) |
+————+
| 79000 |
+————+
1 row in set (0.33 sec)
mysql> SELECT COUNT(pid) FROM cdb_posts where fid = 604;
+————+
| COUNT(pid) |
+————+
| 79000 |
+————+
1 row in set (0.33 sec)
COUNT(*)通常是对主键进行索引扫描,而COUNT(COL)就不一定了,另外前者是统计表中的所有符合的纪录总数,而后者是计算表中所有符合的COL的纪录数。还有有区别的。
COUNT时的WHERE
这点以前就写过,详细请看《Mysql中count(*),DISTINCT的使用方法和效率研究》:http://www.ccvita.com/156.html
简单说下,就是COUNT的时候,如果没有WHERE限制的话,MySQL直接返回保存有总的行数
而在有WHERE限制的情况下,总是需要对MySQL进行全表遍历。
优化总结:
1.任何情况下SELECT COUNT(*) FROM tablename是最优选择;
2.尽量减少SELECT COUNT(*) FROM tablename WHERE COL = ‘value’ 这种查询;
3.杜绝SELECT COUNT(COL) FROM tablename WHERE COL2 = ‘value’ 的出现。
COUNT(*)与COUNT(COL)
网上搜索了下,发现各种说法都有:
比如认为COUNT(COL)比COUNT(*)快的;
认为COUNT(*)比COUNT(COL)快的;
还有朋友很搞笑的说到这个其实是看人品的。
在不加WHERE限制条件的情况下,COUNT(*)与COUNT(COL)基本可以认为是等价的;
但是在有WHERE限制条件的情况下,COUNT(*)会比COUNT(COL)快非常多;
具体的数据参考如下:
mysql> SELECT COUNT(*) FROM cdb_posts where fid = 604;
+————+
| COUNT(fid) |
+————+
| 79000 |
+————+
1 row in set (0.03 sec)
mysql> SELECT COUNT(tid) FROM cdb_posts where fid = 604;
+————+
| COUNT(tid) |
+————+
| 79000 |
+————+
1 row in set (0.33 sec)
mysql> SELECT COUNT(pid) FROM cdb_posts where fid = 604;
+————+
| COUNT(pid) |
+————+
| 79000 |
+————+
1 row in set (0.33 sec)
COUNT(*)通常是对主键进行索引扫描,而COUNT(COL)就不一定了,另外前者是统计表中的所有符合的纪录总数,而后者是计算表中所有符合的COL的纪录数。还有有区别的。
COUNT时的WHERE
这点以前就写过,详细请看《Mysql中count(*),DISTINCT的使用方法和效率研究》:http://www.ccvita.com/156.html
简单说下,就是COUNT的时候,如果没有WHERE限制的话,MySQL直接返回保存有总的行数
而在有WHERE限制的情况下,总是需要对MySQL进行全表遍历。
优化总结:
1.任何情况下SELECT COUNT(*) FROM tablename是最优选择;
2.尽量减少SELECT COUNT(*) FROM tablename WHERE COL = ‘value’ 这种查询;
3.杜绝SELECT COUNT(COL) FROM tablename WHERE COL2 = ‘value’ 的出现。
VB 最简单实现摄像头监控(带源代码)
以前发现控制摄像头都是以大堆代码 ! 今天写了个很少的代码 送给大家
测试成功 ! 窗体代码自己看我的截图自己添加 ! 这个都不会就不要学VB 了
以前发现控制摄像头都是以大堆代码 ! 今天写了个很少的代码 送给大家
Private Declare Function SendMessage Lib "USER32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function capCreateCaptureWindow Lib "avicap32.dll" Alias "capCreateCaptureWindowA" (ByVal lpszWindowName As String, ByVal dwStyle As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hwndParent As Long, ByVal nID As Long) As Long
Private Const GET_FRAME As Long = 1084
Private Const COPY As Long = 1054
Private Const CONNECT As Long = 1034
Private Const DISCONNECT As Long = 1035
Private CapHwnd As Long
Private Sub Command1_Click()
'打开摄像头
CapHwnd = capCreateCaptureWindow("WebcamCapture", 0, 0, 0, 640, 480, Me.hwnd, 0)
DoEvents
SendMessage CapHwnd, CONNECT, 0, 0
Timer1.Enabled = True
End Sub
Private Sub Command2_Click()
'停止摄像头
DoEvents
SendMessage CapHwnd, DISCONNECT, 0, 0
Timer1.Enabled = False
End Sub
Private Sub Form_Load()
'几句代码实现控制摄像头,有摄像头的进哦
Combo1.AddItem "160*120"
Combo1.AddItem "176*144"
Combo1.AddItem "320*240"
Combo1.AddItem "352*288"
Combo1.AddItem "640*480"
Combo1.ListIndex = 0
End Sub
Private Sub Timer1_Timer() 'timer1.Interval=50
On Error Resume Next
SendMessage CapHwnd, GET_FRAME, 0, 0
SendMessage CapHwnd, COPY, 0, 0
Picture1.Picture = Clipboard.GetData
Clipboard.Clear
End Sub
Private Declare Function capCreateCaptureWindow Lib "avicap32.dll" Alias "capCreateCaptureWindowA" (ByVal lpszWindowName As String, ByVal dwStyle As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hwndParent As Long, ByVal nID As Long) As Long
Private Const GET_FRAME As Long = 1084
Private Const COPY As Long = 1054
Private Const CONNECT As Long = 1034
Private Const DISCONNECT As Long = 1035
Private CapHwnd As Long
Private Sub Command1_Click()
'打开摄像头
CapHwnd = capCreateCaptureWindow("WebcamCapture", 0, 0, 0, 640, 480, Me.hwnd, 0)
DoEvents
SendMessage CapHwnd, CONNECT, 0, 0
Timer1.Enabled = True
End Sub
Private Sub Command2_Click()
'停止摄像头
DoEvents
SendMessage CapHwnd, DISCONNECT, 0, 0
Timer1.Enabled = False
End Sub
Private Sub Form_Load()
'几句代码实现控制摄像头,有摄像头的进哦
Combo1.AddItem "160*120"
Combo1.AddItem "176*144"
Combo1.AddItem "320*240"
Combo1.AddItem "352*288"
Combo1.AddItem "640*480"
Combo1.ListIndex = 0
End Sub
Private Sub Timer1_Timer() 'timer1.Interval=50
On Error Resume Next
SendMessage CapHwnd, GET_FRAME, 0, 0
SendMessage CapHwnd, COPY, 0, 0
Picture1.Picture = Clipboard.GetData
Clipboard.Clear
End Sub
测试成功 ! 窗体代码自己看我的截图自己添加 ! 这个都不会就不要学VB 了
1.安装mysql,
2.安装MyODBC-standard-3.51.07-win.msi
3:vb连接语句是:
Public strcnn As StringPublic sql As String
Public conn As New ADODB.Connection
Public rs As New ADODB.Recordset
Sub link()
strcnn = "driver={MySQL ODBC 3.51 Driver};server=localhost;database=data;uid=root;pwd=zjb"conn.Open strcnn
End Sub
错误MySQL 返回: #1251 - Client does not support authentication protocol requested by server; consider upgrading MySQL client
出现这种问题也只有在MYSQL4.1.x以上版本,用4.0.x就没问题了。
原因是因为使用的mysql服务器版本中使用了新的密码验证机制,这需要客户端的版本要在4.0以上,原来的密码函数被改为old_password ();,这样使用password()生成的密码在旧的版本上的客户端就不好使了,而PHP中的MYSQL客户端都是3.23的(当然,mysqli的扩展除外),问题就在这了。
1、进入命令行下,转到MYSQL目录的BIN目录下,进入MYSQL命令行模式:
例:d:\mysql\bin>mysql -uroot -p123 用户root,密码123)
2、输入命令:mysql>set password for 'root'@'localhost'=old_password('123'); (注意冒号不能少)
3、退入MYSQL命令行:mysql>q
ok
VB程序访问服务器上一个mysql的库
先在本机上安装最新的ODBC CONNECTER/mysql
无需设置ODBC,就可以使用.
注意MYSQL的帐户登录是根据主机的,设置好MYSQL的帐户后再做测试.
测试代码:
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim fld As ADODB.Field
Dim sql As String
'connect to MySQL server using MySQL ODBC 3.51 Driver
Set conn = New ADODB.Connection
conn.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};" _
& "SERVER=192.168.0.1;" _
& " DATABASE=db_name;" _
& "UID=username;PWD=password; OPTION=3"
conn.Open
'create table
conn.Execute "DROP TABLE IF EXISTS my_ado"
conn.E
ODBC加载.
vb中添加一个Adodc的控件.
Public Function conn() As String
conn = "Provider=SQLOLEDB.1;Password=数据库管理密码;Persist Security Info=True;User ID=数据库管理帐号;Initial Catalog=数据库名;Data Source=计算机名"
End Function
Dim rs As New ADODB.Recordset
Dim con As New ADODB.Connection
Dim sql As String
Set con = CreateObject("ADODB.Connection")
con.Open conn
sql = "select * from Admin where username='" & username.Text & "' and password='" & password.Text & "'"
rs.Open sql, con, 1, 1
ODBC加载.
vb中添加一个Adodc的控件.
conn = "Provider=SQLOLEDB.1;Password=数据库管理密码;Persist Security Info=True;User ID=用户名;Initial Catalog=数据库名;Data Source=计算机服务器名称"
Dim rs As New ADODB.Recordset
Dim con As New ADODB.Connection
Dim sql As String
Set con = CreateObject("ADODB.Connection")
con.Open conn
注:不管用什么方法都要有MySql驱动!!!
2.安装MyODBC-standard-3.51.07-win.msi
3:vb连接语句是:
Public strcnn As StringPublic sql As String
Public conn As New ADODB.Connection
Public rs As New ADODB.Recordset
Sub link()
strcnn = "driver={MySQL ODBC 3.51 Driver};server=localhost;database=data;uid=root;pwd=zjb"conn.Open strcnn
End Sub
错误MySQL 返回: #1251 - Client does not support authentication protocol requested by server; consider upgrading MySQL client
出现这种问题也只有在MYSQL4.1.x以上版本,用4.0.x就没问题了。
原因是因为使用的mysql服务器版本中使用了新的密码验证机制,这需要客户端的版本要在4.0以上,原来的密码函数被改为old_password ();,这样使用password()生成的密码在旧的版本上的客户端就不好使了,而PHP中的MYSQL客户端都是3.23的(当然,mysqli的扩展除外),问题就在这了。
1、进入命令行下,转到MYSQL目录的BIN目录下,进入MYSQL命令行模式:
例:d:\mysql\bin>mysql -uroot -p123 用户root,密码123)
2、输入命令:mysql>set password for 'root'@'localhost'=old_password('123'); (注意冒号不能少)
3、退入MYSQL命令行:mysql>q
ok
VB程序访问服务器上一个mysql的库
先在本机上安装最新的ODBC CONNECTER/mysql
无需设置ODBC,就可以使用.
注意MYSQL的帐户登录是根据主机的,设置好MYSQL的帐户后再做测试.
测试代码:
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim fld As ADODB.Field
Dim sql As String
'connect to MySQL server using MySQL ODBC 3.51 Driver
Set conn = New ADODB.Connection
conn.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};" _
& "SERVER=192.168.0.1;" _
& " DATABASE=db_name;" _
& "UID=username;PWD=password; OPTION=3"
conn.Open
'create table
conn.Execute "DROP TABLE IF EXISTS my_ado"
conn.E
ODBC加载.
vb中添加一个Adodc的控件.
Public Function conn() As String
conn = "Provider=SQLOLEDB.1;Password=数据库管理密码;Persist Security Info=True;User ID=数据库管理帐号;Initial Catalog=数据库名;Data Source=计算机名"
End Function
Dim rs As New ADODB.Recordset
Dim con As New ADODB.Connection
Dim sql As String
Set con = CreateObject("ADODB.Connection")
con.Open conn
sql = "select * from Admin where username='" & username.Text & "' and password='" & password.Text & "'"
rs.Open sql, con, 1, 1
ODBC加载.
vb中添加一个Adodc的控件.
conn = "Provider=SQLOLEDB.1;Password=数据库管理密码;Persist Security Info=True;User ID=用户名;Initial Catalog=数据库名;Data Source=计算机服务器名称"
Dim rs As New ADODB.Recordset
Dim con As New ADODB.Connection
Dim sql As String
Set con = CreateObject("ADODB.Connection")
con.Open conn
注:不管用什么方法都要有MySql驱动!!!
笔记本电脑上插无线网卡用的.可以解决非迅驰机型的上网问题
微型的PCI插槽。它也同样是在PCI的基础上发展起来的,最初是应用于笔记本,现在不少台式机也配备了Mini PCI插槽。Mini PCI的定义与PCI基本上一致,只是在外型上进行了微缩。目前使用Mini PCI插槽的主要有内置的无线网卡、Modem+网卡、电视卡以及一些多功能扩展卡等硬件设备。
微型的PCI插槽。它也同样是在PCI的基础上发展起来的,最初是应用于笔记本,现在不少台式机也配备了Mini PCI插槽。Mini PCI的定义与PCI基本上一致,只是在外型上进行了微缩。目前使用Mini PCI插槽的主要有内置的无线网卡、Modem+网卡、电视卡以及一些多功能扩展卡等硬件设备。
主板:ZOTAC H55ITX-A-E ITX H55,DDR3,WiFi,LGA1156,M.ITXM/B 价格:965
cpu:Inter Core i3 540 (3.06GHz) CPU/4M [Socket 1156] BOX 盒装 价格:1090
内存:2GB Kingston DDR3 PC3-10600 CL9 1.5V(D3-1333) 365 2根 730 价格是:730
机箱: 大水牛S0203机箱 价格:150块
电源:150W 机箱自带
硬盘:高清套餐 西部数据WD1TB绿盘 64M缓存 WD10EARS硬盘 价格:580
鼠标:8115 DELL鼠标 戴尔鼠标 usb接口 价格:48
键盘:戴尔DELL新版SK-8115键盘 非L100 防水静... 价格:18
合计:3581
阅读全文
cpu:Inter Core i3 540 (3.06GHz) CPU/4M [Socket 1156] BOX 盒装 价格:1090
内存:2GB Kingston DDR3 PC3-10600 CL9 1.5V(D3-1333) 365 2根 730 价格是:730
机箱: 大水牛S0203机箱 价格:150块
电源:150W 机箱自带
硬盘:高清套餐 西部数据WD1TB绿盘 64M缓存 WD10EARS硬盘 价格:580
鼠标:8115 DELL鼠标 戴尔鼠标 usb接口 价格:48
键盘:戴尔DELL新版SK-8115键盘 非L100 防水静... 价格:18
合计:3581
阅读全文
使用Hotspot Shield Launch这个软件也可以上YOUTUBE 视频加载也不慢!
http://www.hotspotshield.com/
先在这个网站下载程序,右上方那个图标既是下载
下载完毕后安装
再请点击这个网址http://www.hotspotshield.com/launch/
然后点那个RUN Hotspot Shield
然后桌面上多一个Hotspot Shield Launch 点开
IE自动打开一网页 再点RUN Hotspot Shield 这次是新界面 它会自动给你找一个新IP 你发现你右下角的图标变绿的 OK 你是美国IP了
这样..就可以再打开YOUTUBE网站~~会发现可以上了http://www.iduoka.com/do-not-have-access-to-foreign-sites-the-use-of-vpn-agents-in-hotspot-shield-launch/
来源:http://hi.baidu.com/wangluobaoku/blog/item/0eb7ba328f9d4c93a8018e32.html
http://www.hotspotshield.com/
先在这个网站下载程序,右上方那个图标既是下载
下载完毕后安装
再请点击这个网址http://www.hotspotshield.com/launch/
然后点那个RUN Hotspot Shield
然后桌面上多一个Hotspot Shield Launch 点开
IE自动打开一网页 再点RUN Hotspot Shield 这次是新界面 它会自动给你找一个新IP 你发现你右下角的图标变绿的 OK 你是美国IP了
这样..就可以再打开YOUTUBE网站~~会发现可以上了http://www.iduoka.com/do-not-have-access-to-foreign-sites-the-use-of-vpn-agents-in-hotspot-shield-launch/
来源:http://hi.baidu.com/wangluobaoku/blog/item/0eb7ba328f9d4c93a8018e32.html
今年的倒春寒使春天的步伐变得异常缓慢,天气忽冷忽热,很难找到春天的影子。这似乎也映衬了马云在这个春天的心情,这个春天对于马云来说还真是烦恼多多。阅读全文
拿到这本 《实战 Nginx》 有几天了,休假期间将感兴趣的几章阅读完毕。作者张宴是国内 Nginx 最早的技术传播者之一,产生的影响也最大,他的一系列 Nginx 实战的文章相信让很多 Nginx 用户受益良多。
尽管之前已经在他的网络文章或者 PPT 里看到过这本书里包含的一些内容,我还是要说一下第六章中的架构图是这本书中非常有参考价值的内容(至少对我如此),作为网站维护者,即使不用 Nginx,这几张图也非常值得分析一下。对于从 Apache 迁移到 Nginx 的用户,第七章关于 Rewrite 规则的讲解则不可错过。
这本书的最大缺点或者说不够严谨的地方,我觉得主要是体现在某些章节上关于设置项的说明缺少足够的阐释,比如"优化 Linux 内核参数"、"MySQL 5.1 配置优化"等内容如果添加足以让读者查找更多信息的注释就更好了。另外,从章节的安排上,如果多一节专门讲述 Nginx 优化的内容或许也会不错。
对于没有 Nginx 经验或者是想进一步了解 Nginx 的系统工程师,这本书是值得一读的。这本书的定价不过是一张电影票的价钱,如果可以解答你在工作中的几个技术问题,你说是否值得购买呢?
来源:
http://www.20ju.com/content/V144493.htm
下为马云演讲实录:
谢谢。开了一天的会,早上七点钟就开始开会,早上开会,下午开会,晚上开会,讨论的全是绿色。既然我是最后一个,我就当做刷牙水稍微轻松一下。我就不谈绿色了。一个多月以前我去台湾,在一个餐桌上,有一批年纪很大的企业家,头发都很白了,每个人都大谈创新,怎么创新?边上有个人跟我讲,台湾有希望,我想这么大年纪的人还在创新。后来我说台湾没希望了。假如七、八十岁的人还在创新,我们问题就大了,他们不相信年轻人比他们更会创新,其实他们应该是尽全力去努力帮助年轻人去创新,建个平台扶持他们创新、帮助他们创新。所以我们认为比年轻人更聪明,那灾难就出现了。
我经常看见父母骂孩子,我有一个亲戚把孩子逼得团团转,每天要读书,我说儿子都不愿意回家,为什么还让他读书。他说我就是读书没读好,我没读好,他就吃了大苦,他就必须读好。我说你没读好,他初中都还没毕业都不想读书了,他比你还糟糕。我们很多人都说80后不行了、90后不行了。直到最近我听说80后说70后不行了。这个世界上孩子们出了什么问题?我觉得还是没有出问题,是我们出问题了。
我父亲认为我不如他,争论了将近20年,每次吃饭就吵架,直到前几年我说,我把儿子十六、七岁养到了一米八,你把我养成这个样子,我对父亲说你看你本事大,还是我本事大。事情发生了很大的变化,我们的孩子永远超越我,我的父亲超越了我爷爷,我超越了我父亲,我也坚信我的孩子会超越我。假如我们对自己的孩子没有信心,我不知道我们对未来还会有信心吗?孩子是我们的产品,一个老板对自己的产品没有信心的时候,你怎么相信这个产品会走出去?所以我们今天不管讲绿色,还是思想的盛宴,这个盛宴是80后、90后的孩子给我们做的。绿色价值观首先装在自己手上,这个灾难是谁搞出来的,是上一代人搞出来的。我们在收拾这个残局,我们的孩子们为我们收拾残局,为什么他们不行了?
你说孩子们不承担责任,你问问看,汶川大地震冲在第一线的是80后,玉树地震冲在第一线的是80后。我爷爷相信报纸,我们父亲相信收音机,我们这代人相信看电视,孩子们谁都不相信,他们相信自己的观点。他们只不过以不同方式向我们表达而已。我们总说孩子不听话,请问我们听了孩子的话没有。我父亲说了我20年不听话,他从来没听过我说话。孩子们在想什么,事实上我认为,有时候需要跟孩子谈抗日战争、解放战争,他会说瞎扯什么呢?这些东西都过去了,看看未来吧。
我第一次说我拒绝吃鱼翅,我跟你讲鱼翅真不要吃,90%的鱼翅是假的。有人我说是绿色环保主义者。我有一个建议,他是理想主义,操作手法有问题,其实很多时候就是沟通的问题,跟孩子的沟通也是一样。
我孩子17岁,跑过来跟我说:父亲,我要找女朋友了。我说好事儿啊,为什么?他说97%我这个年龄的人都有女朋友了,我说好。第一告诉我这97%的数据从哪里来,他就说不清楚。第二,我个人认为,应该讲我觉得,假如你爱上一个姑娘,那个姑娘也爱上你,我坚决支持。我们过来这一代,都很正常,他不想这个才不正常,他都懂,只不过不懂装懂而已。他们是不懂装懂,我们是懂装不懂,我一定支持你。如果97%的人都找对象了,你不找对象我觉得不太靠谱了。
最后他就会慢慢思考,其实我们只要学会跟他们沟通,去倾听他们沟通,你说鱼翅不吃,我们在阿里巴巴淘宝网上谈不吃鱼翅的时候,我从来没有见到过一次,我们所有政策永远反对,只有这一次连续几千人跟帖,所有人都是支持的。我们一直说我们这一代人拿不到诺贝尔奖,我也保证我们这代人很难拿到,但是我们的孩子们一定能拿到。我们永远说为国争光是拿不到的。而人家是为人类做的。
我觉得我们80后、90后做了很多有意义的事情。我们公司90%以上的员工是80后,他们创造的公司连父母想都不敢想,创造出几千亿市场,几千亿的创新。为什么讲这个,下午有一个争论提到,我们总认为自己是对的,我们吃过苦,要告诉孩子们,但是不要让孩子们重新走我们走过的路,重新我们走过的路是错误的。谁都会犯错,我们没有过偶像吗?还是我父亲没有过偶像?你说杨子荣啊、李玉和都是他们的偶像。
所以我们不是去埋怨,好孩子是表扬出来的。80后、90后既然承担着我们的未来,我们就要支持他们,没有人给过我们机会,我们为什么不给他们机会。所以我给大家讲的,今天解决这些问题,我坚决相信解决的方案一定比困难多,孩子们一定比我们有更多办法。假如我们对他们失去信心,那么我们对未来的信心全是假的。
我们懂得开放,他们比我们更懂得未来,他们更懂得承担这个责任,只不过我们不愿意倾听而已。最后我想公益者、环保者也好,要允许企业家,和谐的目的是穷人跟富人共同存在,有不同观点存在,那才叫和谐。所以我觉得我们允许孩子有不同的观点。
我最后就讲一个故事就结束。我在北京买了一个大雕塑,3.6米高,王中军给我介绍的。光屁股大汉,全身裸体,我觉得特有意思,我就买回来放在大楼里,公司一片争论声,这个东西太黄色了。为什么马云把它搬回来,一定有目的的。各种各样的猜测、各种各样的说法、各种各样的人都很多。参观的人很多,为什么想知道阿里巴巴大楼里搞一个光屁股男人放在那儿,甚至我们的员工要做条短裤给他穿上,太难看了。一定有一个统一的标准说法,这个标准说法是什么,他们问我说没有标准说法,我就觉得这个挺美。我问你,你喜欢吗,喜欢。这个人说喜欢。我说很好。这个人说不喜欢,我说也很好。
我们就需要这种思想,让每个人发表不同的观点,但是最终作出决定,还得往前走。所以我看到的80后、90后,他们为全人类承担责任,为这代人争光,不是为某一个群体。给他们一些信任、给他们一些支持。鲁迅说“关心我们自己的孩子,就是关心我们的未来”。我们的盛宴才会起来,否则今后都是悲剧。我要讲的就是这些。谢谢大家。
来源:草根网(www.20ju.com) - 互联网界的读者文摘
原作者:马化腾
年是改革开放30周年,今年是新中国成立60周年,腾讯也迎来自己的第一个十年,中国从大国走向强国,互联网蓬勃生长,腾讯的发展离不开这样的大背景。
1984年,我是上初二时来到深圳的,那时候深圳刚刚开放,这么多年在深圳,我的感受就是深圳确实是一个创业的热土和窗口,腾讯在这块热土中汲取了丰富的营养。
就像华为、中兴完全是靠自发的,创业者是自己做下来的。跟北京还不一样,要么有政策,要么有别的,在客观环境下能做起来,但深圳大多完全是靠自己,创业者的这种热土,这种感觉会更加强烈得多。
那时候深圳的口号是 “时间就是金钱,效率就是生命”。当时改革开放国内还是很多思想没有解放的时候,听到这种话真的很震惊,金钱是可以拿来用做口号的,以前哪敢这么提。 阅读全文
年是改革开放30周年,今年是新中国成立60周年,腾讯也迎来自己的第一个十年,中国从大国走向强国,互联网蓬勃生长,腾讯的发展离不开这样的大背景。
1984年,我是上初二时来到深圳的,那时候深圳刚刚开放,这么多年在深圳,我的感受就是深圳确实是一个创业的热土和窗口,腾讯在这块热土中汲取了丰富的营养。
就像华为、中兴完全是靠自发的,创业者是自己做下来的。跟北京还不一样,要么有政策,要么有别的,在客观环境下能做起来,但深圳大多完全是靠自己,创业者的这种热土,这种感觉会更加强烈得多。
那时候深圳的口号是 “时间就是金钱,效率就是生命”。当时改革开放国内还是很多思想没有解放的时候,听到这种话真的很震惊,金钱是可以拿来用做口号的,以前哪敢这么提。 阅读全文