`
yipsilon
  • 浏览: 244782 次
  • 性别: 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了,它的学习门槛不低啊,而且运行环境配置起来也比较复杂,大部分常用类库也都是外置的)

分享到:
评论
137 楼 yipsilon 2009-11-30  
icewubin 写道

我举的ActiveMQ,都不是改进和简单的bug问题了,而是程序稳定性、可靠度的问题,这不是简单改进就能解决的。

另:哪有那么多的开源社区有厂商开发人员介入,apache基金会背后厂商稍微多一点,其他社区中的那么多开源项目,背后没那么多的厂商的。

很多开源项目都有其商业产品的,这样的产品开源的都是不完善的,他们大部分的目的就是让你用开源的,适应之后发现有很多问题,然后引导你买商业版的。这种营销方式很常见。

这个建议你查查国外的邮件列表,大部分主流开源项目都能看到商业厂商的身影。
136 楼 yipsilon 2009-11-30  
icewubin 写道

1.都说了很多次了,很多逻辑和J2EE API没有什么直接关系。

2.还是正面说一下吧,JSP实际运行时是先编译成servlet,所以就最简单的一下servlet的实现原理吧,很简单,往客户端不断算输出文本而已,这能有什么复杂和瓶颈的?

你可能想当然的认为某些java高性能的东西跑在J2EE上会降低性能,这是不可能的事。

看这个测评吧:
PHP比JSP,.net性能低下很多

而且这个评测的作者也是个java初学者,为什么是初学者,有些地方不是测试的问题,是他自己水平不行。

例如“字符串连接运算”这个测试中,循环体中不能使用“+=”,他应该使用StringBuffer或者StringBuilder的append方法,测试结果一定是比PHP快很多的。

数据库连接测试也是有点问题,连接池和PHP的永久连接的性能差异,是要通过高并发来测的,而不是单纯的增加循环次数。

不过即使是初学者,有几个测试也能说明一些问题了。


1. 哎,那你就用JSP写个在页面中打印出hello world来测试吧,这样就跟其他无关了。而基于网站应用的大部分技术,Java能实现出来的,PHP也可以变相实现出来,只是有时候实现复杂度比较高罢了。

2. 如果在硬件资源充足的情况下,跑JSP/Servlet什么的都没有问题,而Java对硬件资源要求的起点比较高,这也是我一直强调的。而最初讨论PHP的时候,压根就没讨论PHP执行性能怎么好,而是讨论在硬件资源不足的情况下,PHP可以支撑起来应用。

就像你发的那个评测,那是在硬件资源充足条件下测试的,而你用我之前发的例子(64M内存服务器那个)测试试试,测试结果完全不同的。

PHP毕竟是解释型的语言,在硬件资源充足的情况下,性能不占优势,而它的优势在于快速开发和部署。说得够明白了吧?麻烦,不要再讨论什么性能问题了,做这样的测试前提条件很多的,前提条件不同的情况下,公说公有理,婆说婆有理,而且如果这前提条件不说明白的话,确实会误导别人的。

就像1中说的,如果OCI不好,可以自己开发个好的呀;如果没有数据库连接池,可以开发连接池模块啊;如果长连接性能不够好,也可以修改PHP源代码优化呀,反正都是开源的,一切都可以手工实现,不是么?就是复杂了点儿而已。
135 楼 yipsilon 2009-11-30  
<div class="quote_title">icewubin 写道</div>
<div class="quote_div">
<br>1.你怎么还在说“一揽子全包”的问题呢?从的语言上来看,你也应该知道IBM有很多子公司和部分,各部门和子公司都是独立结算的,不要把IBM想象成一个大的利益共同体,公司大到他们这个人员规模,这也是不可能的。例如某一个部门做某一个类型的方案,在实施的时候如果要用到websphere或者DB2,是要向websphere和DB2的相关部门花钱买的,因为这牵涉到websphere和DB2的相关部门的独立财务方面的问题,而且购买的价格也没有什么太大的优惠(听起来非常奇怪,实际就是如此)。所以各部门和各子公司都有自己的规划,而不是你说的“分出细节分发给不同的子公司处理”,不可能的事。你的想象力真丰富啊。<br><br>而且有的部门是做智能大厦(通俗点就是布网线的)的,有的子公司是做展会方案的,有的子公司是做对日外包的,有的子公司是做国内银行的,有的专做售前方案的,有的专做数据仓库的,等等等等,都是各管个的。<br><br>3.websphere产品系列中整合了apache里很多子项目,这里的“很多”和IBM所有支持的开源项目比起来,零头都没有,各个子公司和部门有各自的利益,这方面上一段有说明。<br>
</div>
<p>1. 呵呵,独立结算并不意味着独立拿项目的,这个一定要去分开,因为只要是独立法人的公司,都是独立核算的。就像我之前说的开发软件需要配硬件一样,你可以问问IBM的朋友们,一个项目要是不多多少少用IBM的服务器,大部分情况下IBM会干么?呵呵。卖服务器的子公司和开发软件项目的子公司还是独立核算的,但是他们都是打包拿项目的。</p>
<p> </p>
<p>像IBM这样的公司,业务涉及的行业太多了,因此有很多子公司做各自不同的事情是正常的。但你看,为什么IBM不会为每个子公司做单独的广告?比如ISSC做外包业务的广告?而是统一的理念,随需应变啦、智慧地球啦什么的。它在客户看来做的就是整体解决方案,而不是各顾各的。</p>
<p> </p>
<p>3. 基本上IBM产品线所用的大部分开源项目都有IBM的人,而这些人都是总部根据市场环境制定开源政策,然后由各个子公司来执行的,子公司的利益是必需要屈服于整体利益,因为解决方案这个行业,整体利益是最赚钱的。</p>
<p> </p>
134 楼 icewubin 2009-11-30  
yipsilon 写道

icewubin 写道

2.啊?有么?不如晒晒工资(不是我的工资),我之前一家公司,招2-3年java工作经验的,薪水大概是3-5K,这是最近行情。
另:07年的时候,我认识微创的对日外包的部门经理,一个小日本客户要做PHP,他要招2-3年工作经验的PHP,一是很难找,因为一下子需要5个人,二是工资开到6-7K以上了,都未必留得住。
再另:现在java程序员遍地都是,尤其是1-3年工作经验的,除了少数出类拔萃的,大部分工资都被压得很低的,因为人太多了。

4.恩,这一点我也是想深入和你说说的,“有钱之后的事情”,不好意思,又说到我们公司,我们公司就是有钱之后把PHP抛弃掉的,我刚进目前的公司5个月,应聘的时候就问,你们不是以前搞PHP的么?怎么招起做java得了?对方说了不少理由,其中一条就是,招做java的便宜。

2. 你这研究就好比拿一个清华毕业的人跟一个某个职高毕业的人相比一样,同在一家公司做同一个岗位,即使有相同经验,大部分情况都是清华的那个人的待遇高,换句话说,就算清华的人做java,职高的人做php,通常情况下后者的薪水会比前者低。


就现实情况而言,我身边的朋友大部分都是大连理工毕业的,他们有的在外包公司做了3年java月薪有10k了,而这边做PHP的几乎没有大连理工的人(反正我是没招到),都是一般大学和院校的人,月薪给个4k,足以找到3年工作经验的人。


在中国,招人有时候不是看真正技术能力的,学历也很重要,所以比较人的待遇一定要同等学历的,不然数据是不准的。


3. 对呀,你们公司有钱了,可以买高端服务器了,J2EE的劣势可以用硬件资源来补上了。至于招人问题,还是看看你公司开发人员的毕业院校和学历水平吧。


2.我没举其他例子不代表,我不知道,就我知道,像长三角不少二三线城市,java 1-3年经验的,2k-5k是很常见的。外包那是特殊的,不能这么算的,外包行业没有什么太大的上升空间,一时钱多而已,老外一碰金融危机,外包行业就会岌岌可危,现在做外包的人越来越多了,外包开出的工资也不可能像最开始那样高了,而且你也说了,有的人有10K,高工资的个体当然是有的。

PHP程序员由于各种原因,整个市场还不够大,尤其是高端的PHP人才,5年PHP经验的,那得多少工资才留得住啊。

3.我们买的服务器非旦没有高端,反而是越买越便宜,主要原因是同等性能的服务器硬件成本的下降(一直都是这样的)。我说啊,不要以为J2EE需要高端服务器,哪门子的老黄历了。J2EE哪有什么以前那些狗屁文章说的那么多劣势?都是瞎扯的。

反而是数据库在不停的加内存和CPU。java服务器的负载都不怎么高,我们实际观察的效果就是,整个宏观上看,瓶颈更多的出现在其他环节,如数据库,而不是web server,web server本身当然也会有瓶颈出现,但是通常都好解决,像数据库的问题就不好解决,必须设计复杂的各种级别的缓存结构和分布式计算接口,以及其他各种数据优化技巧来综合处理。
133 楼 lightsaber 2009-11-30  
始终没搞清楚lz为何要拿js和php比较。
后面有些人的回帖也在比较前端和后端
两者比较有意义吗?还是有些朋友本身刚入门php?
132 楼 icewubin 2009-11-30  
yipsilon 写道

icewubin 写道
继续汗。。。
你查的是不是Sun GlassFish Enterprise Server?GlassFish有很多版本的行不?

好比Tomcat的内存占用都是可以参数配置的,怎么可能至少1G呢,那个企业版其实就是你说的那些加了N多服务的那种重量级的server了。

要不你来给我个链接吧,我找的是web space版的硬件需求,看名字已经够简化了。呵呵。

我也没找到,我认为和Tomcat类似,都是通过JVM参数来配置的,不存在什么最小的内存要1G的说法,轻量级的应用,只是需要个用NIO的servlet分发器而已,吃不了多少内存,我本机测试跑Tomcat,吃内存就是很小的。
131 楼 icewubin 2009-11-30  
yipsilon 写道

icewubin 写道
2.IBM全面支持Linux的时候,早在2001年之前就开始了,请查查当时Linux在服务器时尚的普及率,先有鸡还是先有蛋不要搞反了。如果没有IBM的支持,现在的Linux的市场占有率反而是要打折扣的。

3.内部员工用什么是为了说明,IBM自己也再用轻量级的开发,甚至于针对客户的需求,使用Tomcat或JBoss部署,当然和本帖无关,是从您说IBM通过java卖硬件引起的。

4.不知道你对目前的竞标过程了解多少?现在即使是以前很愚蠢的政府部门都要开始竞标的,政府或者大型国企会有IT部门或者独立出来的信息公司,这些人都是以前搞技术的跳槽到甲方,都不再是以前的傻子了,傻子的定义包括那些一听到某程序需要好的硬件就买好的硬件了。

像信息公司会有N多的各种大大小小的项目,那些曾经搞技术出身的才不会理会以前IBM的那套呢,市场上又不是没有竞争对手,服务器、虚拟机、DB(OLTP)、OLAP、web server、MQ、咨询服务,这些领域IBM都有竞争对手,除了少数项目,绝大部分项目IBM早就不能像以前那样忽悠客户了,因为竞争对手也是会忽悠客户的啊,例如毕博、埃森哲等。

即使你说的利润高,卖不出还不是一样,不少信息公司就是采购HP、DELL的各种服务器,而不鸟IBM的服务器。

2. 又谈历史了... 当时是linux有了一定的市场份额且有取代商业UNIX的趋势,所以IBM的领导们看到这一点,才去投资的,还是先有市场了才会有IBM投资的。如果linux kernel刚出1.0(1991年)还什么都没有的时候,IBM就投资的话,那算是他厉害了,貌似那时没有一家商业公司支持它。还有一点,IBM最开始是维护kernel的,时间是在1999年2.2.x版本的时候,想必,那个时候国内做IT的人都已经知道什么是linux了,我还隐隐约约记得当时redhat linux那红色的包装盒。


3. 难道他们的项目不用IBM的服务器?多多少少都会有吧,这目标已经达成了呀。


4. 你看看像IBM这样公司的标书就知道了,全都用的是自己的硬件,软件可以是用别人的或者外包给别人。但如果你采购别人的服务器了,那肯定99%的几率不是选IBM做解决方案提供商。这很正常。


拿IBM举例是因为他有典型性,任何包含硬件产品的解决方案公司都有这个问题,像CISCO等。而像埃森哲等这类公司,他们和硬件厂商有密切关系,因此可以拿到几乎成本的价格。他们就不卖硬件了?那是不可能的,他们也是靠多种渠道赚钱的。

2.当然得谈历史,大厂商对产业的推动是很重要的,如果微软不发展.net技术,专心的继续优化和进化asp的话,asp也不会逐渐退出舞台,对不对,就像java和php,随着版本的提升,目前的版本和各自早期版本PHP 3.0和java 1.2都已经有很大的差异了(java相对来说差异最小,jdk 1.2的代码在最新的JDK6上也能跑,而且不少IO的API自动获得高性能的好处)。

3.这个我前面说过了,各自独立核算,你所谓的“目标”(购买IBM服务器的目标)是不存在的,真的买了IBM的服务器,对于做方案的部门来说,基本没有什么好处。

4.IBM的标书很多种的,超过1000万的或者规模达到一定程度的超大型项目是这样的,但是更多的中小项目的IBM的标书你都没见过吧。我再来说一个IBM典型的做某一个项目的例子,他们做总包,然后把各个方面,软件、硬件数据仓库全部分包出去,自己啥都不干。(客户还不清楚,这种项目做的,我的评价是这部门可以算是咨询部门了,真会省精力啊)

5.看样子你对硬件代理不是很了解,我也不是非常的了解,但是知道一点,不是你想的那样的,国内的硬件想要便宜,某些代理商更容易拿到便宜的价格,而不是靠合作伙伴关系。
130 楼 icewubin 2009-11-30  
yipsilon 写道

如果要编译执行的话,加上Zend那一套东西,PHP的执行效率还是很高的。

问一句,Zend Performance Suite 企业版是不是要收费的?
非企业版,只能加速,不能缓冲,功能是有限制的吧。

如果说到优化的话,JVM还有收费版本的JRocket呢,某些情况下性能提升也是1倍左右。
129 楼 icewubin 2009-11-30  
yipsilon 写道

icewubin 写道
额的神啊,汗。。。。
JIT知道么?

JIT是好东西,但我没有进行深入地研究,貌似这东西是把机器码缓存到内存中而不用重新解释了,那如果再使用服务器版的JVM,那内存要求岂不要大涨?

使用这个技术,在内存足以满足需求的情况下非常好用,但是如果碰到硬件资源限制了,内存过量会使用虚拟内存的,那性能估计会很差,就像我拿64M内存的服务器比较一样,一个webapp,比如说用struts开发的,加上一些常用的第三方类库,war包估计也有十几兆或者几十兆了,全都加到内存中效果可想而知。

不过可以肯定,你的回答是正确的,在内存满足要求的情况下,此技术绝对可行。

1.不会大涨的,JIT技术应用在JVM反而是不会增加内存的使用量的,因为JVM本来就是都加载到内存中,进行统一的内存管理(包括垃圾回收)的。

2.即使真的占内存,也不会大涨,原因如下:JVM中吃内存最主要的是对象,也就是类的实例,例如一个User类,随着你创建100个用户类到创建1000个用户类,内存使用量会逐渐上升,但是对于user类本身的运行代码,就是再copy一份,占用内存也是很小的,因为无论user类的实例有几个,user类本身的代码只有1份或2份,所以绝对不会内存大涨的。

不过其他语言的JIT就不好说了,因为场景不一样,例如chrome的JS引擎,也用了JIT优化技术,但是因为场景是页面每大概一个,就有一个小的微环境,就会构建一套JIT环境或者是一颗优化树,页面打开越多,内存占用也越多。
128 楼 icewubin 2009-11-30  
yipsilon 写道

icewubin 写道
你说的字面上没错,但是有其他问题:
1.如果碰到要紧的问题,社区能第一时间解决么?不是所有的互联网网站,都能容忍某些问题或者bug由于一些社区的原因就一直等待社区的。

2.强大不等于及时、可靠,随着互联网公司内部运营的越来越正规,不可能一句空话“国外的主流社区提供的技术支持能力非常强大”就能让高层任何某个技术方案的。

3.我还是举个实际点的例子,例如开源的ActiveMQ,单机压力测试都是没问题的,实际上线,压力一大(千万级以后),就是很不稳定,丢消息,这情况连问题描述都很困难,更不要说错误重现报bug了。我承认某些社区的技术能力是很强大,但是靠谱的、及时的并不是特别的多。

1. 这也是为什么很多开源项目都有商业厂商的开发人员原因之一,一旦出现紧急问题,这帮人就有用了。2和3都可以用1来解释,如果内部的人参与MQ的开发了,那哪里有弱点会比外人清楚许多,可以进行商业化的改进,甚至可以做出个商业版本什么的。

我举的ActiveMQ,都不是改进和简单的bug问题了,而是程序稳定性、可靠度的问题,这不是简单改进就能解决的。

另:哪有那么多的开源社区有厂商开发人员介入,apache基金会背后厂商稍微多一点,其他社区中的那么多开源项目,背后没那么多的厂商的。
127 楼 icewubin 2009-11-30  
yipsilon 写道

icewubin 写道
这怎么会没必要讨论?

我说一下必要性吧,java有偏向于企业级的技术,也有偏向于互联网的技术,数量上是前者偏多一点,但是你老举那些确实很占资源的server做什么呢?例如websphere?

因为做互联网的server都是很轻量级的(这个轻量就是相对于websphere这种重量级来说的),除了你听到过的Tomcat、收费的resin,还有jetty、glassfish等。

“目前java的绝大部分web应用都是建立在j2ee上的吧”,这算什么话,轻量级的开发模式下,j2ee这一层就是非常薄的,绝大部分逻辑和J2EE API一点关系都没有的。

我举个例子:我们在做单元测试的时候,不需要启动任何webserver的,直接用junit就可以测试完整的service层的业务逻辑,web层的代码是非常少的。

更直接一点,就是拿JSP/Servlet引擎(后称JSE)来比较好了,因为JSE就是互联网访问的入口,也是承载互联网访问压力的点。貌似之前的帖子一直就是用这个做比较的。

1.都说了很多次了,很多逻辑和J2EE API没有什么直接关系。

2.还是正面说一下吧,JSP实际运行时是先编译成servlet,所以就最简单的一下servlet的实现原理吧,很简单,往客户端不断算输出文本而已,这能有什么复杂和瓶颈的?

你可能想当然的认为某些java高性能的东西跑在J2EE上会降低性能,这是不可能的事。

看这个测评吧:
PHP比JSP,.net性能低下很多

而且这个评测的作者也是个java初学者,为什么是初学者,有些地方不是测试的问题,是他自己水平不行。

例如“字符串连接运算”这个测试中,循环体中不能使用“+=”,他应该使用StringBuffer或者StringBuilder的append方法,测试结果一定是比PHP快很多的。

数据库连接测试也是有点问题,连接池和PHP的永久连接的性能差异,是要通过高并发来测的,而不是单纯的增加循环次数。

不过即使是初学者,有几个测试也能说明一些问题了。
126 楼 icewubin 2009-11-30  
yipsilon 写道


icewubin 写道
1.因为我不高兴把我IBM的N个同学的例子一个一个举出来,那就再举个例子吧。这N个同学中,有一个人很特殊(什么部门或子公司我背不出,下次遇到他问他一下),有一次遇到他,问他忙什么,他说机密,过了一年打牌又问了下他,机密项目结束了么?他说结束了。我问可以告诉我什么项目,还要保密,现在可以公开了么?他说是一个apache上的一个开源项目。。。

前因后果我记不全了,大致是说,名义上这个apache上的开源项目和IBM没有什么关系,但是IBM做服务的时候,能够提供该技术的配套的、集成的技术方案和咨询服务。

3.是你先钻牛角尖吧,举了个websphere整合apache,然后和我解释什么“IBM的投资目的、IBM是卖方案的”,为了证明你说的“IBM要利用java买更多的硬件”。再次拜托你回复的时候请分别引用,不要合在一起回复。

好人啊,帮我编号了!


1. 是滴,做服务(或方案)简单的说一揽子全包,然后分出细节分发给不同的子公司处理。IBM的人参加过很多开源项目,基本上所有的项目都会纳入到它各种规模的方案中,之所以没用,我认为很有可能是项目还不成熟,例如处在孵化器中,一旦项目成熟且有客户需求了,不用岂不可惜?!


3. 老兄啊,我没有说“apache”是httpd server还是一个具体的项目,那是泛指apache的项目,websphere产品系列中整合了apache里很多子项目,举个其他的例子就是Ant这个项目。其实我说的这些话之前也总结过类似的话了,归根到底就是一切为了利润!

关于回复引用的结构,我启个头吧,最好是这样的,把每个引用都记下来,便于追溯历史,而且议题一旦多了后,不要挤在一起,一篇东西太长,继续回复起来都不方便。

1.你怎么还在说“一揽子全包”的问题呢?从的语言上来看,你也应该知道IBM有很多子公司和部分,各部门和子公司都是独立结算的,不要把IBM想象成一个大的利益共同体,公司大到他们这个人员规模,这也是不可能的。例如某一个部门做某一个类型的方案,在实施的时候如果要用到websphere或者DB2,是要向websphere和DB2的相关部门花钱买的,因为这牵涉到websphere和DB2的相关部门的独立财务方面的问题,而且购买的价格也没有什么太大的优惠(听起来非常奇怪,实际就是如此)。所以各部门和各子公司都有自己的规划,而不是你说的“分出细节分发给不同的子公司处理”,不可能的事。你的想象力真丰富啊。

而且有的部门是做智能大厦(通俗点就是布网线的)的,有的子公司是做展会方案的,有的子公司是做对日外包的,有的子公司是做国内银行的,有的专做售前方案的,有的专做数据仓库的,等等等等,都是各管个的。

3.websphere产品系列中整合了apache里很多子项目,这里的“很多”和IBM所有支持的开源项目比起来,零头都没有,各个子公司和部门有各自的利益,这方面上一段有说明。
125 楼 yipsilon 2009-11-30  
<p>
</p>
<div class="quote_title">icewubin 写道</div>
<div class="quote_div">1.因为我不高兴把我IBM的N个同学的例子一个一个举出来,那就再举个例子吧。这N个同学中,有一个人很特殊(什么部门或子公司我背不出,下次遇到他问他一下),有一次遇到他,问他忙什么,他说机密,过了一年打牌又问了下他,机密项目结束了么?他说结束了。我问可以告诉我什么项目,还要保密,现在可以公开了么?他说是一个apache上的一个开源项目。。。 <br><br>前因后果我记不全了,大致是说,名义上这个apache上的开源项目和IBM没有什么关系,但是IBM做服务的时候,能够提供该技术的配套的、集成的技术方案和咨询服务。 <br><br>2.教育软件是赚钱啊,你又偏题了吧,我的意思是指IBM支持的软件又不仅仅是J2EE的。 <br><br>3.是你先钻牛角尖吧,举了个websphere整合apache,然后和我解释什么“IBM的投资目的、IBM是卖方案的”,为了证明你说的“IBM要利用java买更多的硬件”。再次拜托你回复的时候请分别引用,不要合在一起回复。 </div>

<p> 好人啊,帮我编号了!</p>
<p> </p>
<p>1. 是滴,做服务(或方案)简单的说一揽子全包,然后分出细节分发给不同的子公司处理。IBM的人参加过很多开源项目,基本上所有的项目都会纳入到它各种规模的方案中,之所以没用,我认为很有可能是项目还不成熟,例如处在孵化器中,一旦项目成熟且有客户需求了,不用岂不可惜?!</p>
<p> </p>
<p>2. 我举这个例子,是当时你反驳我时提出的论点“IBM还是会支持与它自己无关的项目”时说的。确实跟本贴无关,就此打住吧。</p>
<p> </p>
<p>3. 老兄啊,我没有说“apache”是httpd server还是一个具体的项目,那是泛指apache的项目,websphere产品系列中整合了apache里很多子项目,举个其他的例子就是Ant这个项目。其实我说的这些话之前也总结过类似的话了,归根到底就是一切为了利润!</p>
<p>
</p>
<div class="quote_title">icewubin 写道</div>
<div class="quote_div">这怎么会没必要讨论? <br><br> 我说一下必要性吧,java有偏向于企业级的技术,也有偏向于互联网的技术,数量上是前者偏多一点,但是你老举那些确实很占资源的server做什么呢?例如websphere? <br><br>因为做互联网的server都是很轻量级的(这个轻量就是相对于websphere这种重量级来说的),除了你听到过的Tomcat、收费的resin,还有jetty、glassfish等。 <br><br>“目前java的绝大部分web应用都是建立在j2ee上的吧”,这算什么话,轻量级的开发模式下,j2ee这一层就是非常薄的,绝大部分逻辑和J2EE API一点关系都没有的。 <br><br>我举个例子:我们在做单元测试的时候,不需要启动任何webserver的,直接用junit就可以测试完整的service层的业务逻辑,web层的代码是非常少的。 <br>
</div>

<p> 更直接一点,就是拿JSP/Servlet引擎(后称JSE)来比较好了,因为JSE就是互联网访问的入口,也是承载互联网访问压力的点。貌似之前的帖子一直就是用这个做比较的。</p>
<p>
</p>
<div class="quote_title">icewubin 写道</div>
<div class="quote_div">你说的字面上没错,但是有其他问题: <br>1.如果碰到要紧的问题,社区能第一时间解决么?不是所有的互联网网站,都能容忍某些问题或者bug由于一些社区的原因就一直等待社区的。 <br><br>2.强大不等于及时、可靠,随着互联网公司内部运营的越来越正规,不可能一句空话“国外的主流社区提供的技术支持能力非常强大”就能让高层任何某个技术方案的。 <br><br>3.我还是举个实际点的例子,例如开源的ActiveMQ,单机压力测试都是没问题的,实际上线,压力一大(千万级以后),就是很不稳定,丢消息,这情况连问题描述都很困难,更不要说错误重现报bug了。我承认某些社区的技术能力是很强大,但是靠谱的、及时的并不是特别的多。</div>

<p> 1. 这也是为什么很多开源项目都有商业厂商的开发人员原因之一,一旦出现紧急问题,这帮人就有用了。2和3都可以用1来解释,如果内部的人参与MQ的开发了,那哪里有弱点会比外人清楚许多,可以进行商业化的改进,甚至可以做出个商业版本什么的。</p>
<p>
</p>
<div class="quote_title">icewubin 写道</div>
<div class="quote_div">额的神啊,汗。。。。 <br><br>JIT知道么? <br>
</div>

<p> JIT是好东西,但我没有进行深入地研究,貌似这东西是把机器码缓存到内存中而不用重新解释了,那如果再使用服务器版的JVM,那内存要求岂不要大涨?</p>
<p> </p>
<p>使用这个技术,在内存足以满足需求的情况下非常好用,但是如果碰到硬件资源限制了,内存过量会使用虚拟内存的,那性能估计会很差,就像我拿64M内存的服务器比较一样,一个webapp,比如说用struts开发的,加上一些常用的第三方类库,war包估计也有十几兆或者几十兆了,全都加到内存中效果可想而知。</p>
<p> </p>
<p>不过可以肯定,你的回答是正确的,在内存满足要求的情况下,此技术绝对可行。</p>
<p>
</p>
<div class="quote_title">icewubin 写道</div>
<div class="quote_div">无知者无畏啊,继续汗那。。。 <br><br>JRE只启动一次好不好?不会像PHP那样每次请求都加载一堆东西的。 <br><br>2. 你可以用C(不如用PHP如何)写1加到1,000,000,然后同样用java写,然后运行个100次,以消除程序启动时间的干扰(因为jvm一旦运行以后不会反复重启的),然后你再比比查看一下运行时间就知道了。 <br><br>如果加的数字再大一点,用到long,然后在64位的OS上的64位的JVM,你再跑跑看。 </div>

<p>2. 没有问题,我已经测试过了,用的是jre 1.6.0,在windows下从0到10,000,000累加,另一个VC写的编译成exe,貌似还是差了几毫秒(22/17)。</p>
<p> </p>
<p>3. 我这里没环境啊,不如你写一套测试一下贴出来吧。 </p>
<p> </p>
<p>再加一句,如果要编译执行的话,加上Zend那一套东西,PHP的执行效率还是很高的。</p>
<p>
</p>
<div class="quote_title">icewubin 写道</div>
<div class="quote_div">2.IBM全面支持Linux的时候,早在2001年之前就开始了,请查查当时Linux在服务器时尚的普及率,先有鸡还是先有蛋不要搞反了。如果没有IBM的支持,现在的Linux的市场占有率反而是要打折扣的。 <br><br>3.内部员工用什么是为了说明,IBM自己也再用轻量级的开发,甚至于针对客户的需求,使用Tomcat或JBoss部署,当然和本帖无关,是从您说IBM通过java卖硬件引起的。 <br><br>4.不知道你对目前的竞标过程了解多少?现在即使是以前很愚蠢的政府部门都要开始竞标的,政府或者大型国企会有IT部门或者独立出来的信息公司,这些人都是以前搞技术的跳槽到甲方,都不再是以前的傻子了,傻子的定义包括那些一听到某程序需要好的硬件就买好的硬件了。 <br><br>像信息公司会有N多的各种大大小小的项目,那些曾经搞技术出身的才不会理会以前IBM的那套呢,市场上又不是没有竞争对手,服务器、虚拟机、DB(OLTP)、OLAP、web server、MQ、咨询服务,这些领域IBM都有竞争对手,除了少数项目,绝大部分项目IBM早就不能像以前那样忽悠客户了,因为竞争对手也是会忽悠客户的啊,例如毕博、埃森哲等。 <br><br>即使你说的利润高,卖不出还不是一样,不少信息公司就是采购HP、DELL的各种服务器,而不鸟IBM的服务器。 </div>

<p>2. 又谈历史了... 当时是linux有了一定的市场份额且有取代商业UNIX的趋势,所以IBM的领导们看到这一点,才去投资的,还是先有市场了才会有IBM投资的。如果linux kernel刚出1.0(1991年)还什么都没有的时候,IBM就投资的话,那算是他厉害了,貌似那时没有一家商业公司支持它。还有一点,IBM最开始是维护kernel的,时间是在1999年2.2.x版本的时候,想必,那个时候国内做IT的人都已经知道什么是linux了,我还隐隐约约记得当时redhat linux那红色的包装盒。</p>
<p> </p>
<p>3. 难道他们的项目不用IBM的服务器?多多少少都会有吧,这目标已经达成了呀。</p>
<p> </p>
<p>4. 你看看像IBM这样公司的标书就知道了,全都用的是自己的硬件,软件可以是用别人的或者外包给别人。但如果你采购别人的服务器了,那肯定99%的几率不是选IBM做解决方案提供商。这很正常。</p>
<p> </p>
<p>拿IBM举例是因为他有典型性,任何包含硬件产品的解决方案公司都有这个问题,像CISCO等。而像埃森哲等这类公司,他们和硬件厂商有密切关系,因此可以拿到几乎成本的价格。他们就不卖硬件了?那是不可能的,他们也是靠多种渠道赚钱的。</p>
<p>
</p>
<div class="quote_title">icewubin 写道</div>
<div class="quote_div">继续汗。。。 <br>你查的是不是Sun GlassFish Enterprise Server?GlassFish有很多版本的行不? <br><br>好比Tomcat的内存占用都是可以参数配置的,怎么可能至少1G呢,那个企业版其实就是你说的那些加了N多服务的那种重量级的server了。 </div>

<p> 要不你来给我个链接吧,我找的是web space版的硬件需求,看名字已经够简化了。呵呵。</p>
<p>
</p>
<div class="quote_title">icewubin 写道</div>
<div class="quote_div">回复挤在一起,单个的回复都没有带上以前的引用,很多讨论的来龙去脉找起来麻烦,这是重点。 <br><br>不是看不惯,行不? </div>

<p> 准!下次执行...</p>
<p>
</p>
<div class="quote_title">icewubin 写道</div>
<div class="quote_div">1.带上数据库就相对OK很多了。 <br><br>2.啊?有么?不如晒晒工资(不是我的工资),我之前一家公司,招2-3年java工作经验的,薪水大概是3-5K,这是最近行情。 <br>  另:07年的时候,我认识微创的对日外包的部门经理,一个小日本客户要做PHP,他要招2-3年工作经验的PHP,一是很难找,因为一下子需要5个人,二是工资开到6-7K以上了,都未必留得住。 <br>  再另:现在java程序员遍地都是,尤其是1-3年工作经验的,除了少数出类拔萃的,大部分工资都被压得很低的,因为人太多了。 <br><br>4.恩,这一点我也是想深入和你说说的,“有钱之后的事情”,不好意思,又说到我们公司,我们公司就是有钱之后把PHP抛弃掉的,我刚进目前的公司5个月,应聘的时候就问,你们不是以前搞PHP的么?怎么招起做java得了?对方说了不少理由,其中一条就是,招做java的便宜。</div>

<p>1. 难道带上数据库就能改变测试效果了?晕,我之前的例子白说了啊,看都不看。</p>
<p> </p>
<p>2. 你这研究就好比拿一个清华毕业的人跟一个某个职高毕业的人相比一样,同在一家公司做同一个岗位,即使有相同经验,大部分情况都是清华的那个人的待遇高,换句话说,就算清华的人做java,职高的人做php,通常情况下后者的薪水会比前者低。</p>
<p> </p>
<p>就现实情况而言,我身边的朋友大部分都是大连理工毕业的,他们有的在外包公司做了3年java月薪有10k了,而这边做PHP的几乎没有大连理工的人(反正我是没招到),都是一般大学和院校的人,月薪给个4k,足以找到3年工作经验的人。</p>
<p> </p>
<p>在中国,招人有时候不是看真正技术能力的,学历也很重要,所以比较人的待遇一定要同等学历的,不然数据是不准的。</p>
<p> </p>
<p>3. 对呀,你们公司有钱了,可以买高端服务器了,J2EE的劣势可以用硬件资源来补上了。至于招人问题,还是看看你公司开发人员的毕业院校和学历水平吧。</p>
124 楼 icewubin 2009-11-30  
yipsilon 写道

1. 哎,又说我“总拿这个说事”了,呵呵。你翻翻帖子,看看我有哪句话说PHP只生成页面的事情了?极端得讲就算PHP是页面生成,难道J2EE中的页面生成是非Java技术么?更何况我测试的就是访问压力,你认为生成什么做压力测试好呢?

2. 说实话,其实国外PHP开发人员工资跟Java不差上下,可到了国内... 一个相同大学毕业且有同样技术经验(注意,不是按时长划分的工作经验)的人,做Java薪水高。感觉国内的人瞧不起PHP这门技术啊。

4. 大流量的情况下,就要看网络架构了,一般如果架构设计合理的话,任何语言所搭建的平台都能胜任高负载的应用,不仅仅是PHP,但都有一个共同点,就是:那是有钱之后的事情。呵呵



1.带上数据库就相对OK很多了。

2.啊?有么?不如晒晒工资(不是我的工资),我之前一家公司,招2-3年java工作经验的,薪水大概是3-5K,这是最近行情。
  另:07年的时候,我认识微创的对日外包的部门经理,一个小日本客户要做PHP,他要招2-3年工作经验的PHP,一是很难找,因为一下子需要5个人,二是工资开到6-7K以上了,都未必留得住。
  再另:现在java程序员遍地都是,尤其是1-3年工作经验的,除了少数出类拔萃的,大部分工资都被压得很低的,因为人太多了。

4.恩,这一点我也是想深入和你说说的,“有钱之后的事情”,不好意思,又说到我们公司,我们公司就是有钱之后把PHP抛弃掉的,我刚进目前的公司5个月,应聘的时候就问,你们不是以前搞PHP的么?怎么招起做java得了?对方说了不少理由,其中一条就是,招做java的便宜
123 楼 icewubin 2009-11-30  
yipsilon 写道


4. 我kao,回复你也看不惯啊?有引用,有论点,多好看啊...


回复挤在一起,单个的回复都没有带上以前的引用,很多讨论的来龙去脉找起来麻烦,这是重点。

不是看不惯,行不?
122 楼 icewubin 2009-11-30  
yipsilon 写道

3. 针对红色字,这个我还真不信,就像Windows XP最低运行配置是64M内存一样,倒是能运行起来,但是不卡么?再者说,我在GlassFish网站上看到的运行环境要:


System Memory (RAM)
Solaris, Linux: 1 GB minimum, at least 2 GB recommended
Windows: 2 GB minimum, at least 3 GB recommended
MacOS X: 1 GB minimum, at least 2 GB recommended

标准版最低都要1G了,简化版的难道64M就能跑?难道是你自己优化的?那估计什么可能都有,呵呵。


继续汗。。。
你查的是不是Sun GlassFish Enterprise Server?GlassFish有很多版本的行不?

好比Tomcat的内存占用都是可以参数配置的,怎么可能至少1G呢,那个企业版其实就是你说的那些加了N多服务的那种重量级的server了。
121 楼 icewubin 2009-11-30  
yipsilon 写道
注:原文没有编号(1-5),我编号一下方便表述。
2. IBM绝对会支持LINUX的,因为中小型客户的大部分J2EE程序都是跑在LINUX上的,用AIX系统比较少的。大公司也是要看客户要求的,人家非要用PHP,你还能拒绝不接这单子?现在IT已经不是垄断行业了。


3. 内部员工用什么,跟本贴无关吧?如果非要解释的话,他们用的开源项目一定存在公司不同程度上的支持,无利不起早嘛。

4. 对于转型,你说的对,“因为知道光靠卖硬件是没有前途的”,但也不是“硬件的利润逐渐不如软件”,其实硬件利润跟软件不差上下的,你要知道,同样工作3天,找一堆流水线蓝领加上原料造出一台高端服务器的利润,跟找一帮开发人员开发一套五万行有效代码级别的软件利润,是差不多的,因为后者的分摊成本比前者大得多。如果你是解决方案提供商,你用相同时间开发出一套软件并造出一台高端服务器后,打包成方案卖给客户,那利润就是两倍。但如果你开发出来的软件对硬件要求不高的话,客户很聪明的,未必会买你的高端服务器。


如果你做过系统集成,你会发现高端服务器(像小型机等)成本可以达到一折以下,可想而知利润有多高,试问,你做软件项目,客户的报价你能打几折呢?一个100万的软件项目,你找20个人辛辛苦苦做了半年,算得的利润还不及人家半年卖两台高端服务器的利润高。呵呵。

5. 内容怎么又跑到EJB上了?晕...


2.IBM全面支持Linux的时候,早在2001年之前就开始了,请查查当时Linux在服务器时尚的普及率,先有鸡还是先有蛋不要搞反了。如果没有IBM的支持,现在的Linux的市场占有率反而是要打折扣的。

3.内部员工用什么是为了说明,IBM自己也再用轻量级的开发,甚至于针对客户的需求,使用Tomcat或JBoss部署,当然和本帖无关,是从您说IBM通过java卖硬件引起的。

4.不知道你对目前的竞标过程了解多少?现在即使是以前很愚蠢的政府部门都要开始竞标的,政府或者大型国企会有IT部门或者独立出来的信息公司,这些人都是以前搞技术的跳槽到甲方,都不再是以前的傻子了,傻子的定义包括那些一听到某程序需要好的硬件就买好的硬件了。

像信息公司会有N多的各种大大小小的项目,那些曾经搞技术出身的才不会理会以前IBM的那套呢,市场上又不是没有竞争对手,服务器、虚拟机、DB(OLTP)、OLAP、web server、MQ、咨询服务,这些领域IBM都有竞争对手,除了少数项目,绝大部分项目IBM早就不能像以前那样忽悠客户了,因为竞争对手也是会忽悠客户的啊,例如毕博、埃森哲等。

即使你说的利润高,卖不出还不是一样,不少信息公司就是采购HP、DELL的各种服务器,而不鸟IBM的服务器。


120 楼 icewubin 2009-11-30  
yipsilon 写道

SUN的那个评测比较的是JVM解释字节码与操作系统解释机器码这一层单方面的性能,但JVM在解释出字节码之后还是要调用一下操作系统封装的API,而C编译出来的机器码是不需要做这一步的。实际的执行性能,java类是不如C编译的本地程序,这还不加启动JVM的时间。不信,你用C写个hello world,再用java写个hello world,查看一下运行时间就知道了。

无知者无畏啊,继续汗那。。。

JRE只启动一次好不好?不会像PHP那样每次请求都加载一堆东西的。

你可以用C(不如用PHP如何)写1加到1,000,000,然后同样用java写,然后运行个100次,以消除程序启动时间的干扰(因为jvm一旦运行以后不会反复重启的),然后你再比比查看一下运行时间就知道了。

如果加的数字再大一点,用到long,然后在64位的OS上的64位的JVM,你再跑跑看。

119 楼 icewubin 2009-11-30  
yipsilon 写道

JVM还是要先解释字节码后才会根据内容调用一些系统级别的类库吧?这多了一层“解释”知道么?怎么可能跟C编译出来机器码的执行效率比较?!

额的神啊,汗。。。。

JIT知道么?

引用
JIT是just in time,即时编译技术。使用该技术,能够加速java程序的执行速度。下面,就对该技术做个简单的讲解。

首先,我们大家都知道,通常javac将程序源代码编译,转换成java字节码,JVM通过解释字节码将其翻译成对应的机器指令,逐条读入,逐条解释翻译。很显然,经过解释执行,其执行速度必然会比可执行的二进制字节码程序慢。为了提高执行速度,引入了JIT技术。

在运行时JIT会把翻译过的机器码保存起来,已备下次使用,因此从理论上来说,采用该JIT技术可以,可以接近以前纯编译技术。

http://acme1921209.iteye.com/blog/59769

现在动态语言普遍使用了JIT。
118 楼 icewubin 2009-11-30  
yipsilon 写道

社区不像国人理解那样架个KB或者BBS回答问题的,如果不回答问题就不是好社区,呵呵。国外的主流社区提供的技术支持能力非常强大,项目开发人员之间互相沟通,把开发代码中所涉及到的问题和疑难通过email或者newsgroup提出来,然后大家一起解决,这是公开场合中看所看不到的。你有心的话,查查国外的邮件列表网站,会发现很多开源项目内部好玩儿的事情。

你说的字面上没错,但是有其他问题:
1.如果碰到要紧的问题,社区能第一时间解决么?不是所有的互联网网站,都能容忍某些问题或者bug由于一些社区的原因就一直等待社区的。

2.强大不等于及时、可靠,随着互联网公司内部运营的越来越正规,不可能一句空话“国外的主流社区提供的技术支持能力非常强大”就能让高层任何某个技术方案的。

3.我还是举个实际点的例子,例如开源的ActiveMQ,单机压力测试都是没问题的,实际上线,压力一大(千万级以后),就是很不稳定,丢消息,这情况连问题描述都很困难,更不要说错误重现报bug了。我承认某些社区的技术能力是很强大,但是靠谱的、及时的并不是特别的多。

相关推荐

    秒盾代码 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