8 月份开始到现在,进行了一个多月的实习,岗位是 Java Web 后端开发。这过程学到的知识着实比自学要来得多,而且也让我意识到需要学习的知识也更加多。在这里我会在比较大的方面总结这次实习中学习到的事情,以及之后需要努力学习的知识。
基础
经过一个多月的项目的锻炼,最大一点感受就是基础的重要。这里我指的是数据结构基础。因为经历过实际项目的开发,无疑令我更清楚一个企业项目里的编程是怎样一会事,明白实际用到的技术大概是怎样,而这个过程让我知道基本的数据结构是如此重要。老实说,我感觉一个项目大部分时候做的都是重复性活动,也就是所谓的增删查改。这个过程无非就是与数据打交道,譬如怎么获取数据,如何保存获取的数据,怎样返回前端想要的数据就是我们要做事情的核心。而这不正是数据结构的事情吗?例如,我们要熟悉 List、Map 等结构,知道什么场景使用那些容器来封装数据。还有一个是算法,虽然我这一个半月中没有用到算法,但无疑这是进阶必须的,因为算法可以帮助我们更好的处理数据,而这正是后端工程师的任务——处理数据。所以数据结构跟算法是未来一定要掌握的。
另外一点需要注意的基础地方,就是 JDK 的常用 API 的使用。我印象深刻的一件事就是 String 的使用。有一次我要判断 String 非空,当时的做法好像只是“抄”别人的代码,没有深入思考的过程,后来有空闲思考,发现一个 String 判断非空其实要注意的事情是很多的,而我们其实可以直接查看 JDK 的文档,就会发现 JDK 里面 String 类直接有 isEmpty() 方法供我们使用了;同样,如果要判断两个字符串相等,API 文档直接提供了 .equal() 方法供我们使用,这里还需要特别注意的一点就是不能用 == 来判断两个字符串相等!因此这个过程我学到的一点就是,养成查看官方文档的习惯,特别是常用的 API,要做到熟记。
SQL 与数据库
还有一个十分重要的地方是 SQL 的学习。这一块跟数据结构是我现在认为最重要的。在上面我说过,后端的处理无非就是数据的处理,而很多时候数据需要从各种数据库中检索出来,这就需要用到 SQL 了。在没有实习之前,我对 SQL 并不怎么熟悉,好几次的面试中也因为这样而吃了亏。在真正的实际项目开发中,也真正感受到使用 SQL 的频繁与重要,特别是在 Mybatis 框架中要经常编写 SQL 语句,加深了我对 SQL 的重视。当然 SQL 语句也只是非常基础的东西,在这上面还有数据库要我去了解与学习,例如怎样优化数据查询,某些数据库的特性等。项目使用的是 MySQL 数据库,这也是我接下来需要加深学习的数据库。
团队开发
说说团队开发。我们项目用的是 SVN,感觉挺方便,没那么复杂(虽然我对 git 并不熟悉)。这里需要记录的事情是,每次提交代码的“规范流程”(不局限于 SVN,团队开发都应该这样做,以防冲突)。
每天到公司,打开项目后首先更新代码(一般是全部),发现冲突及时解决;
写好自己的功能,在本地跑,直到可以跑通;
现在需要更新全部代码,防止与别人当天写的代码有冲突;
更新完代码不能立刻提交,需要再次跑一下,验证代码更新后也没有出错;
再次检查是否有更新代码,没有了才可以提交自己的代码;
每天下班前检查是否自己写完的代码有没有提交的,及时提交。
这里再说说代码提交的“注释规范”,没有统一标准,我是自己网上搜索后觉得挺不错,以后要这样用。
changed(完成的任务)
updated(完成任务的更新)
added(新加入的需求)
fixed(修复 bug)
修 issue 时可以写:fixed #xx
小改的直接用一句话说清楚
大改的自己建一个 issue 说清楚情况、方案、变化,然后写 fixed #该 issue 号
框架与流程
这个项目是用 SSM 框架的,现在我想对于这个框架的日常使用是没问题了,这也是一大收获,正式在企业项目中用到,对这几个框架的认识深了很多。
再者,对一个项目的流程,如前期需求、原型实现、编码、测试、上线也有更清晰的了解,知道是怎样一会事。我想我算是踏入这个行业的门了。
最佳实践
至于编程技术思想方面也同样有很多进步。例如对一些技巧的使用,知道是怎样一回事。好比 DTO,还有封装前端请求数据的 Query 两个对象的区别与用法,这些算得上是最佳实践吧。说到最佳实践,这次的实习也锻炼了我遇到问题找寻原因的思想,其实这里头也没有多高深的知识。
例如,遇到 bug,首先整个流程跑一次,看看这个实际功能是否能跑通,然后观察前端传输的数据有没有错,调用的请求是否真的调用了,这些步骤都没错的话,看看后端 Controller 接受的数据情况,以及进一步的数据处理的情况,而这后端的观察便可以用 debug 了(加强了我 eclipse 的 debug 能力),这个流程走下来应该可以很快定位到问题出现的地方。
上面写的这些都是大方面的内容,其他的收获都是一些细节的技术内容,例如文件上传下载实现、分页对象原理与实现、一些 jQuery 插件使用等等,就不展开讲了。
那么最后再来一个需要学习知识的粗略计划:
数据结构与算法
MySQL 数据库的深入学习(学习《数据库技术丛书·MySQL技术内幕:InnoDB存储引擎》)
Java 基础以及 JVM、多线程等知识(学习《深入理解Java虚拟机:JVM高级特性与最佳实践》《Java并发编程实战》)
继续深入学习 SSM 框架,也要学习 Spring Boot 框架(《Spring 实战》以及相关视频学习)
网络编程相关知识
全部0条评论
快来发表一下你的评论吧 !