学习计划
TODO
- 自己动手写Java虚拟机 Java虚拟机与优化
- 计算的本质,零基础ruby零基础编译原理一步一步实现编译器
数学
《算法导论》,《编程珠玑》等书绝对值得读十遍。
协议
HTTP
对HTTP协议,知道POST, GET的区别是什么,阅读过HTTP相关的RFC文档。学会使用sniffer 工具查看数据包,帮助查找与调试程序,
TCP/IP
知道TCP与UDP的区别,知道组播是怎么回事情。
知道并理解E-Mail发送与接受的协议如SMTP, POP3,IMAP等协议,了解MIME与Base64编码 。
编程方法
设计模式
里氏替换原则, 开闭原则,合成复用原则,依赖倒置原则有很好的理解,并能举例说明。
对常用的设计模式如工厂模式,单例模式,观察者模式,责任链模式,桥接模式等知道灵活 运用,明白什么是回调(Callback)。
设计模式是关于交流,不关于代码。切忌滥用设计模式。
设计为了让软件更容易被别人读懂,更容易维护而产生,设计模式本质是程序员之间的交流 ,如果A用工厂模式设计一个模块B来接替,A只要说该模块是工厂模式实现,B维护起来应该 容易得多。
语言
Java
对线程(thread),串行化,反射,网络编程,JNI技术,容器(Map,List, Iterator), 类加载器(ClassLoader),输入输出流,垃圾回收机制,
有过Java项目的性能优化经验,最起码掌握一种性能监视工具的使用,熟悉JVM参数, 最起码知道可以在JVM启动时指定不同垃圾回收机制,以及不同垃圾回收机制之间的差别, 熟悉JVM参数优化。
最好知道JDBC规范是怎么回事情,面对Oracle数据库如果告诉你JDBC驱动不能用了,你还 知道有OCI驱动可以。掌握常见的SQL语句,熟悉JMS, JNDI等组件,掌握一套web开发模式 ,从前台到后台,有能力整合好这样的框架。理解并掌握MVC思想,像SSH已经实现了MVC的 分层,几乎不需要你自己再实现,假设你开发一个简单的Swing程序,你能MVC就说明你真的 掌握了MVC的精髓。有能力在J2EE前端开发中构建自己的MVC模式,知道什么是WEB2.0,知道 什么是SOA, SaaS, SaaP等含义
工具
自动测试与软件配置管理(SCM)实现
知道什么是软件配置管理,知道Hudson运用 该工具SCM。
知道怎么获取测试代码覆盖率,Java有效代码行数(NCSS),完成firebug, JDepend等工具集成ant/maven。熟悉并注重在开发过程中使用JUnit单元测试, 理解白盒测试规范。