1、集合类:研究源码,找出各种集合类的在不同应用场景的区别,目标是可以实现所有集合类

2、I/O:熟悉常用的I/O类,重点学习NIO,Java NIO

3、反射、泛型、注解、网络通信、数据库操作:学会使用

4、多线程:重点了解各种同步方式,Concurrent Programming in Java

5、了解虚拟机及GC,阅读JAVA虚拟机规范

6、重点编码规范和程序健壮性,clean code

 

今天大致过了一遍《java从入门到精通》这本书,简单回顾了一下java基本的知识点,因为一直从事java开发,所以重点看了一下自己比较生疏的知识点

(1)反射:主要分为两部分:信息和执行。信息就是和对象以及类相关的各种信息,包括构造方法、方法、限定符、参数、变量类型、变量值等等;执行主要是方法的执行包括构造方法和普通方法,构造方法通过newInstance来构造实例,普通方法通过invoke进行执行。通过这些功能,反射技术可能根据类或者对象本身的信息控制对象的生成和方法的执行,相当强大。

(2)注解:书上关于Annation的介绍,感觉莫名奇妙。只是想试用一下反射方法获取注解的信息。但是就是这么简单的功能确是目前主流框架的主要思想。通过注解配置类和方法的信息,这些信息在运行期间也会存在,这就为通过反射机制控制方法的运行提供了宝贵的额外信息。JUnit的测试@Test,其实就是测试框架扫描类中注解test的方法动态执行。Spring也是通过注解来控制对象的实例化,和方法的启动。Hibernate也是通过注解完成类到表的映射。其实注解99%的情况是和反射一起用,框架利用反射技术在注解的指导下控制方法的运行;1%的情况充当了和注释相同的功能。相比普通注释和xml文件的区别在于,普通注释编译后消除,所以反射无法获取。和xml相比,定义annotaion类,可以声明字段类型和默认值,在写的时候会进行格式类型检查,注解也可以包含注解,注解的书写相比xml更加规范,xml则可在运行之前随便写。

(3)枚举:枚举讲述了很多功能,甚至定义构造函数等等。但是感觉最主要的用处还是对于常量的保存和使用,优点在于类型安全检查,运行效率高(怎么体现)。

(4)泛型:泛型的核心思想就是在运行的时候指定类型,而且保证不会出现向下转型时出现的类型不匹配问题。方式就是定义类的时候提供几个T类型参数。

(5)多线程:主要问题就是同步、两种线程定义方式、wait、notify和sleep这些线程操作。看到了join方法,意思就是一个线程Bjoin到线程A中,只有B执行完,A才能继续执行。这个以前没有看到

(6)网络通信:TCP和UDP的常见使用方式,没有太多不同

(7)数据库:基本操作和以前没有啥不同,前面看到wiki中有人提到数据库代码规范,强调使用PreparedStatement,防止sql注入。其实PreparedStatement好处很多,sql语句定后,预编译性能提高,可多次使用。对于参数较多时,可读性强。最重要的就是安全性,防止sql注入,因为预编译,后面加入的参数就按照值来处理,而不是想sql拼接出来一样,需要编译后执行。

         个人感觉,每一种编程语言都有很多语法规范,不是一两本书写的完。主要还是和应用场景结合来使用一些语言特性,因此在知道API的功能的同时,更重要的是了解其优缺点,知道其应用场合,因此下一步需要尽量阅读源代码,通过应用场景和理论来提高自己对java知识点的认识。