摘要:$foo{5}和$foo[5],有啥区别第一个是字符串的,第二个是数组的
阅读全文
posted @ 2011-09-23 19:45
之乎者也2011
随笔分类 - php
摘要:$foo{5}和$foo[5],有啥区别第一个是字符串的,第二个是数组的
阅读全文
posted @ 2011-09-23 19:45
摘要:一个数据文件,有3000W行,每行有一个id号,文件内容无任何排序。现在让你把id前 TOP 位取出来, TOP = 50.要求:你的程序最多能吃2G的内存,其他不限,要求考虑io/cup最优。解决思路:1 建一个top_array, 长度为50.2 再建一个buffer, 长度为2^20 (1G) 3 循环开始4 读取文件到buffer,直到buffer满为止5 将Buffer的前50位读到top_array7 将top_array排序,按照id升序6 循环开始7 接着读取buffer的下一位 如果比最后一个还大,next; 否则,插入到top_array相应位置,并删除最后一个。 循环到B
阅读全文
posted @ 2011-09-21 01:15
摘要:1、我们碰到了大麻烦,一个新来的传教士惹恼了上帝,上帝很愤怒,要求我们把圣经(bbe.txt)背熟,直至他说哪个单词,我们就要飞快的回答出这个单词在第几行第几个单词位置。听说你是个优秀的程序员,那么髟助我们完成这个不可能的任务吧。 要求如下: 1)/myworks/example/bbe.txt,98版本英文圣经一本 2)输入部分要求如下:php ./example.php [单词] 3)输出部分如下:[单词] 1,2 2,4 5,6 表示:此单词在1行2列(第二个单词),2行4列... 说明: 1)此文本4MB之巨... 2)单词的含义:由英文字母(大小写),数字(0-9)组成...
阅读全文
posted @ 2011-09-19 13:33
摘要:都是我遇到的面试题,可能有点出处,但整体题是一样的,为大家的面试之路添一块砖1.去掉html元素中的<span></span>但中间的内容要保留QUOTE:/<\/?span>/2.去掉&但不能去掉以amp开头的&,比如&&sdfsdf&&jsldjssjflsdj"E:/&(?!amp;)/g3.去掉数组中重复的,并且记录重复的个数(这个答案很多很多种,我这个不见得最好,但感觉效率高些)QUOTE: var s = [0,2,3,4,4,0,2]; for(var i=0,o={},t
阅读全文
posted @ 2011-09-19 06:39
摘要:view plain<?phpclassDoubleQueue{public$queue=array();/**(尾部)入队**/publicfunctionpush($value){returnarray_push($this->queue,$value);}/**(尾部)出队**/publicfunctionpop(){returnarray_pop($this->queue);}/**(头部)入队**/publicfunctionenq($value){returnarray_unshift($this->queue,$value);}/**(头部)出队**/pu
阅读全文
posted @ 2011-09-19 05:35
摘要:DTD(Document Type Definition) 是一套关于标记符的语法规则。它是XML1.0版规格的一部分,是XML文件的验证机制,属于XML文件组成的一部分。DTD 是一种保证XML文档格式正确的有效方法,可通过比较XML文档和DTD文件来看文档是否符合规范,元素和标签使用是否正确。XML文件提供应用程序一个数据交换的格式,DTD正是让XML文件能成为数据交换标准,因为不同的公司只需定义好标准DTD,各公司都能依DTD建立XML文件,并且进行验证,如此就可以轻易的建立标准和交换数据,这样满足了网络共享和数据交互。DTD文件是一个ASCII文本文件,后缀名为.dtd。
阅读全文
posted @ 2011-09-19 04:35
摘要://快速排序算法function quickSort(&$a, $l, $r){if($l >= $r) return;$m = pation($a, $l, $r);quickSort($a, $l, $m-1);quickSort($a, $m+1, $r);}function pation(&$a, $l, $r){$pivot = $a[$l];$i = $l + 1;$j = $r;while(1){while($a[$i] > $pivot && $i < $j) $i++;while($a[$j] < $pivot) $j-
阅读全文
posted @ 2011-09-19 03:54
摘要:by 蝈蝈俊.net 最近公司一直在招人,我作为主考官之一。经常会提问的一个问题,就是让用户介绍自己在缓存方面的经验和心得。绝大多数的面试者只能说ASP.net的页面缓存和局部缓存,稍稍有点经验的,会提到企业库的缓存,只有很少的人会知道Memcached(一个分布式的缓存)。而对于缓存的一些基本思想,却没有一个人能说出来。 现在的技术人员,很多时候,不管三七二十一,把一个个实体丢到缓存中,然后在用的时候,就从缓存中去找这个实体。而不会考虑缓存的其他方面因素。所以他们在提到缓存时,想到的才只能是一个个的缓存实现的方法,而不是缓存的思想。 那么,肯定就有人问,蝈蝈俊,那你理解的缓存思想是如何...
阅读全文
posted @ 2011-09-19 03:14
摘要:数据库中有两个字段 id, sorce.假设sorce的取值范围是 5-10. 按照以下概率实现sorce数据的更新。 5(25%) => 6 5(25%) => 7 6(20%) => 7 7(25%) => 8 7(25%) => 6 8(10%) => 6 8(25%) => 9 9(15%) => 8 9(20%) => 10 10(25%) => 9 要求考虑性能及扩展性。写出概率分布相关代码。第一个网友的做法如下:function getChangeNum($oldNum){ if($oldNum<5 || $old
阅读全文
posted @ 2011-09-19 02:55
摘要:3,请说明在php.ini中safe_mode开启之后对于PHP系统函数的影响safe_mode是提供一个基本安全的共享环境。在一个多用户共享的phpweb服务器上,当这台服务器开启了safe_mode模式,有以下函数将会受到影响。首先,一下尝试访问文件系统的函数将会被限制,运行服务器的用户id,如果想要尝试操作某个文件,必须要用户该文件的读取或者写入的访问权限。因此,在safe_mode打开的情况下,下列函数将会收到限制:ckdir,move_uploaded_file,chgrp,parse_ini_file,chown,rmdir,copy,rename,fopen,require,hi
阅读全文
posted @ 2011-09-18 03:53
摘要:引用计数基本知识回收周期(Collecting Cycles)性能方面考虑的因素引用计数基本知识每个php变量存在一个叫"zval"的变量容器中。一个zval变量容器,除了包含变量的类型和值,还包括两个字节的额外信息。第一个是"is_ref",是个bool值,用来标识这个变量是否是属于引用集合(reference set)。通过这个字节,php引擎才能把普通变量和引用变量区分开来,由于php允许用户通过使用&来使用自定义引用,zval变量容器中还有一个内部引用计数机制,来优化内存使用。第二个额外字节是"refcount",用以
阅读全文
posted @ 2011-09-17 15:47
摘要:最近有看到一份面试题目,内容大概为阐述PHP的垃圾回收机制是怎么一回事。虽然自己也是PHP的学习者,但之前还真没怎么了解PHP内部的垃圾回收流程,只是在我们的代码中用了unset,null,mysql_close,__destruct等等一些函数去释放对象防止内存溢出而已,所以上网GG下,找到了以下一些说明,作下记录“PHP可以自动进行内存管理,清除不再需要的对象。PHP使用了引用计数(reference counting)这种单纯的垃圾回收(garbage collection)机制。每个对象都内含一个引用计数器,每个reference连接到对象,计数器加1。当reference离开生存空间
阅读全文
posted @ 2011-09-17 15:41
摘要:preg和ereg的区别 2009-08-18 19:32:08|分类: PHP |字号订阅preg和ereg的区别题记:在PHP5.3里边ereg家族要被preg代替了。在这里列一下它们的区别。名词解释:preg,代表“Perl的正则表达式(PerlRegularExpressions)”。ereg,代表“扩展的正则表达式(ExtendedRegularExpressions)”。区别:1.preg_replace()里面的正则可以写成型如:"/..../"而er...
阅读全文
posted @ 2011-09-15 04:09
摘要:优化PHP代码的40条建议40 Tips for optimizing your php Code原文地址:http://reinholdweber.com/?p=3英文版权归Reinhold Weber所有,中译文作者yangyang(aka davidkoree)。双语版可用于非商业传播,但须注明英文版作者、版权信息,以及中译文作者。翻译水平有限,请广大PHPer指正。1. If a method can be static, declare it static. Speed improvement is by a factor of 4. 如果一个方法可静态化,就对它做静态声明。速率可提
阅读全文
posted @ 2011-09-07 06:05
摘要:一开始编译php的时候,忘了,现在用phpize安装扩展库进行添加找到当前运行的php版本的源代码目录,如 php-5.2.12。进入curl扩展库目录#cd /home/changyou/php-5.2.12/ext/curl(调用phpize程序生成编译配置文件)#/usr/local/web/php/bin/phpize(编译扩展库,分别执行下面的configure和make命令)#./configure –with-php-config=/usr/local/web/php/bin/php-config(configure这一步执行通过后,再执行make命令,如果configure执行
阅读全文
posted @ 2011-09-05 05:32
摘要:首先,优化的目的是花最少的代价换来最快的运行速度与最容易维护的代码。Apache中如使用mod_php方式运行PHP,请求、响应执行流程:1、Apache接收请求2、Apache传递请求给mod_php3、mod_php定位磁盘文件,并加载到内存中4、mod_php编译源代码成为opcode树5、mod_php执行opcode树因为PHP是解释型的语言,所以每个PHP文件在运行的时候都需要编译后再执行,不同的线程访问同一个文件,每次都需要重新编译然后运行,这样就耗费了大量时间。所以,通过把编译后文件缓存起来,就减少了许多时间消耗。所以我们要做的就是在第4个步骤进行优化。安装配置eAcceler
阅读全文
posted @ 2011-09-05 05:31
摘要:最近研究微博,想取自己的微薄RSS订阅Feed,但在国内(包括sina微博),都不提供个人微博的RSS。要取得自己的微博内容便于站外展示,只有通过官方发布的挂件 (sina , QQ)sina取个人RSS的方案可以参考:月光博客。原理是抓取sina的挂件,然后解析HTML 获得。腾讯微薄就比较麻烦了,虽然他也有挂件,蛋,如果直接抓iframe的地址发现不行。查看挂件HTTP请求,发现最后会请求一个地址,如下:http://v.t.qq.com/cgi-bin/weiboshow?f=p&tweetflag=1&fansflag=0&fansnum=0&name=
阅读全文
posted @ 2011-09-05 05:30
摘要:由于要用到查找MSN联系人,于是google到了PHP MSN Class 这是一个msn协议的实现类,支持MSNP9 (MSN 6.2)和最新的MSNP15 (WLM 8.1)协议(MSNP15协议支持离线消息),可以作为MSN机器人使用。注意:必须确保发送人、接收人的MSN互相加为好友。在 msn.class.php中封装了getMembershipList方法,就是用他来查找联系人的。然后还有检查是否在线,发消息的方法,很不错。最新版也对64位机器算法做了补丁。而我的问题是,我在win下面的本机测试环境下没有问题,也不用选择msn版本,但是到了服务器上,就不行了,弄了半天,选择msn协.
阅读全文
posted @ 2011-09-05 05:30
摘要:调试PHP时,XDebug一直很好选择,搭配上Webgrind,可以获得不错的效果,但是很耗资源,CPU一会就到100%了。最近看别人的文章,发现了XHProf,于是体验了一下。感觉很酷,与 XDebug 相比,运行更轻便,表现更易懂。这个软件本是 Facebook 内部的一个应用工具,2009年3月份开源,为PHP的性能监测提供了很好的工具。安装#wget http://pecl.php.net/get/xhprof-0.9.2.tgz一开始wget用不了,报错:Resolving dada… failed: Temporary failure in name resolution.查明是D
阅读全文
posted @ 2011-09-05 05:26
摘要:PHP是一种脚本语言,好处是编程效率高,支持产品的快速迭代。但是与传统的编译语言相比,CPU和内存使用效率不好。现在Ajax技术的广泛采用,加上SNS对动态要求较高,这些缺点更显得突出。常见的办法是直接用C/C++编写一个PHP扩展,重写应用中比较复杂的部分。这样,PHP就转变为一种胶水语言,连接起PHP和C/C++应用。开发时,用PHP来实现业务逻辑,是不需要考虑资源管理和内存的,Zend会替你完成。但,如果用C来编写PHP的扩展,那么就要自己考虑这些事情,必须自己管理资源的分配,使用,释放,开发和维护的成本均会上升。因为更新扩展,需要修改源码,重新编译,然后重新load扩展进PHP,然后重
阅读全文
posted @ 2011-09-05 05:25
|