- 浏览: 125808 次
最近访客 更多访客>>
最新评论
-
mellen:
设计 是把现实中的 系统,通过抽象的 方式 进行模拟化,并进行 ...
有了OO、分层、DI、AOP、TDD和Refector,DDD不再是空谈 -
wxq594808632:
rehte 写道lgx522 写道5:这点赞同。虽然庞大是由于 ...
借JavaFX之风,Swing终于熬到了出头之日 -
xjlnjut730:
支持Swing,也支持JavaFx,虽然有点奢求,不过还真是希 ...
借JavaFX之风,Swing终于熬到了出头之日 -
kjj:
罗宾汉 写道
大访问量系统的可扩展性问题主要取决于软件的架构, ...
Spring性能小测,参其它技术 -
murainwood:
回复里有很多的精华。
Spring性能小测,参其它技术
昨天参与了“有感而发:JavaEE和ROR的本质区别,以及对ROR的抱怨”(http://pig345.iteye.com/blog/199384)博文上的口水战,对Quake Wang老兄所说的“Ruby比Java确实性能差很多,但是RoR和Struts + Spring + Hibernate做的网站性能是在同一级别的”产生了兴趣,今天抽空测了一下,发现了一些有趣的事情。
首先声明这些测试并不严格,全是在同一台机器(Core2 1.6,2G内存PC)上跑,DB是同一个MySQL,执行简单的单表读写操作,并发100个thread(此并发情况下各种技术基本都不会出Error),都不做缓存。数值都是取rps,具体的绝对数值没有考究的意义,不过相对一比较倒有些意思。
先用笔者前两三年一度热衷的Appfuse,测下来的结果大概在130左右;
然后直接采用Spring的三个例程,一来简单,二来Rod自制的Sample效率应当是有保证的,结果如下:
采用hibernate的petclinic:200左右;
采用ibatis的jpetstore:400左右;
采用jdbc的imagedb:750左右。
大家应该看出些门道来的吧。所以说Rod老大的确是聪明绝顶,早已预备了三种不同的性能方案,做成sample给大家采用。至于大家最后怎么用是自己的事,怪Spring就不对了,Rod真是高明!
顺便附上其它技术体系的参考值(由高到低)吧:
纯PHP:1000左右;
以快速闻名的FleaPHP:800左右;
JSTL:350左右;
Grails:50左右;
Seam:20左右;
RoR:12左右。
这下大家是不是有些总的概念了。基本规律是越偏向SQL的技术,性能越高;越偏向ORM的技术,性能越低。由此可见OO和关系DB的不匹配,不仅仅是在设计和编码上,在性能上更是个天大的问题。
差距如此之大,就连笔者也不禁怀疑起自己的测试。建议有心的同道们做一下更严格的测试以资验证。
值得一提的是,在引入DB前,JSP还是要快过PHP不少,大概是1900:1400左右,但加上DB后,JSP竟然干不过PHP,身为Java fans实在是有些愤怒。不过很久不写JSP了,但愿精于此道的同道写个更高效的,压过PHP才好。
现代主流DB在此配置下每秒钟大多能吞下500-1000条普通SQL。做为中间层,不管怎么做,还是要配得上才行。
是选择开发效率低一些,但性能高的偏SQL方案,还是选择开发效率高,但性能低的编OO方案,不同的场景有不同的回答。
但愿此文能帮助各位同道在不同的项目上能对性能-开发效率做出最好平衡的正确选择。
小声地问一下,你不分开几个文件导出么?20w分10次,导到temp中10个文件,然后合并输出不可以?
上面我已经说过了,没什么服气不服务的问题,因为哪个快一些,哪个慢一些根本就无关紧要。其实我可以做这样的测试,而且事实上我经常私下做各种性能测试,考察不同框架的性能和伸缩性表现。但是测试不同编程语言不同框架速度快一点还是慢一点,这个根本就是没有意义的事情,而且你所谓的感性认识还是个错误的认识,很可能导致你在将来的技术选型和框架设计上做出错误的决定。
我这里也做一做测试,不管是好是赖,放上来让大家讨论一下。顺便鼓励大家都去做一做,好好考量一下自己系统的性能,至于有没有意义大家自己去判定。
如果照你的说法,这种性能测试是根本没有意义的。是不是说现在凡是可以做B/S的,语言和框架快慢是无所谓的事情,也就是说根本不用去选了。既然性能最后都大同小异了,是不是说开发效率才是唯一的标尺。
如此这般的结论,那就还是选择当前开发效率高的RoR了。
可惜,本人在现实工作中,不论是自己开发还是其它厂商的东西,在存储过程、SQL和ORM之间还是有差距的;而众所周知的Spring和EJB之间,也还是有差距的。
比如让RoR做一下库存盘点,医保结算,代码写起来是够清晰的,可惜那个速度......。换存储过程和SQL看看,还说是没有差距吗?
不要觉着是在找碴。企业应用中,尤其是大家这些年看不上眼,以为是过时的SQL+C/S系统里面,这类复杂的业务逻辑太多了。想要改朝换代,先过性能这一关。
无意义的讨论很容易误导其它人的,既然robbin指出你的测试方式有问题,测试出来的数据没有任何意义。那为什么不询问下有意义的测试方式,最后得到一些有意义的数据呢。我遇到的企业项目的开发中,最后出性能问题基本上都是设计上的失误,很少有因为语言性能导致的。
1。我不明白为什么CPU占100%
2。上面谁说ORM,jdbc,在说什么orm快,jdbc快,我只知道两个要点 一:我知道orm都是在jdbc上的,二,程序都是耗时间的
1、100个thread不停地冲WebServer10分钟,当然是CPU占用率100%了。这种极端测试,主要是看在这种崩溃边缘,谁还能反应正常一些。结果是Spring jdbc和纯JSP、PHP。
2、两点之间直线最短,绕了几个弯弯还想快,问问机器再说。
这种极端测试,大家也不要觉得是撑饱了没事儿干。现实当中就有大量这种平时懒散,高峰时段并发高得吓人的负载。比如大型医院每天上午的9:00-12:00,医保中心的月底结算、物流企业的盘点等等。不搞定这些要求,少不了是要被Oracle DBA数落嘲笑的。那些时候,恨不得榨干机器的最后一滴油。
当初天下闻名的奥运票务事件,如果当初多做做这种极端测试,也许就不至于放出那么不切实际的承诺,贻笑大众了。
我们只是在做web app,所以我们看中的不是谁跑的快,而是用那种语言来做,容易跑的快,这个差别很大的。
终于遇到个知音,这个帖要讨论的就是这个。
扯来扯去都快跑题了,在此重申一下。
至于前面所提到的绝对数值,早已声明是没有考究意义的,就连我自己也不太当回事。
其中也就Spring那部分有点现实意义,毕竟运行条件和配置是完全一样的,对于SQL vs ORM还是有点参考意义。
大家有兴趣可以测测自己的系统,这倒是很有必要的。以免过于追新而陷入性能泥潭。
另外有点有趣的是,别看Spring体系下的数值不高,却相当稳当。也就是说,笔者做这些极端测试时,CPU占用必然是99%-100%。在这种极端情况下,用其它客户端访问几乎不见慢,不知是不是共享实例的好处。至于其它的,数值高是高,压力测试下还是见慢了,怀疑是“虚高”。
由此大大恢复了对Spring的信心。近期在筹划一个区域卫生信息共享的计划。琢磨下来,Spring jdbc方案辅以适量的存储过程应该可以搞得定。
1。我不明白为什么CPU占100%
2。上面谁说ORM,jdbc,在说什么orm快,jdbc快,我只知道两个要点 一:我知道orm都是在jdbc上的,二,程序都是耗时间的
上面我已经说过了,没什么服气不服务的问题,因为哪个快一些,哪个慢一些根本就无关紧要。其实我可以做这样的测试,而且事实上我经常私下做各种性能测试,考察不同框架的性能和伸缩性表现。但是测试不同编程语言不同框架速度快一点还是慢一点,这个根本就是没有意义的事情,而且你所谓的感性认识还是个错误的认识,很可能导致你在将来的技术选型和框架设计上做出错误的决定。
我这里也做一做测试,不管是好是赖,放上来让大家讨论一下。顺便鼓励大家都去做一做,好好考量一下自己系统的性能,至于有没有意义大家自己去判定。
如果照你的说法,这种性能测试是根本没有意义的。是不是说现在凡是可以做B/S的,语言和框架快慢是无所谓的事情,也就是说根本不用去选了。既然性能最后都大同小异了,是不是说开发效率才是唯一的标尺。
如此这般的结论,那就还是选择当前开发效率高的RoR了。
可惜,本人在现实工作中,不论是自己开发还是其它厂商的东西,在存储过程、SQL和ORM之间还是有差距的;而众所周知的Spring和EJB之间,也还是有差距的。
比如让RoR做一下库存盘点,医保结算,代码写起来是够清晰的,可惜那个速度......。换存储过程和SQL看看,还说是没有差距吗?
不要觉着是在找碴。企业应用中,尤其是大家这些年看不上眼,以为是过时的SQL+C/S系统里面,这类复杂的业务逻辑太多了。想要改朝换代,先过性能这一关。
上面我已经说过了,没什么服气不服务的问题,因为哪个快一些,哪个慢一些根本就无关紧要。其实我可以做这样的测试,而且事实上我经常私下做各种性能测试,考察不同框架的性能和伸缩性表现。但是测试不同编程语言不同框架速度快一点还是慢一点,这个根本就是没有意义的事情,而且你所谓的感性认识还是个错误的认识,很可能导致你在将来的技术选型和框架设计上做出错误的决定。
我们只是在做web app,所以我们看中的不是谁跑的快,而是用那种语言来做,容易跑的快,这个差别很大的。
终于遇到个知音,这个帖要讨论的就是这个。
扯来扯去都快跑题了,在此重申一下。
至于前面所提到的绝对数值,早已声明是没有考究意义的,就连我自己也不太当回事。
大家有兴趣可以测测自己的系统,这倒是很有必要的。以免过于追新而陷入性能泥潭。
用不同的编程语言跑web app,究竟哪个容易跑得快一点,哪个容易跑得慢一点,这是一个根本没有意义的问题。我举一个实际的例子来说明:
我以前用Java开发的web app(Hibernate/Spring/Webwork)跑下来,排除数据库的查询时间,其处理请求的速度在每个请求执行时间为:20ms ~ 200 ms之间,而我们JavaEye网站是用Ruby开发的,其处理请求的速度为每个请求:50ms ~ 500ms之间。执行速度大概有3倍的差距。
你一看到3倍的差距就会说,嘿!3倍阿,ruby太烂了,Java太强了。但实际上这个差距没有任何意义。因为用户从点击一个链接开始,到下载完毕页面,再到浏览器渲染整个页面,即使在高速局域网,也要至少2秒左右的时间。因此ruby多消耗了几百毫秒用户根本就感觉不到,特别是在互联网环境下,页面下载受带宽制约,这种差别可以忽略不计。
从服务器的角度来说,至少JavaEye网站可以证明:一台1.4万购入的PC服务器运行Ruby,可以最大支撑200万动态PV。没错,如果我改成Java,这台服务器可以支撑500万以上的PV。但问题是企业应用跑200万以上PV的应用,其硬件投资至少都是几十万级别的,因此你就算用了Java,也节省不出来1毛钱的成本。
或者你说我跑互联网就不一样。好我们假设一个每天1000万PV的网站,用Ruby需要5台服务器,用Java需要2台服务器,所以Java可以节省4.2万的硬件投资。可你不要忘记了你用Ruby,可以节省至少10万以上的开发人员成本,以及更多的维护成本。而实际上中国网站上千万PV每天的都不超过50个。
上面有个帖子说我搞互联网的,不是搞企业应用的,嘿嘿,我前后搞了七年的企业应用,参与开发、主持开发和咨询的企业应用涉及的行业有:银行、电信、电子政务、航空售票、物流、机械和教育,算不算有资格谈谈企业应用阿?
我们只是在做web app,所以我们看中的不是谁跑的快,而是用那种语言来做,容易跑的快,这个差别很大的。
终于遇到个知音,这个帖要讨论的就是这个。
扯来扯去都快跑题了,在此重申一下。
至于前面所提到的绝对数值,早已声明是没有考究意义的,就连我自己也不太当回事。
其中也就Spring那部分有点现实意义,毕竟运行条件和配置是完全一样的,对于SQL vs ORM还是有点参考意义。
大家有兴趣可以测测自己的系统,这倒是很有必要的。以免过于追新而陷入性能泥潭。
另外有点有趣的是,别看Spring体系下的数值不高,却相当稳当。也就是说,笔者做这些极端测试时,CPU占用必然是99%-100%。在这种极端情况下,用其它客户端访问几乎不见慢,不知是不是共享实例的好处。至于其它的,数值高是高,压力测试下还是见慢了,怀疑是“虚高”。
由此大大恢复了对Spring的信心。近期在筹划一个区域卫生信息共享的计划。琢磨下来,Spring jdbc方案辅以适量的存储过程应该可以搞得定。
性能问题主要还是看你软件系统的架构设计,这个架构的含义是指:整个系统的网络拓扑结构是什么样的;系统的各个部分怎么划分,例如Web怎么部署,应用怎么部署,缓存怎么部署,DB怎么部署;系统的数据怎么设计,例如什么数据放缓存,什么数据放文件系统,什么数据放数据库,以及数据文件怎么管理,怎么同步,备份方案是什么。而具体到每个部分例如Web服务器怎么分离动态静态访问,怎么负载均衡和故障切换,例如应用服务器怎么进行群集扩展,怎么处理Session同步,怎么监控系统负载,怎么减轻SQL压力,如何正确的把各种不同类型的应用用最合适的方案去解决,而缓存系统如何分布式部署,最后是数据库如何分担IO负载,如何设计表结构来实现大数据量的扩展性。
所有这些问题我以为都是系统管理人员应该去考虑的,而不是整天去比较啥啥解析器哪个循环快一点,哪个循环慢一点。
不过更多时候在讨论构架不是在考虑如何提高性能,而是在讨论如何修补些细节,让操作起来更加方便,或者拿些测试报告出来,让老板付钱觉得值得,只有少数时候是讨论如何扩展,
至于哪个循环快点?这个问题一般的答案是,“就算你写个死循环,我们也能很快速跑完它”
你声称要谈架构,结果还是在谈编程语言,而且这种编程语言的对比还是建立在道听途说上面的。比方说Google吧,Google用的最多的编程语言是C++,其次是Java,最后才是Python,而且和你想像的不一样,Google大部分底层设施都是用C/C++编写的,并不是用Python写的。实际上在Google内部,Python主要用来做应用的黏合剂,以及各种各样的小工具。这是06年的时候我和一位资深的Google工程师吃饭的时候他告诉我的。
你这人怎么一根筋呢。你以为Google只用Python一种语言,Yahoo只用PHP一种语言,ebay只用Java一种语言吗? Google就是混合C++/Java/Python三种语言用的,至于Yahoo更不用说,他的搜索引擎是用C++写的,Yahoo还大量的使用perl,eBay我不了解,但听说他用过Tuexdo,这是C++的交易中间件吧?你再看看Facebook刚刚开放的平台源代码,也是PHP和C的混合编程,而且Facebook还用到了Erlang。现在哪个软件项目不是混合多种语言编程? 就算用Ruby做这样的主流应用,那也不可能光用ruby一种语言阿,肯定是多种语言一起上:ruby,C++,erlang,Java一块用。
以上疑问,说实在的,不是笔者这种业余编程爱好者所能回答的问题。有经验的同道可以续帖,或另开专题讨论。
随着信息系统的应用日益广泛庞大,性能和可扩展性越来越成为现实中棘手的问题。
可以说,接单子靠的是忽悠、耍花样和功能全;接下单子实际干起来,性能和易用性才是最重要的。实际应用中用户最忍受不了的,第一是“慢”,第二是 “难用”,第三是“变来变去”。至于你是用C/S还是B/S,是SQL还是ORM,是纯Web还是RIA,其实真的没有几个用户会关心。
由于本人正业是系统管理,某种角度上来说正是“旁观者”。建议大家不妨多考虑一下用户的真实要求,多关注一下性能问题。
性能问题主要还是看你软件系统的架构设计,这个架构的含义是指:整个系统的网络拓扑结构是什么样的;系统的各个部分怎么划分,例如Web怎么部署,应用怎么部署,缓存怎么部署,DB怎么部署;系统的数据怎么设计,例如什么数据放缓存,什么数据放文件系统,什么数据放数据库,以及数据文件怎么管理,怎么同步,备份方案是什么。而具体到每个部分例如Web服务器怎么分离动态静态访问,怎么负载均衡和故障切换,例如应用服务器怎么进行群集扩展,怎么处理Session同步,怎么监控系统负载,怎么减轻SQL压力,如何正确的把各种不同类型的应用用最合适的方案去解决,而缓存系统如何分布式部署,最后是数据库如何分担IO负载,如何设计表结构来实现大数据量的扩展性。
所有这些问题我以为都是系统管理人员应该去考虑的,而不是整天去比较啥啥解析器哪个循环快一点,哪个循环慢一点。
首先声明这些测试并不严格,全是在同一台机器(Core2 1.6,2G内存PC)上跑,DB是同一个MySQL,执行简单的单表读写操作,并发100个thread(此并发情况下各种技术基本都不会出Error),都不做缓存。数值都是取rps,具体的绝对数值没有考究的意义,不过相对一比较倒有些意思。
先用笔者前两三年一度热衷的Appfuse,测下来的结果大概在130左右;
然后直接采用Spring的三个例程,一来简单,二来Rod自制的Sample效率应当是有保证的,结果如下:
采用hibernate的petclinic:200左右;
采用ibatis的jpetstore:400左右;
采用jdbc的imagedb:750左右。
大家应该看出些门道来的吧。所以说Rod老大的确是聪明绝顶,早已预备了三种不同的性能方案,做成sample给大家采用。至于大家最后怎么用是自己的事,怪Spring就不对了,Rod真是高明!
顺便附上其它技术体系的参考值(由高到低)吧:
纯PHP:1000左右;
以快速闻名的FleaPHP:800左右;
JSTL:350左右;
Grails:50左右;
Seam:20左右;
RoR:12左右。
这下大家是不是有些总的概念了。基本规律是越偏向SQL的技术,性能越高;越偏向ORM的技术,性能越低。由此可见OO和关系DB的不匹配,不仅仅是在设计和编码上,在性能上更是个天大的问题。
差距如此之大,就连笔者也不禁怀疑起自己的测试。建议有心的同道们做一下更严格的测试以资验证。
值得一提的是,在引入DB前,JSP还是要快过PHP不少,大概是1900:1400左右,但加上DB后,JSP竟然干不过PHP,身为Java fans实在是有些愤怒。不过很久不写JSP了,但愿精于此道的同道写个更高效的,压过PHP才好。
现代主流DB在此配置下每秒钟大多能吞下500-1000条普通SQL。做为中间层,不管怎么做,还是要配得上才行。
是选择开发效率低一些,但性能高的偏SQL方案,还是选择开发效率高,但性能低的编OO方案,不同的场景有不同的回答。
但愿此文能帮助各位同道在不同的项目上能对性能-开发效率做出最好平衡的正确选择。
评论
33 楼
davidcen
2008-06-10
cats_tiger 写道
企业应用一般不会遇到什么性能问题,一旦遇到就硬伤,比如,用户要求一次导出20w行数据到Excel,过程中还需要各种计算,涉及多个tables。我们说,导出这么多数据没用呀,又不是看金庸的小说。可是用户不管你,让你导你就导,不导也得导。结果呢,性能很差,大约要用十几分钟,而且有时候还内存溢出。
这种时候,用什么语言都一样,所以我基本同意robbin的观点的。
这种时候,用什么语言都一样,所以我基本同意robbin的观点的。
小声地问一下,你不分开几个文件导出么?20w分10次,导到temp中10个文件,然后合并输出不可以?
32 楼
laiseeme
2008-06-10
hibernate没问题
有问题的是用hibernate的人
有问题的是用hibernate的人
31 楼
cats_tiger
2008-06-08
企业应用一般不会遇到什么性能问题,一旦遇到就硬伤,比如,用户要求一次导出20w行数据到Excel,过程中还需要各种计算,涉及多个tables。我们说,导出这么多数据没用呀,又不是看金庸的小说。可是用户不管你,让你导你就导,不导也得导。结果呢,性能很差,大约要用十几分钟,而且有时候还内存溢出。
这种时候,用什么语言都一样,所以我基本同意robbin的观点的。
这种时候,用什么语言都一样,所以我基本同意robbin的观点的。
30 楼
ygxdha
2008-06-08
lgx522 写道
robbin 写道
上面我已经说过了,没什么服气不服务的问题,因为哪个快一些,哪个慢一些根本就无关紧要。其实我可以做这样的测试,而且事实上我经常私下做各种性能测试,考察不同框架的性能和伸缩性表现。但是测试不同编程语言不同框架速度快一点还是慢一点,这个根本就是没有意义的事情,而且你所谓的感性认识还是个错误的认识,很可能导致你在将来的技术选型和框架设计上做出错误的决定。
我这里也做一做测试,不管是好是赖,放上来让大家讨论一下。顺便鼓励大家都去做一做,好好考量一下自己系统的性能,至于有没有意义大家自己去判定。
如果照你的说法,这种性能测试是根本没有意义的。是不是说现在凡是可以做B/S的,语言和框架快慢是无所谓的事情,也就是说根本不用去选了。既然性能最后都大同小异了,是不是说开发效率才是唯一的标尺。
如此这般的结论,那就还是选择当前开发效率高的RoR了。
可惜,本人在现实工作中,不论是自己开发还是其它厂商的东西,在存储过程、SQL和ORM之间还是有差距的;而众所周知的Spring和EJB之间,也还是有差距的。
比如让RoR做一下库存盘点,医保结算,代码写起来是够清晰的,可惜那个速度......。换存储过程和SQL看看,还说是没有差距吗?
不要觉着是在找碴。企业应用中,尤其是大家这些年看不上眼,以为是过时的SQL+C/S系统里面,这类复杂的业务逻辑太多了。想要改朝换代,先过性能这一关。
无意义的讨论很容易误导其它人的,既然robbin指出你的测试方式有问题,测试出来的数据没有任何意义。那为什么不询问下有意义的测试方式,最后得到一些有意义的数据呢。我遇到的企业项目的开发中,最后出性能问题基本上都是设计上的失误,很少有因为语言性能导致的。
29 楼
sutra
2008-06-08
楼主的测试瓶颈在SQL语句上,其得出的结论恰好说明了使用hibernate时缓存配置的重要性。
另外如果是想证明ORM的效率低下,影响应用的性能的话,那么就要考虑你为什么要用ORM了,还不是为了程序结构好些,开发简单些。
另外如果是想证明ORM的效率低下,影响应用的性能的话,那么就要考虑你为什么要用ORM了,还不是为了程序结构好些,开发简单些。
28 楼
fastzch
2008-06-07
我想真正做过大型系统,不管是企业应用还是互联网应用,才能深刻体会到Robbin所说的那些。
27 楼
fastzch
2008-06-07
看你们讨论了这多,我看都看累了。
不过我个人认为:robbin的观点还是占上风的。
不过我个人认为:robbin的观点还是占上风的。
26 楼
lgx522
2008-06-06
williamy 写道
1。我不明白为什么CPU占100%
2。上面谁说ORM,jdbc,在说什么orm快,jdbc快,我只知道两个要点 一:我知道orm都是在jdbc上的,二,程序都是耗时间的
1、100个thread不停地冲WebServer10分钟,当然是CPU占用率100%了。这种极端测试,主要是看在这种崩溃边缘,谁还能反应正常一些。结果是Spring jdbc和纯JSP、PHP。
2、两点之间直线最短,绕了几个弯弯还想快,问问机器再说。
这种极端测试,大家也不要觉得是撑饱了没事儿干。现实当中就有大量这种平时懒散,高峰时段并发高得吓人的负载。比如大型医院每天上午的9:00-12:00,医保中心的月底结算、物流企业的盘点等等。不搞定这些要求,少不了是要被Oracle DBA数落嘲笑的。那些时候,恨不得榨干机器的最后一滴油。
当初天下闻名的奥运票务事件,如果当初多做做这种极端测试,也许就不至于放出那么不切实际的承诺,贻笑大众了。
25 楼
williamy
2008-06-06
robbin上面写了很多文字,其实他就是想说“应该使用合适的技术,合适的解决方案,至少他是这么做的”,其实这个是废话,很正确的,很具有指导意义的,还是废话
Java快,但是没C快,难道你用C做web?所以大公司里的构架都是乱啊,老大都不管这些小问题,他们只考虑如何度过每一天。martin flower喜欢玩些花样,我听说ari就不喜欢martin的想法
Java快,但是没C快,难道你用C做web?所以大公司里的构架都是乱啊,老大都不管这些小问题,他们只考虑如何度过每一天。martin flower喜欢玩些花样,我听说ari就不喜欢martin的想法
24 楼
williamy
2008-06-06
lgx522 写道
williamy 写道
我们只是在做web app,所以我们看中的不是谁跑的快,而是用那种语言来做,容易跑的快,这个差别很大的。
终于遇到个知音,这个帖要讨论的就是这个。
扯来扯去都快跑题了,在此重申一下。
至于前面所提到的绝对数值,早已声明是没有考究意义的,就连我自己也不太当回事。
其中也就Spring那部分有点现实意义,毕竟运行条件和配置是完全一样的,对于SQL vs ORM还是有点参考意义。
大家有兴趣可以测测自己的系统,这倒是很有必要的。以免过于追新而陷入性能泥潭。
另外有点有趣的是,别看Spring体系下的数值不高,却相当稳当。也就是说,笔者做这些极端测试时,CPU占用必然是99%-100%。在这种极端情况下,用其它客户端访问几乎不见慢,不知是不是共享实例的好处。至于其它的,数值高是高,压力测试下还是见慢了,怀疑是“虚高”。
由此大大恢复了对Spring的信心。近期在筹划一个区域卫生信息共享的计划。琢磨下来,Spring jdbc方案辅以适量的存储过程应该可以搞得定。
1。我不明白为什么CPU占100%
2。上面谁说ORM,jdbc,在说什么orm快,jdbc快,我只知道两个要点 一:我知道orm都是在jdbc上的,二,程序都是耗时间的
23 楼
lgx522
2008-06-06
robbin 写道
上面我已经说过了,没什么服气不服务的问题,因为哪个快一些,哪个慢一些根本就无关紧要。其实我可以做这样的测试,而且事实上我经常私下做各种性能测试,考察不同框架的性能和伸缩性表现。但是测试不同编程语言不同框架速度快一点还是慢一点,这个根本就是没有意义的事情,而且你所谓的感性认识还是个错误的认识,很可能导致你在将来的技术选型和框架设计上做出错误的决定。
我这里也做一做测试,不管是好是赖,放上来让大家讨论一下。顺便鼓励大家都去做一做,好好考量一下自己系统的性能,至于有没有意义大家自己去判定。
如果照你的说法,这种性能测试是根本没有意义的。是不是说现在凡是可以做B/S的,语言和框架快慢是无所谓的事情,也就是说根本不用去选了。既然性能最后都大同小异了,是不是说开发效率才是唯一的标尺。
如此这般的结论,那就还是选择当前开发效率高的RoR了。
可惜,本人在现实工作中,不论是自己开发还是其它厂商的东西,在存储过程、SQL和ORM之间还是有差距的;而众所周知的Spring和EJB之间,也还是有差距的。
比如让RoR做一下库存盘点,医保结算,代码写起来是够清晰的,可惜那个速度......。换存储过程和SQL看看,还说是没有差距吗?
不要觉着是在找碴。企业应用中,尤其是大家这些年看不上眼,以为是过时的SQL+C/S系统里面,这类复杂的业务逻辑太多了。想要改朝换代,先过性能这一关。
22 楼
robbin
2008-06-06
wtusmchen 写道
我觉得楼主测的挺好的,至少给大家一个感性的认识,感谢楼主这么辛苦的测试。
如果有不服气的可以实际测测给出数据再说话。
如果有不服气的可以实际测测给出数据再说话。
上面我已经说过了,没什么服气不服务的问题,因为哪个快一些,哪个慢一些根本就无关紧要。其实我可以做这样的测试,而且事实上我经常私下做各种性能测试,考察不同框架的性能和伸缩性表现。但是测试不同编程语言不同框架速度快一点还是慢一点,这个根本就是没有意义的事情,而且你所谓的感性认识还是个错误的认识,很可能导致你在将来的技术选型和框架设计上做出错误的决定。
21 楼
wtusmchen
2008-06-06
我觉得楼主测的挺好的,至少给大家一个感性的认识,感谢楼主这么辛苦的测试。
如果有不服气的可以实际测测给出数据再说话。
如果有不服气的可以实际测测给出数据再说话。
20 楼
robbin
2008-06-06
lgx522 写道
williamy 写道
我们只是在做web app,所以我们看中的不是谁跑的快,而是用那种语言来做,容易跑的快,这个差别很大的。
终于遇到个知音,这个帖要讨论的就是这个。
扯来扯去都快跑题了,在此重申一下。
至于前面所提到的绝对数值,早已声明是没有考究意义的,就连我自己也不太当回事。
大家有兴趣可以测测自己的系统,这倒是很有必要的。以免过于追新而陷入性能泥潭。
用不同的编程语言跑web app,究竟哪个容易跑得快一点,哪个容易跑得慢一点,这是一个根本没有意义的问题。我举一个实际的例子来说明:
我以前用Java开发的web app(Hibernate/Spring/Webwork)跑下来,排除数据库的查询时间,其处理请求的速度在每个请求执行时间为:20ms ~ 200 ms之间,而我们JavaEye网站是用Ruby开发的,其处理请求的速度为每个请求:50ms ~ 500ms之间。执行速度大概有3倍的差距。
你一看到3倍的差距就会说,嘿!3倍阿,ruby太烂了,Java太强了。但实际上这个差距没有任何意义。因为用户从点击一个链接开始,到下载完毕页面,再到浏览器渲染整个页面,即使在高速局域网,也要至少2秒左右的时间。因此ruby多消耗了几百毫秒用户根本就感觉不到,特别是在互联网环境下,页面下载受带宽制约,这种差别可以忽略不计。
从服务器的角度来说,至少JavaEye网站可以证明:一台1.4万购入的PC服务器运行Ruby,可以最大支撑200万动态PV。没错,如果我改成Java,这台服务器可以支撑500万以上的PV。但问题是企业应用跑200万以上PV的应用,其硬件投资至少都是几十万级别的,因此你就算用了Java,也节省不出来1毛钱的成本。
或者你说我跑互联网就不一样。好我们假设一个每天1000万PV的网站,用Ruby需要5台服务器,用Java需要2台服务器,所以Java可以节省4.2万的硬件投资。可你不要忘记了你用Ruby,可以节省至少10万以上的开发人员成本,以及更多的维护成本。而实际上中国网站上千万PV每天的都不超过50个。
上面有个帖子说我搞互联网的,不是搞企业应用的,嘿嘿,我前后搞了七年的企业应用,参与开发、主持开发和咨询的企业应用涉及的行业有:银行、电信、电子政务、航空售票、物流、机械和教育,算不算有资格谈谈企业应用阿?
19 楼
lgx522
2008-06-06
williamy 写道
我们只是在做web app,所以我们看中的不是谁跑的快,而是用那种语言来做,容易跑的快,这个差别很大的。
终于遇到个知音,这个帖要讨论的就是这个。
扯来扯去都快跑题了,在此重申一下。
至于前面所提到的绝对数值,早已声明是没有考究意义的,就连我自己也不太当回事。
其中也就Spring那部分有点现实意义,毕竟运行条件和配置是完全一样的,对于SQL vs ORM还是有点参考意义。
大家有兴趣可以测测自己的系统,这倒是很有必要的。以免过于追新而陷入性能泥潭。
另外有点有趣的是,别看Spring体系下的数值不高,却相当稳当。也就是说,笔者做这些极端测试时,CPU占用必然是99%-100%。在这种极端情况下,用其它客户端访问几乎不见慢,不知是不是共享实例的好处。至于其它的,数值高是高,压力测试下还是见慢了,怀疑是“虚高”。
由此大大恢复了对Spring的信心。近期在筹划一个区域卫生信息共享的计划。琢磨下来,Spring jdbc方案辅以适量的存储过程应该可以搞得定。
18 楼
williamy
2008-06-06
robbin 写道
性能问题主要还是看你软件系统的架构设计,这个架构的含义是指:整个系统的网络拓扑结构是什么样的;系统的各个部分怎么划分,例如Web怎么部署,应用怎么部署,缓存怎么部署,DB怎么部署;系统的数据怎么设计,例如什么数据放缓存,什么数据放文件系统,什么数据放数据库,以及数据文件怎么管理,怎么同步,备份方案是什么。而具体到每个部分例如Web服务器怎么分离动态静态访问,怎么负载均衡和故障切换,例如应用服务器怎么进行群集扩展,怎么处理Session同步,怎么监控系统负载,怎么减轻SQL压力,如何正确的把各种不同类型的应用用最合适的方案去解决,而缓存系统如何分布式部署,最后是数据库如何分担IO负载,如何设计表结构来实现大数据量的扩展性。
所有这些问题我以为都是系统管理人员应该去考虑的,而不是整天去比较啥啥解析器哪个循环快一点,哪个循环慢一点。
不过更多时候在讨论构架不是在考虑如何提高性能,而是在讨论如何修补些细节,让操作起来更加方便,或者拿些测试报告出来,让老板付钱觉得值得,只有少数时候是讨论如何扩展,
至于哪个循环快点?这个问题一般的答案是,“就算你写个死循环,我们也能很快速跑完它”
17 楼
williamy
2008-06-06
我就喜欢和robbin抬杠
1,google用python是做什么?粘合剂?太模糊了吧,google用c++作为主力是真的,要求性能的分布式系统都是c++写的,而python是他们的管理系统,至于java是用来干什么的,我不知道,不过我知道他们有40%左右的java开发人员,当然这些人也非常擅长于c++以及python,甚至很多还是js高手,我是说他们一些部门的开发人员。比如mountain view的很多是混混。
2,至于java php ruby性能比拼!我觉得我们不是在写火星车导航系统,计算慢一点没关系的。同时也不是在写apache火力控制系统,稳定性也不用考虑。我们只是在做web app,所以我们看中的不是谁跑的快,而是用那种语言来做,容易跑的快,这个差别很大的。毕竟计算1+2+3。。。+100很快,不代表写一百个模块的系统也很快,反之亦然。
3,ebay里面没听说有牛人,估计只好请咨询啦,看java的要看walmart的,毕竟terracotta的老大来自哪里
1,google用python是做什么?粘合剂?太模糊了吧,google用c++作为主力是真的,要求性能的分布式系统都是c++写的,而python是他们的管理系统,至于java是用来干什么的,我不知道,不过我知道他们有40%左右的java开发人员,当然这些人也非常擅长于c++以及python,甚至很多还是js高手,我是说他们一些部门的开发人员。比如mountain view的很多是混混。
2,至于java php ruby性能比拼!我觉得我们不是在写火星车导航系统,计算慢一点没关系的。同时也不是在写apache火力控制系统,稳定性也不用考虑。我们只是在做web app,所以我们看中的不是谁跑的快,而是用那种语言来做,容易跑的快,这个差别很大的。毕竟计算1+2+3。。。+100很快,不代表写一百个模块的系统也很快,反之亦然。
3,ebay里面没听说有牛人,估计只好请咨询啦,看java的要看walmart的,毕竟terracotta的老大来自哪里
16 楼
lgx522
2008-06-06
首先感谢robbin的指教。这类知识其实过去也看过不少了,包括JE上的各种文章,常识也还是有一点的。
综合下来这类巨型网站其实都是一致的,也就是C/C++做底层,Java、PHP这类的做前端显示,再生成静态页面等等。
所谓架构,扯来扯去基本上是一回事,最后还是要靠C这个老妖精。
但是大多数应用是不会达到如此海量的访问,以至于需要这类架构的程度,也付不起这样的成本。
我们绝大多数的程序员所面对的,还是中型应用,还是那种在大多数情况下应用同一种编程语言和框架,访问关系数据库的应用。
没有上万的用户和足够的资金,没有一堆的服务器可以分来分去,没有强悍的架构师把各种语言、框架融合得很精彩,也没有资深的部署人员可以把性能调到最优。
绝大多数的程序员和用户,需要的是很快就可以学会用起来的布署和配置方式。说得庸俗一点,是像Tomcat、wamp、IIS、InstantRails那类的东西。在这样的现实和条件下,不要说性能差异是没有意义的。
产生这些争论,其实主要是缘于大家工作的领域和关注点不同所致。robbin和很多同道主要是做互联网的,本人和周围的同事朋友则是做企业传统应用的多。大家都有要面对和解决的问题,还是取长补短,互相多包容些吧。
综合下来这类巨型网站其实都是一致的,也就是C/C++做底层,Java、PHP这类的做前端显示,再生成静态页面等等。
所谓架构,扯来扯去基本上是一回事,最后还是要靠C这个老妖精。
但是大多数应用是不会达到如此海量的访问,以至于需要这类架构的程度,也付不起这样的成本。
我们绝大多数的程序员所面对的,还是中型应用,还是那种在大多数情况下应用同一种编程语言和框架,访问关系数据库的应用。
没有上万的用户和足够的资金,没有一堆的服务器可以分来分去,没有强悍的架构师把各种语言、框架融合得很精彩,也没有资深的部署人员可以把性能调到最优。
绝大多数的程序员和用户,需要的是很快就可以学会用起来的布署和配置方式。说得庸俗一点,是像Tomcat、wamp、IIS、InstantRails那类的东西。在这样的现实和条件下,不要说性能差异是没有意义的。
产生这些争论,其实主要是缘于大家工作的领域和关注点不同所致。robbin和很多同道主要是做互联网的,本人和周围的同事朋友则是做企业传统应用的多。大家都有要面对和解决的问题,还是取长补短,互相多包容些吧。
15 楼
robbin
2008-06-06
引用
不同语言和框架实现可扩展性架构的难度不同,也意味着代价不同。不仅包括软件开发的代价,还包括硬件的代价,布署的代价。
三十左右的同道,相信都尝试过好几种语言和框架。大家如果能抛开门户之见,好好谈一谈在不同语言和框架下如何以有限的代价最大限度实现可扩展架构,那么笔者这种抛砖引玉的帖子才有些用处。
google的架构算是数一数二的吧,注意它是建立在python这种本身高效的语言之上的。而google是如何实现它的,至少我是不知道,有认识的同道可以说一下。
身为老大的yahoo是PHP的代表,人家如何做到这一点,花了多大的代价,有认识的也可以谈一下。
ebay是Java的代表,以前是以EJB闻名的。大家其实可以探讨一下钟爱的Spring在这方面的案例和经验。
包括.NET,尽管经常被指责性能和安全性问题,可人家MS就有本事让自己的网站挤身前几位。但本人实在是怀疑MS留了后手,不然那么多.NET的中间层实践怎么老是硬不起来。
三十左右的同道,相信都尝试过好几种语言和框架。大家如果能抛开门户之见,好好谈一谈在不同语言和框架下如何以有限的代价最大限度实现可扩展架构,那么笔者这种抛砖引玉的帖子才有些用处。
google的架构算是数一数二的吧,注意它是建立在python这种本身高效的语言之上的。而google是如何实现它的,至少我是不知道,有认识的同道可以说一下。
身为老大的yahoo是PHP的代表,人家如何做到这一点,花了多大的代价,有认识的也可以谈一下。
ebay是Java的代表,以前是以EJB闻名的。大家其实可以探讨一下钟爱的Spring在这方面的案例和经验。
包括.NET,尽管经常被指责性能和安全性问题,可人家MS就有本事让自己的网站挤身前几位。但本人实在是怀疑MS留了后手,不然那么多.NET的中间层实践怎么老是硬不起来。
你声称要谈架构,结果还是在谈编程语言,而且这种编程语言的对比还是建立在道听途说上面的。比方说Google吧,Google用的最多的编程语言是C++,其次是Java,最后才是Python,而且和你想像的不一样,Google大部分底层设施都是用C/C++编写的,并不是用Python写的。实际上在Google内部,Python主要用来做应用的黏合剂,以及各种各样的小工具。这是06年的时候我和一位资深的Google工程师吃饭的时候他告诉我的。
引用
还有就是RoR,老实说我真的很喜欢写RoR的代码,可总是担心性能。有经验的不妨谈一下RoR需要花费多少硬件和布署的代价才能达到上述主流技术同等的水平。
你这人怎么一根筋呢。你以为Google只用Python一种语言,Yahoo只用PHP一种语言,ebay只用Java一种语言吗? Google就是混合C++/Java/Python三种语言用的,至于Yahoo更不用说,他的搜索引擎是用C++写的,Yahoo还大量的使用perl,eBay我不了解,但听说他用过Tuexdo,这是C++的交易中间件吧?你再看看Facebook刚刚开放的平台源代码,也是PHP和C的混合编程,而且Facebook还用到了Erlang。现在哪个软件项目不是混合多种语言编程? 就算用Ruby做这样的主流应用,那也不可能光用ruby一种语言阿,肯定是多种语言一起上:ruby,C++,erlang,Java一块用。
引用
以上疑问,说实在的,不是笔者这种业余编程爱好者所能回答的问题。有经验的同道可以续帖,或另开专题讨论。
随着信息系统的应用日益广泛庞大,性能和可扩展性越来越成为现实中棘手的问题。
可以说,接单子靠的是忽悠、耍花样和功能全;接下单子实际干起来,性能和易用性才是最重要的。实际应用中用户最忍受不了的,第一是“慢”,第二是 “难用”,第三是“变来变去”。至于你是用C/S还是B/S,是SQL还是ORM,是纯Web还是RIA,其实真的没有几个用户会关心。
由于本人正业是系统管理,某种角度上来说正是“旁观者”。建议大家不妨多考虑一下用户的真实要求,多关注一下性能问题。
性能问题主要还是看你软件系统的架构设计,这个架构的含义是指:整个系统的网络拓扑结构是什么样的;系统的各个部分怎么划分,例如Web怎么部署,应用怎么部署,缓存怎么部署,DB怎么部署;系统的数据怎么设计,例如什么数据放缓存,什么数据放文件系统,什么数据放数据库,以及数据文件怎么管理,怎么同步,备份方案是什么。而具体到每个部分例如Web服务器怎么分离动态静态访问,怎么负载均衡和故障切换,例如应用服务器怎么进行群集扩展,怎么处理Session同步,怎么监控系统负载,怎么减轻SQL压力,如何正确的把各种不同类型的应用用最合适的方案去解决,而缓存系统如何分布式部署,最后是数据库如何分担IO负载,如何设计表结构来实现大数据量的扩展性。
所有这些问题我以为都是系统管理人员应该去考虑的,而不是整天去比较啥啥解析器哪个循环快一点,哪个循环慢一点。
14 楼
lgx522
2008-06-06
[quote="robbin]
大访问量系统的可扩展性问题主要取决于软件的架构,而不是软件究竟采用什么编程语言。关注性能没有错,但是性能好坏不取决于你用什么编程语言和什么开源框架,而是取决于你的软件架构。当然不同的编程语言实现可扩展性架构的难度有所不同,我觉得这个才是最值得探讨的地方。
既然robbin诚心讨论这个问题,那就一起探讨一下吧。
系统软件的性能的确是取决于软件架构,但“架构”不是个纯粹概念性的东西,而在建立在不同的编程语言和框架的基础之上,并最终还是要落实到语言和框架上的。
不同语言和框架实现可扩展性架构的难度不同,也意味着代价不同。不仅包括软件开发的代价,还包括硬件的代价,布署的代价。
三十左右的同道,相信都尝试过好几种语言和框架。大家如果能抛开门户之见,好好谈一谈在不同语言和框架下如何以有限的代价最大限度实现可扩展架构,那么笔者这种抛砖引玉的帖子才有些用处。
google的架构算是数一数二的吧,注意它是建立在python这种本身高效的语言之上的。而google是如何实现它的,至少我是不知道,有认识的同道可以说一下。
身为老大的yahoo是PHP的代表,人家如何做到这一点,花了多大的代价,有认识的也可以谈一下。
ebay是Java的代表,以前是以EJB闻名的。大家其实可以探讨一下钟爱的Spring在这方面的案例和经验。
包括.NET,尽管经常被指责性能和安全性问题,可人家MS就有本事让自己的网站挤身前几位。但本人实在是怀疑MS留了后手,不然那么多.NET的中间层实践怎么老是硬不起来。
还有就是RoR,老实说我真的很喜欢写RoR的代码,可总是担心性能。有经验的不妨谈一下RoR需要花费多少硬件和布署的代价才能达到上述主流技术同等的水平。
以上疑问,说实在的,不是笔者这种业余编程爱好者所能回答的问题。有经验的同道可以续帖,或另开专题讨论。
随着信息系统的应用日益广泛庞大,性能和可扩展性越来越成为现实中棘手的问题。
可以说,接单子靠的是忽悠、耍花样和功能全;接下单子实际干起来,性能和易用性才是最重要的。实际应用中用户最忍受不了的,第一是“慢”,第二是“难用”,第三是“变来变去”。至于你是用C/S还是B/S,是SQL还是ORM,是纯Web还是RIA,其实真的没有几个用户会关心。
由于本人正业是系统管理,某种角度上来说正是“旁观者”。建议大家不妨多考虑一下用户的真实要求,多关注一下性能问题。
大访问量系统的可扩展性问题主要取决于软件的架构,而不是软件究竟采用什么编程语言。关注性能没有错,但是性能好坏不取决于你用什么编程语言和什么开源框架,而是取决于你的软件架构。当然不同的编程语言实现可扩展性架构的难度有所不同,我觉得这个才是最值得探讨的地方。
既然robbin诚心讨论这个问题,那就一起探讨一下吧。
系统软件的性能的确是取决于软件架构,但“架构”不是个纯粹概念性的东西,而在建立在不同的编程语言和框架的基础之上,并最终还是要落实到语言和框架上的。
不同语言和框架实现可扩展性架构的难度不同,也意味着代价不同。不仅包括软件开发的代价,还包括硬件的代价,布署的代价。
三十左右的同道,相信都尝试过好几种语言和框架。大家如果能抛开门户之见,好好谈一谈在不同语言和框架下如何以有限的代价最大限度实现可扩展架构,那么笔者这种抛砖引玉的帖子才有些用处。
google的架构算是数一数二的吧,注意它是建立在python这种本身高效的语言之上的。而google是如何实现它的,至少我是不知道,有认识的同道可以说一下。
身为老大的yahoo是PHP的代表,人家如何做到这一点,花了多大的代价,有认识的也可以谈一下。
ebay是Java的代表,以前是以EJB闻名的。大家其实可以探讨一下钟爱的Spring在这方面的案例和经验。
包括.NET,尽管经常被指责性能和安全性问题,可人家MS就有本事让自己的网站挤身前几位。但本人实在是怀疑MS留了后手,不然那么多.NET的中间层实践怎么老是硬不起来。
还有就是RoR,老实说我真的很喜欢写RoR的代码,可总是担心性能。有经验的不妨谈一下RoR需要花费多少硬件和布署的代价才能达到上述主流技术同等的水平。
以上疑问,说实在的,不是笔者这种业余编程爱好者所能回答的问题。有经验的同道可以续帖,或另开专题讨论。
随着信息系统的应用日益广泛庞大,性能和可扩展性越来越成为现实中棘手的问题。
可以说,接单子靠的是忽悠、耍花样和功能全;接下单子实际干起来,性能和易用性才是最重要的。实际应用中用户最忍受不了的,第一是“慢”,第二是“难用”,第三是“变来变去”。至于你是用C/S还是B/S,是SQL还是ORM,是纯Web还是RIA,其实真的没有几个用户会关心。
由于本人正业是系统管理,某种角度上来说正是“旁观者”。建议大家不妨多考虑一下用户的真实要求,多关注一下性能问题。
发表评论
-
别了,Sun的Java
2009-04-21 15:28 1137今天上午惊闻Oracle对Sun ... -
有了OO、分层、DI、AOP、TDD和Refector,DDD不再是空谈
2008-12-31 11:25 1404一晃眼搞了7、8年的企 ... -
坚持发扬EJB、Spring的光辉思想,将组件化进行到底!
2008-12-31 09:10 886(这是一年半前在jdon首发的老文,因观点比较激烈,仅作整理收 ... -
借JavaFX之风,Swing终于熬到了出头之日
2008-12-17 16:00 6527前几天看了点新闻,一是说JavaFX1.0的推出,二是是说Su ... -
硬件越跑越快,软件越陷越慢
2008-05-06 17:04 2887近日总算有点空闲,走马观花测试了一些技术,包括Grails、S ... -
swt、eclipse RCP与“Java All in One”
2008-03-25 10:13 2247近年来的eclipse与netbeans ... -
伟大的Hessian
2007-10-05 15:10 15610前几日看过道友lordhong的文章“Hessian开始支持R ... -
Java的表示层,到底该怎么办?
2007-07-02 15:15 2735Java做老大很久了,而Jav ... -
有感于“以复杂性为生的行业”
2007-04-24 17:11 5786Rod Johnson在“without EJB”中说了很多真 ... -
Java Web层的下一个王者是谁?
2007-04-19 17:47 35260经过数年的“框架大战 ...
相关推荐
了解CGLIB和Objenesis的工作原理,可以帮助我们更好地理解Spring如何实现依赖注入、AOP以及其它高级特性。例如,CGLIB的代理过程涉及到了ASM库,Objenesis的实例化机制则涉及了Java的反射API和类加载器。通过深入...
1. 高性能:相对于其他动态代理库(如Java的反射API或JDK动态代理),CGLIB的代理效率更高。 2. 易于使用:Spring框架已经封装了CGLIB的使用,开发者通常不需要直接与CGLIB库交互。 `spring-objenesis-repack-2.5.1...
Spring框架是Java开发中不可或缺的一部分,它为开发者提供了丰富的功能,包括依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)等。在给定的文件中,我们关注的是两个特定的库:`spring-objenesis-repack-2.4...
此外,Spring还提供了AOP支持,允许开发者定义切面,进行跨切面的关注点处理,如日志记录、性能监控等。另外,Spring MVC作为Web应用的解决方案,提供了模型-视图-控制器架构,使Web开发更加简洁高效。 总的来说,...
7. **技术栈**:除了SSM框架外,系统可能还会用到其他技术,如HTML/CSS/JavaScript进行前端页面开发,MySQL作为关系型数据库存储数据,Git进行版本控制,Maven或Gradle进行项目构建,JUnit进行单元测试等。...
Spring还提供了数据访问抽象,包括JDBC、ORM和OXM支持,以及对其他多种框架的集成,如Hibernate、MyBatis等。 **Hibernate5** Hibernate是Java中流行的持久化框架,它简化了数据库操作,使得开发者可以使用对象模型...
### Spring Boot 免安装整合 OpenCV 兼容 Windows 和 Linux 的详细知识点 #### 一、OpenCV 功能概述 OpenCV 是一个强大的开源计算机视觉和机器学习库,它提供了广泛的功能来处理图像和视频数据。以下是一些核心...
6. **其他可能涉及的技术**: - **WebSocket**:实现实时通信,如会议状态更新、消息推送。 - **任务调度**:如Quartz,用于定时任务,如自动提醒、日程推送。 - **消息队列**:如RabbitMQ或Kafka,处理高并发下...
9. **屏幕共享**:实现屏幕共享通常涉及捕获屏幕图像并编码成流媒体格式,然后通过WebSocket发送到其他参会者。JavaFX或AWT库可用于获取屏幕图像。 10. **会议管理**:会议的创建、修改、删除以及参会者管理等功能...
10. **持续集成/持续部署(CI/CD)**:Spring Boot项目常配合Jenkins、GitLab CI/CD或其他工具实现自动化构建和部署。 综上所述,"project_backend:Spring Boot中的项目后端"很可能是一个使用Spring Boot和Java构建的...
SSM会议管理系统是一款基于JavaWeb技术的完整毕业设计项目,主要使用了Spring、SpringMVC和MyBatis(SSM)三大主流Java企业级开发框架。这个系统旨在为用户提供便捷的会议管理功能,包括会议创建、参会人员管理、...
本课程由知名讲师Nelio Alves主讲,旨在深入讲解Spring Boot框架的使用,以及如何与其他技术如Hibernate、RESTful API、Ionic前端框架、JSON Web Token(JWT)安全机制、Amazon S3云存储服务以及MySQL数据库进行高效...
4. **实时通信**:为了实现实时的在线交流,可能采用了WebSocket或其他实时通信协议,允许参会者进行视频、音频通话和聊天。 5. **安全性和隐私保护**:考虑到数据敏感性,系统应包含加密技术、身份验证和授权机制...
10. **性能优化**:考虑到实时人脸识别的性能要求,项目可能采用了GPU加速、模型量化、模型剪枝等技术来优化模型的运行速度。 总结起来,"OnlineFaceRecognition-master.zip"项目涵盖了Java编程、计算机视觉、深度...
5. **日志和监控模块**:SpringBoot集成了Actuator,可以提供健康检查、性能指标、审计日志等功能,有助于系统运维和问题排查。 6. **数据库操作模块**:SpringData JPA或MyBatis等ORM框架可能被用来与数据库交互,...
这是一个基于SSM(Spring、SpringMVC、MyBatis)框架和MySQL数据库开发的线上会议管理系统源码项目。SSM是Java开发中的经典组合,广泛应用于企业级应用系统开发,尤其在Web领域。下面我们将详细探讨这个项目所涉及的...
前端界面可能使用JSP、Thymeleaf或其他模板引擎,结合Ajax技术实现动态交互。同时,系统应考虑异常处理、性能优化、安全性等方面,确保稳定可靠运行。 总的来说,这个SSM框架编写的会议室视频会议记录单管理系统,...
【丁韦尔护理之家后端】项目是一款基于Java技术栈的Spring Boot 2.0应用程序,主要用于构建养老护理服务的后台系统。这个项目的核心是利用Spring框架的强大功能,为前端提供稳定、高效的RESTful API接口,以实现数据...
9. **数据分析**:可能集成Google Analytics或其他工具对用户行为进行追踪,以便优化应用性能和用户体验。 10. **日志和监控**:使用Log4j或SLF4J记录应用日志,配合ELK Stack(Elasticsearch, Logstash, Kibana)...