日期:2014-05-20  浏览次数:20774 次

看完Thinking in JAVA接下来该看什么
这个把星期大致把thinking in JAVA看完了,接下来该看什么书呢?想弄怎么连数据库和web程序

------解决方案--------------------
Java 最初是以网络、安全和多线程著称的,因此对于下面这些 JDK 的基础知识如果有超过一半以上没听说过,或者不知道是什么的话,那可以说 Java 还处于蹒跚学步阶段!

多线程(multi-threading and concurrent)

1:关键词:volatile, sychronized

2:传统的线程 API:java.lang.Thread, java.lang.Runnable, java.lang.ThreadGroup, Object#wait, Object#notify, Object#notifyAll

3:JDK 5 并发包(java.util.concurrent)API:线程池、执行器、信号量、倒计数门闩、并发集合(并发 Map,阻塞队列等)、原子 API(java.util.concurrent.atomic)、锁 API(java.util.concurrent.lock)

4:同步锁策略:自旋锁、分离锁、分拆锁、可重入锁、读写锁、锁的公平性等

涉及多线程及并发的 API 在 java.lang 中及 java.util.concurrent.* 中。


网络(network communication)

1:阻塞 TCP 通信、阻塞 UDP 通信、组播
2:非阻塞 TCP 通信、非阻塞 UDP 通信
3:客户端通信 API(java.net.URL, java.net.URLConnection 等类库)

涉及网络通信的 API 都在 java.net 和 java.nio.channels 包中。这里的网络已经将 RMI 相关包 java.rmi, javax.rmi 都排除了。


安全(security, cryptography and AAA)

1:Java 加密类库 JCA
2:Java 加密类库扩展 JCE
3:涉及密码学知识点的消息摘要、消息认证码、对称加密、非对称加密、数字签名
4:涉及网络通信证书管理工具(keytool)及 API
5:基于 SSL/TLS 的安全网络通信 API(JSSE)。阻塞 SSL 通信和非阻塞 SSL 通信
6:Java 认证及授权服务(JAAS)API

涉及安全的东西都在:

java.security 包(JCA、JCE、数字证书、SPI)
javax.net 包(SSL/TLS)
javax.security 包(JAAS)
javax.crypto 包(密码学)
keytool 的 JDK 工具

-----------------------------------------

另外,对于一些 SSH(Struts, Spring, Hibernate)控的建议:

如果对下面这些知识点不熟悉的话,那就先把 SSH 放一下!

在使用 Struts 等 MVC 框架之前,我认为应该先掌握:

* 了解 application, session, request, page 四种范围的特点,以及使用时的注意事项
* 熟练使用 Servlet,以及 Servlet 相关的 Filter、Listener 等
* 使用 Servlet + JSP + JDBC 至少做过一个有 10 个功能的应用
* 了解前端控制器、视图助手、组合视图、分配器视图等 J2EE 中涉及视图层的模式

在使用 Hibernate 等 ORM 框架之前,应是相当熟悉 JDBC 操作,并且知道一些理论性东西:

* 使用 JDBC 的时候,是否使用了数据库连接池,如何使用开源的数据库连接池?
* JDBC 中的行集(RowSet)是做什么用的?
* JDBC 如何实现对象/关系映射,也就是 O/R Mapping
* 为什么 JDBC 规范推荐首选从 DataSource 中获得数据库连接对象(JDBC 4.0 Specification, p.51.),
而不是首选从 DriverManager 中获得连接对象?
* 使用 DriverManager 获得连接对象时,虽然从实现 JDBC 4.0 规范的驱动程序开始,不需要使用
Class.forName("xxx.xxx.xxx.Driver"); 了,但我们也有必要了解一下这句话的作用是什么?
* 单纯地使用 JDBC 时如何实现低耦合性的事务管理?也就是说事务边界在业务层,一个业务层调用
多个数据库操作的方法完成一个事务,在这种情况下如何进行事务控制? 

在使用 Spring 等 IoC 框架之前,我认为应先掌握:

* 熟练地使用 JAXP、jdom, dom4j 等工具解析/生成 XML 文件,并能使用 XPath 进行 XML 查找
* 掌握 Java 中的反射,以及 JavaBeans 规范中的内省类,了解 JavaBeans 规范对于方法名、属性
的要求(别看这个很简单,实际上很少有人知道)
* 了解 JDK 的动态代理和 Cglib 的动态代理,了解 JDK 动态代理的限制,以及与 Cglib 动态代理
的优缺点,并且了解一下动态代理是做什么用的
* 熟练地使用日志工具,比如:JDK 日志工具、log4j 工具等,以及在使用时需要注意些什么
* 能善于使用开源框架中已经实现的东西,比如 Apache Commons 中很多实用的方法,像实现了 LRU
算法的 Map 等等之类的