文比三家-有关奋斗

 看到有关奋斗的文章,放在一起别有一种感觉,我还是很认同第三种的,第二种太理想化了。当然你会有自己的看法的,有需要的直接前往原文观看。 第一篇很出名,叫做《你必须非常努力,才能看起来毫不费力》 有一群人,他们积极自律,每天按计划行事,有条不紊;他们不张扬,把自己当成最卑微的小草,等待着人生开出花朵的那天。他们早晨5点多起来健身,你在睡觉;7点开始享受丰盛的早餐,蛋白质维生素淀粉粗纤维样样俱全,为新的一天起了一个好头,当他们收拾妥当准备开始一整天的工作时,你还在睡觉。 第二篇针锋相对,是《我始终不信努力奋斗的意义》 “奋斗”这个词的英文表示更能彰显其本来面目,叫做“struggle for”,奋力斗争。Struggle的含义是,你之所以奋力斗争,正是为摆脱你目前所处的状态——你不是想着追求,而是想着逃离。你之所以现在做你讨厌的事情,为的是以后再也不做这种事情。那么,为什么不在此刻停下来呢? 子曰:富而可求也,虽执鞭之士,吾亦为之。如不可求,从吾所好。 第三篇我想把全文贴出来:《第三只眼:做你认为对的你》 人人6分  读完《你必须非常努力,才能看起来毫不费力》,再读《我始终不信努力奋斗的意义》,或许你会发生这样的惊叹:啊,原来思想可以这样,相互对立,可是看似又相互正确。  当然这是好事,你发现思维就是这样有趣,它们各自站在自己的立场上去博弈厮杀,它们都企图把你拉到自己一边,而你四处打听考察,想要分清谁是谁非,正义和邪恶,却最后发现,它们说得都好有道理啊……多读这类观点相斥的文章,你会发现一个新的天地——原来思维的广度和宇宙一般,没有边界。  你去看这两篇文章后面读者的评论,你会发现有太多的人都没有自己独立的思考。看罢《你必须非常努力,才能看起来毫不费力》,就有人会说:对啊对啊,这不正是颓废的我吗,我须奋斗才行,不然我就会成为被踩在脚底的小职工。看罢《我始终不信努力奋斗的意义》,就会有人说:“对啊对啊,我为什么要奋斗呢。有人苦苦奋斗三十年还熬不出头,及时行乐才好。”  如果你没有自己的立场,就很容易陷入人云亦云的沼泽,成为它们的牺牲品,你的脑袋就是他人思维的跑场,谁在上面跑,你就听谁的。这当然是可悲的,终其一生,你听从所有人,模仿所有人,可是,你独独没有真正做一回自己。  我之所以说这么多,是为下面我的观点进行铺垫——我说的对也罢,错也罢,你认同也好,批评也好,它只是一种观点,你要不要相信无所谓,重要的是你要保持自己独立思考的能力。  对于“奋斗与否”,我认为这完全是因人而异的事。其实,“奋斗与否”的核心问题是“人生意义”——到底奋斗了才能体现自我价值,还是享受当下才是生命的本质?人与人之间是不同的,有的人将金钱排在第一,有的人觉得帮助他人才能让自己感到愉快,有的人说找到我爱的就是爱我的人,此生还有何求呢!有的人通过非常的努力虽不能达到别人一生出来就有的优越,却真切体验到人生奋斗的乐趣!有的人……  你可以不相信奋斗。有的人孜孜不倦,奋斗了一生,得到了什么?所谓的金钱?成功?地位?更多的甚至什么都没得到,空累了一身病,人财两空。还不如今点上烟,喝点茶,悠哉地过着小日子。  你可以相信奋斗。富人和渔夫的故事广泛被用来告诫人们:你终极一生的奋斗,不过是为了有一天能坐在海边,惬意地看着潮涨潮落,那奋斗何用!可是,人们往往忽略了虽然同样坐在沙滩上,渔夫和富人能一样吗?富人享受完了可以继续享受,而渔夫想要这样的话,早被他妻子骂个狗血淋头——家都掀不开锅了,你还有这份闲心!  要不要奋斗,归根结底,取决于你想做什么样的人,过什么样的人生。其实这是个伪命题,讨论它是没有意义的。因为如果你认为对的,喜欢的事,就去做,去实现,是感觉不到奋斗的挣扎,而是享受。如果你觉得你在很努力地奋斗,那你一定是在做你不喜欢的事情。  我最不喜欢的是这样一种人:总是抱怨自己的生活,却从不试着做些努力去改变。我有个同学,一天到晚都在打着网游,却也自得其乐。我不认为他这样有什么不好,做自己喜欢的事,尽管我们认为那是在浪费时间,但他能从中得到快乐,那还苛求什么呢?而我的另一个同学,读书的时候心不在焉,玩得时候又觉得虚度年华,然后总是抱怨没学到一点能力以后工作要怎么办啊。  老子的逍遥之道和孔夫子的出仕之思,本就没有好坏之分,你认同谁就坚定地站在谁那边,万万不要羽世独立,悠然见南山的时候还在叹息男儿何不带吴钩。做你认为对的那个你,你才会开心,不郁结。 行文有些乱,因为来回穿插了两个论点—— 一.不在乎是否奋斗,而在于你是否找到了认同,然后去做你认为对的你。 二.推翻我的观点,当你发现这是一堆废话的时候,你就是你自己的思想了。 世界上最大的真理就是:这个世界没有真理。这真是个精妙悖论。

正规式->最小化DFA说明

今天早上去图书馆,去看编译原理,想把这部分搞清楚,看着龙书+国产的某一本不知什么的习题与解析,猜过程。。猜原理。。终于是看懂了。。 整体的步骤是三步: 一,先把正规式转换为NFA(非确定有穷自动机), 二,在把NFA通过“子集构造法”转化为DFA, 三,在把DFA通过“分割法”进行最小化。  **一步很简单,就是反复运用下图的规则,**图1  这样就能转换到NFA了。 给出一个例题,来自Google book。本文主要根据这个例题来讲,图2 二.子集构造法。 同样的例题,把转换好的NFA确定化,图3  这个表是从NFA到DFA的时候必须要用到的。第一列第一行I的意思是从NFA的起始节点经过任意个ε所能到达的结点集合。Ia表示从该集合开始经过一个a所能到达的集合,经过一个a的意思是可以略过前后的ε。同样Ib也就是经过一个b,可以略过前后任意个ε。 至于第二行以及后面的I是怎么确定的。我参考了一些题目才明白,原来就是看上面的Ia和Ib哪个还没出现在I列,就拿下来进行运算,该列对应的Ia和Ib就是前面我说的那样推导。  如果还不太明白,看图就是了。你会发现I中的几个项目都在Ia和Ib中出现了。而且是完全出现  这步做完以后,为了画出最后的DFA,那么肯定得标出一些号来,比如1.2.3.。或者A。 B。c,我一般标的方法是先把I列全部标上1.2.3.递增。然后看1表示的集合和Ia和Ib中的哪个集合一样,就把那个集合也表示为1.继续向下做。最后会得到这样一个表格。图4  至此,就可以表示出DFA了。就对照上面那个表,从0节点开始经过a到1.经过b到2,就这样画就行了。。  最后的DFA如下图,图5  双圈的表示终态,这个是怎么来的呢。去看看图4,会发现有些项之前有双圈标志,这个是因为在NFA图2中,9为终态,所以所有包含9的集合都被认为是终态集,改成1.2.3.。。方便画节点后就需要把这些点作为终态了。。  三.最小化,分割法。 FA的最小化就是寻求最小状态DFA  最小状态DFA的含义: 1.没有多余状态(死状态)2. 没有两个状态是互相等价(不可区别) 两个状态s和t等价的条件: 兼容性(一致性)条件——同是终态或同是非终态 传播性(蔓延性)条件——从s出发读入某个a和从t出发经过某个a并且经过某个b到达的状态等价。就是相同。  DFA的最小化—例子,第一步都是固定的。分成终态和非终态 1.将M的状态分为两个子集一个由终态k1={C,D,E,F}组成,一个由非终态k2={S,A,B}组成, 2.考察{S,A,B}是否可分. 因为A经过a到达C属于k1.而S经过a到达A属于k2.B经过a到达A属于k2,所以K2继续划分为{S,B},{A}, 3.考察{S,B}是否可再分: B经过b到达D属于k1.S经过b到达B属于k2,所以S,B可以划分。划分为{S},{B} 4.考察{C,D,E,F}是否可再分: 因为C,D,E,F经过a和b到达的状态都属于{C,D,E,F}=k1所以相同,所以不可再分: 5.{C,D,E,F}以{D}来代替则,因为CDEF相同,你也可以用C来代替。无所谓的最小化的DFA如图,: 真麻烦啊。。心里清楚,还得找些图来说明。。额。。基本上感觉自己讲清楚了。。。不清楚的地方。。请留言互相讨论。。谢谢。。 参考: http://www.worldcat.org/title/bian-yi-yuan-li-xue-xi-fu-dao/oclc/302301738 http://metc.gdut.edu.cn/compile/cmpl3/3-3.htm

WIN7上网提示711错误解决

朋友今天上网突然网络连接出现了这个问题,也就是无法加载远程访问连接服务。Google了一下,第一种方法就是查看如下的服务是否启动,如果没有,自行启动。 服务名称:eventlog 显示名称: Windows Event Log 启动类型:自动 服务名称:TapiSrv 显示名称: Telephony 启动类型:手动 服务名称:SstpSvc 显示名称: Secure Socket Tunneling Protocol Service 启动类型:手动 服务名称:Netman 显示名称: Network Connections 启动类型:手动 服务名称:nsi 显示名称: Network Store Inte***ce Service 启动类型: 自动 服务名称:RasMan 显示名称: Remote Access Connection Manager 启动类型:手动  启动方法:对着我的电脑点右键-》管理-》服务和应用-》服务 找到对应的服务后,右键属性,启动类型就可以了 但是如上操作有时并不可以,会提示有些服务不能启动,这种情况下,  用管理员账号登陆,再打开 c:\windows\system32\logfiles 如果看到 wmi文件夹,在wmi文件夹上点右键,点 获取管理员权限 ,后重启即可修复。  附上Win7下添加右键获取管理员权限的方法: 在Win7下经常要用到管理员权限,为了方便可以添加一个右键菜单,方法如下: 新建一个“记事本”文件,复制以下内容: 复制好后选文件-另存为,保存类型选"所有文件",文件扩展名为reg 然后运行即可。 Win7下取消右键获取管理员权限方法: 同样的保存上面内容为reg格式文件即可。

Ubuntu 安装phpmyadmin

在lamp环境搭建这篇文章中,使用apt-get安装了lamp环境,可能你会发现mysql命令行操作不方便。那么需要安装web版的phpmyadmin来辅助了。两步; 1.打开终端 输入 执行过程中我记得会让输入msql的密码。和设置phpmyadmin的密码。phpmyadmin的用户名是root 然后直接访问 http://localhost/phpmyadmin,会发现不能用。因为phpmyadmin被安装在了/usr/share/phpmyadmin/目录。 建立一个软连接,不喜欢的话,你也把phpmyadmin直接复制到 /var/www/的文件夹下面也可以。 在Ubuntu下面就可以通过http://localhost/phpmyadmin正常使用phpmyadmin了。

Mysql ERROR 1064 (42000) 问题

昨天在lamp环境下写sql语句的时候,其中有一条语句是这样的,看着没什么错啊。。然后执行会报ERROR 1064这个错误。 后来解决了原来是是类型不全。必须写成 很诡异。。因为理论上unsigned应该是被识别成int unsigned。。还有其他一些情况,反正就是只要报1064.可能语法错误。可能是拼写。或者是分号,mysql的错误提示是很差的。如果把 auto_increment 自增属性加到非主键上。也会报1064的诡异错误。。 参考:stackoverflow

二级域名查找 实现演示(GAPI+Json+C#)

昨天看到了李劼杰的检索一个域名下属所有子域名的两种方法很受启发。想用C#实现一些东西,本来是打算做的相对完整一点的,结果发现Google 开放的api貌似是有限制,段时间内不同提交太多。所以就简单实现一下,有需要的朋友自己扩展  刚开始的思路是想Google应该是有开放的api吧。。于是先Google C# 收集 Google搜索结果。翻了一会,看到了 此文 ,一看我去,返回的竟然是json格式。。只听过,从来没有接触过。。。不做总是不会的,试试。 思路;访问该页面,得到字符串-》去掉多余部分-》解析成对象-》提取对象的字段 1.访问该<pre lang]“C#">http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=hello,其实hello部分就是需要查找的字串,对于查找二级域名这种事,应用到Google的一个语法就是site:leaver.me。类似这样的,可以获取到所有leaver.me上的子站和内容。。 然后分析json数据。直接访问会发现格式很乱。使用http://jsonformatter.curiousconcept.com/这个工具进行格式化。最终结果如图 可以很清楚的看出json的结构,results是结果集,我需要的是需要的是[]之间的部分,包括[],我理解的是这样。默认给出4个结果。  2.要去掉多余部分,得用正则表达式了, json解析我在外国找到了json.net这个解析器,导入什么的就不说了,至于用法我是看的他的文档  3.Listresults = JsonConvert.DeserializeObject<List>(json); //list 存放解析的结果,result为对应自写类就是将一个json格式的字符串解析成一个list组,组内元素为一个对应的类,就是先分析json的格式。发现每个结果都有如下的格式 所以写一个类,来用于json数据的反序列号,其实就是解析啦。。这样通过对解析器的调用就能对应着吧json里面的值赋值给类对象了。  4.完成后就得到了一个List对象。里面包含四个结果的所有信息,只要调用results[i].对应属性就可以了。这里分析后可知二级域名在visibleUrl里,所有就调用它。用到了HashSet这个模板。元素唯一不重复。 最终效果: 写程序需要是处理边界情况。。感觉是。主要是我对json格式的解析很不清楚。。只能边学边做。。还有因为写之前没有规划好,打算写全一些,也没想好每个函数来干什么,结果导致后面很麻烦。竟然用了一个全局变量。。其实可以改的。还是算了,演示而已。而且。当时不太清楚google的限制。到达限制后会返回一个错误的结果,多次异常。不顾加强了调试代码的能力,也好。唉。矬人就是矬人啊。。 源码下载: [downloadicon href=http://pan.baidu.com/share/link?shareid=91790&uk=1493685990]Finder Demo[/downloadicon]

WWWScan GUI版--WebScan

网上一直有个版本是Wscan Gui Beta6,首先感谢作者的无私奉献,写代码不容易啊。但是这个我不知道为什么在我的电脑上总是有一些错误。很多功能虽然加上了,但是其实对我有点多余。毕竟,我只是用这个扫描一下。于是,决定自己用C#做个GUI版,模仿实现一下。  然后我看了一下目录结构。如下图所知 貌似作者只是简单写了。然后对应着调用扫描器。我想了下,可以通过修改文件名来实现,因为wwwscan默认只能识别cgi.list,那么我想的是当我选中一种扫描类型后。将对应的字典,比如asp.list改成cgi.list。当然为了保护原文件,复制。。然后调用。这样就不用有这么多exe了。。  第二个我想实现作者的检测网站的脚本类型的功能,想到了两种方法。一种是循环访问index.xxx文件,xxx对asp jsp等,然后判断http状态码,200的话就可以对应判断出来网站脚本了。但是这样测试了一会没成功,还是算了,,然后想了一种猥琐流的方法,就是直接访问首页。然后把源码下载下来,然后搜索".xxx"字符串,找到就行了,,当然这两种方法都是不完善的。。我也没想到什么完美的。。希望有人知道的话留言指教。  最后的目录就清爽多了  那个4p啊,,就是盲扫描了。。不知道网站脚本的时候采用。。。  界面基本完全模仿了作者的UI,进行了略微调整,希望作者不介意。  程序需要.net framework 3.5。。win7默认都有。不用担心。xp用户可以下载环境后使用。毕竟是扫描工具,国内那些2b杀软会报毒,不放心的去世界杀毒网自己扫描吧。千万不要用来干坏事,遵守我国相关法律法规。 [downloadicon href=http://pan.baidu.com/share/link?shareid=83803&uk=1493685990]WebScan下载[/downloadicon]

操作系统知识点汇总(下)

太长了,还是分成两篇。此为下 同时到达的作业使用短作业优先平均周转时间最短。 系统调用和一般过程调用的区别: 1.运行状态不同 用户态/和心态 2.进入方式不同 过程调用/访问管中断 3.代码层次不同 用户级/系统级 周转时间=完成时间-提交时间 平均带权周转时间=周转时间/执行时间 存储器分配的三种方式:1.直接分配,2.静态分配(连续),3.动态分配(需要用到重定位) 地址空间是逻辑地址的集合,内存空间是物理地址的集合 分区存储管理的策略: 分配策略有:首次适应算法、循环首次适应算法、最佳适应算法、最坏适应算法。 a.首次适应算法的优缺点:保留了高址部分的大空闲区,有利于后到来的大型作业的分配;低址部分不断被划分,留下许多难以利用的、小的空闲区,且每次分区分配查找时都是从低址部分开始,会增加查找时的系统开销。 b.循环首次适应算法的优缺点:使内存中的空闲分区分布得更为均匀,减少了查找时的系统开销;缺乏大的空闲分区,从而导致不能装入大型作业。 c.最佳适应算法的优缺点:每次分配给文件的都是最适合该文件大小的分区;内存中留下许多难以利用的小的空闲区。 d.最坏适应算法的优缺点:给文件分配分区后剩下的的空闲区不至于太小,产生碎片的几率最小,对中小型文件分配分区操作有利;使存储器中缺乏大的空闲区,对大型文件的分区分配不利。 内部碎片是指分配给作业的存储空间未被使用的部分,外部碎片是指系统中无法利用的小存储块。 页面置换算法: 1.最佳置换算法 永远不需要,最长的时间后才能访问的页面被调出 2.先进先出 3.最近最久未使用 传说中的LRU,最近一段时间内没被访问的页面被调出 采用分段式不会产生内部碎片,虚拟存储器的最大容量是由计算的地址结构决定的 页面的大小与可能产生缺页中断的次数成反比 作业在执行中发生了缺页中断,经操作系统处理后,应让其执行被中断的指令 段页式存储器管理系统中,内存等分成块,然后程序按照逻辑模块划分成若干段。 先进先出页面置换算法会产生Belady现象 回收分区后造成空闲分区-1的原因是有有上邻和下邻空闲分区 执行过程不能被修改的代码称为可重入代码。。 请求分页存储器管理中,地址变换可能因为地址越界,缺页,访问存在权限错误而产生中断 交换技术是以CPU时间为代价的 段页式管理中,作业分段,段内分页,页内分块,每条访问内存的指令需要三步 1.通过段号查段表。。得到页表地址 2.通过页号查页表。。得到物理块号 3.物理块号+页内地址 访问真实地址 固定分区分配和页式管理会产生内碎片,额可变分区和段式则产生外部碎片。 输出输入控制方式 ①程序I/O控制方式:适用于结构简单,只需少量硬件的电路; ②中断驱动I/O控制方式:适用于高效场合; ③直接存储访问DMA I/O控制方式:适用于无须CPU介入的控制器来控制内存与外设之间的数据交流的场合; ④I/O通道控制方式:适用于以字节为单位的干预,同时实现CPU,通道和I/O设备三者并行操作的场合。 设备处理程序又称为设备驱动程序,其主要任务是接收来自上层的与设备无关的输入输出请求,进行与设备相关的处理 通道又称为I/0处理机,用来实现内存与外设之间的信息传输。 为了使多个进程能够更有效的同时处理输入和输出请求,最好使用缓冲池结构的缓冲技术 缺页中断属于外部中断,Ctrl+C属于程序性中断 设备分配时涉及到的主要数据结构设备控制表,控制器控制表,通道控制表,系统设备表 从资源分配的角度可将I/0分为独享设备,共享设备,虚拟设备 引入缓冲技术的原因: 1.缓和cpu和I/0之间的速度不匹配的矛盾 2.减少中断cpu的次数 3.提高cpu和I/o之间设备的并行性 文件系统是指文件,管理文件的软件以及数据结构的总体 文件系统的目的是为了实现对文件的按名存取。 逻辑文件的两种类型:记录式和流式 二进制的那个位图表行号=(盘块号-1)/列数。 转载请注明:http://leaver.me/archives/328.html

操作系统知识点汇总(上)

这两天为了考试看完了操作系统习题与解析 写了一些笔记,然后今天整理成电子版,,我去。写完发现2500字了都.唉,苦啊。。顺序没有过多整理。也能加深印象,太长了,还是分成两篇。此为上 操作系统的发展与形成:1.手工操作阶段,2.脱机输入输出阶段,3.批处理技术,4.多道程序设计技术。 操作系统的基本类型:1.批处理,2.分时,3.实时。 操作系统的特征:并发,共享,虚拟性,不确定性 实时操作系统必须在规定时间内处理完来自外部的事件。。 现代操作系统的两个基本特征是并发和共享 内部命令是由系统定义的,常驻内存的处理程序的集合。 操作系统的结构层次: 裸机-》cpu调度-》内存管理-》设备管理-》文件管理-》作业管理-》命令管理-》用户 程序顺序执行的特征。顺序性。封闭性,可再现性。 程序并发执行的特征:间断性,失去封闭性,不可再现性。 进程的几个基本状态:就绪,执行,阻塞。 引入进程的目的是使多道程序并发执行,以改善资源利用率,及提高系统吞吐量,而引入线程,则是为了减少并发执行所付出的时空开销,具有更好的并发性。 每个进程中,访问临界资源的那段程序称之为临界区。 进程互斥的准则;1.空闲放进,2.忙则等待,3.有限等待,4.让权等待 管程:局部于管程的共享变量说明了对该数据结构进行操作的一组过程,以及局部与管程的数据设置初始值。 P,V操作是低级进程通信原语。原语是对进程进行管理和控制的。进程不是指令的集合。 创建原语的主要工作:向系统申请一个空闲PCB,并为创建进程分配必要的资源,然后初始化PCB,并插入到就绪队列。返回进程的标识号 一个进程会唤醒,指的是进入就绪状态。 资源分配的基本单位是进程,CPU分配的基本单位是线程。 进程的基本特征: 动态性:进程的实质是程序的一次执行过程,进程是动态产生,动态消亡的。 并发性:任何进程都可以同其他进程一起并发执行 独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位; 异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进 结构特征:进程由程序、数据和进程控制块三部分组成。 进程之间的关系:同步和互斥 m个进程访问临界资源,信号量的变化在1- (1-m)之间 进程是由一个具有一定功能的程序关于某个数据集合的一次运行活动。 调度的类型: 1.作业调度(也叫;宏观,高级,长程),是从外存调到内存然后进入竞争执行 2.进程调度(也叫:微观,低级,短程),取就绪状态的进程进入执行阶段 3.交换调度(也叫:中级,中程)是将外存中具备执行条件的进程调入内存或者相反 调度的两种方法:1.剥夺方式,2.非剥夺方式 进程调度的算法:1.先来先服务,2.最高优先权,3.时间片轮转,4.多级反馈。具体的课本上有。也可以看此文 死锁的原因:1.资源不足。2.推进顺序不当 形成死锁的必要条件:1.互斥,2.不剥夺。3.部分分配。4.环路等待。 并非所有不安全状态就为死锁。但反之成立 银行家算法其实很简单。就是规范化比较麻烦。看维基百科吧。 破坏资源互斥这个条件来避免死锁是不现实的。 资源的按序分配 这种算法资源按某种规则系统中的所有资源统一编号(例如打印机为1、磁带机为2、磁盘为3、等等),申请时必须以上升的次序。系统要求申请进程: 1、对它所必须使用的而且属于同一类的所有资源,必须一次申请完; 2、在申请不同类资源时,必须按各类设备的编号依次申请。 这样申请的时候要么没有。要么全部分配,破坏了循环等待的条件 调度算法中程序的相应比=1+等待时间/估计运行时间 操作系统提供给程序员的接口是系统调用 作业生存期的四个状态:1.提交。2.后备,3.开始,3.完成 转载请注明:http://leaver.me/archives/317.html

php的一些知识点

一.php中单双引号的区别 "" 双引号里面的字段会经过编译器解释,然后再当作HTML代码输出。 '' 单引号里面的不进行解释,直接输出。 从字面意思上就可以看出,单引号比双引号要快了。单引号支持'和\的转义,但其他一些转义字符就必须是在双引号里了。 例如: 二.require和include的区别 在于,出现错误时,require是error,也就是说脚本会停止执行,而include是warning。也就说说代码会继续执行,另外,无论require的位置如何。即使是放在一个if代码块里面。他也会将指定文件包含进来。。即使该if部分不执行。顺带说下include 和include_once。其实类似于c里面的ifdef。。就是只包含一次。不重复包含。 三。php类 php类的构造函数命名为_construct.析构函数为_destruct,需要调用父类的构造函数时,使用parent::_construct()来调用 四。pear包 PEAR是"PHP Extension and Application Repository"的缩写,也就是一个PHP扩展和应用的管理工具, 具体可参考:http://www.berlinix.com/php_pear.html 五。PDO PDO(PHP Data Objects)扩展为PHP访问数据库定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据。PDO随PHP5.1发行,在PHP5.0的PECL扩展中也可以使用。其实就是一个访问数据库的一个类,连数据库的时候实例一个。调用方法就这样。前提是这个装好了。 linux下具体可以参考:LINUX下手动安装PDO_MYSQL window下和例子(例子也可以在linux下使用)参考此文:PHP5中PDO的简单使用 六。Zend 准确地讲 Zend 框架究竟是什么呢?Zend 框架具有以下特征: 是基于 PHP 建立的。 是面向对象的。 使用 MVC 范例。 具有开放源码贡献者。 有贡献者负责保证他们的代码不是他人的知识产权。 通过建立 MVC 模式,Zend 框架的目标是使编程生活更加轻松,这不仅体现在通用领域,而且对您始终想要做的具体的事情也是如此,比如访问数据库或输出 PDF 文件。 具体可参考:理解 Zend 框架,第 1 部分: 基础 七。GD库 百科上的解释: GD库,是php处理图形的扩展库,GD库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片。 在网站上GD库通常用来生成缩略图,或者用来对图片加水印,或者用来生成汉字验证码,或者对网站数据生成报表等。在PHP处理图像,可使用GD库, 如何检测Lamp是否已经有了GD库呢。将下面的代码保存为phpinfo.php,然后传到服务器的网站目录下,在浏览器访问这个文件,如: localhost/phpinfo.php,然后找到一行为GD Support,后面如果是enabled,那就说明系统已经有了GD库 使用的例子可以参见官方一个例子,在指定的图片上添加文字。 例子参见:http://www.php.net/manual/en/image.examples-png.php 八。Smarty引擎 Smarty主要就是分离了前台和后台的实现。使得多人合作开发程序更加方便。因为前后台在代码上基本完全分离,一般实现就是一个模板文件,以tpl结尾,一个php文件。在tpl文件里面用变量来指示内容。而在php文件中将内容传递过去。来完成页面显示。 参考:smarty安装及初级使用只看第一部分的例子即可。