初次做项目需注意事项

简介

   经验都是我们日积月累的积累起来的,并不是一开始就有经验的,所以希望该文章能帮助初次开发项目的朋友在项目中少走踩点坑。

小细节

   开发阶段需要注意:
1.在查询数据时,如果能一次性查询出做自己想要的数据就一次性查询完,不要调用好几个接口对数据库进行交互,如果数据量小,那可能差距在于多少毫秒,如果数据量大的话,那差距就不止是毫秒了,这样是非常浪费时间的。

	//举例说明:
		// 获取环比  与数据库打了两次交到
	public Integer getDate() {
		// 代码简洁,其表达意识明白即可
		String userid="1";
		// mapper.getDateMap()方法是dao接口中的负责与数据库交互获取数据
		Integer i1 = mapper.getDateMap(userid); // 本周期
		userid="2";
		Integer i2 = mapper.getDateMap(userid); // 上周期
		// 环比计算方式(本周期-上周期)/上周期*100%
		return (i1 - i2) / i2 * 100;
	}
		// 获取环比  与数据库打一次交到
	public Integer getDate1() {
		// 代码简洁,其表达意识明白即可
	    String userid[]=new String[]{"1","2"};
		// mapper.getDateMap()方法是dao接口中的负责与数据库交互获取数据
		List<Integer> listii = mapper.getDateMap(userid); // 本周期和上周期数据一同返回
		// 环比计算方式(本周期-上周期)/上周期*100%
		return (listii.get(0) - listii.get(1)) / listii.get(1) * 100;
	}

2.在进行equals相比较的时候,如果要比较的是固定值的话,就通过固定值来比较对象值。

	// equals
	public static void main(String[] args) {
		try {
			String name = null;
			//正确写法
			if ("1234".equals(name)) {
			 System.out.println("123");
			 }
			//错误写法
			if (name.equals("1234")) {
				System.out.println("123");
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

3.当接口中只有一个方法的时候可以建议使用Lambda表达式。注:当接口中只有一个方法的时候,可以称为函数式接口,而Lambda只能用于函数式接口

public class Demo {
	public static void main(String[] args) {
		// 优化前
		LombdaDemo1 demo = new LombdaDemo1() {
			@Override
			public void show(int i) {
				System.out.println("123");
			}
		};
		demo.show(1);
		// 优化后---lomdba表达式1.8新特性
		LombdaDemo1 demo1 = (int i) -> {
			System.out.println("1");
		};
		demo1.show(1);
	}
}

interface LombdaDemo1 {
	public void show(int i);
}

4.将方法中通用的核心语句提取到公共方法或公共类中。注:示例很简单,重在思想。

//未优化前
public class Demo {
	public static void main(String[] args) {
		demo1();
		demo2();
	}

	public static void demo1() {
		// 代替核心代码
		System.out.println(111);
		System.out.println(222);
		System.out.println(333);
	}

	public static void demo2() {
		// 代替核心代码
		System.out.println(111);
		System.out.println(222);
		System.out.println(333);
	}
}
//优化后
public class Demo {
	public static void main(String[] args) {
		demo1();
		demo2();
	}

	public static void demo1() {
		show3();
	}

	public static void demo2() {
		show3();
	}
	public static void show3() {
		// 代替核心代码
		System.out.println(111);
		System.out.println(222);
		System.out.println(333);
	}
}

5.针对数据查询时减少对like关键字的使用,因为like关键字是扫描全表,当面临数据多的时,很容易导致程序长时间等待查询结果的返回,所以可以考虑使用搜索引擎来优化此问题,具体搜索引擎主件,可以根据实际情况选择。
6.rest风格的url要统一小写,并且封装到URL常量类中。

    @GetMapping(value = BaseConstant.INDEX)
    public String index() {
        return BaseConstant.INDEX_HTML;
    }

7.像这种分页、上传下载代码以及httpclient等一些通用代码,可以进行一个通用维护,避免每次使用的时候都需要进行开发。

优化

oracle系列优化

表名称:USER
表结构:ID,NAME,PWD,CREATEDATA
1.SQL语句优化1:当以日期为条件时候,如果日期字段与参数日期值格式不一致的话,那么应该对参数日期进行处理而不是对日期字段进行处理。
  优化说明:如果我们格式化数据库字段值的话,那么在查询的时候,系统会先将日期字段的所有值都进行格式化(“所有值”数据量大的话,自己细品),然后在去匹配指定的条件参数。而如果我们的参数是后端已经格式化好之后的值,那么就不需要系统在去进行格式化,而是直接匹配与该参数值相同的内容。

===优化前===
SELECT  ID,NAME 
FROM  USER  
WHERE TO_CHAR(TO_DATE(CREATEDATA,'YYYY-MM-DD'),'yyyy')='2021'
===优化后===
SELECT  ID,NAME 
FROM  USER  
WHERE  CREATEDATA=后端处理过参数格式后的值

2.SQL语句优化2:oracle查询数据的时候条件是从后往前执行的,而不是从前往后执行的,所以在进行条件筛选的时候优先将权重大的条件设置到后面。
  优化说明:ID值是唯一的,所以放到条件的最前面(代表最后执行该)。

===优化前===
SELECT  ID,NAME 
FROM  USER  
WHERE   NAME=XXX AND ID=XX 
===优化后===
SELECT  ID,NAME 
FROM  USER  
WHERE   ID=XX AND NAME=XXX

3.SQL语句优化3:oracle数据库中的表或函数都是大写的,当我们sql语句为小写的时候,系统还要将它进行转换大写,所以我们在写sql语句的时候直接将sql语句写成大写。
  优化说明:该优化效果不明显,所以是否优化取决于自己吧~

===优化前===
select id, name from user
===优化后===
SELECT  ID,NAME FROM  USER  

4.还有好多优化例如索引啊,表空间等等就不举例了,根据实际业务场景来进行配置吧

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值