java代码与mysql语句的一些优化
来源:互联网 发布:域名注册后怎么建网站 编辑:程序博客网 时间:2024/05/16 14:27
跟着团队做了一个项目,开始的时候写了一堆烂代码,里面的逻辑可能除了我别人都看不懂,后来项目要提测,组长检查代码时感觉我的代码写的太乱,说逻辑可不可以理的相对清晰一些,代码写得条理一些。于是乎,开始了生平第一次Refactoring之旅。旅途中也曾感到崩溃,好在有同事们的帮忙,都熬过来了。总结一下review过程中的一些经验,希望自己能够记住这些碰到的坑,也希望能帮助刚刚踏上coding这条不归路的程序猿们。
先说java代码的一些优化(或者说前人的经验)。
大家经常会用到for循环,循环时经常会与array或者list的长度进行对比,举个栗子啊:
for(int i = 0; i < list.size(); i++) {}
这么写当然是可以的,但改为以下代码执行效率会更高些:
int j = list.size(); for(int i = 0; i < a; i++){}
这就是写循环代码时要注意的一点:消除循环里对方法的调用;
既然提到循环,就说说写循环代码时要注意的其他地方:
1、嵌套循环要遵循外小内大的原则,再举个栗子:
for(int i = 0; i < 10000; i++) { for(int j = 0; j < 100; j ++) {} }
这是外大内小,写成外小内大应该是介个样子:
for(int i = 0; i < 100; i++) { for(int j = 0; j < 10000; j++) {} }
两种方法都可以实现功能,但从效率来说,当然还是建议大家遵循外小内大的原则;
2、与循环无关的计算放循环外面,还是需要举个栗子(大家要多吃栗子,吃栗子好处多啊):
for(int i = 0; i < 10; i++) { int a = i + 2 * 3; }
再看看这种写法:
int x = 2 * 3; for(int i = 0; i < 10; i++) { int a = i + x; }
当然这个例子举的有些极端,不过希望大家记住,尽量减少在循环里进行不必要的运算,以提高程序的效率。
3、异常捕获放循环外面, eg:
for(int i = 0; i < 10; i++) { try{ } catch (Exception e) { }}
因为捕获异常相当来说是比较耗费资源的,所以写出下面的方式比较好:
try{ for(int i = 0; i< 10; i++){}} catch(Exception e) {}
既然提到循环,就再说一下我们经常用到的if(其实这个是组长告诉我的,为了简化代码,提高效率。不过话说回来,貌似所以的优化都是为了达到这俩目的)。
我以前用到if是这么写的:
if(x.equals(y)) {}
然后组长说这么写:
if(!x.equals(y)) {}
会好点,至于为什么我也不知道,反正就先记下了。
好了,说了些代码的优化,再说说sql的优化(或者说应用):
有这么一个逻辑:
有a,b,c三个表,然后要查出a,b,c中的一些内容,一开始我是这么写的:
select a.字段名1,a.字段名2,a.字段名3,b.字段名1,b.字段名2 from a, b where a.id = b.id;select a.字段名1,a.字段名2,a.字段名3,c.字段名1,c.字段名2 from a, c where a.id = c.id;
后来在同事的帮助下才知道还能这么写:
select a.字段名1,a.字段名2,a.字段名3,b.字段名1,b.字段名2,c.字段名1,c.字段名2 from a left join b on a.id = b.idleft join c on a.id = c.id
从此记下了left join的用法,至于和inner join以及right join的区别,大家去百度一下好了,写的很详细的。
自己碰到的一些坑暂时就这些,以后遇着会再记录下来。
- java代码与mysql语句的一些优化
- java代码的一些优化
- mysql的语句改写与优化
- SQLServer与Mysql的一些语句
- MYSQL优化的一些性能与技巧
- MySQL下优化SQL语句的一些经验
- mysql数据库sql语句的一些常用优化方法
- Java优化集合代码的一些方法
- 关于Java代码优化的一些总结
- MySQL语句的优化
- mysql的一些语句
- MySQL的一些语句
- java的代码优化的一些经验分享!
- MySQL语句优化的原则
- MySQL语句优化的原则
- MySQL语句优化的原则
- 优化MYSQL的WHERE语句
- MySQL语句优化的原则
- 第9周实践项目3-稀疏矩阵的三元组表示的实现及应用.cp
- iOS 打包
- “异常 ”的学习
- Objective-C中的内存管理
- web开发弹性盒模型flexbox新旧比较
- java代码与mysql语句的一些优化
- 【leetcode题解】【99.38】【E】Contains Duplicate II
- 掌握设计模式
- android_rpg 天龙群侠传
- (java)Rectangle Area
- Spring框架(二)--AOP面向切面编程
- 第9周项目3-稀疏矩阵的三元组表示的应用(3.2).cpp
- Making Sequences is Fun(简单枚举)
- 【ssh学习笔记】struts处理json异常之JSONWriter can not access a member of class org.springframework.aop.TruePoin