天天看点

编程思想总结の代码性能优化

1.web框架中的controller、service层、dao层、logic层的联系与作用啊

dao层只是负责和数据库打交道,

controller层只是负责从service层获得数据,发送到相应的视图,核心业务逻辑在service层。

在service层写业务逻辑代码的时候要注意,将每一个独立的功能写成一个单独的方法,方便其他的代码进行调用。

例子:现在有个PC注册账号的功能

  1:初始阶段,controller收到请求,直接在controler里面写数据库连接,进行增删改查,没毛病,可以运行。

  2:慢慢发展,功能多了,Controller多起来了,contoller到处都是sql和数据库打交道的代码,虽然不影响运行,但是有时候发现,如果我要修改一个数据表的字段或其他东西,得到好几个Controller里面去找相同的一个代码并修改,太麻烦了,干脆都放到一个里面,全部对增删改查从同一个地方多好,这时候出现了dao层。

  3:继续发展,进军移动端,有了手机注册的功能,简单,写呗,写着写着发现,我去,怎么和PC注册功能这么像?都要校验用户信息->判断数据库有无重复->插入数据库(重复的业务功能在几个控制器都要被重复使用),有了第二步的经验,把这些相同的业务操作抽离放到一起呗,出现了logic层(logic层负责做些处理并调用dao层完成数据的入库等和数据库打交道的事情),RegisterLogic,规定所有的注册功能都走这一个逻辑了,维护更加方便了,以后即使增加一百种注册方式,只要 new RegisterLogic()->register();就行了。

  4:继续发展下去,公司有声有色的,老板说,网站太无聊了,加点天气预报,随机推送笑话的附属功能吧,这行功能不属于自己的系统的业务逻辑,更具第二步和第三步的经验,应该单独放一个地方,没准以后其他的地方会用到,这时候service层就出现了。

の代码性能优化

  1、尽量重用对象

           特别是String对象的使用,出现字符串连接时应该使用StringBuilder/StringBuffer代替。由于Java虚拟机不仅要花时间生成对象,以后可能还需要花时间对这些对象进行垃圾回收和处理,因此,生成过多的对象将会给程序的性能带来很大的影响。

  2、尽量减少对变量的重复计算

          明确一个概念,对方法的调用,即使方法中只有一句语句,也是有消耗的,包括创建栈帧、调用方法时保护现场、调用方法完毕时恢复现场等。所以例如下面的操作:

for (int i = 0; i < list.size(); i++)
{...}

//应该替换为

for (int i = 0, length = list.size(); i < length; i++)
{...}
           

 3、尽量采用懒加载的策略,即在需要的时候才创建

String str = "aaa";
if (i == 1)
{
  list.add(str);
}


//应该替换为

if (i == 1)
{
  String str = "aaa";
  list.add(str);
}
           

继续阅读