Posts Tagged ‘思考’

漫谈PHP和Java

September 27th, 2009

我为公司内部交流而写的PPT,谈论PHP和JAVA相关的话题。在这里查看:

漫谈PHP和Java

  • Share/Bookmark

DRY, Don’t Repeat Yourself!

July 1st, 2009

DRY,就是不要写重复的代码,这也是程序设计的一个黄金准则之一。

1 引申自关注点分离

其实这一条准则,也是从关注点分离引申而来的。如果完成相同或相似功能的代码片段,在一个程序的很多地方出现,那么无疑会使包含它的代码多了一个关注点。把相同或相似的代码抽象出来,放在一个地方,这样就可以使调用者减少一个关注点,同时将所有的对同类问题的关注合并到一个地方。比如说,判断一个用户是否登录,这一功能被很多地方使用,如果把这一功能包装成函数放到一个地方,需要使用的地方只要引用一下函数就可以了,这样引用者就不用关心如何判断一个用户是否登录了。

2 好处

2.1 提高效率

同样的功能,完成一次就可以了,如果每次要使用轮子的时候,都重复发明轮子,那是对人类智慧的浪费。如果发明一个万用轮子不容易,那么发明一个够用的可以反复使用的轮子就可以了。

2.2 更易读

如过你打开一个程序的源代码,发现有大量类似又稍有差别的代码,你还有多少心情读下去吗?要读下去的话,你就得像diff工具一样去比较类似代码间的细微差别,还要揣摩它的含义。这样的代码读起来太痛苦了。因此,如果没有重复的代码,就没有这份痛苦。

2.3 更易维护

如果你用类似的算法,重复写了很多的程序,结果却发现这个算法有个错误,那你不得不小心翼翼的找到所有的这样的程序,并一个一个又一个的修正。那是一个多么无聊的工作呀。如果漏掉了,或者将其中的某些一不小心修改错了,还得回头再重新修改,那台痛苦了!所以充斥着copy&paste的代码,是维护者的噩梦。

3 怎么做

程序语言和编程方法的进步,也就是人们在实践DRY的过程。要做到DRY,就是要不断的通过抽象,把重复的功能抽象并包装起来。我们先是有了函数和子程序,后来有了类和方法,等等。我知道,为了DRY,还会有新的工具和方法论被发明。

  • Share/Bookmark

企业应用与游戏开发的差别

July 1st, 2009

两个领域完全不一样,包括关注点,技术,运营等..我总结了一下:

1. 企业应用有很多功能属于增删改查的类型.有的是单表操作,有的是多表的JOIN,有的可能需要些逻辑判断,但大致的基本思路是这样,一个企业应用大约逃离不出这些结构.游戏不同.没有增删改查,没有任何的模式套路!做企业应用的思路和做游戏的思路完全不同.我们部门曾经单独为游戏的后台做了机器人脚本,能自动创建对游戏的表的管理功能,而游戏的后台管理功能大体与企业应用类似,这样想来可能企业应用还是有套路可循的.

2.二者的关注点不同.企业应用关注的是功能能否实现,模块,代码写的是否秀雅,当然游戏的开发也肯定关注这个,但游戏更要关注:性能,画面和可玩性…性能包括游戏的响应速度,能否支撑玩家的巨大的并发量 等.画面也非常重要,一个好的游戏能让人有赏心悦目的感觉.同样可玩性也要挖掘出来.要让玩家玩的爽,有能从中盈利,难度比较高呢…

3.代码编写的方式不同.企业应用的思路大多可以想到.比如页面列表显示,无法是取数据,然后转换成一个VIEW在页面上显示出来.而游戏呢,逻辑性之复杂令人瞠目.这里不多说了.可能一个简单的功能,需要上千行代码…还有一系列的算法等等,同时还要考虑到编写代码后游戏的运行速度和性能…

4.做企业应用很多人习惯用模型的方式设计数据库,比如一个表代码一个对象等.这样会产生可能一个查询有涉及到5张表之多.游戏呢?一个月就会有50万条记录,如何JOIN?JOIN一次要让你必须在1秒内响应,并且线上还有1000个玩家在玩,你能行吗?不行!尽量少JOIN表,这是提高数据库效率的一个非常好的方法.

5.多用缓存.不多说了,优势是:1减少访问数据库的时间和数据库的压力 2.提高请求响应速度.等等…

还有很多…呵呵

  • Share/Bookmark

浅谈TOMCAT集群

June 27th, 2009

老实说,一开始我也认为没这个必要,因为加大JVM内存就就可以了嘛,干啥要集群很多TOMCAT呢?其实不是这样的。

首先TOMCAT集群需要APACHE和TOCMAT组合在一起。APACHE作为服务端的访问入口,自动地根据TOMCAT的并发数量分配到不同的TOMCAT里。二者缺一不可。并且配置是比较麻烦的。

很多人没用到集群是因为并发数还没达到一定的程度。一般企业应用最多也就50个并发,架一个TOCMAT,内存开大点就够了。但游戏就不一样了,动不动就几百甚至1000多的并发量,一个TOMCAT吃得消吗?吃不消!通过我们的实践证明,一个TOMCAT最多支撑起150个并发数,有次我们将其开发200个,结果到了170左右TOMCAT立马崩溃。所以后来为了支撑起1000都个并发量,我们架了9个TOMCAT集群。150*9=1350,基本能满足最大的用户访问量了。

有人说还不够,加大TOMCAT的内存嘛!这么并发量不就更大了?非也!我们通过实践证明,一个TOMCAT内存到了1G以上,就起不了多大的效果了,也就是说,1G内存的TOMCAT和2G内存的TOMCAT,基本性能是一样的!哈哈

还有一点,TOMCAT是免费的哦!不花钱还能架起这么大的一个应用,够省了吧?呵呵

  • Share/Bookmark