学习使用java到现在也有三年多了,这三年基本是以项目驱动的方式学习,有好有坏,个人觉得好处在于,有一个清晰的目标让你解决,这会让你学习非常迅速有效。当然坏处就是片面,不成体系。这种学习方式在学校以小组方式做“小玩具”还是行之有效的,但是遇到正规的生产环境后,便会东拼西凑,忙于奔波。
因此,我便想按照专业书籍,系统的再过一遍java的全栈技术(当然,全栈技术不止这点)。并且为学弟学妹们尽自己最大的能力举起一盏明灯,也为正在使用java的coders,做一个查漏补缺的list。
首先从java编程基础开始。这一部分,会很快,不会有太多自己的想法心得,并且太基础的东西我可能知识一带而过。主要包括:
- java概述:设计初衷,性能比较,简述发展
- 基础知识概述:基础语法,OOP编程基础,异常,内部类,JDBC
- 多线程概述:创建,同步,通讯,安全,死锁
- API概述:常用接口,常用集合类,IO操作
- 网络编程概述:网络基础,socket,常用协议,web服务器基础
- java高级:反射,代理,泛型,枚举,正则表达式
过完第一部分后,接着总结数据库技术相关,这一部分主要讲解sql,毕竟现有的关系型数据库都支持sql,并且生产环境大部分还是使用关系型数据库。再者总结下mysql与oracle的优缺点,使用场景,注意事项。
- sql基础:库、表的创建,修改,删除,查询,索引,主从表,权限,事务,运算符,函数
- 常用查询技术:多表连接,子查询
- 触发器,存储过程
- 数据库优化
- 备份,恢复
总结完这一部分,然后在归纳写javaweb常用的技术,包括:
- web基础:xml,html/css/js,jsp/serlvet,jstl/EL,json,ajax
- 主流框架:spring/springmvc,log4j,junit,mybatis,maven
- 常用服务器:tomcat
- 常用第三方接口:如,支付宝支付接口,充值缴费接口等
上述内容只是基础,而且还是术的方面。我觉得要写出优雅,健壮,可扩展的代码。除了基础扎实外,还需要了解,体会,感悟道的方面,比如说编程思想,规范,设计模式,软件工程等相关的内容。因此下一个部分就是:
- 常用设计模式:例如工厂、单例、代理等
- 修炼数据:《clean code》,《java编程思想》,《代码重构》,《effective java》,《敏捷技能修炼》,《think in java》
以上这些,我都会开源在我的github上,希望能和大家能一起完善java技术栈这个项目。这里我顺便谈谈为什么做java技术栈这个开源项目。原因很简单:为了更加高效的学习以及使用java。
查阅技术,无论是官方文档、技术博客、相关书籍或者其他。都不能很好的满足我高效系统的学习使用需求,他们相对于整个体系,都是零散分布在网络的各个节点上。而我需要的是一个系统,能知道前因后果,能在地铁公交车上,通过看一篇文章介绍的知识点,能让我在脑海技术拼图找到相应的地方。能在我想要实现某个功能的时候,开一个网页,就能知道其实现,注意事项,使用场景等。能在学习的时候,像看小说一样,前面挖的坑,后面会让你知道是怎么填上的。因此,这不仅是一个分享技术知识的项目,还是一个思想碰撞的平台。
在此,我期望大家能踊跃参与进来,无论你是初学者还是资深coder,无论你对编程一无所知还是编程大牛,我都希望你能贡献你对某个技术,某个知识点,某个方法,某个变量的所见所感,所思所悟,谢谢。