最近一直在考虑怎么样更好的使用、学习和研究Java,在网上也搜索了一些资料,这里做个笔记和总结,为今后的持续学习提供一个对比,毕竟以人为镜可以明得失。
一、JDK类库/著名开源类库
在使用Java开发的过程中,恐怕打交道最多的就是jdk中的类库了,个人感觉对jdk类库的熟悉程度,不仅体现一个程序员的Java基础,也一定程度上反映了一个程序员所处的档次(是中级还是高级)。
1.必须掌握和阅读源码的类库
java.io
java.lang
java.util
像java.util
包中的类,如果熟悉他们的原理和数据结构,恐怕在调试过程会有事半功倍的感觉。
2.深刻理解原理及在开源框架中应用的类库
java.lang.reflect
java.net
javax.net.*
java.nio.*
java.util.concurrent.*
例如:
java.lang.reflect
下的类:
- 反射类在spring Bean加载和实例化的过程中有广泛的应用;
- 动态代理类在spring AOP中有广泛的应用;
javax.net
下的类:
在https中的广泛应用;
3.项目中用到时会熟练使用的类
java.util.regex
java.util.zip
java.math
java.text
当然还有一些其它较常见的类:
java.lang.annotation
javax.annotation.*
java.lang.ref
java.security.*
javax.security.*
java.sql
javax.sql.*
javax.transaction.*
javax.xml.*
org.w3c.dom.*
org.xml.sax.*
javax.crypto.*
javax.imageio.*
javax.jws.*
java.util.jar
java.util.logging
java.util.prefs
4.著名的开源类库
其中比较常用的有
BeanUtils
、Collections
等。
(2)Apache HttpComponents
(3)Guava: Google Core Libraries for Java
二、Java研读书籍
《Java编程思想》
《大话设计模式》
《重构 改善既有代码的设计》
《effective java》
《深入理解Java虚拟机》
《Java并发编程实战》
《Spring技术内幕》
《深入理解计算机系统》
《tcp/ip详解 卷一、二、三》
《数据结构与算法》
三、持续学习
保持对新技术的学习与对业务的结合使用,这个就人各有志了,例如:
(1)大型分布式架构:
- 分布式缓存(redis/memcache)
- RPC服务发现(分布式服务)
- 海量存储(MySQL MHA&读写分离&分库分表、Hbase)
(2)大数据与数据挖掘(Hadoop离线计算、Storm实时流式计算)
(3)机器学习(Mahout/spark mllib)、深度学习(TensorFlow/Caffe,分别由Google和Facebook开源)等。
(4)结合业务场景对其它语言的应用:Python、Go等。