2016年学习总结
第一次在简书上写心得,还有一点小小的紧张。总的来说,这一年从开始复习到找到工作都过得比较充实。在学习上有不少的长进,特别在自己所熟悉的Java领域。在这里对刚过去的2016年的个人学习情况进行一些总结。
回顾过往
在总结2016年的工作之前,先回顾一下之前个人的学习情况。
入门
在上大学初期,虽然通过对C语言的学习入了软件开发的“门”,但是依然完全不了解程序员的世界,当时眼前可谓是一片迷茫。随后有幸在一位大牛舍友潜移默化的影响下,渐渐对我们程序员的世界有所了解,也同时逐渐有了自己明确的学习方向。大学期间学习过Html、CSS3、JavaScript、C++、Java、Java Web、Struts2、Spring、Hibernate和JUnit以及MySQL,了解过XML、PHP、Python、GitHub和Maven以及响应式Web设计(比如,Bootstrap和Foundation),但没有做过实际的项目。
项目经验
大四下半学期和研一上半学期的时候去过企业(甲方)做过2个多月的需求调研、需求分析和编写需求文档以及3个多月C# BS项目安监模块的编码工作。该项目让我熟悉了软件开发的整套流程并锻炼了我的团队协作能力。研一下半学期参与了某电商平台的SSH项目的开发,主要负责保证金管理管理模块的设计、编码和测试。该项目让我对之前学习的SSH有了直观的体验和更为深入的理解。研二上半学期主导了某活动管理平台的SSH项目的开发,主要负责项目整体的设计和用户权限模块的编码、测试和项目远程发布以及远程调试工作。该项目我让学会了使用Spring Security、CXF和Junit4以及OAuth2.0等技术,并且锻炼了我分析问题和解决问题能力。
复习
从2016年3月到同年9月进行了全面的复习,可以按所属的技术类别分为以下六类:Java 基础、Java Web、数据库、数据结构与算法和工具类以及面试综合类。下面简要说明每个类别复习的情况。
Java基础
- 《Java 编程思想》(第4版)和《Java核心技术 卷1 基础知识》(第9版)跳过其中的图形和 applet 相关章节,均通读过2遍。每次重新阅读一次,心理就会更踏实一些。平时遇到不解的基础问题,通过查阅这两本书和Java API Doc均能基本得到解决。建议以后遇到不太清楚的知识点再查阅相关章节,而不用每次都通读全书。这样做有两个好处,一是避免自己陷入对熟悉事物再次学习的厌烦情绪里,二是节省时间。若时间比较充沛,这两本书还是有再次通读的必要。
- 《Effective Java》( 中文第二版)通读过1遍,粗略看过1遍。这本书的每个条目(可以理解为建议),作者均解释的非常详细(绝对让你“知其然知所以然”)并且每个条目均特别实用能把你从对Java语言肤浅的认识中拉回到实用的生产环境中。值得再次通读。
- 《Java并发编程实战》通读过1遍,粗略看过1遍。Java并发编程方面的权威之作,让我对线程、同步、可见性和线程池以及线程安全集合类等有了更为深刻的理解。值得再次通读。
- 《JAVA解惑》和《编写高质量代码:改善Java程序的151个建议》均通读过1遍,粗略看过1遍。这两本书针对每个解惑或建议的篇幅均比较短小,语言简洁幽默,读起来相对《Effective Java》来说比较轻松有趣。每个解惑或建议均从Java语言的细节方面来充实你,若面试前通读这两本书,绝对让你在很多Java面试题面前无懈可击。建议以后面试前通读。
- 《深入理解Java虚拟机 JVM高级特性与最佳实践》(第2版),针对第二部分的第2章和第3章和第三部分的第6章和第7章,读过2遍。阅读后,对Java虚拟机的内存分配、垃圾回收策略和垃圾回收器以及类加载机制有了深入的理解。至于该书中的其它章节需要静心阅读和实验。该书值得深入学习和思考。
Java Web
因为复习时想应聘Java服务端研发工程师或Java Web研发工程师,所以比较偏向后端的技术,前端技术涉及较少。(因为之前学习过Html5、CSS3和JavaScript,基本可以应付后端相应的配合开发。)
- 《图解HTTP》通读过2遍。该书通俗易懂,详细地描述了HTTP请求和响应的过程和请求和响应的首部信息等相关细节,有助于以后Web开发中的调试工作。值得初学Web前后端的同学阅读。若需要详细了解HTTP的同学可以阅读《HTTP权威指南》。
- 《深入浅出Servlets&JSP》通读过2遍,粗略复习过1遍。该书是Java Web的入门书籍,内容比较简洁、有趣和通俗易懂,具有Head First系列书籍的一贯风格。该书详细介绍了Servlet、JSP、EL表达式、JSTL和请求与响应以及会话等相关细节。这些Java Web知识是以后学习SpringMVC或其他MVC框架的基础。值得初学Java Web的同学阅读。
- 《深入分析Java Web技术内幕 修订版》通读过1遍,粗略复习过1遍。该书分析或介绍了Java Web开发中常涉及的IO、中文编码问题、虚拟机、Java Web服务器、SSM、Velocity等技术,有点Java Web简洁的“文献综述”的味道。该书可以给学习Java Web的同学指明了应该学习的Java Web相关技术的方向。值得再次通读。
数据库
- 《Head First SQL》通读过2遍。该书是以MySQL为基础介绍基本的SQL语句、子查询和内联接以及外联接等。该书是学习MySQL的入门书籍,内容比较简洁、有趣和通俗易懂,具有Head First系列书籍的一贯风格。值得初学MySQL的同学阅读。
- 《MySQL技术内幕:SQL编程》通读过1遍,粗略复习过1遍。该书对MySQL中涉及的相关基础技术有详细的介绍,是一本全面的MySQL基础书籍。值得再次通读。
数据结构与算法
- 《数据结构与算法分析_Java语言描述》(第2版)前8章均读过2遍。该书前8章对常用的数据结构及其中使用的算法均有详细的介绍,是一本描述数据和算法的基础书籍。值得再次通读。
- 《算法》(第4版)读过该书的第2章(排序)和第3章(查找)2遍。该书这两章中采用了对比和图示的方式,分别详细描述了排序和查找的多种算法,比起单纯的数学分析来说更为有趣和简单。另外本书也是采用Java语言来描述算法的,这对熟悉Java同学来说比较“亲切”。值得细细品读。
工具类
- 《Maven实战》通读过2遍。该书对Maven坐标和依赖、仓库、生命周期、聚合与继承等知识点进行了全面的介绍,阅读后就可以对Maven有更加准确的把握,进而可以游刃有余地使用Maven。之前做项目的时候就使用Maven进行依赖管理,只是简单了解过和看过些许博客。通读过后对Maven有了更为全面的认识,目前项目中使用Maven进行项目的依赖管理和构建管理,感觉十分方便。建议以后将其作为手册来参考。
- 《Git权威指南》前4篇读过1遍,粗略读过1遍。该书的前4篇对Git产生的历史、本地使用Git、多人协作使用Git等相关的命令进行了全面的介绍。阅读后可明确Git相关命令背后所做的工作,对准确地使用Git大有裨益。目前日常学习过程中,常用Git作为版本管理器。
面试综合类
- 框架类读过书籍或网站:《Struts2.x权威指南》、《Spring揭秘》、《精通Hibernate+Java对象持久化技术详解》(第2版)、《Spring Security3》和Web Service以及CXF/MyBatis/Spring/Hibernate/Spring Security官网。
- 面试类读过的书籍或网站:《JAVA程序员面试宝典》( 第3版)、《剑指offer 名企面试官精讲典型编程题》(纪念版)、《XML入门经典》(第4版)和《Java面试宝典》(2016版,电子书)以及牛客网刷题(Java基础和算法)。
拓展眼界
程序员每天都在面对不断的变化,如何在这不断的变化中保持住足够的“淡定”,取决你是否有足够的眼界。这眼界可以说是一种修养,具有这种修养才能让你在面对各种变化的过程中临危不乱并指导你有价值地学习和解决目前存在的问题。眼界是可以培养的,如何获取最有价值的资讯从某种程度上决定着你的眼界。
通俗地讲,就是靠近牛人并向他们学习。比如,通过程序员常常交流的“圈子”来获取和筛选高质量的资讯,从而在“圈子”潜移默化地影响下和通过有价值的交流,来提升自己的眼界。
推荐一下,大家常常逛的“圈子”:GitHub、Stack Overflow、开源中国、博客园、CSDN、并发编程网、简书、SegmentFault、InmportNew、36氪和掘金以及知乎等。
通过这一年来有目的浏览的资讯和对优秀博客的拜读自身体会很深,渐渐对自己学习目标日益明确并紧跟行业内的变化,从而避免了自己做一个井底之蛙或闭门造车。通过大牛们推荐的书籍和博客让我长进很快,特别自己对将要学习的分布式方面。目前了解了Tomcat的内部原理,Netty的工作机制、阿里RPC Dubbo、ZooKeeper、Nginx和Redis以及ActiveMQ等知识。
小结
虽然9月份末找了一个Java研发工程师的工作,但目前对该工作不太满意。希望2017年上半年自己的能力再有所提升,从而帮助自己在以后更好地工作和拿到更体面的薪资。在此对2017年上半年的学习进行简单的计划:
- 以前学习Java的过程中专注于在“面”上的扩展,现在“面”上以基本成型,应将方向调整为加深对Java的“点”上的深入,比如对NIO、AIO和多线程以及Java 8中新特性等知识的学习和研究。
- Java Web方面,希望掌握Tomcat的工作原理和Nginx的工作机制以及了解Docker。
- 2016年中对数据库涉及比较少,应在“面”上继续扩展对MySQL的学习并在夯实MySQL基础的同时也应涉及MySQL集群等知识。在关注关系型数据库的同时也应该学习NoSQL数据库,比如Redis和MongoDB。
- 2016年中对算法与数据结构方面的涉及也比较少。虽然复习过数据结构与算法,但对常用的算法的思想和实现不能完全了然于胸。希望能全面地掌握常用数据结构和算法,让自己摆脱对数据结构和算法学习和使用的恐惧。
- 开始学习分布式,比如Memcached缓存、负载均衡、Dubbo、ZooKeeper和ActiveMQ以及Netty等技术。
希望自己在2017年再接再厉。