项目优化

来源:互联网 发布:天书中文网软件下载 编辑:程序博客网 时间:2024/05/17 00:57
1.程序级别

  码工级别:在编写程序时注重一些细节,如

    (1)对不用的对象及早赋NULL值,以加快GC的回收速度,释放内存

    (2)如生成容器类时,如果new时就能预测到容器容量,则一般直接设置容器类的容量大小,以避免后来使用时的不断扩容

    (3)在全文检索时Field,Document使用一个对象而内部的值通过set方式设置而避免new大量的对象

    (4)再如statement和preparestatement以及批处理等

    (5)局部变量的作用范围尽可能小,循环块的优化等等

  设计级别:

   (1)如对无状态的对象使用池化的思想

   (2)使用多线程的理念

   (3)异步设计的思路:在互联网的MVC设计时方式,为了加快页面的影响速度,往往把MVC做成简单地增删改查,而把复杂的业务逻辑交由后台的任务去处理,比如彩票追号系统中收到中彩网的期中奖信息后,会存储到库表中,用户通过页面往往无法立即获取中奖金额等等,这些信息往往通过后台程序汇总之后插入表对应字段后,用户搜索时才能直接显示信息,再比如51job上申请一份工作后会有这份工作的竞争图表统计信息,用户进入页面时往往不显示这个图表,当点击link时才会到后台取数据汇总,甚至此时也不汇总,而直接交给后台work一天0时汇总一次。

   (4)为了增加用户的响应速度,在设计数据库表时,往往增加一些冗余字段,这些字段往往直接显示其它若干个字段的联合计算信息等等。

   (5)使用缓存技术(如Memcached)加快访问速度同时也减少DB的访问压力。

  系统级别:采用集群的方式,可以用应用服务器自带的集群,也可以用硬件集群技术F5,radware等。
2.通讯级别
  EJB(传字符串还是序列化对象),webservice(restful),MQ,ActiveQ,ICE等,在通讯层业务逻辑尽可能简单,如QDQF的系统设计。
3.DB级别
  (1)SQL语句级别:如in和exist等,同一个操作使用效率最高的操作SQL

  (2) 表级别:

        索引的建立

        表的分解(又包括数据库的逻辑分区(oracle),以及物理分表。如把一个全国表分成36张省级表)

  (3)DB:表空间,排序区设置以及一些优化策略

       读写和查询操作的分离,如读写统一交给一个库来处理。查询交给另一个库来处理,同步由数据库来保证

  (4)对业务表的扫描转移到消息表的扫描,当消息表的扫描也无法支持时,可以考虑扫描动作交给NOSQL的数据库来处理。如任务处理引擎里就使用redis(缓存)和mongdb来处理消息任务。

      



原创粉丝点击