由工作撰写的日志
php 程序员
九 10th
最近去了tencent,xunlei等互联网名企面试,总结一下:
如果想进入这类企业进行底层开发的话必须对互联网各方面的技术原理了解的很清楚,例如apache实现原理。语言方面既然是php开发自然对c/c++要求比较高。往往需要自己写php扩展。使用mysql自然想很多常见的,性能瓶颈要能有很好的解决方案。mysql 插件编写,apache模块编写。联系起来结合点还是要会c。
倘若是做中间层和前端工作则要求对css,javascript要求比较高。当然对web的一系列实现原理也是要非常熟悉的。
对新技术要比较敏感,才能证明你有很好的学习能力和使用能力。
努力提高自己的英文口语,和阅读能力。往往很多新技术都是老外想出来的。等有了中文版也许这个技术已经不是那么新了。
相信我们很多人都只是了解到中间的皮毛而已,对于技术原理。这类型的东西了解甚少。值得注意的一点,正则这个东西在他们严重也是很重要的。
想成为一位合格的php程序员(高级),必须符合如下条件。
◆ 文件目录处理函数包80%以上的函数的功能的灵活运用。
◆ 日期时间函数中的80%以上的函数的功能的灵活运用
◆ 数学函数库中的100%的内容。
◆ 网络库中的60%以上的内容,对各个函数的功能比较熟悉。
◆ 字符串处理函数下的60%以上的内容,特别是各种处理函数。
◆ 正则表达式函数下的90%以上的内容,特别是各种正则处理
◆ 一些安全库下的40%以上的内容,如果对于安全没有接触的话根本就不可能掌握PHP
◆ XML处理,熟悉SAX、DOM以及JDOM的优缺点并且能够使用其中的一种完成XML的解析及内容处理。
◆ 图形图像函数库下的80%以上的内容,特别是一些图像生成和处理
◆ MySQL 数据库函数下的90%以上的内容,特别是处理各种数据的函数
◆ 数组处理函数下的90%以上的内容,特别是各种操作处理函数
◆ 其它PEAR,PECL,和一些扩展类库中的80%以上的内容,特别是一些常用的类的处理
◆ 针对不同的需求,查找不同的函数库。
◆ 测试:必须熟悉使用phpunit编写测试用例完成代码的自动测试。
◆ 管理:必须熟悉使用xinc, phing等完成工程管理的常用任务,例如工程编译、生成phpdoc、生成、版本控制、自动测试。
◆ 排错:应该可以根据异常信息比较快速的定位问题的原因和大致位置。
◆ 思想:必须掌握OOP的主要要求,这样使用PHP开发的系统才能是真正的PHP系统。
◆ 规范:编写的代码必须符合流行的编码规范,这样程序的可读性才比较好。
◆ 博学:掌握OOA、OOD、YiiFramework 、Zendframework、cakephp、symfony、模板技术等流行技术,掌握软件架构设计思想、搜索引擎优化、缓存系统设计、网站负载均衡、系统性能调优等实用技术。
◆ 多去看别人写的代码,php优秀的框架很多,很多人在认知上就有一个错误。认为自己能用一个框架开发一个系统了就认为自己已经熟悉这个框架了,其实会使用他并没有什么一个框架基本都有用户手册,一看基本都会使用了,要想自己技术上面提升,建议多看看这些框架的实现原理(设计模式)。
网站信息查询工具
五 24th
最近花了点时间写己几个对站长实用的工具。当然还有很多可以做有时间将其补上去.希望能帮到大家.
Martin MD5在线加解密
Martin alexa排名查询
Martin Google PageRank查询
下面是一些seo方面的知识。
站外SEO
站外SEO,也可以说是脱离站点的搜索引擎技术,命名源自外部站点对网站在搜索引擎排名的影响,这些外部的因素是超出网站的控制的。最有用功能最强大的外部站点因素就是反向链接,即我们所说的外部链接。毫无疑问,外部链接对于一个站点收录进搜索引擎结果页面起到了重要作用。
那么如何产生高质量的反向链接呢?
高质量的内容
产生高质量的外部链接最好的方法就是书写高质量的内容,你的文章能够让读者产生阅读的欲望而对文章进行转载。
合作伙伴、专业交换
与合作伙伴互相推荐链接。与行业网站、相关性网站进行链接。
分类目录
将网站提交到DMOZ目录、yahoo目录、ODP目录一个一些专业目录网站。
社会化书签
将网站加入百度搜藏、雅虎收藏、Google书签、QQ书签等社会化书签
站内SEO
站内SEO优化的几个重要因素:
域名选择
选择域名有大量的学问,其重要的一点是尽量选择包括关键词的域名。其次查看这个域名之前是否有注册过。如果之前有高质量的站点和它做反向链接,那你就受益了;但是也有可能做反向链接的都是一些质量不好的站点,那你可能会被搜索引擎不友好一段时间了。
关键词设置
为你的文章增加新的关键词将有利于搜索引擎的“蜘蛛”爬行文章索引,从而增加网站的质量。但不要堆砌太多的关键词,应该考虑“人们在搜索引擎中找到这篇文章,会搜索什么样的关键词”。
这些关键词需要在你的文章中被频繁的提及,可以遵循下面的方法:
关键词应该出现在网页标题标签里面;
在网页导出链接的链接文字中包含关键词;
用粗体显示关键词(至少试着做一次);
在标签中提及该关键词(关于如何运用head标签有过争论,但一致都认为h1标签比h2、h3、 h4的影响效果更好,当然有些没有运用head标签的网页也有很高的PR值);
图像ALT标签可以放入关键词;
整个文章中都要包含关键词,但最好在第一段第一句话就放入;
在元标签(meta 标签)放入关键词,建议关键词密度最好在5-20% 之间。
站点设计
搜索引擎更喜欢友好的网页结构,无误的代码和明确导航的站点。确保你的页面都是有效的和在主流浏览器中的可视化。搜索引擎不喜欢太多的Flash、i frames和java script脚本,所以保持站点的干净整洁,也有利于搜索引擎“蜘蛛”更快更精确的爬行到你网站的索引。
站点的内部链接
搜索引擎的工作方式是通过“蜘蛛”程序抓取网页信息,追踪你写的内容和通过网页的链接地址来寻找网页,抽取超链接地址。许多SEO专家都建议网站提供网站地图,在网站上的每个页面之间最好都有一个到两个的深入链接。网站要做的第一步是确保导航中包含目录页面 ,也要确保每个子页面都有链接回到主页面和其它的重要页面。
有规律的更新
网站更新的次数越频繁,搜索引擎蜘蛛爬行的也就越频繁。这意味着网站新文章几天甚至几小时内就可以出现在索引中,而不需要等几个星期。这是网站最好的受益方式。
导出链接
导出链接会提高网站在搜索引擎中的排名,在文章中链接到其它相关站点对读者们是有用的,也有一些轶趣的证据来支持这种理论。太多的导出链接将影响降低你的网站,应该“适度是关键”。
每篇文章的主题
一个页面的主题越紧凑,搜索引擎对它的排名就越好。有时发现你写了很长的文章,覆盖了一些不同的话题,它们的相关性并不高,所以在搜索引擎上的排名也不好。如果你关心搜索引擎的排名,那最好把这样的文章切块,分成几个主题更密切的文章。最简单的方法是:选取关键词,围绕关键词书写文章,内容集中,不要写的过宽。
写适宜长度的文章
太短的文章不能获得较高的排名,一般控制每篇文章至少有300个字。另一方面,也不要让文章显得太长,因为这将不利于你保持关键词的密度,文章看上去也缺少紧凑。研究显示过长的文章会急剧减少读者的数量,他们在看第一眼的时候就选择了关闭文章。
避免内容重复
搜索引擎在使用指南中严重警告过关于多个网页相同内容的问题。不管这些网页是你拥有的还是别人拥有的。因为一系列的垃圾站点就是不断复制网页内容(也窃取别人网站内容)。有一些争论关于什么样的内容算复制,其实要看这些内容是否对你的网站有用来选择。
目录的数量
当我的目录过多的时候,我自己都会陷入麻烦。我认为大站点的等级比小站高,当然一些小站点也有高的等级,这并不是标准。目录越多,搜索引擎搜索的也就越全面。如果你有太多的页面,你需要组织它们以方便搜索引擎爬行。
提交到搜索引擎
如果你做了所有站内SEO都该做的事,网站却还没有出现在搜索引擎中。那是因为搜索引擎还没有开始收录,每个搜索引擎都允许用户提交未收录站点,这个工程一般要等待3-5天。
SEO是依据通过对长期摸索、观察得出来的技术与经验,利用搜索引擎录取网站的规则,将网站的整体结构、网站布局、关键词分布及密度进行优化,使网站对搜索引擎的抓取有友好性,从而进行搜索引擎优化,达到网站提高排名的效果。由于搜索引擎的排名规则及算法是是在不断改变中的,而且这些规则和算法又是商业机密,所以不可能达到保证排在某几位的效果的。
seo=更多页面的收录+页面文字的友好安排+转化率
SEO分为白帽SEO和黑帽SEO,白帽SEO就是正规合理的运作,黑帽SEO就是作弊手法,下面介绍几种常见的作弊方法,希望大家不要用
桥页(doorway pages)
通常是用软件自动生成大量包含关键词的网页,然后从这些网页做自动转向到主页。目的是希望这些以不同关键词为目标的桥页在搜索引擎中得到好的排名。当用户点击搜索结果的时候,会自动转到主页。有的时候是在桥页上放上一个通往主页的链接,而不自动转向。大部分情况下,这些桥页都是由软件生成的。你可以想象,生成的文字是杂乱无章,没有什么逻辑的。如果是由人写出来的真正包含关键词的文章,就不是桥页了。
关键词堆砌(keyword stuffing)
在网页中大量堆砌关键词,希望提高关键词密度,提高网页针对关键词的相关度。关键词堆砌可以在很多地方,比如在用户可以看到的文章本身中,也有在title网站标题,关键词标签keywords,说明标签description中。随着搜索引擎算法的改进,关键词密度已经不是一个重要的因素。
隐藏文字(hidden text)
隐藏文字是在网页的HTML文件中放上含有关键词的文字,但这些字不能被用户所看到,只能被搜索引擎看到。可以有几种形式,比如说超小字号的文字,与背景同样颜色的文字,放在评论标签当中的文字,放在表格input标签里面的文字,通过样式表把文字放在不可见的层上面等等。其目的也都是想提高网页的相关性。有的时候,有的人还在这些地方放上与网站内容无关的,但是很热门的关键词,希望网页能在这些热门关键词下得到好的排名和流量。
隐藏链接(hidden link)
隐藏链接和隐藏文字相似,但是区别是把关键词放在链接里面,而这个链接也是用户所看不到的。
隐藏页面(cloaked page)
有的网页使用程序或脚本来检测来访问的是搜索引擎还是普通用户。如果是搜索引擎,网页就返回经过优化的网页版本。如果来访的是普通人,返回的是另外一个版本。这种作弊方式,通常用户无法发现。因为一旦你的浏览器去看这个网页,无论是在页面上还是在HTML源文件中,你所得到的都已经是与搜索引擎看到的不同的版本。检测的方法是,看一下这个网页的快照。
细微文字
许多做搜索引擎优化的人士明白隐藏文字可能会遭到惩罚,所以就将本来隐藏的文字以细微的字体暴露出来。细微文字即使是使用微小的字体在网页不显眼的地方书写带有关键词的句子。一般这些文字是放在网页的最顶端或者最底部。这些文字的色彩虽然不是和隐藏文字那样与背景使用相同颜色,但是经常也以非常相近的颜色出现。
在搜索引擎眼中,像“版权所有”这样的声明性的文字一般是用迷你字体来显示的。这些细微文字一般会被浏览者忽视,但是他们组成的句子会有滥用的嫌疑。
lamp 是什么
五 4th
LAMP是一个缩写(linux apache mysql php[perl,python]),起源于英国,它指一组通常一起使用来运行动态网站或者服务器的自由软件.
Linux,操作系统;
Apache,网页服务器;
MySQL,数据库管理系统(或者数据库服务器);
PHP 和有时 Perl 或 Python,脚本语言。
虽然这些开放源代码程序本身并不是专门设计成同另几个程序一起工作的,但由于它们的廉价和普遍,这个组合开始流行(大多数Linux发行版本捆绑了这些软件)。当一起使用的时候,它们表现的像一个具有活力的解决方案包。
LAMP包的脚本组件中包括了CGIweb接口,它在90年代初期变得流行。这个技术允许网页浏览器的用户在服务器上执行一个程序,并且和接受静态的内容一样接受动态的内容。程序员使用脚本语言来创建这些程序因为它们能很容易有效的操作文本流,甚至当这些文本流并非源自程序自身时也是。正是由于这个原因系统设计者经常称这些脚本语言为胶水语言。
Michael Kunze 在一篇为德国电脑杂志c’t(1998,第12期,230页)而写的文章中使用了缩略语 LAMP。这篇文章意在展示一系列的自由软件成为了商业包的替换物。由于IT世界众所周知的对缩写的爱好,Kunze提出LAMP这一容易被市场接受的术语来普及自由软件的使用。
O’Reilly和MySQL AB在英语人群中普及了这个术语。的确,MySQL AB 自己的市场推广在某种程度上基于LAMP包的推广。其他的项目和厂商则推行这个术语的一些变体,包括:
LAPP(以PostgreSQL 替代 MySQL).
LAMP(最后两个字母意味着 Middleware 和 PostgreSQL).
WAMP(以 Microsoft Windows 替代 Linux).
MAMP(以 Macintosh 替代 Linux).
LAMJ 意指 JSP/servlet.
BAMP 以 BSD 替代 Linux.
WIMP 指 Microsoft Windows, Microsoft IIS,MySQL, PHP.
AMP(省略了操作系统;Apple最喜欢这个词眼[来源请求]).
XAMP(xml + apache + mysql + php).
一些人借用LAMP 来描述一类可定制组成的系统,而不是制造一系列新词,并用它来表示这些系统和统一打包的页面开发环境的不同。
php 配置文件 php.ini 详细介绍
四 17th
View Code PHP;;;;;;;;;;;;;;;;;
;; 关于php.ini ;;
;;;;;;;;;;;;;;;;;
; 这个文件必须命名为’php.ini’并放置在httpd.conf中PHPINIDir指令指定的目录中。
; 最新版本的php.ini可以在下面两个位置查看:
; http://cvs.php.net/viewvc.cgi/php-src/php.ini-recommended?view=co
; http://cvs.php.net/viewvc.cgi/php-src/php.ini-dist?view=co
;;;;;;;;;;;;
;; 语法 ;;
;;;;;;;;;;;;
; 该文件的语法非常简单。空白字符和以分号开始的行被简单地忽略。
; 章节标题(例如: [php])也被简单地忽略,即使将来它们可能有某种意义。
;
; 设置指令的格式如下:
; directive = value
; 指令名(directive)是大小写敏感的!所以"foo=bar"不同于"FOO=bar"。
; 值(value)可以是:
; 1. 用引号界定的字符串(如:"foo")
; 2. 一个数字(整数或浮点数,如:0, 1, 34, -1, 33.55)
; 3. 一个PHP常量(如:E_ALL, M_PI)
; 4. 一个INI常量(On, Off, none)
; 5. 一个表达式(如:E_ALL & ~E_NOTICE)
;
; INI文件中的表达式仅使用:位运算符、逻辑非、圆括号:
; | 位或
; & 位与
; ~ 位非
; ! 逻辑非
;
; 布尔标志用 On 表示打开,用 Off 表示关闭。
;
; More >
求职面试容易犯的错误
四 1st
在求职面试中,没有人能保证不犯错误。只是聪明的求职者会不断地修正错误走向成熟。然而在面试中有些错误却是一些相当聪明的求职者也难免会一犯再犯的,我们权称之为“高级”错误。笔者总结近几年跨国公司人力资源管理工作之经验,列举出常见的十二种“高级”错误,与读者切磋。
面试时,不能等考官先开口。
一、不善于打破沉默
面试开始时,应试者不善“破冰”(英文直译,即打破沉默),而等待面试官打开话匣。面试中,应试者又出于种种顾虑,不愿主动说话,结果使面试出现冷场。即便能勉强打破沉默,语音语调亦极其生硬,使场面更显尴尬。实际上,无论是面试前或面试中,面试者主动致意与交谈,会留给面试官热情和善于与人交谈的良好印象。
二、与面试官“套近乎”
具备一定专业素养的面试官是忌讳与应试者套近乎的,因为面试中双方关系过于随便或过于紧张都会影响面试官的评判。过分“套近乎”亦会在客观上妨碍应试者在短短的面试时间内,作好专业经验与技能的陈述。聪明的应试者可以例举一至两件有根有据的事情来赞扬招聘单位,从而表现出您对这家公司的兴趣。
三、为偏见或成见所左右
有时候,参加面试前自己所了解的有关面试官,或该招聘单位的负面评价会左右自己面试中的思维。误认为貌似冷淡的面试官或是严厉或是对应试者不满意,因此十分紧张。还有些时候,面试官是一位看上去比自己年轻许多的小姐,心中便开始嘀咕:“她怎么能有资格面试我呢?”其实,在招聘面试这种特殊的采购关系中,应试者作为供方,需要积极面对不同风格的面试官即客户。一个真正的销售员在面对客户的时候,他的态度是无法选择的。
面试时,不要闪闪躲躲。
四、慷慨陈词,却举不出例子
应试者大谈个人成就、特长、技能时,聪明的面试官一旦反问:“能举一两个例子吗?”应试者便无言应对。而面试官恰恰认为:事实胜于雄辩。在面试中,应试者要想以其所谓的沟通能力、解决问题的能力、团队合作能力,领导能力等取信于人,唯有举例。
五、缺乏积极态势
面试官常常会提出或触及一些让应试者难为情的事情。很多人对此面红耳赤,或躲躲闪闪,或撒谎敷衍,而不是诚实的回答、正面的解释。比方说面试官问:?什么5年中换了3次工作?有人可能就会大谈工作如何困难,上级不支持等,而不是告诉面试官:虽然工作很艰难,自己却因此学到了很多,也成熟了很多。
六、丧失专业风采
有些应试者面试时各方面表现良好,可一旦被问及现所在公司或以前公司时,就会愤怒地抨击其老板或者公司,甚至大肆谩骂。在众多国际化的大企业中,或是在具备专业素养的面试官面前,这种行为是非常忌讳的。
面试前应做好各种准备。
七、不善于提问
有些人在不该提问时提问,如面试中打断面试官谈话而提问。也有些人面试前对提问没有足够准备,轮到有提问机会时不知说什么好。而事实上,一个好的提问,胜过简历中的无数笔墨,会让面试官刮目相看。
八、对个人职业发展计划模糊
对个人职业发展计划,很多人只有目标,没有思路。比如当问及“您未来5年事业发展计划如何?”时,很多人都会回答说“我希望5年之内做到全国销售总监一职。”如果面试官接着问“为什么?”应试者常常会觉得莫名其妙。其实,任何一个具体的职业发展目标都离不开您对个人目前技能地评估以及您为胜任职业目标所需拟定的粗线条的技能发展计划。
九、假扮完美
面试官常常会问:您性格上有什么弱点?您在事业上受过挫折吗?有人会毫不犹豫地回答:没有。其实这种回答常常是对自己不负责任的。没有人没有弱点,没有人没有受过挫折。只有充分地认识到自己的弱点,也只有正确的认识自己所受的挫折,才能造就真正成熟的人格。
在面试时主动打探薪酬可能给HR留下不好印象。
十、被“引君入瓮”
面试官有时会考核应试者的商业判断能力及商业道德方面的素养。比如:面试官在介绍公司诚实守信的企业文化之后或索性什么也不介绍,问:“您作为财务经理,如果我(总经理)要求您1年之内逃税1000万元,那您会怎么做?”如果您当场抓耳搔腮地思考逃税计谋,或文思泉涌,立即列举出一大堆方案,都证明您上了他们的圈套。实际上,在几乎所有的国际化大企业中,遵纪守法是员工行为的最基本要求。
十一、主动打探薪酬福利
有些应试者会在面试快要结束时主动向面试官打听该职位的薪酬福利等情况,结果是欲速则不达。具备人力资源专业素养的面试者是忌讳这种行为的。其实,如果招聘单位对某一位应试者感兴趣的话,自然会问及其薪酬情况。
十二、不知如何收场
很多求职应试者面试结束时,因成功的兴奋,或因失败的恐惧,会语无伦次,手足无措。其实,面试结束时,作为应试者,您不妨:表达您对应聘职位的理解;充满热情地告诉面试者您对此职位感兴趣,并询问下一步是什么;面带微笑和面试官握手并谢谢面试官的接待及对您的考虑。
PHP面向对象技术OOP(全面讲解)、概念开始
九 14th
1.面向对象的概念
面向对象编程(Object Oriented Programming, OOP, 面向对象程序设计)是一种计算机编程架构,OOP的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成,OOP达到了软件工程的三个目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。面向对象一直是软件开发领域内比较热门的话题,首先,面向对象符合人类看待事物的一般规律。其次,采用面向对象方法可以使系统各部分各司其职、各尽所能。为编程人员敞开了一扇大门,使其编程的代码更简洁、更易于维护,并且具有更强的可重用性。有人说PHP不是一个真正的面向对象的语言,这是事实。PHP 是一个混合型语言,你可以使用OOP,也可以使用传统的过程化编程。然而,对于大型项目,你可能需要在PHP 中使用纯的OOP去声明类,而且在你的项目里只用对象和类。这个概念我先不多说了,因为有很多朋友远离面向对象编程的主要原因就是一接触面向对象概念的时候就理解不上去, 所以就不想去学下去了。等读者看完整体内容后再去把概念搞明白吧。
2.什么是类,什么是对象,类和对象这间的关系
类的概念:类是具有相同属性和服务的一组对象的集合。它为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。在面向对象的编程语言中,类是一个独立的程序单位,它应该有一个类名并包括属性说明和服务说明两个主要部分。
对象的概念:对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行操作的一组服务组成。从更抽象的角度来说,对象是问题域或实现域中某些事物的一个抽象,它反映该事物在系统中需要保存的信息和发挥的作用;它是一组属性和有权对这些属性进行操作的一组服务的封装体。客观世界是由对象和对象之间的联系组成的。
类与对象的关系就如模具和铸件的关系,类的实例化结果就是对象,而对一类对象的抽象就是类。类描述了一组有相同特性(属性)和相同行为(方法)的对象。
上面大概就是它们的定义吧,也许你是刚接触面向对象的朋友,不要被概念的东西搞晕了,给你举个例子吧,如果你去中关村想买几台组装的PC机,到了那里你第一步要干什么,是不是装机的工程师和你坐在一起,按你提供的信息和你一起完成一个装机的配置单呀,这个配置单就可以想象成是类,它就是一张纸,但是它上面记录了你要买的PC机的信息,如果用这个配置单买10台机器,那么这10台机子,都是按这个配置单组成的,所以说这10台机子是一个类型的,也可以说是一类的。那么什么是对象呢,类的实例化结果就是对象,用这个配置单配置出来(实例化出来)的机子就是对象,是我们可以操作的实体,10台机子,10个对象。每台机子都是独立的,只能说明他们是同一类的,对其中一个机做任何动作都不会影响其它9台机器,但是我对类修改,也就是在这个配置单上加一个或少一个配件,那么装出来的9个机子都改变了,这是类和对象的关系(类的实例化结果就是对象)。
3.什么是面向对象编程呢?
就不说他的概念,如果你想建立一个电脑教室,首先要有一个房间, 房间里面要有N台电脑,有N张桌子, N把椅子, 白板,投影机等等,这些是什么,刚才咱们说了, 这就是对象,能看到的一个个的实体,可以说这个电脑教室的单位就是这一个个的实体对象,它们共同组成了这个电脑教室,那么我们是做程序,这和面向对象有什么关系呢?开发一个系统程序和建一个电脑教室类似,你把每个独立的功能模块抽象成类,形成对象,由多个对象组成这个系统,这些对象之间都能够接收信息、处理数据和向其它对象发送信息等等相互作用。就构成了面向对象的程序。
php 无极分类 详解
八 3rd
我们在用 php 制作网站时,分类是很重要的,在分类下面又再分类这第二个分类称为次分类,而现在大多数网站分类只分到第三类:
第一分类(父分类)–>第二分类(子分类)–>第三分类(孙分类)
这种亲缘分类越多,程序和数据库的控制就越加的复杂困难.在同一级的分类处理和控制是非常的简单的,因为只需要一个数据库来记载这一级的分类就行了,如:系统,新闻等分类,在这一级上处理是很简单的,但对一个网站来说一级分类是不够的,还需要再分类,如:
系统–>linux,windows
新闻–>linux 新闻,windows 新闻
这样分类就清晰些了,至少让人明白了,系统包括 linux 和 windows,而新闻包括 linux 新闻和 windows 新闻,为了让信息资料更加清晰,于是再继续分类:
linux–>系统工具,内核,编程语言,开发工具
…
分类到了第三级,信息资料的处理就更清晰了,也就是说为了很清晰地处理资料,分类越详细就越方便,这样即方便处理信息又方便网友目的明确地查找到需要的资料,但随着不断的细化分类,在程序和数据库的控制上就会越来越困难.
困难一:如何在数据库里处理这些互有关联的亲缘分类?
困难二:如何用 php 完成这种一目了然的关系?
这种分级多而细的分类是每个 php 程序员都必须解决的问题,因为制作一个好而出色的网站分类问题是不可避免的,而解决这个问题又是相当复杂的,其中最大的问题就是数据库的分类处理,因为如果数据库处理不当将会带来巨大的工作量甚至是不得不重新规划数据库…
这并不是夸张,因为很多人在数据库处理上就会采用一级分类建立一个数据库的做法,我当时也是采取这种方法处理分类的,因大多网站都是分到第三级,所以数据 库里只需三个分类数据库来进行处理.但是需要继续向下分类时,这种做法的弊端就显露出来了,因为越往下分,工作量,程序量将会巨增..
我要介绍的这种方法就是如何用一个分类数据库建立无限向下分级的分类方法,用过 windows 的读者都知道 windows 文件夹就可以建立无限分级的目录,可在目录下面继续建立目录,这样没完没了的分下去,Linux 的目录创建也有这种功能,我介绍的这个方法跟这种形式相同.
数据库的规划
前面谈到分类的复杂性,因此如何规划数据库便成为了实现无限分类非常重要的一步.
我曾介绍过论坛的数据库规划,不错论坛能够实现无限的跟接,无限分类便是这种形式的扩展,分类同样是这种子父的关联关系,所以分类的数据库就是如何确立明确这种子父关系,这里面有几个难点.
1)如何处理各分类的信息存储;
2)如何处理分类的亲缘关系;
3)如何处理对信息的查询;
亲缘关系的数据库处理与论坛的数据库处理类似,这里建个 type 的数据库用来处理分类:
建立字段:
id(int):用来记录各分类的自然序号
uid(int):用来记录该分类的父分类的 id 号
type(char):类别的名称
roue_id(varchar):亲缘树,以 :0:2:10:20: 的 id 连接表明亲源关系
roue_char(varchar):亲缘树,类似 :系统:linux:开发工具:gcc: (这个字段有没有都没关系,为了更方便地了解各亲缘关系当然字符表述比数字表述更直接^o^,不过最好加上这个字段)
这样一个无限分类的类别表就建立了起来,接下来就需要建立存储信息的数据库,处理查询一个表最方便所以这里建立一个表存储信息 type_message:
id(int):信息的序号;
typeid(int):所属类别的 id 号;
title(varchar):信息标题;
message(text):信息内容;
time:信息建立的时间;
这两个数据表就能够完成无限分类的这个任务了(两个表的辅助字段就没加了,读者可自行加入).
剩下的任务就全部交由 php 来处理完成.
程序控制
实现无限分类这个功能中就属这一步最为复杂辛苦,首先看看程序需要完成的步骤:
1)创建分类上传;
2)创建信息上传;
3)明确显示各分类及其之间的关系;
4)处理查询功能;
5)如何处理编辑和删除的功能;
而这五步中最为困难的就是第五个步骤,因为对分类的编辑和删除涉及到一至性的问题.
下面我就逐一描述 php 的程序控制:
1)创建分类上传
在介绍这个功能前,先介绍一下 explode( ) 这个函数,这是个字串处理函数,用来分解字串的,具体的用法,例:
分解”0:1:2:3:4″里的数字
$val=”0:1:2:3:4″;
$rid=explode(“:”,$val);
经过 explode( ) 函数处理,$val 内的所有数字都分解到 $rid 数组中了,要引用时只需打印:echo “$rid[0],$rid[1],$rid[2]…”; 就行了.explode( ) 函数在整个分类处理中起着非常重要的作用,好现在开始介绍无现分类的程序控制.
可以假设个总分类 0 ,所有的分类都是它的子孙分类,现在来建立第一个分类”系统”,来看看它在数据库的存储形式:
id | More >
网络爬虫技术 Spider
七 1st
随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。搜索引擎(Search Engine),例如传统的通用搜索引擎AltaVista,百度,Yahoo!和Google等,作为一个辅助人们检索信息的工具成为用户访问万维网的入口和指南。但是,这些通用性搜索引擎也存在着一定的局限性,如:
Windows 2003 IIS下配置MySQL+PHP+ISAPI_Rewrite
七 1st
一.准备工作
windows 2003,自己买吧…
安装IIS 6.0:
安装系统后在”控制面板”->”添加或删除程序”->”添加/删除Windows组件”->双击”应用程序服务器”->然后选中”Internet信息服务(IIS)”->确定->安装完毕…
经典面试题(PHP基础型II)附答案
六 27th
求职与招聘 往往少不了面试与笔试,作为一个php程序员、多多少少都会有类似的经历……以下是本人收集并整理的PHP面试题目,希望对同行们有所帮助,找到一份合适的php开发工作!(共三节) 以下是面试的题目(一), 下一篇:经典面试题(PHP基础型III)附答案 PHP已经赋予答案: 12、在PHP中,heredoc是一种特殊的字符串,它的结束标志必须?(1分) PHPMA
阅读全文…