在网上搜了下Java学习路线(关键词:学习,因为众所周知,实践出牛人,在平时工作不怎么深入的情况下,才强调学习的方向的重要性 ^_^)
发现下面知乎这个回答写的真好。mark如下:
&&&&&&&&&&&分隔线,以下为转载&&&&&&&&&&&&&&&&
依然didala:
———————————10.4更新——————————— 有评论指出下面说的不是Java的开始学习路线。其实也对,当时在大学是先学了一遍《Java程序设计》,其实也是停留在只懂写 private,类,对象这些,很浅。然后网上认识了个网易的老师傅,就带入门了,就开始看一些Java内存结构什么的,就是如下的这些内容,然后后来就自己分类了学。希望对大家有帮助(当然,有些可能个人能力问题说得不对,希望大家可以帮忙指出,谢谢)。 ———————————8.25更新——————————— 补充些网站(Ps:没有利益相关,只是觉得他们写得真蛮好):
- (海子的博客园)
- Java 关键字:abstract,final,static 等。
- 关键类:Object类的几个方法, String类,Thread类,栈,队列,Arrays,Collections 等其他Java常用类。
- 其他关于Java的知识,比如 jdk8的新特性(重点lambda+集合的流式操作),UML类图等。
这时候你可以看到 新生代,老年代,eden区域,survivor区域等,可以看下他们的占比,利用-xmx,-xms,-xmn,-xss 等适当调节下。 又或者,如果在你的代码中你要用到集合,这个时候就可以考虑下 JDK8 的新特性,集合的流式处理是JDK8 的一大特性,如下是我在工作中使用的代码举例(写得不太好,不过意思就是这样):
Listaccounts = accountRepo.findAccountsByEntityCode(entityCode); if(accounts != null) { //如果不是叶子节点,那么重新计算 accounts .parallelStream() .filter(param -> { AccountType accountType = accountTypeService.findAccountTypeById(param.getAcctCode()); if(StringUtils.isEmpty(accountType.getIsLeaf())){ if("0".equals(accountType.getIsLeaf())){ return true; } else { return false; } } else { return true; } }) .forEach(param -> getAccount0(param));}
再另外,如果分析了 ArrayList,LinkedList,会发现,ArrayList 的性能消耗主要是扩容所引起了,那么定义 ArrayList 的时候,就不要这样子了:
ArrayList
ArrayList list1 = new ArrayList(10);
&&&&&&&&&&&分隔线,以上为转载&&&&&&&&&&&&&&&&
(完)