所有的单个大小写字母、数字,以及后面将要讲述的特殊字符,都是一个正则表达式,它们只能匹配单个字符,且这个字符与它本身相同,例如,对于表达式“i”:welcometovisitwww.goorder.net下面的小程序,将会把字符串welcometovisitwww.goorder.net中的小写字母i匹配出来,并替换成大写字母I,并且背景颜色变成橙色。效果演示welcometovisitwww.goorder.netwelcometovisitwww.goorder.netfunctionreg_replace(){varstr="we... 正则表达式看上去并不像某种语言或者某个技术那么重要,仅靠它们你无法写出一个应用程序来。然而,它们却总是在你的开发过程中如影随形,不管是进行表单验证,还是高亮显示搜索结果,又或者是进行URL地址映射,总是需要使用它们。几乎所有的语言都对它进行了不同程度的支持,由此,足见其在文本匹配这一领域中的地位。正则表达式应该算是开发人员应该掌握的一个轻量级的技能,然而,它稀奇古怪地匹配模式总让人们联想起外星语言。本文中,我期望能和大家一道,通过丰富地例子,由浅入深地对正则表达式作一个复习和回顾。什么是正则表达式?正则表达式也叫做匹配模式(Pattern),它由一组具有特定含义的字符串... 面试中纯粹考算法的问题一般是让很多程序员朋友痛恨的,这里分享下我对于解答算法题的一些思路和技巧。一般关于算法的文章,都是从经典算法讲起,一种一种算法介绍,见得算法多了,自然就有了感悟,但如此学习花费的时间和精力却是过于巨大,也不适合在博客里面交流。这一篇文,却是专门讲快捷思路的,很多人面对算法题的时候几乎是脑子里一片空白,这一篇文章讲的就是从题目下手,把毫无思路的题目打开一个缺口的几种常见技巧。由简至繁事实上,很多问题确实是很难在第一时间内得到正确的思路的,这时候可以尝试一种由简至繁的思路。首先把问题规模缩小到非常容易解答的地步。[题目]有足够量的2分、5分... 今天有个小问题,在iPhone上显示所有图片。但是不可能一次显示全部,只能显示图片的名称列表。需要点击图片名,然后显示图片,再次点击的话,就隐藏图片。一个比较简单的javascript代码,在这里记录下,方便以后取用。演示如下:[点我显示与隐藏图片][点我显示与隐藏图片]代码也很简单。html[<a=show('img1')>点我显示与隐藏图片</a>]<imgsrc='../images/1.jpg'style='display:none'id='img1'/><br/>javascript<scri... Javascript中大括号"{}"有四种语义作用:语义1.组织复合语句,这是最常见的:if(condition){//...}else{//...}for(){//...}语义2,对象直接量声明:varobj={name:'jack',age:23};整个是个赋值语句,其中的{name:'jack',age:23}是个表达式。语义3,声明函数或函数直接量:functionf1(){//...}varf2=function(){//...}f1与非f2的区别是前者在语法解释期,后者在运行期。区... 去除字符串左右两端的空格,在大部分编程语言中,比如PHP、vbscript里面可以轻松地使用trim、ltrim或rtrim实现。但在js中却没有这3个内置方法,需要手工编写。下面的实现方法是用到了正则表达式,效率不错,并把这三个方法加入String对象的内置方法中去。写成类的方法格式如下:(str.trim();)<scriptlanguage="javascript"> String.prototype.trim=function(){ returnthis.replace(/(^s*)|(s*$)/g,""); } String.pro... 为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。在实际开发中最为常见的设计范式有三个:1.第一范式第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。第一范式的合理遵循需要根据系统的实际需求来定。比如某些数据库系统中需要用到“地址”这个属性,本来直接将“地址”属性设计成一个数据库表的字段就行。但是如果系统经常会访问“地址”属性中的“城市”部分,那么就非要将“地址”这个属性重新拆分... 最土团购系统是国内比较常见的团购程序,在国内团购系统份额中所占比例还是比较大的。下面分析一下它的全局核心文件app.php,看看能不能找到一些干货,顺便也籍此开始深入了解下这个开源的团购系统。注释都写到代码里了,程序用到的自定义函数也单独地在后面列出,应该是比较好懂的了。<?phprequire_once(dirname(__FILE__).'/include/application.php');//如果magic_quotes_gpc为on则去掉addslash对单引号和双引号及空值反斜杠添加的''/*magic_quota_gpc*/$_GET=ma... get_magic_quotes_gpc取得PHP环境变数magic_quotes_gpc的值,属于PHP系统功能。语法:longget_magic_quotes_gpc(void);返回值:长整数这个函数做什么的?本函数取得PHP环境配置的变量magic_quotes_gpc(GPC,Get/Post/Cookie)值。返回0表示关闭本功能;返回1表示本功能打开。当magic_quotes_gpc打开时,所有的'(单引号),"(双引号),(反斜线)and空字符会自动转为含有反斜线的溢出字符。在php的配置文件中,有个布尔值的设置,就是magic_quot... 本文讲到的是如何从数据访问层面上提高JS代码的执行效率。总的来讲有以下几条原则:函数中读写局部变量总是最快的,而全局变量的读取则是最慢的;尽可能地少用with语句,因为它会增加with语句以外的数据的访问代价;闭包尽管强大,但不可滥用,否则会影响到执行速度以及内存;嵌套的对象成员会明显影响性能,尽量少用;避免多次访问对象成员或函数中的全局变量,尽量将它们赋值给局部变量以缓存。
这么几句话看似简单,但要深刻理解其中的道理则需涉及到JS的标识符解析、作用域链、运行期上下文(又称为执行环境)、原型链、闭包等一系列概念,之前我有看过一... 有段代码如下:if(![]==[]){//Code}![]==[],trueorfalse?我们都知道,ECMAScript中有两种类型的相等操作符:全等与不全等——直接比较而不转换类型相等与不相等——先转换类型再比较全等与不全等的逻辑比较简单,而今天我们要关注的是我们平时用得比较多的第二种操作符:相等与不相等。当我们对两个操作数用==进行比较的时候,我们分两种情况:==两边操作数的类型相同与不相同。我们都知道类型不相同时需要先转换类型,但是其中的转换规则是什么样的呢?也许许多人都不曾仔细研究过,今天我们就通过分析![]==[]来深... 交换两个变量,通常我们的做法是(尤其是在学习阶段):定义一个新的变量,借助它完成交换。代码如下:inta,b;a=10;b=15;intt;t=a;a=b;b=t;这种算法易于理解,特别适合帮助初学者了解计算机程序的特点,是赋值语句的经典应用。在实际软件开发当中,此算法简单明了,不会产生歧义,便于程序员之间的交流,一般情况下碰到交换变量值的问题,都应采用此算法(以下称为标准算法)。上面的算法最大的缺点就是需要借助一个临时变量。那么不借助临时变量可以实现交换吗?答案是肯定的!这里我们可以用三种算法来实现:1)算术运算;2)指针地址操作;3)位运算。不使... PHP:每次HTTP请求过来以后,初始化全部资源(例如创建数据库链接、加载系统类库,创建缓存等等),处理完毕,释放全部资源。Python/Ruby:初次启动的时候初始化资源,随后的请求就不必再次初始化资源了。PHP和Python/Ruby之间机制的区别就是:PHP极难出现严重的内存泄露问题,随便你代码写的多烂,反正每个请求一执行完毕,所有资源统统释放光。而Python/Ruby则需要依赖GC来回收内存,因此稍有不慎,还是会出现GC无法释放的内存泄露问题。PHP每次请求都要初始化资源,这个开销非常大。所以尽管PHP解析器本身的运行速度是极快的,但是...
我相信已经有很多这样的文章了,但是我今天还是愿意把自己的经验与大家分享一下。纯属原创,我也没什么保留,希望对新手有帮助,有说的不对的地方,也欢迎指出。什么是MVC?简单的说就是将网站源码分类、分层。MVC三个字母的含义:M:Model模型,负责数据库操作。V:View视图,负责调用Model调取数据,再调用模板,展示出最终效果。C:Controller控制器,程序的入口,决定改调用哪个View,并告诉View该做什么。如此说来,程序的执行顺序是C-V-M或C-M,和MVC的名字正好相反。为什么要MVC?能使网站程序物理...
不要困在自己建造的盒子里,写给.NET程序员。我个人是反对使用".NET程序员"、"C++程序员"或"PHP程序员"这类简单粗暴的方式为程序员做划分的。但是客观确实存在一个现象,就是很多程序员会为自己设置一个无形的界限,将自己与某种语言或平台硬绑定到一起,例如我这里所指的".NET程序员"。请注意这与"术业有专攻"是不同概念的,有自己专攻的平台或领域这很正常,但是有很多人偏执地将自己与某个语言或平台紧紧捆绑,而忘记了自己首先是一名程序员,然后才使用某种语言,他们偏执于平台并陶醉于自己建立的盒子里,而不愿主动去接触一些盒子外的事物,最终使得自己无法进步。从我个人的观... JS有个很无语的阻塞特性,就是当浏览器在执行JS代码时,不能同时做其他任何事情,无论其代码是内嵌的还是外部的。浏览器在碰到一个引入外部JS文件的<script>标签时会停下所有工作来下载并解析执行它,在这个过程中,页面渲染和用户交互完全被阻塞了,为了避免页面加载时的停顿甚至空白页的出现,JS脚本应尽量放置在页面底部,这点很重要:<html><head><title>无标题文档</title><linkrel="stylesheet"type="text/css"href="styles.css"/></head>&... 在设计一些系统的时候,经常需要给用户进行操作提示。这种提示很重要,友好的提示能够提升用户对系统的好感度。操作提示有很多设计,下面是我的一个简陋的方案,仅抛砖引玉。操作提示类:tips_class.php<?phpclassTips{private$tips;staticprivate$_instance;privatefunction__construct($string,$url){$this->tips="<metahttp-equiv=refreshcontent=4;url=$url><divstyle='b... deque,全名double-endedqueue,是一种具有队列和栈的性质的数据结构。双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。双向队列(双端队列)就像是一个队列,但是你可以在任何一端添加或移除元素。而双端队列是一种数据结构,定义如下:Adequeisadatastructureconsistingofalistofitems,onwhichthefollowingoperationsarepossible.push(D,X)--insertitemXontherearendofdequeD.pop(D)--removethefr... 每一种计算机语言都有自己的自动垃圾回收机制,让程序员不必过分关心程序内存分配,php也不例外,但是在面向对象编程(OOP)编程中,有些对象需要显式的销毁,防止程序执行内存溢出。一、PHP垃圾回收机制(GarbageCollector简称GC)在PHP中,没有任何变量指向这个对象时,这个对象就成为垃圾。PHP会将其在内存中销毁;这是PHP的GC垃圾处理机制,防止内存溢出。当一个PHP线程结束时,当前占用的所有内存空间都会被销毁,当前程序中所有对象同时被销毁。GC进程一般都跟着每起一个SESSION而开始运行的。gc目的是为了在session文件过期以后自动销毁删除这些文... 随着Web2.0技术的不断发展,Web前端的优化受到越来越多的关注,特别是JavaScript和CSS优化的讨论一直是热点,工具也相对丰富,而对HTML优化则有所忽视,最近,来自百度泛用户体验团队的工程师Miller(chenminliang)撰文强调了HTML优化的重要性和相关技巧。Miller首先举例说明了HTML优化稍显忽略的事实:在SteveSouders的大作《EvenFasterWebSites》中谈到非常多有效的前端优化方法,例如Javascript的加载、CSS选择符、图片优化、gzip、iframe问题等,唯独没有细说HTML优化。他强调HTM...