记201607-201707实习收获

来源:互联网 发布:英迈零售软件 编辑:程序博客网 时间:2024/05/20 17:25

1.刚开发的项目在项目初运行阶段有选择地输出错误信息,一旦错误日志生成过多会过多消耗资源导致系统卡顿,此时为有一个可使用的系统建议关闭错误日志输出命令提示符

2.维护经验:项目平时部分功能正常运行,突然有一天不能访问,排查顺序应为后台逻辑代码->数据库->前端->服务器(包括安全服务器),曾经一个项目某一功能突然失效,试探一天排除后台代码后,对网页监控录制,发现客户端正确发送请求,服务器返回因为url含有sql语句导致被经信局的新安全服务器拦截

3.能尽量sql语句完成的就不要后台逻辑代码循环查询

4.当一个功能有批量处理以及单独处理时,只做批量方法,可达到方法复用
jsp页面使用ajax技术需要引入jQuery.js

5.尽量将方法接口化,只要传入相应的数据值既可以达到统一效果,提高代码复用率

6.sql经验:需要用count函数统计某列时,需注意同时使用group by函数把其他相同的列分组

7.对于in 和 exists的性能区别:
如果子查询得出的结果集记录较少,主查询中的表较大且又有索引时应该用in,反之如果外层的主查询记录较少,子查询中的表大,又有索引时使用exists。
IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。
exists 与 in 最大的区别在于 in引导的子句只能返回一个字段,比如:
select name from student where sex = ‘m’ and mark in (select 1,2,3 from grade where …)
,in子句返回了三个字段,这是不正确的,exists子句是允许的,但in只允许有一个字段返回,在1,2,3中随便去了两个字段即可。
exists : 强调的是是否返回结果集,不要求知道返回什么, 比如:
select name from student where sex = ‘m’ and mark exists(select 1 from grade where …) ,只要
exists引导的子句有结果集返回,那么exists这个条件就算成立了,大家注意返回的字段始终为1,如果改成“select 2 from grade where …”,那么返回的字段就是2,这个数字没有意义。所以exists子句不在乎返回什么,而是在乎是不是有结果集返回。

原创粉丝点击