此次项目还有不到一周就完结了。因此对自己做的前两个项目的学习做一下总结。
先说下这两个项目都是怎么写出来的。首先,大体上了解一下项目原型,因为我是一个初学者,所以也就只能从最笼统的角度知道这个项目是干什么的,每一部分大体上的功能。至于具体的实现,由于经验的缺乏在动手之前基本上是大脑空白。所以这两个项目都是在一知半解的情况下开始着手写的。什么?不知道从哪儿下手?不用急!copy会吗?等你了解完项目的时候老程序员已经写了一部分了,先照着他们的代码复制粘贴然后再改改,写着写着突然就明白了这次项目用到的框架数据库。两个项目写完后才发现是大同小异。比如说前端展示模板,一个是themeleaf,一个是freemarker。数据库一个是oracle一个是mysql,都是用的Jquery和bootstrap组合以及后台基本差不多。虽然技术不同,但是实现的功能差不多,操作上也并非神来之笔,总之是大同小异,便于直接上手操作。项目的一些共性功能,比如说文件的上传和下载、流程的运行、导出excel、生成二维码等,前两个是老程序员写成了共性方法,我等小菜直接调用即可,但是第二个项目需要自己写导出excel功能时,内心慌的一匹,上网各种找,但是发现写的都不全,看了一页又一页,没有一个是一条龙服务到家的,根本没有一点思路。后来经项目组组长点播后,随便找一个帖子,十分钟就给写出来了。写完后真实信心倍增,生龙活虎哈哈。之后,越写越快,在理解项目需求后,三下五除二就把一些功能一口气写完了。就这样,我的内心目前来说不再慌得一匹。
接下来,基于这两个项目经验,说说我的学习方法论吧。首先先定位,我是一个java后台程序员。那么就应该把精力多放在后台相关的技术上,虽然这两个项目在后台上花的时间不太多。前端内容,包括html、css、javascript(项目中用的jquery),各种框架诸如bootstrap、vue、freemarker、themeleaf等基本上不同的项目用的都不太一样,所以就可以找共性。比如,freemarker和themeleaf抽点空闲时间掌握一个就够了。像html、css、jquery可以慢慢随着项目在项目中慢慢掌握,实在不会可以去bootstrap里copy嘛,copy一遍熟悉两遍就会了。至于原生js,我觉得要好好掌握一下,这是真功夫,学好了可以提高写代码的效率,不把时间浪费在无意义的调试上,因为就不会出很多低级错误。其他前端内容,等用到的时候去查一下就可以。总结一下,涉及到前端内容要好好学一下原生js。
开始后台的戏码了。先说一个比较囧的事,前些天写了一个功能,是查询消费记录的需要从后台查数据展示到页面,自己造了8条数据,要多张表查询,结果写完页面刷新得等将近十秒才刷新出来,没错,才八条数据!用时十秒!想想看800条数据吧,估计能把操作人员给折磨死。。。于是,我把项目组组长叫了过来,他三下五除二解决了,结果查那几条数据不到一秒,我滴个神,要不要这么虐,之前自认为没有办法优化的程序竟然优化的这么直接,而且行数由原来的十几行变成了两行,所以这就是sql优化带来的巨大好处。所以,骚年,技术有待提高呀。
个人认为,代码的质量和多种因素有关。第一、最基本的,代码的规范,包括缩进、命名、注释、代码的结构,可读性等这些最基本的规约,都是衡量一个人代码能力的重要指标,也是最基础的部分。第二、Java基础,再就是诸如反射、线程安全等最基础的概念性的东西。第三、数据结构,虽然目前用的很少,但是通过刷leetcode一段时间后,发现能提高把思想转换为代码的能力以及阅读底层源码的能力,当然了,英语水平会有很大提升。第四、和数据库相关操作,如上面说的sql优化,这部分接下来着重攻坚,因为这很有助于提高效率,避免写出垃圾代码。
综上,就是这段时间总结的实战经验,不积跬步无以至千里,目前先把这四部分给学好了,打下坚实的基础。我知道后面还有诸如阅读spring源码这些必要的知识,但现在还是三个月小白一枚,项目架构是架构师的事情,近几个月先不涉猎或者少许了解。主要打坚实的基础,逐一攻破,达到精通水准。话说回来,掌握这些基础知识对于一般的项目都够用了哈哈哈哈。与此同时,我希望通过学习这些养成一些共性的学习能力,比如说英语水平(自认为还不错,大二过六级哈哈)、阅读源码的水平等等,养成这些能力在以后的学习中才能越学越快,越学越轻松。
共勉哦!