`
yipsilon
  • 浏览: 244709 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

PHP会倒掉吗?

php 
阅读更多

最近有不少文章讨论PHP如何如何不好,如何如何不适应企业应用,如何如何会倒掉的问题。我也发表一下我的看法。

 

我认为PHP的最成功之处在于以下几点:

 

1. 相对简单的语:PHP的语法构成囊括了C、JAVA、PERL等,这使得熟悉这些语法的人可以很轻易地入门PHP语言,而其他语言则不同,除非用户在一门语言中有了一定的经验,再去学另一门语言能稍微轻松些,但是对于毫无经验的初学者,那是一个痛苦的过程。

 

2. 丰富的类库支持:PHP内置了非常多的函数,而且都使用统一的命名环境,这样PHP开发人员只需要打开PHP参考文档就可以查询到,不必像其他语言那样(如Java),不断地加入第三方类库及学习其使用方法。

 

3. 低廉的部署成本:因为PHP本身就是开源的,因此它使用的环境大多是开源或免费的,况且市面上集成产品很多,如XAMPP,一解压运行个自动安装程序,就可以使用了。再看其他的语言,Java产品中免费的有tomcat,它还是需要进行一些手工配置,且性能非常一般;而ASP.NET的它本身就是收费的,这里就不说了。

 

再者就是,PHP是专门针对网站的,这使得它把全部精力投入到如何优化网站上面,不管是语法结构还是解释引擎。而其他语言如Java或.net,他们是一套通用的语言,网站应用只是其一部分,网站快速开发和应用能力确实没有PHP强。

 

上面几点总结出一句话就是:不用高价的开发人员,不用配置很高的硬件服务器,就可以非常快速地构建网站应用。而这个速度,是其他语言所不能匹敌的。最简单的测试不过是拿一个同样功能的网站,让一帮初级程序员分别用PHP、JAVA、ASP.NET进行开发,看看开发和部署速度的差距就知道了。

 

你会发现,这应该就是PHP的魅力所在。

 

至于OOP,我觉得对于网站的应用来说,只要能以最快的速度满足客户要求就行了,任何产品如果无法满足客户的需求,那使用再好的技术也是扯淡,更何况如果不是大中型项目,OOP是会拖累开发进度的,而目前大部分网站应用来说,基本都是小型项目。

 

而企业应用,我觉得PHP完全可以胜任,因为PHP它内置了支持调用Java和.NET组件,如果自身不行,那就用别人的嘛,只要快速开发的本质不变就行。

 

至少,从我接触PHP的这段时间来看,个人认为它不会垮掉,因为网站应用还没有能像它一样简洁快速的语言出现。(不要说ruby了,它的学习门槛不低啊,而且运行环境配置起来也比较复杂,大部分常用类库也都是外置的)

分享到:
评论
217 楼 hittyo 2009-12-10  
呵呵,有点ppc的味道了,java还有拿数据结构和算法技能当成优势的 -_-!

JAVA编程你就老老实实讲个OO,比OO再高级一点的就是开发框架(或者架构)
216 楼 icewubin 2009-12-10  
<div class="quote_title">yipsilon 写道</div>
<div class="quote_div">
<div class="quote_title">icewubin 写道</div>
<div class="quote_div">
<p>1. 这怎么会没有用,你现在就是在把两种情况下混淆在一起说。</p>
<p> </p>
<p>2. 如果启动需要40MB内存(假设所有启动时需要的加起来需要40MB),当你把xms设为小于40MB的时候(此时xmx当然要比40MB打,假设是500MB吧),这个时候表现出来当然是xms是没用的拉,任务管理器中观察就是占用了40MB物理内存;</p>
<p> </p>
<p>如果你设的xms参数是大于40MB,你在任务管理器中看到的当然就会起变化。</p>
<p> </p>
<p>当然讨论的是资源占用,我觉得你有点不可理喻了,我都说,xms设的大的话,是预分配内存资源,都举了下载软件的例子了,你怎么就不明白呢?</p>
<p> </p>
<p>假设xms设为40MB,应用启动需要40MB内存,一个并发的时候整个应用需要50MB内存,100个并发的时候需要200MB内存,这都是可以观察到的吧,在这个前提下,如果说把xms设为200MB,你能说1个并发系统就需要200MB么?当然不是的,因为这句话“1个并发系统就需要200MB”的意思暗指“100个并发系统200MB是不够的”。</p>
<p> </p>
<p>3. 你如果有兴趣,可以看看memcached是如何处理内存碎片的问题的,不要以为只有磁盘才有碎片。</p>
</div>
<p>1. 如何混淆呢?没有把?哪句话是混淆了?</p>
<p> </p>
<p>2. 此论点已跟我的论点符合了,物理内存占用会越来越大。而且,你反问的那些话都是自言自语的,我根本就没发表类似的正反论点哦。</p>
<p> </p>
<p>3. 跟讨论主题无关。</p>
</div>
<p><br>这个讨论的起因是你说JBoss启动时吃很多物理内存开始的,然后还说所有J2EE服务器都是如此,还说了J2EE服务器就是重量级的等等。</p>
<p> </p>
<p>本来就和主题无关,我只是指出你举例不合适的地方,拿某些特殊情况的例子,来套所有的J2EE服务器。</p>
<p> </p>
<p>就好比,有些人装好一个ghost版的操作系统,然后开了N多服务,装了2-3个杀毒软件,然后说机器很慢,机器配置么是i7,他可能没有明确地说i7很烂,但是意思已经开始表达出来了:“i7很烂”。</p>
215 楼 yipsilon 2009-12-10  
<div class="quote_title">icewubin 写道</div>
<div class="quote_div">
<p>那你说的“国内大部分的”依据在哪里?</p>
<p> </p>
<p>你知道国内大部分二、三线城市的1-2年java程序员的待遇有多低么?</p>
</div>
<p>依据是google上搜到的一些PHP开发人员招聘要求的一些文章,几乎都没有写要求数据结构和算法技能的。</p>
<p> </p>
<p>对于java,我只知道,相对于城市薪资平均值来说,<strong>真正的</strong>java开发人员在其城市中的待遇算是不错的,但你不能拿城市之间的薪酬绝对值来比较。</p>
<p> </p>
<p>而只学了几十天java就到处说有多么精通java那类人,待遇偏低是很正常的。呵呵,大连这边到处都是。</p>
<p> </p>
<div class="quote_title">icewubin 写道</div>
<div class="quote_div">JE也有不少网友自己写过程序测过,麻烦你自己也写一个测测看。</div>
<p> JE里的一些测试文章看了,有这么几个方式:</p>
<p> </p>
<p>1. 用数据循环和内置方法做比较。</p>
<p> </p>
<p>2. 使用不同大小的文件来做比较。</p>
<p> </p>
<p>3. 用缓冲和非缓冲方式做比较。</p>
<p> </p>
<p>这些方式中,如果不公平对待的话,很有可能会出现出人意料的结果,例如你给IO加缓冲了而NIO没有做。哪怕只是限制在IO范围内,如果方式不对的话,性能差距也会很大,这里 <a href="http://www.ibm.com/developerworks/cn/java/j-io1/">http://www.ibm.com/developerworks/cn/java/j-io1/</a> 就是个例子。</p>
<p> </p>
<p>我一般不重复做别人做过的事情,那样是出力不讨好的,既然有实践有数据,直接引用过来即可。到网上找找吧,国内外的相关文章都很多啊,尽量找专家的,因为他们的测试环境涉及到的外界因素比较少。</p>
214 楼 yipsilon 2009-12-10  
<div class="quote_title">icewubin 写道</div>
<div class="quote_div">
<p>1. 这怎么会没有用,你现在就是在把两种情况下混淆在一起说。</p>
<p> </p>
<p>2. 如果启动需要40MB内存(假设所有启动时需要的加起来需要40MB),当你把xms设为小于40MB的时候(此时xmx当然要比40MB打,假设是500MB吧),这个时候表现出来当然是xms是没用的拉,任务管理器中观察就是占用了40MB物理内存;</p>
<p> </p>
<p>如果你设的xms参数是大于40MB,你在任务管理器中看到的当然就会起变化。</p>
<p> </p>
<p>当然讨论的是资源占用,我觉得你有点不可理喻了,我都说,xms设的大的话,是预分配内存资源,都举了下载软件的例子了,你怎么就不明白呢?</p>
<p> </p>
<p>假设xms设为40MB,应用启动需要40MB内存,一个并发的时候整个应用需要50MB内存,100个并发的时候需要200MB内存,这都是可以观察到的吧,在这个前提下,如果说把xms设为200MB,你能说1个并发系统就需要200MB么?当然不是的,因为这句话“1个并发系统就需要200MB”的意思暗指“100个并发系统200MB是不够的”。</p>
<p> </p>
<p>3. 你如果有兴趣,可以看看memcached是如何处理内存碎片的问题的,不要以为只有磁盘才有碎片。</p>
</div>
<p>1. 如何混淆呢?没有把?哪句话是混淆了?</p>
<p> </p>
<p>2. 此论点已跟我的论点符合了,物理内存占用会越来越大。而且,你反问的那些话都是自言自语的,我根本就没发表类似的正反论点哦。</p>
<p> </p>
<p>3. 跟讨论主题无关。</p>
213 楼 icewubin 2009-12-10  
<div class="quote_title">yipsilon 写道</div>
<div class="quote_div">
<div class="quote_title">icewubin 写道</div>
<div class="quote_div">
<div class="quote_title">
<span style="font-weight: normal;">照你的意思,PHP程序员的工作职责,</span>就是<span style="font-weight: normal;">快速实现和避免缺陷?</span> </div>
<p> </p>
<p>如果是这样的话,这个是否高级、待遇问题等就不用讨论下去了,说不到一起去了。</p>
</div>
<p>前面的“仅仅”,现在的“就是”,说话不能太极端。</p>
<p> </p>
<p>我现在说的是国内大部分(之前和现在都没说<strong>全部</strong>)PHP开发人员的现实情况,貌似国外也是这样的,PHPer们,你们可以仔细想想自己是不是这样的。</p>
</div>
<p><br>那你说的“国内大部分的”依据在哪里?</p>
<p> </p>
<p>你知道国内大部分二、三线城市的1-2年java程序员的待遇有多低么?</p>
212 楼 icewubin 2009-12-10  
<div class="quote_title">yipsilon 写道</div>
<div class="quote_div">
<p> </p>
<div class="quote_title">icewubin 写道</div>
<div class="quote_div">1.我已经说了任何J2EE服务器就可以自动能够以JVM参数,只要设定最小启动内存,就可以让你“观察”到更小的启动内存消耗,这里“观察”打引号后面一并说。<br><br>2.这里的讨论本来就是岔出去的,是你老拿JBoss来举例论证J2EE服务器的问题,我只不过指出是你使用JBoss的配置和JVM的参数设置问题。<br><br>3.JVM有server版呢?你给个server版的JVM下载链接给我看看?<br><br>4. 我都说的很清楚了,你就不能仔细想想么?好比BT或者电驴下载,为了避免磁盘碎片,会预分配磁盘空间的,但是随着下载软件不断下载内容,磁盘剩余空间是不会有任何变化的。<br><br>你从任务管理器看到的,就好比我上面举的磁盘分配的例子,当你JVM参数配置成500MB-500MB的时候,你从任务管理器确实看到占用500MB内存,并不代表,对象真的占用了500MB啊,只不过防止内存碎片而已。如果是你认为的一上来就吃完500MB内存,那再新建对象岂不是要OutOfMemory了?这500MB内存,JVM就不回收对象了?<br><br>5. 搞笑啊,你要测试,就麻烦先自己改一下内存参数再去任务管理器看看内存吃多少。<br><br>真要像模像样的测试,就用测试软件把负载和并发搞到一定级别再测试,否则你的话的不出任何结论。<br><br>6. 哦,一个连接的时候观察任务管理器占用500MB内存,就能得出任何结论了么?如果100个并发还是500MB内存呢?麻烦先设定好JVM参数再测,行不行?</div>
<p>1. 如果你说设置xmx的话,还可能会有用,但设置xms是没用的,因为启动时跟应用时是两种条件,应用时势必会占用更多的资源,光看启动时消耗有意义么?</p>
<p> </p>
<p>2. 前段时间说老拿tomcat,后来又说老拿jboss,呵呵,但问题是,我拿这些比较完全是反驳你的一些我认为错误的论点啊,貌似大部分都是你开头的。</p>
<p> </p>
<p>3. 对于SUN的JRE,你下载64位版本的,本身就是server版的了,32位的JRE加个启动参数 -server 也是sever版的。</p>
<p> </p>
<p>4. 哎,从java分配对象所占用内存量与实际物理内存占用量的比较,到这里来了,服了。</p>
<p> </p>
<p>5. 不管怎么改,实际物理内存占用量都是大于你在java中调用的对象内存占用量的。这个怎么会搞笑呢?如果再加上并发等因素,那差别就更大了。</p>
<p> </p>
<p>6. 你这观点又转到java内部了,呵呵。实际讨论的是资源占用啊,物理层面的,跟java语言本身有关系么?晕...</p>
</div>
<p><br>这怎么会没有用,你现在就是在把两种情况下混淆在一起说。</p>
<p> </p>
<p>如果启动需要40MB内存(假设所有启动时需要的加起来需要40MB),当你把xms设为小于40MB的时候(此时xmx当然要比40MB打,假设是500MB吧),这个时候表现出来当然是xms是没用的拉,任务管理器中观察就是占用了40MB物理内存;</p>
<p> </p>
<p>如果你设的xms参数是大于40MB,你在任务管理器中看到的当然就会起变化。</p>
<p> </p>
<p>当然讨论的是资源占用,我觉得你有点不可理喻了,我都说,xms设的大的话,是预分配内存资源,都举了下载软件的例子了,你怎么就不明白呢?</p>
<p> </p>
<p>假设xms设为40MB,应用启动需要40MB内存,一个并发的时候整个应用需要50MB内存,100个并发的时候需要200MB内存,这都是可以观察到的吧,在这个前提下,如果说把xms设为200MB,你能说1个并发系统就需要200MB么?当然不是的,因为这句话“1个并发系统就需要200MB”的意思暗指“100个并发系统200MB是不够的”。</p>
<p> </p>
<p>你如果有兴趣,可以看看memcached是如何处理内存碎片的问题的,不要以为只有磁盘才有碎片。</p>
211 楼 yipsilon 2009-12-10  
<div class="quote_title">icewubin 写道</div>
<div class="quote_div">
<div class="quote_title">
<span style="font-weight: normal;">照你的意思,PHP程序员的工作职责,</span>就是<span style="font-weight: normal;">快速实现和避免缺陷?</span>
</div>
<p> </p>
<p>如果是这样的话,这个是否高级、待遇问题等就不用讨论下去了,说不到一起去了。</p>
</div>
<p>前面的“仅仅”,现在的“就是”,说话不能太极端。</p>
<p> </p>
<p>我现在说的是国内大部分(之前和现在都没说<strong>全部</strong>)PHP开发人员的现实情况,貌似国外也是这样的,PHPer们,你们可以仔细想想自己是不是这样的。</p>
210 楼 yipsilon 2009-12-10  
<p>
</p>
<div class="quote_title">icewubin 写道</div>
<div class="quote_div">1.我已经说了任何J2EE服务器就可以自动能够以JVM参数,只要设定最小启动内存,就可以让你“观察”到更小的启动内存消耗,这里“观察”打引号后面一并说。<br><br>2.这里的讨论本来就是岔出去的,是你老拿JBoss来举例论证J2EE服务器的问题,我只不过指出是你使用JBoss的配置和JVM的参数设置问题。<br><br>3.JVM有server版呢?你给个server版的JVM下载链接给我看看?<br><br>4. 我都说的很清楚了,你就不能仔细想想么?好比BT或者电驴下载,为了避免磁盘碎片,会预分配磁盘空间的,但是随着下载软件不断下载内容,磁盘剩余空间是不会有任何变化的。<br><br>你从任务管理器看到的,就好比我上面举的磁盘分配的例子,当你JVM参数配置成500MB-500MB的时候,你从任务管理器确实看到占用500MB内存,并不代表,对象真的占用了500MB啊,只不过防止内存碎片而已。如果是你认为的一上来就吃完500MB内存,那再新建对象岂不是要OutOfMemory了?这500MB内存,JVM就不回收对象了?<br><br>5. 搞笑啊,你要测试,就麻烦先自己改一下内存参数再去任务管理器看看内存吃多少。<br><br>真要像模像样的测试,就用测试软件把负载和并发搞到一定级别再测试,否则你的话的不出任何结论。<br><br>6. 哦,一个连接的时候观察任务管理器占用500MB内存,就能得出任何结论了么?如果100个并发还是500MB内存呢?麻烦先设定好JVM参数再测,行不行?</div>

<p>1. 如果你说设置xmx的话,还可能会有用,但设置xms是没用的,因为启动时跟应用时是两种条件,应用时势必会占用更多的资源,光看启动时消耗有意义么?</p>
<p> </p>
<p>2. 前段时间说老拿tomcat,后来又说老拿jboss,呵呵,但问题是,我拿这些比较完全是反驳你的一些我认为错误的论点啊,貌似大部分都是你开头的。</p>
<p> </p>
<p>3. 对于SUN的JRE,你下载64位版本的,本身就是server版的了,32位的JRE加个启动参数 -server 也是sever版的。</p>
<p> </p>
<p>4. 哎,从java分配对象所占用内存量与实际物理内存占用量的比较,到这里来了,服了。</p>
<p> </p>
<p>5. 不管怎么改,实际物理内存占用量都是大于你在java中调用的对象内存占用量的。这个怎么会搞笑呢?如果再加上并发等因素,那差别就更大了。</p>
<p> </p>
<p>6. 你这观点又转到java内部了,呵呵。实际讨论的是资源占用啊,物理层面的,跟java语言本身有关系么?晕...</p>
209 楼 icewubin 2009-12-10  
<div class="quote_title">yipsilon 写道</div>
<div class="quote_div">
<div class="quote_title">icewubin 写道</div>
<div class="quote_div">1.可能由于地域的关系,你感觉PHP程序员便宜,至少我和我认识的人都不觉得,当然我们认为的所谓高级人才定义可能也有差别。 <br><br>2.我们认为的“数学”定义可能也有差别,你说的数学应该是数据结构和算法吧,如果<strong>仅仅</strong>是数学的话,我招数学系毕业的就可以了,学校里为什么还要开设计算机专业? <br><br>3.我认为99.9的大型网站(注意前提是大型网站),无论用什么语言,是必须要有一定深度的数据结构以及算法的水平,否则都不能胜任工作。这也是我认为的高端人才必备的条件之一。 <br><br>例:连一个hash算法和特点都不知道的人,如何指望他能充分利用类库(无论什么语言)写出高质量的代码。</div>
<p> </p>
<p> </p>
<p>1. 既然不同意我说的基础功底和技术经验,那你认为什么是PHP高级人才呢?</p>
<p> </p>
<p>2. 你这就给大家设了一个圈套,还“仅仅”,说话太极端了。因为数学学的好的未必适合做程序员(潜质),但一旦有潜质做程序员了,技术能力提高速度一般都会比数学弱的快很多。</p>
<p> </p>
<p>3. php的开发人员,绝大部分都是做coding的,需要有数据结构和算法水平,但不需要有太深入研究,他们工作的主要目的是快速实现和避免缺陷,在达到这两个目的的前提下,如果某些代码质量的不好,可以通过日后的refectoring进行改造。</p>
</div>
<p><br>照你的意思,PHP程序员的工作职责,就是快速实现和避免缺陷?</p>
<p> </p>
<p>如果是这样的话,这个是否高级、待遇问题等就不用讨论下去了,说不到一起去了。</p>
208 楼 icewubin 2009-12-10  
<div class="quote_title">yipsilon 写道</div>
<div class="quote_div">
<div class="quote_title">icewubin 写道</div>
<div class="quote_div">
<div class="quote_title"><span style="font-weight: normal;">你说的我又不是不知道,既然你是搞java的,有时间自己写一个测试的验证一下,就知道了,多说无益,理论上的东西谁不知道。</span></div>
<p> </p>
<p>请自己测试NIO的实际效果,低负载下你测不出什么差距的。</p>
<p> </p>
<p>还有,我说的NIO不仅仅值网络IO,还有磁盘IO,也不仅仅包括Linux。</p>
</div>
<p>NIO和IO的网络性能比较不用我论证吧,好多文章都在做这样的比较,随便google一下就可以了。</p>
<p> </p>
<p>至于磁盘IO的话,那它就更不如NIO了。网上也是有很多文章在讨论着事情。</p>
</div>
<p><br>JE也有不少网友自己写过程序测过,麻烦你自己也写一个测测看。</p>
207 楼 icewubin 2009-12-10  
<div class="quote_title">yipsilon 写道</div>
<div class="quote_div">
<p> </p>
<div class="quote_title">icewubin 写道</div>
<div class="quote_div">1.啊,你说问题,请事先说清楚啊,“带应用”这个前提你不说清楚如何继续讨论?JBoss本来就是偏向于企业级的,当然也可以用来做互联网项目,但是不是这么测试的。J2EE Server默认会自带一些服务而已,你不做任何精简,当然吃内存,这里你有没有说清楚讨论的前提,不明白你说的应用是J2EE服务器自带应用还是自己写的应用,如果是服务器自带应用,删除即可,如果你自己写的应用,吃内存大,那是你自己应用写的问题。 <br><br>不要光一句“对象、重量级”就敷衍了事,要说测试,我随便搞个Tomcat,可以让它跑应用支持很少的内存,要说相关框架,早就说过了,做互联网绝对不会用什么J2EE重量级的框架,你如果是在搞不清楚什么叫做轻量级J2EE,先查查资料再讨论行不? <br><br>2.你去下个Tomcat,删除webapps目录下所有目录和文件,然后建一个ROOT,里面可以放你的应用,然后适当调一下server.xml,然后你自己看看会吃多少内存。其他轻量级J2EE服务器类似。 <br><br>3.Server版的J2EE服务器和Server版的JVM完全是两个概念,你不要搞混了,而且所谓Server版JVM只不过是调优JVM参数用的,JVM下载不分Server版还是非Server,JVM参数中增加-server而已,而且没人说server版初始吃内存很大,初始内存大小是你自己设的,而不是吃出来的。你自己不设置JVM初始内存占用大小,就一口咬定应用占用了这么多内存,那是你自己的问题。 <br><br>补充:JVM参数即使设置了内存参数最小值和最大值,例如500MB至900MB,并不意味着,一开始真的就占用了500MB内存,例如一开始随着访问人数的增加,内存占用并不会有明显变化,直到超过一定程度,才会慢慢超过500MB,原因就是设置较高的内存最小值往往是为了减少内存碎片的产生而故意的,实际应用占用内存在低负载下,并没有你观察到的那么多,或者说是你观察的方法不对,你可以用如下代码观察实际内存使用量: </div>
<p>1. 就算写个hello world的应用,JBoss那类的服务器也会占很大内存,如果你能写个占用内存少的应用,麻烦贴出来看一下。</p>
<p> </p>
<p>2. tomcat这个例子我不知举了多少遍了,多看看之前的性能比较的例子可以么?我的论点(PHP与Java的应用部署和容器资源占用比较)不是你反驳的那样,结果不知怎么就被你跑题到这里了(各种J2EE容器间比较),哈哈。</p>
<p> </p>
<p>3. 我确实一直说的是Server版JVM,没有搞混,你仔细看看啊。J2EE服务器还分Server版么?这才是笑话啊。看了很多文章,server版确实会比client版JVM消耗更多内存,为了提高某些性能。</p>
<p> </p>
<p>至于你写的那段代码,那只是指定java对象占用的内存量,而不是整个物理内存。比较简单,循环打印出freememory数,然后打开任务管理器,看看他俩是否一样就知道了。答案肯定是物理内存占用比你打印出来的数字高多了。</p>
</div>
<p><br>1.我已经说了任何J2EE服务器就可以自定义JVM参数,只要设定最小启动内存,就可以让你“观察”到更小的启动内存消耗,这里“观察”打引号后面一并说。</p>
<p> </p>
<p>2.这里的讨论本来就是岔出去的,是你老拿JBoss来举例论证J2EE服务器的问题,我只不过指出是你使用JBoss的配置和JVM的参数设置问题。</p>
<p> </p>
<p>3.JVM有server版呢?你给个server版的JVM下载链接给我看看?</p>
<p> </p>
<p>我都说的很清楚了,你就不能仔细想想么?好比BT或者电驴下载,为了避免磁盘碎片,会预分配磁盘空间的,但是随着下载软件不断下载内容,磁盘剩余空间是不会有任何变化的。</p>
<p> </p>
<p>你从任务管理器看到的,就好比我上面举的磁盘分配的例子,当你JVM参数配置成500MB-500MB的时候,你从任务管理器确实看到占用500MB内存,并不代表,对象真的占用了500MB啊,只不过防止内存碎片而已。如果是你认为的一上来就吃完500MB内存,那再新建对象岂不是要OutOfMemory了?这500MB内存,JVM就不回收对象了?那段代码就是可以让你观察,随着时间的推移和垃圾回收,剩余内存会不断的变化,而且分代垃圾回收策略的参数微调,会影响这个剩余内存随时间变化的曲线图的形状。</p>
<p> </p>
<p>搞笑啊,你要测试,就麻烦先自己改一下内存参数再去任务管理器看看内存吃多少。</p>
<p> </p>
<p>真要像模像样的测试,就用测试软件把负载和并发搞到一定级别再测试,否则你的话的不出任何结论。</p>
<p> </p>
<p>哦,一个连接的时候观察任务管理器占用500MB内存,就能得出任何结论了么?如果100个并发还是500MB内存呢?麻烦先设定好JVM参数再测,行不行?</p>
206 楼 yipsilon 2009-12-10  
<div class="quote_title">icewubin 写道</div>
<div class="quote_div">
<div class="quote_title"><span style="font-weight: normal;">你说的我又不是不知道,既然你是搞java的,有时间自己写一个测试的验证一下,就知道了,多说无益,理论上的东西谁不知道。</span></div>
<p> </p>
<p>请自己测试NIO的实际效果,低负载下你测不出什么差距的。</p>
<p> </p>
<p>还有,我说的NIO不仅仅值网络IO,还有磁盘IO,也不仅仅包括Linux。</p>
</div>
<p>NIO和IO的网络性能比较不用我论证吧,好多文章都在做这样的比较,随便google一下就可以了。</p>
<p> </p>
<p>至于磁盘IO的话,那它就更不如NIO了。网上也是有很多文章在讨论着事情。</p>
205 楼 icewubin 2009-12-10  
<div class="quote_title">yipsilon 写道</div>
<div class="quote_div">
<p> </p>
<div class="quote_title">icewubin 写道</div>
<div class="quote_div">1.你不要把过去的引用擅自去掉,你老毛病又犯了,我找回了部分引用列表。我说的仅仅是非高并发而已,如果是并发不高的情况下,IO和NIO没有性能区别,如果是大流量的,也没问题啊,新版的Tomcat、Jetty、Glassfish早就都支持NIO了,这个没啥好讨论的,我只是说明NIO的发挥作用的场景而已。 <br><br>2.同上,没啥好讨论的,NIO的J2EE服务器一抓一大把。</div>
<p> 1+2:IBM里有篇文章 <a href="http://www.ibm.com/developerworks/cn/java/j-perf03174/index.html#IDA4ITKG">http://www.ibm.com/developerworks/cn/java/j-perf03174/index.html#IDA4ITKG</a></p>
<p> </p>
<p>你可以看看IO和NIO哪个更占资源,至于性能低下问题,之前说的哪句话犯什么老毛病了? 呵呵。</p>
</div>
<p><br>你说的我又不是不知道,既然你是搞java的,有时间自己写一个测试的验证一下,就知道了,多说无益,理论上的东西谁不知道。</p>
<p> </p>
<p>请自己测试NIO的实际效果,低负载下你测不出什么差距的。</p>
<p> </p>
<p>还有,我说的NIO不仅仅值网络IO,还有磁盘IO,也不仅仅包括Linux。</p>
204 楼 yipsilon 2009-12-10  
<div class="quote_title">icewubin 写道</div>
<div class="quote_div">1.可能由于地域的关系,你感觉PHP程序员便宜,至少我和我认识的人都不觉得,当然我们认为的所谓高级人才定义可能也有差别。 <br><br>2.我们认为的“数学”定义可能也有差别,你说的数学应该是数据结构和算法吧,如果<strong>仅仅</strong>是数学的话,我招数学系毕业的就可以了,学校里为什么还要开设计算机专业? <br><br>3.我认为99.9的大型网站(注意前提是大型网站),无论用什么语言,是必须要有一定深度的数据结构以及算法的水平,否则都不能胜任工作。这也是我认为的高端人才必备的条件之一。 <br><br>例:连一个hash算法和特点都不知道的人,如何指望他能充分利用类库(无论什么语言)写出高质量的代码。</div>
<p> </p>
<p> </p>
<p>1. 既然不同意我说的基础功底和技术经验,那你认为什么是PHP高级人才呢?</p>
<p> </p>
<p>2. 你这就给大家设了一个圈套,还“仅仅”,说话太极端了。因为数学学的好的未必适合做程序员(潜质),但一旦有潜质做程序员了,技术能力提高速度一般都会比数学弱的快很多。</p>
<p> </p>
<p>3. php的开发人员,绝大部分都是做coding的,需要有数据结构和算法水平,但不需要有太深入研究,他们工作的主要目的是快速实现和避免缺陷,在达到这两个目的的前提下,如果某些代码质量的不好,可以通过日后的refectoring进行改造。</p>
203 楼 yipsilon 2009-12-10  
<p> </p>
<div class="quote_title">icewubin 写道</div>
<div class="quote_div">1.啊,你说问题,请事先说清楚啊,“带应用”这个前提你不说清楚如何继续讨论?JBoss本来就是偏向于企业级的,当然也可以用来做互联网项目,但是不是这么测试的。J2EE Server默认会自带一些服务而已,你不做任何精简,当然吃内存,这里你有没有说清楚讨论的前提,不明白你说的应用是J2EE服务器自带应用还是自己写的应用,如果是服务器自带应用,删除即可,如果你自己写的应用,吃内存大,那是你自己应用写的问题。 <br><br>不要光一句“对象、重量级”就敷衍了事,要说测试,我随便搞个Tomcat,可以让它跑应用支持很少的内存,要说相关框架,早就说过了,做互联网绝对不会用什么J2EE重量级的框架,你如果是在搞不清楚什么叫做轻量级J2EE,先查查资料再讨论行不? <br><br>2.你去下个Tomcat,删除webapps目录下所有目录和文件,然后建一个ROOT,里面可以放你的应用,然后适当调一下server.xml,然后你自己看看会吃多少内存。其他轻量级J2EE服务器类似。 <br><br>3.Server版的J2EE服务器和Server版的JVM完全是两个概念,你不要搞混了,而且所谓Server版JVM只不过是调优JVM参数用的,JVM下载不分Server版还是非Server,JVM参数中增加-server而已,而且没人说server版初始吃内存很大,初始内存大小是你自己设的,而不是吃出来的。你自己不设置JVM初始内存占用大小,就一口咬定应用占用了这么多内存,那是你自己的问题。 <br><br>补充:JVM参数即使设置了内存参数最小值和最大值,例如500MB至900MB,并不意味着,一开始真的就占用了500MB内存,例如一开始随着访问人数的增加,内存占用并不会有明显变化,直到超过一定程度,才会慢慢超过500MB,原因就是设置较高的内存最小值往往是为了减少内存碎片的产生而故意的,实际应用占用内存在低负载下,并没有你观察到的那么多,或者说是你观察的方法不对,你可以用如下代码观察实际内存使用量: </div>
<p>1. 就算写个hello world的应用,JBoss那类的服务器也会占很大内存,如果你能写个占用内存少的应用,麻烦贴出来看一下。</p>
<p> </p>
<p>2. tomcat这个例子我不知举了多少遍了,多看看之前的性能比较的例子可以么?我的论点(PHP与Java的应用部署和容器资源占用比较)不是你反驳的那样,结果不知怎么就被你跑题到这里了(各种J2EE容器间比较),哈哈。</p>
<p> </p>
<p>3. 我确实一直说的是Server版JVM,没有搞混,你仔细看看啊。J2EE服务器还分Server版么?这才是笑话啊。看了很多文章,server版确实会比client版JVM消耗更多内存,为了提高某些性能。</p>
<p> </p>
<p>至于你写的那段代码,那只是指定java对象占用的内存量,而不是整个物理内存。比较简单,循环打印出内存占用量,然后打开任务管理器,看看他俩是否一样就知道了。答案肯定是物理内存占用比你打印出来的数字高多了。</p>
202 楼 yipsilon 2009-12-10  
<p>
</p>
<div class="quote_title">icewubin 写道</div>
<div class="quote_div">1.你不要把过去的引用擅自去掉,你老毛病又犯了,我找回了部分引用列表。我说的仅仅是非高并发而已,如果是并发不高的情况下,IO和NIO没有性能区别,如果是大流量的,也没问题啊,新版的Tomcat、Jetty、Glassfish早就都支持NIO了,这个没啥好讨论的,我只是说明NIO的发挥作用的场景而已。 <br><br>2.同上,没啥好讨论的,NIO的J2EE服务器一抓一大把。</div>

<p> 1+2:IBM里有篇文章 <a href="http://www.ibm.com/developerworks/cn/java/j-perf03174/index.html#IDA4ITKG">http://www.ibm.com/developerworks/cn/java/j-perf03174/index.html#IDA4ITKG</a></p>
<p> </p>
<p>你可以看看IO和NIO哪个更占资源,至于性能低下问题,之前说的哪句话犯什么老毛病了? 呵呵。</p>
201 楼 icewubin 2009-12-10  
yipsilon 写道

icewubin 写道
不过我还是想说,中高端的人才绝对是PHP的贵,只不过中高端人才java的比较好找,PHP有钱都有可能招不到。

其实我觉得PHP程序员没有高中低端的分层,市面上所谓高端人才总结下来只是数学比较厉害(数据结构等都跟它有关)加上有一些最佳实践的经验罢了,后者可以整理成文档发放的给开发人员学习,那唯一比较的就是数学功底了。


但99.9%的PHP应用都不需要特别高深的数学知识,因此,只要给员工培训一下经验课程,任何聪明点儿的程序员都能胜任。


如果非要定个高端人才的话,我觉得做PHP模块开发的人比较适合,而不是用PHP代码写应用的。



1.可能由于地域的关系,你感觉PHP程序员便宜,至少我和我认识的人都不觉得,当然我们认为的所谓高级人才定义可能也有差别。

2.我们认为的“数学”定义可能也有差别,你说的数学应该是数据结构和算法吧,如果仅仅是数学的话,我招数学系毕业的就可以了,学校里为什么还要开设计算机专业?

3.我认为99.9的大型网站(注意前提是大型网站),无论用什么语言,是必须要有一定深度的数据结构以及算法的水平,否则都不能胜任工作。这也是我认为的高端人才必备的条件之一。

例:连一个hash算法和特点都不知道的人,如何指望他能充分利用类库(无论什么语言)写出高质量的代码。
200 楼 icewubin 2009-12-10  



yipsilon 写道

icewubin 写道

yipsilon 写道

icewubin 写道

1. 恩?上百兆?举个例子先?我刚才随便找了个典型应用,看了下类库lib目录下总共才35MB,而且有不少是开发辅助、或者是编译优化、或者是JUnit相关,发布出来的war只有12MB都不到。

几百兆?你是从哪里看来的?举个例子先?


2. 这是一方面,另一方面,java类库加载的时候,只会加载用到的class和其相关的class,是按需加载的,不是你认为的一个类库直接加载到内存(执行环境),这方面你应该多了解一下java的ClassLoader机制。




1. 我说的是J2EE容器,比如像最流行的JBoss,4.2版就有147M,商业版的那几个就更不用提了。你说的GlassFish社区版还好些,不过企业版也超百了。打开每个项目页里的下载栏目就可以看到。


2. 类加载这块儿貌似在官方网站上看的吧,说Hotspot Server是会把所有可需要用到的类加载到内存中,然后进行优化的。至于ClassLoader,我觉得自己还算熟悉吧,因为公司兼容OSGi R4.2规范的OSGi运行环境是我主持开发的,blog里提到过。


1.超级汗哪,如果你认为JBoss有147MB,就占用147MB内存的话,那windows7 32bit版本也要5G左右,是不是也要吃5G内存啊,有这么推论的么?

2.不可能的,classloader是按需加载的。

还可以举其他例子:例如jdbc中经典的一句话,Class.forName("xxxx"),xxxx驱动类路径,如果照你说的是全部加载到内存的话,为何还需要有时候自己定制classloader,为何还需要Class.forName方法确保class的加载?

http://www.iteye.com/topic/136427
您到底是做PHP的,还是搞Java的啊,OSGI的也研究?(OSGI不解决分布式计算的问题,只能单机用,没有太大的价值)

1. 你运行不带应用的JBoss,内存估计没有147M,但是运行一下带应用的JBoss服务吧,一般内存都大于147M的,它装载的不仅仅是类数据,还有对象。 J2EE可是重量级的玩意哦。


2. 同1. 不过,貌似server版的好像真是把所有类数据都加载到内存里的,不然怎么能进行关联优化呢?谁有详细一点儿的文章?


如果上段文字成立的话,就用你的例子,server版的JVM会将你用Class.forName载入的那个Driver类所涉及的所有类都预先加载到内存中,然后再内存中进行关联优化,而不是像client版的按需加载调用的类。server版这块儿确实接触很少,只能看看文章的介绍,谁感兴趣就来接接吧,偶可以好好学习一下。


偶主业做Java,专攻OSGi技术,经常做PHP项目,对国外的PHP社区略有了解。OSGi企业版有D-OSGI规范,可以支持分布式调用,但是还没到可以计算那一步,毕竟刚刚开始,不能一口吃个胖子嘛,呵呵。

1.啊,你说问题,请事先说清楚啊,“带应用”这个前提你不说清楚如何继续讨论?JBoss本来就是偏向于企业级的,当然也可以用来做互联网项目,但是不是这么测试的。J2EE Server默认会自带一些服务而已,你不做任何精简,当然吃内存,这里你有没有说清楚讨论的前提,不明白你说的应用是J2EE服务器自带应用还是自己写的应用,如果是服务器自带应用,删除即可,如果你自己写的应用,吃内存大,那是你自己应用写的问题。

不要光一句“对象、重量级”就敷衍了事,要说测试,我随便搞个Tomcat,可以让它跑应用支持很少的内存,要说相关框架,早就说过了,做互联网绝对不会用什么J2EE重量级的框架,你如果是在搞不清楚什么叫做轻量级J2EE,先查查资料再讨论行不?

2.你去下个Tomcat,删除webapps目录下所有目录和文件,然后建一个ROOT,里面可以放你的应用,然后适当调一下server.xml,然后你自己看看会吃多少内存。其他轻量级J2EE服务器类似。

3.Server版的J2EE服务器和Server版的JVM完全是两个概念,你不要搞混了,而且所谓Server版JVM只不过是调优JVM参数用的,JVM下载不分Server版还是非Server,JVM参数中增加-server而已,而且没人说server版初始吃内存很大,初始内存大小是你自己设的,而不是吃出来的。你自己不设置JVM初始内存占用大小,就一口咬定应用占用了这么多内存,那是你自己的问题。

补充:JVM参数即使设置了内存参数最小值和最大值,例如500MB至900MB,并不意味着,一开始真的就占用了500MB内存,例如一开始随着访问人数的增加,内存占用并不会有明显变化,直到超过一定程度,才会慢慢超过500MB,原因就是设置较高的内存最小值往往是为了减少内存碎片的产生而故意的,实际应用占用内存在低负载下,并没有你观察到的那么多,或者说是你观察的方法不对,你可以用如下代码观察实际内存使用量
Runtime rt = Runtime.getRuntime();
System.out.println(rt.totalMemory() - rt.freeMemory());
199 楼 icewubin 2009-12-10  
yipsilon 写道

忍不住了,再回一贴...

icewubin 写道
yipsilon 写道


icewubin 写道
3. 不明白你说的“弊端”指什么?如果是多线程模型的话,java早期版本就是很强的,相比其他语言(erlang这种不算),1.5新加入的包只是进一步增强而已吧,不代表以前的java多线程编程就很弱,如果说是网络IO模型的话,之前已经详细分析过了,牵涉到Linux的epoll模型的发布,c版的webserver先用上了,JVM跟进的稍晚而已。

3. 新的LINUX版JVM的NIO就是实现的EPOLL,但如果你因为某些原因不用NIO呢,根本享受不了这优势,那劣势就多了,例如性能低下、占用资源大等。

拜托不要老是动不动就冒出句“例如性能低下、占用资源大等”,这个没有关系的。

NIO是非阻塞IO模型,专用于高并发下不阻塞而已。

如果不是高并发,NIO和以前的IO相比,性能是一模一样的,占用资源也是基本一样的,网络IO在Linux下就是select模型而已。

这个我用两个问题就可以解答“性能低下”和“占用资源大”这两点:


1. 提高并发数算不算是性能提高呢?


2. 假设在相同高并发下,NIO没阻塞而IO都阻塞了,是不是后者还得加台服务器来分流一下呢?

1.你不要把过去的引用擅自去掉,你老毛病又犯了,我找回了部分引用列表。我说的仅仅是非高并发而已,如果是并发不高的情况下,IO和NIO没有性能区别,如果是大流量的,也没问题啊,新版的Tomcat、Jetty、Glassfish早就都支持NIO了,这个没啥好讨论的,我只是说明NIO的发挥作用的场景而已。

2.同上,没啥好讨论的,NIO的J2EE服务器一抓一大把。
198 楼 yipsilon 2009-12-10  
<p>忍不住了,再回一贴...</p>
<div class="quote_title">icewubin 写道</div>
<div class="quote_div">拜托不要老是动不动就冒出句“例如性能低下、占用资源大等”,这个没有关系的。<br><br>NIO是非阻塞IO模型,专用于高并发下不阻塞而已。<br><br>如果不是高并发,NIO和以前的IO相比,性能是一模一样的,占用资源也是基本一样的,网络IO在Linux下就是select模型而已。</div>
<p> 这个我用两个问题就可以解答“性能低下”和“占用资源大”这两点:</p>
<p> </p>
<p>1. 提高并发数算不算是性能提高呢? </p>
<p> </p>
<p>2. 假设在相同高并发下,NIO没阻塞而IO都阻塞了,是不是后者还得加台服务器来分流一下呢? </p>
<div class="quote_title">icewubin 写道</div>
<div class="quote_div">1.超级汗哪,如果你认为JBoss有147MB,就占用147MB内存的话,那windows7 32bit版本也要5G左右,是不是也要吃5G内存啊,有这么推论的么?<br><br>2.不可能的,classloader是按需加载的。<br><br>还可以举其他例子:例如jdbc中经典的一句话,Class.forName("xxxx"),xxxx驱动类路径,如果照你说的是全部加载到内存的话,为何还需要有时候自己定制classloader,为何还需要Class.forName方法确保class的加载?<br><br>http://www.iteye.com/topic/136427<br>您到底是做PHP的,还是搞Java的啊,OSGI的也研究?(OSGI不解决分布式计算的问题,只能单机用,没有太大的价值)</div>
<p>1. 你运行不带应用的JBoss,内存估计没有147M,但是运行一下带应用的JBoss服务吧,一般内存都大于147M的,它装载的不仅仅是类数据,还有对象。 J2EE可是重量级的玩意哦。</p>
<p> </p>
<p>2. 同1. 不过,貌似server版的好像真是把所有类数据都加载到内存里的,不然怎么能进行关联优化呢?谁有详细一点儿的文章?</p>
<p> </p>
<p>如果上段文字成立的话,就用你的例子,server版的JVM会将你用Class.forName载入的那个Driver类所涉及的所有类都预先加载到内存中,然后再内存中进行关联优化,而不是像client版的按需加载调用的类。server版这块儿确实接触很少,只能看看文章的介绍,谁感兴趣就来接接吧,偶可以好好学习一下。</p>
<p> </p>
<p>偶主业做Java,专攻OSGi技术,经常做PHP项目,对国外的PHP社区略有了解。OSGi企业版有D-OSGI规范,可以支持分布式调用,但是还没到可以计算那一步,毕竟刚刚开始,不能一口吃个胖子嘛,呵呵。</p>
<p>
</p>
<div class="quote_title">icewubin 写道</div>
<div class="quote_div">不过我还是想说,中高端的人才绝对是PHP的贵,只不过中高端人才java的比较好找,PHP有钱都有可能招不到。 <br>
</div>

<p>其实我觉得PHP程序员没有高中低端的分层,市面上所谓高端人才总结下来只是数学比较厉害(数据结构等都跟它有关)加上有一些最佳实践的经验罢了,后者可以整理成文档发放的给开发人员学习,那唯一比较的就是数学功底了。</p>
<p> </p>
<p>但99.9%的PHP应用都不需要特别高深的数学知识,因此,只要给员工培训一下经验课程,任何聪明点儿的程序员都能胜任。</p>
<p> </p>
<p>如果非要定个高端人才的话,我觉得做PHP模块开发的人比较适合,而不是用PHP代码写应用的。</p>
<div class="quote_title">ry.china 写道</div>
<div class="quote_div">老兄你怎么个测试法的可以说明一下吗</div>
<p>
 这个我得道个歉,测试表明Ruby与PHP的性能差别很小,可能是apache可以以DSO的方式是使用PHP的缘故吧。</p>
<p> </p>
<p>测试环境:CentOS 5.3 MINIMUM -&gt; Apache 2.2 + PHP 5.2 / Apache 2.2 + <span style="font-family: arial, sans-serif; font-size: small; line-height: 20px;">Mongrel, 64MB内存, 100并发</span></p>

相关推荐

    秒盾代码 PHP5秒盾代码_5秒安全检查源码.zip

    隔一二天不能访问,网站的排名收录会掉的很厉害而且影响以后 正因为这样,出现了很多网络黑客专门以攻击他人网站谋生 今天就给大家分享一个能有效防止一下小 CC. 用过百度云加速服务的网站都知道,在第一次打开后...

    开源php搜索引擎-蜘蛛程序

    4. **索引建立**:将提取的关键词和对应的URL存储到MySQL数据库中,形成倒排索引,便于快速查找。 5. **查询处理**:当用户输入搜索词时,搜索引擎会根据这些词在索引中的位置返回相关网页。 在实际应用中,为了...

    php-poo:练习一些遵循SOLID原则PHP POO

    7. **SOLID原则的实际应用**:项目中可能会有各种示例,如使用接口来实现开闭原则,通过策略模式应用SRP,利用抽象类或接口实现LSP,以及如何在设计中避免违反ISP和DIP。 8. **面向对象设计模式**:SOLID原则通常与...

    php之75道经典逻辑思考题

    3. 将5升水壶中的水倒掉,然后将6升水壶中剩下的1升水倒入5升水壶中; 4. 再次将6升水壶装满水; 5. 用6升水壶中的水继续向5升水壶中倒水,直至5升水壶满,此时6升水壶中会剩下恰好3升水。 通过这种方式,我们可以...

    PHP读取文件内容后清空文件示例代码

    如果文件不存在,`fopen`会返回false。 接着,为了保证文件内容读取和清空操作的原子性,我们需要对文件加锁。在PHP中,可以使用`flock`函数来加锁,该函数同样需要文件句柄作为参数,并指明要加的锁类型。在示例...

    php 猴子摘桃的算法

    问题描述了一只猴子在连续十天内吃桃子的过程,每天吃掉剩下桃子的一半再加一个,到第十天时仅剩一个桃子。我们需要通过编程计算出猴子最初摘了多少个桃子。 解决这个问题的思路是从第十天开始往回推算,每次根据...

    Sphider-plus 2.2

    同时,它可能会过滤掉广告、重复内容和非正文部分。 4. **关键词提取与索引**:Sphider-plus 会分析网页内容,识别关键词,并建立倒排索引,这是一种快速查找文档中包含特定词的高效方法。索引过程可能包括词干提取...

    ecshop中如何添加限时抢购功能可以看到一个倒计时

    要实现ecshop中的限时抢购功能并展示倒计时,我们需要对ecshop系统的模板、后台管理文件以及数据库进行一些修改和添加相应的代码,以实现抢购倒计时的效果。以下是详细的实现步骤: 1. 修改商品详情模板文件,以便...

    代码解耦之道_黄朝晖_PHPCON2019.pdf

    里氏替换原则(Liskov Substitution Principle):子类型必须能够替换掉它们的父类型。 5. 开闭原则(Open/Closed Principle):软件实体应当对扩展开放,对修改关闭。 6. 最少知识原则(Least Knowledge ...

    grub4dos-V0.4.6a-2017-02-04更新

    --timeout=[x]=[y]=[color] 倒计时位置、颜色。单位:列,行,24位色彩。 2015-05-14(yaya) 改进 NTFS 文件系统: 对于驻留属性文件(小文件),可以写,也可用 blocklist 显示信息。 对于非驻留属性列表,...

    TU-training

    【标题】"TU-training" 指的可能是一个关于软件开发的培训项目,重点是讲解SOLID原则和Test-Driven ...通过参与这个项目,学员不仅会学习到理论知识,还能获得实际操作的经验,从而提高其作为专业PHP开发者的技能。

    JavaScript应用177例

    5.3.htm 倒计时效果 5.4.htm 模拟时钟 5.5.htm 显示农历日期 5.6.htm 温度计样式时钟 5.7.htm 位置固定的时钟 第6章(\cha06) 6.1.htm HTML事件绑定 6.2....

    就要来娱乐论坛动网7.1 SP1 1114修改版

    我不想就这么放弃掉了,不然心血白白浪费,发布完了,过几天就改PHP了,这个可以算是终结版吧,但如果大家有问题,只要我能帮忙的我一定尽力,希望大家能支持!管理员帐号:ID: admin PASSWORD:admin888音乐后台帐号...

    23种 设计模式---面向对象的基本原则

    3. 里氏替换原则(Liskov Substitution Principle, LSP):子类型必须能够替换掉它们的基类型。这保证了继承不会破坏原有的程序行为。 4. 接口隔离原则(Interface Segregation Principle, ISP):不应该强迫客户端...

    gdkp

    在GDKP中,团队成员通过击杀游戏内的高级首领获得金币,这些金币随后被用于竞拍首领掉落的稀有物品。这种方式旨在优化团队资源分配,提高玩家参与度和游戏体验。 在HTML方面,虽然GDKP本身与HTML(超文本标记语言)...

    Excel百宝箱8.0

    【禁止重复值】:可以指定某列不允许重复,指定后该列输入重复值时会自动提示 【标示重复值】:将重复出现的数据用不同颜色分别标示出来,不同重复值用不同颜色 【删除空白单元格所在行】:输入1则删除空白行(整行...

Global site tag (gtag.js) - Google Analytics