我承认这猩猩比我牛B。。
在virtualbox下使用usb设备
刚在virtualbox下装好了xp, 正准备尝尝网购的快感时, 问题来了, usb设备不能使用..
nnd的, 这不就等于上厕所没带纸吗.. 真tm的杯具..
没办法, 还得麻烦google大神..
翻了几页后, 得到的都是一些解决不了问题的回答..
在哥又要发作的时候, 终于找到了哥想要的东西(当然是之后才知道这是我想要的 – -)..
就是说只要把运行vbox的帐号(自己的帐号)添加到vboxusers组里面就可以了.
之后哥抱着试一试的态度将自己添加到了vboxusers组中
#useradd $USER vboxusers
重新启动xp, 哥看到久违的小框框.. 打开淘宝, 继续购物…
格了硬盘, 装上了ubuntu, 太爽了.
ubuntu 更新源[转]
台湾官方源:
deb http://tw.archive.ubuntu.com/ubuntu/ lucid main universe restricted multiverse
deb-src http://tw.archive.ubuntu.com/ubuntu/ lucid main universe restricted multiverse
deb http://tw.archive.ubuntu.com/ubuntu/ lucid-security universe main multiverse restricted
deb-src http://tw.archive.ubuntu.com/ubuntu/ lucid-security universe main multiverse restricted
deb http://tw.archive.ubuntu.com/ubuntu/ lucid-updates universe main multiverse restricted
deb-src http://tw.archive.ubuntu.com/ubuntu/ lucid-updates universe main multiverse restricted
骨头源:
deb http://ubuntu.srt.cn/ubuntu/ lucid main universe restricted multiverse
deb-src http://ubuntu.srt.cn/ubuntu/ lucid main universe restricted multiverse
deb http://ubuntu.srt.cn/ubuntu/ lucid-security universe main multiverse restricted
deb-src http://ubuntu.srt.cn/ubuntu/ lucid-security universe main multiverse restricted
deb http://ubuntu.srt.cn/ubuntu/ lucid-updates universe main multiverse restricted
deb http://ubuntu.srt.cn/ubuntu/ lucid-proposed universe main multiverse restricted
deb-src http://ubuntu.srt.cn/ubuntu/ lucid-proposed universe main multiverse restricted
deb http://ubuntu.srt.cn/ubuntu/ lucid-backports universe main multiverse restricted
deb-src http://ubuntu.srt.cn/ubuntu/ lucid-backports universe main multiverse restricted
deb-src http://ubuntu.srt.cn/ubuntu/ lucid-updates universe main multiverse restricted
163网易更新源:
deb http://mirrors.163.com/ubuntu/ lucid main universe restricted multiverse
deb-src http://mirrors.163.com/ubuntu/ lucid main universe restricted multiverse
deb http://mirrors.163.com/ubuntu/ lucid-security universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ lucid-security universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ lucid-updates universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ lucid-proposed universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ lucid-proposed universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ lucid-backports universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ lucid-backports universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ lucid-updates universe main multiverse restricted
sohu 搜狐更新源:
deb http://mirrors.shlug.org/ubuntu/ lucid main universe restricted multiverse
deb-src http://mirrors.shlug.org/ubuntu/ lucid main universe restricted multiverse
deb http://mirrors.shlug.org/ubuntu/ lucid-security universe main multiverse restricted
deb-src http://mirrors.shlug.org/ubuntu/ lucid-security universe main multiverse restricted
deb http://mirrors.shlug.org/ubuntu/ lucid-updates universe main multiverse restricted
deb http://mirrors.shlug.org/ubuntu/ lucid-proposed universe main multiverse restricted
deb-src http://mirrors.shlug.org/ubuntu/ lucid-proposed universe main multiverse restricted
deb http://mirrors.shlug.org/ubuntu/ lucid-backports universe main multiverse restricted
deb-src http://mirrors.shlug.org/ubuntu/ lucid-backports universe main multiverse restricted
deb-src http://mirrors.shlug.org/ubuntu/ lucid-updates universe main multiverse restricted
ubuntu 上海官方源
deb http://mirror.rootguide.org/ubuntu/ lucid main universe restricted multiverse
deb-src http://mirror.rootguide.org/ubuntu/ lucid main universe restricted multiverse
deb http://mirror.rootguide.org/ubuntu/ lucid-security universe main multiverse restricted
deb-src http://mirror.rootguide.org/ubuntu/ lucid-security universe main multiverse restricted
deb http://mirror.rootguide.org/ubuntu/ lucid-updates universe main multiverse restricted
deb http://mirror.rootguide.org/ubuntu/ lucid-proposed universe main multiverse restricted
deb-src http://mirror.rootguide.org/ubuntu/ lucid-proposed universe main multiverse restricted
deb http://mirror.rootguide.org/ubuntu/ lucid-backports universe main multiverse restricted
deb-src http://mirror.rootguide.org/ubuntu/ lucid-backports universe main multiverse restricted
deb-src http://mirror.rootguide.org/ubuntu/ lucid-updates universe main multiverse restricted
江苏双线 LUPAWorld 源:
deb-src http://mirror.lupaworld.com/Ubuntu/ lucid main universe restricted multiverse
deb http://mirror.lupaworld.com/Ubuntu/ lucid-security universe main multiverse restricted
deb-src http://mirror.lupaworld.com/Ubuntu/ lucid-security universe main multiverse restricted
deb http://mirror.lupaworld.com/Ubuntu/ lucid-updates universe main multiverse restricted
deb http://mirror.lupaworld.com/Ubuntu/ lucid-proposed universe main multiverse restricted
deb-src http://mirror.lupaworld.com/Ubuntu/ lucid-proposed universe main multiverse restricted
deb http://mirror.lupaworld.com/Ubuntu/ lucid-backports universe main multiverse restricted
deb-src http://mirror.lupaworld.com/Ubuntu/ lucid-backports universe main multiverse restricted
deb-src http://mirror.lupaworld.com/Ubuntu/ lucid-updates universe main multiverse restricted
哥也杯具了次..
为什么不用mysql_pconnect[PHP架构师之路]
很好奇为什么PHP没有数据库连接池,就翻了下PHP中mysql模块的源码,发现mysql_pconnect使用zend引擎的函数pemalloc()将数据库连接资源存在了全局内存中。这样看来,mysql_pconnect的效率应该很高,但是为什么很少有人用呢?
1.正常情况下当一个链接断开,你锁的表也会跟着解锁。但是长链接却永远不断开的,所以一个表万一一不小心锁了就一直锁着,除非你等着链接超时或者杀掉进程。同样的锁的问题也会在处理事务的时候发生。
2.正常情况下当一个链接断开,临时表也会被删除。但是由于长链接并不断开,临时表就变得不那么临时了。所以,临时表如果在完成业务后没有被删除,将会继续存在,提供给复用这个长链接的客户端使用。
3.如果PHP和mysql在同一台服务器上或者同一个局域网内,链接的时间是可以忽略不计的,所以用长链接不会得到任何益处。
4.Apache不能很好的处理长链接。当Apache接收到一个新的客户端的请求,它并不会使用一个已经拥有可用长链接的子进程,而是生成一个新的子进程,这个子进程会打开一个新的数据库连接。这就造成空闲的额外进程,资源的浪费,并且,当达到最大连接数时还会导致错误。得不偿失啊~
看看其他人怎么说的?
有一个哥们说:(这哥们是老外,我直接翻译了)
一般情况下,你是不会想用mysql_pconnect的。这个函数是为了连接数据库高开销的场景设计的。典型的Mysql / Apache / PHP 场景中,Apache会创建很多空闲的子进程来等待web请求。这里的每个子进程都会打开并维持一个独立的Mysql链接。所以,如果Mysql Server限制50个链接,而Apache有大于50个的子进程在跑,每个子进程都会建立一个独立的Mysql链接,哪怕他们是空闲的(空闲的httpd子进程不跟其它进程共享Mysql链接)。因此,即使你只有很少几个需要链接数据库的页面跑在一个繁忙的站点上,也会很快用光连接数,而实际上并没有全部被利用上。
所以,用mysql_connect()链接Mysql吧,除非,每次建立连接都要花去大把的时间。
看看官方怎么说的:(地址:http://devzone.zend.com/node/view/id/686#fn1)
The mysql_pconnect() function was designed to provide a mechanism for reducing the cost of establishing and closing connections to the MySQL server. Unfortunately, due to an interaction between the architecture of the Apache server and the architecture of PHP, high traffic on a site that used pconnects could quickly clog up the MySQL server with many unused connections that could prevent many of the active connections from accessing the database.
翻译下:
mysql_pconnect()函数设计的目的是为了提供一种机制来减少与Mysql服务器建立/断开连接的开销。不幸的是,由于Apache服务器架构和PHP架构之间的相互作用,一个使用长链接的高流量的网站会因为很多没有使用的链接迅速堵塞Mysql服务器,并且导致活跃的链接无法访问数据库。
最后,俺们再看下手册上咋写的:
警告:在使用永久连接时还有一些特别的问题需要注意。例如在永久连接中使用数据表锁时,如果脚本不管什么原因无法释放该数据表锁,其随后使用相同连接的脚本将会被永久的阻塞,使得需要重新启动 httpd 服务或者数据库服务。另外,在使用事务处理时,如果脚本在事务阻塞产生前结束,则该阻塞也会影响到使用相同连接的下一个脚本。不管在什么情况下,都可以通过使用 register_shutdown_function() 函数来注册一个简单的清理函数来打开数据表锁,或者回滚事务。或者更好的处理方法,是不在使用数据表锁或者事务处理的脚本中使用永久连接,这可以从根本上解决这个问题(当然还可以在其它地方使用永久连接)。
好了,就写到这了。你还敢用mysql_pconnect()吗??
原文地址: PHP架构师之路
Linux快捷键大全
近期在任务中发现,许多同事,尤其是我们的PHP开发者,根本不会用Linux/unix下的快捷方式,严重影响任务效率,所以特撰写此文,每个用法后我会详细正文。
下述一切命令在Linux/unix的shell下无效,这里以bash为主。如有出入,以你本人的效劳器为准。本文所指的Linux次要指RHEL/CentOS,unix指的是FreeBSD,这也是效劳器中用得最多的版本。
Ctrl + a 切换到命令行开端
这个操作跟Home完成的后果一样的,但Home在某些unix环境下无法运用,便可以运用这个组合;在Linux下的vim,这个也是无效的;另外,在windows的许多文件编辑器里,这个也是无效的。
Ctrl + e 切换到命令行末尾
这个操作跟END完成的后果一样的,但End键在某些unix环境下无法运用,便可以运用这个组合;在Linux下的vim,这个也是无效的;另外,在windows的许多文件编辑器里,这个也是无效的。
Ctrl + l 肃清屏幕内容,效果同等于clear
Ctrl + u 肃清剪切光标之前的内容
这个命令很有用,在nslookup里也是无效的。我有时看见同事一个字一个字的删除shell命令,非常解体!其实完全可以用一个Ctrl + u搞定。
Ctrl + k 剪切肃清光标之后的内容
Ctrl + y 粘贴方才所删除的字符
此命令比拟强悍,删除的字符有能够是几个字符串,但极有能够是一行命令。
Ctrl + r 在历史命令中查找 (这个十分好用,输出关键字就调出以前的命令了)
这个命令我激烈引荐,有时history比拟多时,想找一个比拟复杂的,间接在这里,shell会自动查找并调用,方便极了
Ctrl + c 终止命令
Ctrl + d 加入shell,logout
Ctrl + z 转入后台运转
不过,由Ctrl + z转入后台运转的进程在以后用户加入后就会终止,所以用这个不如用nohup命令&,由于nohup命令的作用就是用户加入之后进程依然持续运转,而如今许多脚本和命令都要求在root加入时依然无效。
上面再被充下大家不是太熟习,我用得比拟多的操作方式:
!! 反复执行最初一条命令
history 显示你一切执行过的编号+历史命令。这个可以配合!编辑来执行某某命令
↑(Ctrl+p) 显示上一条命令
↓(Ctrl+n) 显示下一条命令
!$ 显示零碎最近的一条参数
最初这个比拟有用,比方我先用cat /etc/sysconfig/network-scripts/ifconfig-eth0,然后我想用vim编辑。普通的做法是先用↑ 显示最初一条命令,然后用Home挪动到命令最前,删除cat,然后再输出vim命令。其实完全可以用vim !$来替代。
开发和管理员的话,掌握以上用法后,根本上任务就很无效率了;用到最初,你会不经意发现,弹指之间,许多复杂的指令你会很轻松的搞定。
使用PHPDocumentor来生成API文档
使用PHPDocumentor来生成API文档
(一)什么是PHPDocumentor
PHPDocumentor是使用PHP开发的一款API文档生成工具, 相对于有规范注视的程序, 可以使用它快速的生成具有相互参照,索引等功能的API文档, 大概就是这么一个东西, 如果你还不了解. 请继续往下看.
(二)安装PHPDocumentor
安装方式有两种
- 手动安装
在www.phpdoc.org下载, 然后解压即可
- 通过pear自动安装
命令行下输入: pear install PhpDocumentor
(三)使用PHPDocumentor
1.命令行方式
在PHPDocumentor目录下找到phpdoc.bat文件进行编辑. 查找SET phpCli=这句将=号后面的值设置为你的phpcli所在路径, 一般都在你的PHP安装目录下. 比如我的就设置为SET phpCli=C:\wamp\bin\php\php5.3.0\php.exe,保存退出. 在命令行方式下进入PHPDocument目录. 输入phpdoc –h 会出现一大堆参数的介绍, 这里我们只会用到.
-f 要进行分析的文件名称,多个文件用,号分割
-d 要进行分析的目录, 多个目录用,号分割
-t 分析后的文件存放路径
-o 输出文档的格式, 列如: -o HTML:frames:default, 这里你可以打开PHPDocumentor目录下的phpDocumentor/Converters/目录查看. 像上面这个就是对应的phpDocumentor/Converters/HTML/frames/templates/default目录
下面我们写一个文件来测试一下.
Demo.php文件
然后我们打开命令行, 进入PHPDocumentor目录, 输入以下内容
phpdoc -f E:/www/demo.php -t E:/www/demo -o HTML:frames:def
ault
然后打开E:/www/demo/目录打开index.html文件看看. 是不是demo.php文件中的类以及方法全列出来了. 弄到这你已经会使用PHPDocumentor了. 细心的你可能发现demo.php文件中的中文显示出来全乱码了, 是的, 我们还需要做下面的事.
打开 phpDocumentor/Converters/HTML/frames/templates/default/templates/目录中的header.tpl以及top_frame.tpl文件将其中的charset=iso-8859-1改为charset=utf-8,保存文件退出, 重新运行一次phpdoc -f E:/www/demo.php -t E:/www/demo -o HTML:frames:default, 再次浏览生成的文件. 乱码问题就解决了, 你还可以更改模板文件, 把生成的页面弄的更好看..
还有一种方式为web页面生成, 很简单这里不在讲述, 我们主要看看phpdocumentor的注释语法
注释规则:
所有注释已/**开始, 第一行为功能简述,第二行为详细说明,第三行为标记tag.
例如:
/**
* hello函数
*
* 传入你的名字, 想你问好.
*
* @param string $name 你的名字
*/
function hello($name)
{
echo ‘hell’. $name;
}
这样就是一个标准的注释格式了
在上面出现了@param这样的关键字, 这个是用来描述一个参数的. 类似的关键字还有
@access
@author
@copyright
@example
@const
@final
@filesource
@global
@link
@package
@abstruct
@return
@param
@static
@var
@version
@todo
常用的大概就这些, 具体函数请google一下..
PHPDocumentor能够识别的PHP关键字:
Include,include_once
Request,request_once
Define
Function
Global
Class
也就是说你在上面这些列出的关键字前书写规范的注释PHPDocumentor都能进行解析. 都能生成对应的文档, 还等什么自己写个文件试试吧..
写给未来儿子的信
儿子,我是你爹`!老子现在无聊,又不想看书,刚才又被你爷给熊了一顿,心里很是烦闷,没处发泄,就突发其想先教训下你个小兔崽子,别管老子教育的对还是不对,你TM的都给我听好了,有则改之,无则加勉,不准顶嘴,否则扁你是没商量的!!
你爹我现在正值风华茂盛之年头,20岁刚出头,一无所有!!!就连你妈我现在还没有找到呢,所以我觉得现在给你写信的这件事情特牛逼。俗话讲,老子英雄儿好汉,你将来也得象你爹这样有魄力!这是必须的!!!
据你奶奶说,我小的时候有多动症,在娘胎里就表现出来的!成天不分昼夜的在你奶奶的肚子里踢来踢去的,当然这是好事,是生命力顽强的象征,但是我可给你说明白了,别管你将来有没有多动症,你在娘胎里的十个月最好给我低调点,活动筋骨的时候给我小心点,没事少给我乱踢,你踢的可是我媳妇!在有你活动征兆的前期,你爹我会买个笔记本和笔,每踢一次,我就给你记一笔,你踢一脚,老子将来绝对会还你十脚的!我建议你还是把劲给攒足了,想踢等你出来了老子陪你使劲踢!
等你出来后,我给你3个月的时间去适应这个世界的黑白规律,也就是说这3个月内,你可以不分昼夜的吃喝拉撒闹,我不跟你计较,因为你老子我是人,我也没指望你是神,一生下来就能自理生活,但是过了这3个月的时间,你必须的得给老子弄明白啥时候该闹啥时候该睡觉!可不准象你724的那几个叔一样,白天睡觉夜里闹,折腾老子不要紧,关键是不能折腾你妈!你要知道,睡眠决定了皮肤的好坏,到时候给你妈折腾的皮肤暗黄,黑眼圈,都出来了,我非扁你!因为她得找你爹要钱去买化妆品!那东西可不便宜!
等你4,5岁的时候,估计你还会有个妹妹,漂亮的妹妹,因为长的象你妈! 至于你的长相,由于象我,所以老子也不跟你计较了。但是那时候你必须的得给老子吃壮一点长高点,那样才能保护好你妹妹!我允许你欺负别人的妹妹,但是我绝对不允许别人欺负你的妹妹!所以你最好能成为打架大王!象你爹小的时候那样,打遍全巷子无敌手!将来你回到你奶奶曾经住的那个小巷子,你可以自豪的和大虎,二虎子等人的儿子说:“俺爹原来小的时候经常把你爸骑到下面打” 我希望将来我的孙子,也就是你儿子也可以这么自豪的和他的小朋友说。当然我不是鼓励你打架,但是象保护你妹妹这种事情上,打架是必须的!因为你妹妹被别的小娃欺负了,该不能让老子去打吧,所以报仇的任务就落到了你的身上了!
等你6,7岁的时候,应该上小学了吧。好好学习是应该的,但是不是必须的。学着做人才是必须的。你可以交朋友,甚至可以谈恋爱,老子不跟你一般见识!但是不可以随便拽别人小姑娘的辫子,也不可以趁上课的时候踢前排小姑娘的屁股,更不可以谁有糖就跟谁玩!!那事你爹我干过,亲身经历告诉我,长大后是会被嘲笑的!
13岁左右的时候你该读初中了,应该是个野气十足的年龄,哎,你能不能告诉我你啥时候能出来,我好算算你能不能赶在曾经带过我的那批老师退休前去读,如果他们还没退休,得,你就委屈点吧。你一准被我送到他们班里。他们可是以暴制暴的高手,把你送去了,老子也就省心多了。
16岁的时候,你是你读高中的年龄,老子话可说明白了,如想少吃点苦头,你最好在初中的时候学好点,高中你必须得给老子好好学习将来考大学了。或许这3年你会很鄙视我的教育方式,但是鄙视老子的人这么多,你个小兔崽子算老几!老子不怕你,总有一天你会明白我是为你好!你想想呀,你长的那么丑,长的那么象高学历的人,如果你考不上大学别人就会嘲笑你,他们肯定会说“没文凭还学人家长的丑”!因为你是我儿子,所以我是绝对不允许别人笑你的!你看看那些高学历人才,是不是一个个都长的很丑!
读大学的时候,我不会干涉你的任何事情,条件是你能顺利地拿到毕业证。谈了女朋友,带回来给老子看看,只要鼻子不歪眼不斜四肢健全我都不会反对的。但是你必须得给我带个“主流”回来!那些“非主流”最好离她们远点,不光我不同意,连党和人民都是反对的!国家明文的法律规定,脑残是不能结婚的,所以你带了也是白带。
等你结婚了,趁早给我滚远点,不准成天带着媳妇和孩子来蹭吃蹭喝的,那样我烦,你妈累,劳民伤财不利己的事老子不干! 当然经常回来看老子和你妈还是一定需要的,但是别忘了给老子带东西!衣服不要,人民币不稀罕,弄几条好烟几瓶好酒就可以了。带的不好老子会撵人,要是不带,老子会扣下你媳妇和你儿子当人质,你自己看着办!
好了,老子不跟你罗嗦了,该睡觉了!还有些没说到的地方我保留着发言权。你不满意的就放心里,别被老子看出来,不要赶时髦,跟老子搞起义。老子会在萌芽状态就给你镇压下去的!这么多年我没少从你爷那学习镇压起义的方法! 别忘了,姜还是老的辣!何况老子是你爹.
GPC的思考:$_REQUEST、$_GET、$_POST、$_COOKIE 的关系和区别
原文地址:http://www.phpig.net/showthread.php?tid=206&pid=548#pid548
GPC的优先级在PHP.INI里可以设置,variables_order = “GPCS”
测试开始。
测试1:
echo '
';//源格式打印
//URL加上m=xxoo来测试$_GET
print_r($_REQUEST);//首先打印内容
print_r($_GET);
$_REQUEST = array();//清空$_REQUEST
echo $_GET['m'];
echo '
';
测试结果:$_GET['m']的值是xxoo。
测试2:
echo '
';//源格式打印
//URL加上m=xxoo来测试$_GET
print_r($_REQUEST);
print_r($_GET);
$_GET = array();//清空
print_r($_REQUEST);
echo '
';
测试结果:$_REQUEST['m']的值是xxoo。
结论:对$_REQUEST的操作没有影响到$_GET,反之亦然。$_REQUEST只是包含了一个$_GET的副本(the same as $_POST 哈哈)。
————————————华丽的分隔线 —————————————————
好。继续
测试3:
//POST-GET重名测试
//从其他页面POST传送一个m的值为post,action地址加上m=get
print_r($_REQUEST);
print_r($_GET);
print_r($_POST);
结果:$_REQUEST['m'] == ‘post’。
结论:同时提交GET和POST且同名,$_REQUEST取的是POST的值。(可能是POST优先级更高。)
测试4
//cookie与post\get 重名测试
setcookie('m', 'cookie', time()+3600);//先把COOKIE种上,名字为m,值为cookie。然后刷新。(COOKIE要刷新才生效)
//从其他页面POST传送一个m的值为post,action地址加上m=get
print_r($_REQUEST);
结果:$_REQUEST['m'] == ‘cookie’。结论:COOKIE的优先级最高。
总结:
$_REQUEST、$_GET、$_POST、$_COOKIE 的关系和区别。
1.关系:$_REQUEST包含了$_GET、$_POST、$_COOKIE的所有内容,是它们的集合体。
2.$_GET、$_POST、$_COOKIE在$_REQUEST中都有一个副本。改变$_REQUEST的值不影响$_GET等,反之亦然。
3.GET和POST同名的情况下,$_REQUEST取的是POST的值。COOKIE与GET或POST重名的情况下,$_REQUEST取的是COOKIE的值。COOKIE的优先级最高。

