高级程序员怎么学
对处于这个阶段的朋友,他们已经可以熟练编写健壮的代码了,经常会独立开发出一个大的功能模块,有的可能还能独立开发出一个完整的小型项目。
这时候,他们可能会面临两种情况:
1. 需要写一些工具类给全团队使用
在这种情况下,你很可能就需要 Java 中的语法糖,因为语法糖能让你写出非常灵活简单的代码。这包括泛型,自动拆装箱,可变参数还有遍历循环。
但是,使用这些语法糖的时候,如果你不熟悉他们在 JVM 中的实现原理,就非常容易栽个大跟头,
比如:
public class GenericPitfall {
public static void main(String[] args) {
List list = new ArrayList();
list.add("123");
List<Integer> list2 = list;
System.out.println(list2.get(0).intValue());
}
}
2. 编写性能优越的代码
什么时候需要性能优越的代码?最常见的就是把以前性能不好的同步实现,转化成异步实现。
而这种要求,就需要开发对 Java 的多线程开发非常熟悉,并且一定要深入理解多线程在 JVM 中的原理实现。
不然,可以看看下面这段代码:
class IncompletedSynchronization {
int x;
public int getX() {
return x;
}
public synchronized void setX(int x) {
this.x = x;
}
}
再看看这段:
Object lock = new Object();
synchronized (lock) {
lock = new Object();
}
如果把上面这些代码上了生产环境,熬通宵排查问题的命运就注定了……
这里的知识点,我推荐通过网上的文章看,又因为涉及到了并发知识,我建议就着《Java Performance》第二版的“Chapter 9. Threading and Synchronization Performance”这章一起看。
还有余力,建议再继续看周志明的那本《深入理解 JAVA 虚拟机》第三版中的 12-13 章。周志明这本书讲的十分深入,也带来个缺点:门槛高。此时,如果没看懂可以放一放。
注意,我这里说的是并发的原理,不是并发实践,读者想学并发编程,《JAVA 并发编程实践》我认为是前提条件,故不会赘述。