一点想法-2021-01-01
这学期期末,连续做了三个小项目,最后一个实习最后,叫写个3000字的总结,没啥写的。就扯了了点自己学java这么久以来的感悟。想想也放在博客上吧,随便谈谈。
我之前做过的所有项目的前台静态页面都是用纯css,html,javascript或者jquery自己写的,这样可以锻炼自己对前端三件套的掌握程度。但是这次我们采用了一个后台管理的前端模板adminlte,类似的模板有很多,选择它的原因是有很详细的中文说明。对于大多数的后台管理系统的前台来说,它提供的已足够充足,只需要根据需要选择相应的控件就行了,如果整个项目都是后端程序员开发,大大简化了后端程序员的负担。
对于SSM框架来说,我还是很有感触,我的javaweb之路是一步一步学来的,对javaweb的发展史还是有一定的了解。从最初的servelet,不管页面要显示什么内容,都需要servlet中打印语句到浏览器页面显示,对于servlet中冗长的out语句,简直是噩梦。到后来,借鉴asp的形式,诞生了jsp,这种技术可以在html语句中直接写java代码,如果说servlet是在java代码中写标签,jsp就是在标签中写java代码,这个时候,要完成一个简单的页面,只需要一个几个jsp页面就可以实现了,看似简单,但是随着互联网的迅速发展,当web项目越做越大时,对于庞大代码的首要任务是如何去维护它,如何去践行高内聚低耦合等程序设计原则。然后就是出现了javabean类,将jsp中的部分java代码剥离出来放到专门的java类中达到解耦的目的,此时可以看作MVC的雏形,jsp是表示层,控制层,javabean是模型层,这就是model1开发模式。之后,又将jsp中的控制层单独剥离出来,让servlet来充当,这样,就是大名鼎鼎的model2开发模式即MVC模式的诞生。再然后,就是各种后端java框架的出现了,从Struts2+Spring+Hibernate的SSH,到SpringMVC+Spring+Mybatis的SSM,实际上还是MVC模式,只不过更加人性化,简化了原始的JSP+Servlet+JavaBean的开发模式。需要注意的是,这里的对应关系是JSP是表示层,Servlet是控制层,JavaBean是模型层。但是对于SSH和SSM框架来说,每一个框架对应的是三层模型,分别是Controller层,Service层,Dao层。控制层还是那个控制层,Service层和Dao层都属于模型层。所以,完整的技术栈应该是:JSP+SpringMVC+Spring+Mybatis。这里的逻辑关系很容易混淆,特别是对于新手,很容易把MVC和三层架构搞混。这里理解清晰对与整个后端知识的学习可以说是很重要的。理解一项技术的历史发展我认为对于一个技术学习者来说是很重要的,一个增加专业素养,二是增加学习兴趣,三是能知道自己究竟在学什么,能更加清晰地认识到这项技术在历史中地位,对自己对于新技术的判定页会有很大帮助。
当然,我目前只学到了SSM框架这个地方,SpringBoot和实现分布式部署的SpringCloud作为javaweb系统技术的最前沿,也是目前各大互联网公司的必备技术。这些我都没写开始学习。我认为java发展至今,每个时间都会产生各种新的技术,如果我们一味地追求新技术是没有任何意义的。这里我并不是说新技术不好,我的意思是无论多么高深的技术,都是基于最基础的java语法,java基本特性,例如:发射,注解,多线程机制。现在我发现很多程序员对于这些基础知识并没有弄清楚,但是对新技术趋之若鹜。例如就拿SpringBoot来说,它的很多技术点都是基于SSM的,对于SSM来说,他就是原始MVC模型的进一步简化,原理几乎一致。对于MVC,又可以追述到JSP和Servlet的最原始时代,这又回到了我上面讲的了解一项技术的历史的重要性问题上。当你了解了他的历史,你就会看透这项技术的实质是什么,只要理解技术的核心原理,不管这项技术怎么变你都会认识它。所以我的建议就是对于我们这种初出茅庐的新手来说,最重要的事应该是把个更多的时间花在夯实基础上,而不是追逐新技术上。
记得刚进大一时,那时对于编程来说,认识就是C语言的控制台小黑窗。大二大三也是诸如数据结构,操作系统,计算机组成原理,计算机网络,面向对象设计,设计模式等理论课,我很不明白为什么学校教的都是这些枯燥乏味的理论课呢,稍微讲一些实践课还都是些老掉牙的东西呢,为什么不直接教最新的东西呢,当时的我确实很是困惑。在大三开始,我逐渐开始对javaweb有了兴趣,从java基础开始到javaEE,到SSH,经过这么长时间学习体会,一直到现在的SSM,我终于才有了认识:一个牢固的地基太重要了。所以,从大三开始,我开始补自己欠下的基础债,学的过程中也很是感叹。其实反过来想想:学习一个东西可以先掌握其实践方法,认识到基础知识的重要,再回来学习理论其实也是不错的方法。有交流的学弟学妹,我也会给他们提醒到这一点,不要忽视大学中看似乏味的理论课,这些东西才是日后决定你技术高度的标尺。
接下来一段时间主要复习javase基础,重新学习设计模式,数据结构,操作系统,计算机组成原理,SSM框架深层次理解包括源码理解。这些东西每一个都不是善茬,任重而道远。但话说回来,程序员的一生就是不断学习的一生,对知识的渴望就是一种软实力。对于未来职业方向,暂定方向是java后端开发,我个人对Linux和计算机网络也挺感兴趣,未来也可以有多改变,当然这一切都不是空口说说就行。其实写博客也是一个很好的习惯,一来可以起到类似于日记记录生活的作用,二来可以提交自己学习的欲望,同时加深自己对于知识的理解和记忆程度。一定要在之后的工作中养成写博客的习惯。本次实习我认为很成功,虽然遇到了疫情,但是丝毫不影响,继续努力吧!