- 博客(67)
- 收藏
- 关注
转载 回调函数的概念及其使用
软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;异步调用是一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户方的接口)。回调和异步调用的关系非常紧密,通常我们使用回调来实现异步消息的注册,通过异步调用来实现消息的通知。
2010-09-06 10:08:00
811
转载 PHP函数的实现原理及性能分析
在php中,横向划分的话,函数分为两大类: user function(内置函数) 和internal function(内置函数)。前者就是用户在程序中自定义的一些函数和方法,后者则是php本身提供的各类库函数(比如sprintf、 array_push等)。用户也可以通过扩展的方法来编写库函数,这个将在后面介绍。对于user function,又可以细分为function(函数)和method(类方法)...
2010-09-03 11:03:00
826
转载 PHP使用技巧
<br /><br />榨干 PHP,不得不转的一篇PHP使用技巧!<br />这篇杂文翻译整理自网络各路文档资料(见最末的参考资料),尤其是 Ilia Alshanetsky (佩服之至) 在多个 PHP 会议上的演讲,主要是各类提高 PHP 性能的技巧。为求精准,很多部分都有详细的效率数据,以及对应的版本等等。偷懒,数据就不一一给出了,直接给结论,如果需要看原文档,请到文末「参考资料」部分。橙色标题为推荐部分。<br /><br />=============================
2010-08-30 11:26:00
669
转载 240多个jQuery插件
<br /><br />jQuery 是继 prototype 之后又一个优秀的 Javascript 框架。其宗旨是—写更少的代码,做更多的事情。它是轻量级的 js 库(压缩后只有21k) ,这是其它的 js 库所不及 的,它兼容 CSS3,还兼容各种浏览器(IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。 jQuery 是一个快速的,简洁的 javaScript 库,使用户能更方便地处理 HTML documents、events、实现动画效果,并且方便地为网站提供
2010-08-30 09:47:00
535
转载 32位CPU寄存器和汇编指令
32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 6个段寄存器(ES、CS、SS、DS、FS和GS)1个指令指针寄存器(EIP) 1个标志寄存器(EFlags)
2010-08-08 19:06:00
743
转载 树、B-树、B+树、B*树和红黑树
B 树:二叉树,每个结点只存储一个关键字,等于则命中,小于走左结点,大于走右结点;B- 树:多路搜索树,每个结点存储M/2 到M 个关键字,非叶子结点存储指向关键字范围的子结点;所有关键字在整颗树中出现,且只出现一次,非叶子结点可以命中;B+ 树:在B- 树基础上,为叶子结点增加链表指针,所有关键字都在叶子结点中出现,非叶子结点作为叶子结点的索引;B+ 树总是到叶子结点才命中;B* 树:在 B+ 树基础上,为非叶子结点也增加链表指针,将结点的最低利用率从 1/2 提高到 2/3
2010-07-27 09:32:00
1400
原创 window.returnValue 用法
window.returnValue是javascript中html的window对象的属性,目的是返回窗口值
2010-07-08 15:38:00
1430
转载 Linux下的调试工具
在Linux下,调试工具并非只有 gdb,还有很多其它调试工具,它们都各有所长,侧重方面也有所不同。本文介绍几种笔者常用的调试工具:
2010-06-28 14:43:00
543
原创 MySQL- 存储引擎 MERGE 的介绍
MERGE存储引擎类型允许把许多结构相同的表合并为一个大表。然后,你可以执行查询,从多个表返回的结果就像从一个表返回的结果一样,从而不需要进行联表查询。
2010-06-17 11:32:00
734
转载 [转] Slope one:简单高效的推荐算法
推荐系统最早在亚马逊的网站上应用,根据以往用户的购买行为,推荐出购买某种产品同时可能购买的其他产品,国内做的不错的当当网,有时候买书,它总能给我推荐出我感兴趣的其他书来,也算是技术极大的促进了销售。一般的协同过滤算法,首先是收集用户对事物(产品)的评分情况,一种直接对某本书,或者某个歌曲打分,另种是隐性的打分,比如商务系统中,购买了表示打2分,浏览了打1分,其他的0分。我比较看好隐性打分,
2010-01-21 11:16:00
1506
转载 [转]网页打开速度的心理学
没人愿意等待。所以,没有访问者真的能够忍受一个打开速度极慢的网站。但是,网页打开速度到底对用户行为有什么影响,恐怕没几个人能够说清楚吧。网页打开的最佳速度 2秒!许多研究都表明,用户最满意的打开网页时间,是在2秒以下。用户能够忍受的最长等待时间的中位数,在6~8秒之间。这就是说,8秒是一个临界值,如果你的网站打开速度在8秒以上,那么很可能,大部分访问者最终都会离你而去。研究
2010-01-07 13:44:00
711
原创 怎样的 PHP CODE 才算得上是好的
个人总结大概可以用以下四方面来说明你所写的 PHP CODE 好与不好:1. 规范化 (consistent)2. 结构化 (structured)3. 自适应 (protable)4. 安全的 (secure).............
2010-01-07 11:50:00
654
1
原创 正则表达式学习笔记
一、基本符号^ "^wan" : 匹配以 wan 开始的字符串;$ "wan$" : 匹配以 wan 结束的字符串; "^wan$" : 实际只匹配 wan 字符串; * + ?他们用来表示一个字符可以出现的次数或者顺序,他们分别表示:"zero or more" 相当于{0,}"one or more" 相当于{1,}"zero or on
2009-12-24 13:46:00
688
转载 Web应用中的轻量级消息队列
Web应用中为什么会需要消息队列?主要原因是由于在高并发环境下,由于来不及同步处理,请求往往会发生堵塞,比如说,大量的insert,update 之类的请求同时到达mysql,直接导致无数的行锁表锁,甚至最后请求会堆积过多,从而触发too many connections错误。通过使用消息队列,我们可以异步处理请求,从而缓解系统的压力。在Web2.0的时代,高并发的情况越来越常见,从而使消息队列有
2009-12-18 14:42:00
3061
2
原创 PHP性能分析工具XHProf
XHProf是facebook开源出来的一个php轻量级的性能分析工具,跟Xdebug类似,但性能开销更低,还可以用在生产环境中,也可以由程序开关来控制是否进行profile。基于浏览器的性能分析用户界面能更容易查看,或是与同行们分享成果。也能绘制调用关系图。在数据收集阶段,它记录调用次数的追踪和包容性的指标弧在动态callgraph的一个程序。它独有的数据计算的报告/后处理阶段。在数
2009-12-09 10:39:00
1440
原创 jQuery 弹出提示层
有时项目中会用到一些提示层的效果,以下是最常用的jQuery插件。1. http://famspam.com/facebox2. http://nyromodal.nyrodev.com/3. http://jquery.com/demo/thickbox/
2009-12-08 11:31:00
1364
原创 Ajax 缓存问题
在Ajax开发中,往往考虑更多的是用户体验,但实际中有时也会遇到浏览器缓存内容的问题,会让用户感觉是程序出错了。比如,某个元素注册了鼠标事件(onclick),事件触发后会通过 xmlhttprequest 发送请求到服务器获取内容,在不刷新页面的情况下,浏览器会缓存第一次请求的内容,服务端更新后浏览器仍然显示第一次的内容。通常,这种请求都是 xmlhttprequest 发起
2009-12-08 11:15:00
602
原创 Href for Javascript links
web 2.0, 为了追求页面效果,在很多网站的页面中一般都是采用:Link OR Link当 href 是指向一个有效的链接时,在豆瓣等一些NB的网站页面中,却很少见到以上写法。为什么呢?首先,当浏览器将Javascript enabled的时候,以上就不起作用了;其次,本来存在的页面也无法在新的窗口中打开。而他们采用的是一种更好、更周到(手机现在也上网哦)的写法:Link
2009-11-26 10:30:00
650
转载 NoSQL数据库探讨 -- 非关系型数据库
随着互联网web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速。而传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,例如: 1、High performance - 对数据库高并发读写的需求 web2.0网站要根据用户个性化信息来实
2009-11-25 11:05:00
5465
5
原创 中断(break/continue)PHP程序执行
之前的程序中,在服务器 error_log 中一直有这么一个错误提示:[19-Nov-2009 22:44:50] PHP Fatal error: Cannot break/continue 1 level in /home/filename.php on line 160但程序还是可以继续执行下去。经查阅资料,有这么一说法:当不在 LOOP 或 SELECT 逻辑条件中
2009-11-20 15:17:00
3468
原创 C 语言编译器 gcc 命令详解(Linux系统)
Linux 系统中最重要的软件开发工具是 gcc,在 Linux 系统中,c89、cc 和 gcc 这些命令基本上都指向系统的C语言编译器,通常是GNU C编译器,或都简称 gcc。在 UNIX 系统中,C 语言编译器称为 cc。实际上,gcc 能够编译三种语言:C、C++ 和 Object C(C 语言的一种面向对象扩展)。利用 gcc 命令可同时编译并连接 C 和 C++ 源程序,
2009-11-07 23:15:00
3057
1
原创 重构
我们都希望我们程序代码可读性强、逻辑清淅、表达条件逻辑简单、系统易扩展以及后期维护方便等。可现实中太多数程序并不是如此。我们应该见过很多难以阅读、逻辑重复(duplicated logic)、添加新行为时需要修改既有代码、充斥中大量的复杂条件逻辑(complex conditional logic)的程序。这时心里肯定在骂人了,我们应该怎么去面对这么一个项目呢?推倒重来成本太高,项目经
2009-11-06 23:05:00
769
转载 浅析大型高并发高负载网站的系统架构
转自:http://www.toplee.com/blog/71.html一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构、性能的要求都很简单,随着互联网业务的不断丰富,网站相关的技术经过这些年的发展,已经细分到很细的方方面面,尤其对于大型网站来说,所采用的技术更是涉及面非常广,从硬
2009-11-04 10:34:00
751
原创 Memcachedb 分布式持久存储系统
对于项目的需要是多样化的,应用的解决方案也就是应运而生,Memcached 分布式缓存系统大家都知道,是完全基本于内存缓存的,但数据并不能持久存储,但使用 Memcached + TTServer 配合就可以达到持久缓存存储系统。在早一段时间听说国内新浪网开发了一套基于 memcahced 的分布式持久存储系统:Memcachedb。今天尝试了一下,果然不错,操作简易,功能强大。一
2009-10-28 17:11:00
1192
原创 MySQL Explain 的使用
对于使用 MySQL 这个数据库系统的用户来说,它不仅开源,稳定,效率也很高。但有时也会遇到一些性能方面的问题。一般情况可能会有以下几种可能:1. 数据表的索引没有合理的建好或使用。2. SQL语句过于复杂,(左/右连接,多表查询等)。3. 服务器配置不合理。4. 服务器本身的处理能力不佳,负荷不起。但在实际的项目应用中,最方便可以优化的也就是SQL语句。以下就对于
2009-10-23 14:38:00
766
原创 redis 数据持久化键值数据库系统
redis 是一个高性能、数据持久化的key-value数据库。 redis 的出现,很大程度补偿了 Memcached 这类 key-value 存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP客户端,使用很方便。问题是这个项目还很新,可能还不足够稳定,而且没有在实际的一些大型系统应用的实例。Redis is
2009-10-23 11:12:00
1167
原创 SWFUpload 批量上传文件
SWFUpload是一个客户端文件上传工具,最初由Vinterwebb.se开发,它通过整合Flash与JavaScript技术为WEB开发者提供了一个具有丰富功能继而超越传统标签的文件上传模式。其官方网站:http://swfupload.org/SWFUpload的主要特点* 可以同时上传多个文件;* 类似AJAX的无刷新上传;* 可以显示上传进度;
2009-10-22 11:08:00
7750
9
原创 vim 操作命令列表
vim 是linux下命令行一款操作简单功能强大的编辑器。当然在对于习惯使用windows图形操作的用户也可使用,叫做 Gvim。熟悉此工具过程中必备的命令列表,也可以打印一份贴到办公电脑前哦,看到很多高人都这样做过 呵呵。官方网站:http://www.vim.org/1. 进入vimvi filename :打开或新建文件,并将光标置于第一行首vi +n filename
2009-10-15 22:48:00
1871
9
原创 Memcached 命令操作
对于 Memcached 缓存系统的基本介绍、安装以及应用 之前有一编文章说过,下面主要是对使用Memcached系统的基本命令以及协议作个简单的分析,个人学习的笔记,呵呵。还希望能给需要的筒子一点参考:一、Memcache面向对象的常用接口包括:Memcache::connect -- 打开一个到Memcache的连接Memcache::pco
2009-10-14 23:03:00
11283
1
原创 PHP5自动加载(autoload)机制
1、autoload机制概述使用PHP OOP模式开发系统时,出于文件组织结构的原因,将各个类放在单独的文件,每个类专注于一个任务,是OOP开发的基本思想之一:高内聚。这样易于对类进行复用和维护。一般地,如果需要使用到这个类时,就可以通过require_once()语句来实现。如://Books.class.phpclass Books{
2009-10-11 21:41:00
2460
原创 AJAX避免用户重复提交请求
在使用AJAX(jQuery)异步请求数据时,为了避免因某些原因用户同时多次点击按钮,提交重复的请求,我们需要禁用请求提交按钮。重点:jQuery的 attr 和 removeAttr 两个函数,主要是元素button的disabled属性。Demo:Button disabeld Button abled
2009-10-10 11:14:00
3870
原创 PHP如何防止SQL注入式攻击
由于程序开发人员对程序中的一些数据类型没有经过检查、向 MYSQL 提交正确的数据类型以及特殊数据的转义,导致程序容易受SQL注入式攻击。就此,PHP对此已提供了安全的设置及内置函数来防止此问题的发生。以下就个人在开发应用中写点........1、magic_quotes_runtime 设置当它打开时,php的大部分函数自动的给从外部引入的(包括数据库或者文件)数据中
2009-10-08 21:39:00
1516
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人