最近在网上看到的两段“写完代码就被公司开除”的代码,说是网上写完这段代码,就被老板开除了。
1.第一段代码
这位程序员写完这段代码,觉得自己被开除是因为没有写注释,看到这里不禁笑出了声。。。
兄嘚(dei),肯定不是这个原因,获取下一天的时间,你使用了Thread.sleep()睡眠了1天以后,然后再去获取当前的时间,通过这种方式,如果上线以后,那么但凡涉及到获取下一天的时间的操作,用户一点击,你让用户等一天再去看显示结果吗???哈哈~,老板不开除你才是奇怪呢!
那么正确的获取下一天的姿势应该是什么样的呢?我这里给一个示例。
import java.util.Date;
public class Main {
private static Date getNextDay(Date date) {
long addTime = 1;//这个代表几天
addTime *= 1; //1天
addTime *= 24; //一天24小时
addTime *= 60; //1小时60分钟
addTime *= 60; //1分钟60秒
addTime *= 1000; //1秒1000毫秒
Date nextDate = new Date(date.getTime() + addTime);
return nextDate;
}
public static void main(String[] args) {
Date now = new Date();
System.out.println("Now: " + now);
System.out.println("NextDay: " + getNextDay(now));
}
}
这个代码利用Date来获取下一天,只是一个库函数的简单使用,我们来看看运行结果,一点击运行,不到0.000xxx1s的时间,就出来了下一天的日期,根本不用等待一天,效率是不是提高了?
Now: Fri Nov 02 22:19:43 CST 2018
NextDay: Sat Nov 03 22:19:43 CST 2018
2.第二段代码
这位兄弟是老板让写一个排序,他是怎么实现的呢?
通过看代码,可以看出来这位兄弟的思路是数组中每有一个数,就去用new Thread()去开一个线程,线程里面呢,就是用Thread.sleep()去睡眠这个数的的大小时间。举例比如说11,他就开一个线程去睡眠11s,然后去输入11;对于998,他就开一个线程去睡眠998秒,然后去输出998。
由于线程互相之间没有影响,所以数小的线程由于睡眠时间短,肯定会最先输出,数大的线程由于睡眠时间长,肯定会最后输出,最后就把这些数字排好序了。
额,看到这里。。。
如果数组中的数据非常大,那么排序所用的时间也会非常大;而且如果数组中的数有很多,会开很多线程,消耗的资源也很多,总之这种做法是万万不可取的。