大家好,我是帅气小伙。非常抱歉,在实习了45天之后才跟大家分享。在这45天的实习生活中,记录了我如何从一个android开发者转型成为java后台开发者。记录了我如何从一名在校大学生转变为一名技术工作者的历程。在此献上此文,与君共勉。本文的写作目的并不是想表达我有多么厉害,而是旨在分享我的感悟。
我调整了我的技术心态,抱着欣赏的眼光去接受新的知识
入职公司的第一天,我看到了我的座位表,我被安排到了Java后台开发的位置上。显然这是一个前所未有的挑战,因为在此之前我没有任何开发服务端的基础。JS,Html,Jsp,Spring等等这些web技术我全部是零。我静静的回到了座位,迫不及待地问了旁边的android组,要来了他们的APP,然后用jadx反编译了一遍,看了一下他们的技术框架。MVP,retrofit2.0,Rxjava等等。我多么希望能够参与到他们的项目,毕竟这些都是我熟悉的东西。可是我现在的工作岗位是Java后台。而经理似乎也不知道我之前的技术栈。上来就给了我一个基于SSM的后台项目SVN权限。吩咐我先熟悉一下公司的代码,等入职培训完之后再给我们分配任务。
我试图多次地给经理暗示,我是学android的,可是经理总是说,技术都差不多的吧,没关系,慢慢来。看来是没办法了转岗位是转不成了,那就去慢慢地接受了。我给自己的理由是:实习6个月,学一门新的技术,不亏啊!于是我下了一个(IntelliJ IDEA )开始了我的java后台开发之路。
我用做android的思维去学习java后台
我的一篇文章《安卓教你如何山寨APP》这是我学习Android入门的思维。
我的思想是先从导入项目开始,而不是从建项目开始。于是我写了一篇入门Java后台的文章,记录的是我熟悉SSM框架的过程。《零基础入门Java后台SSM框架》
很多人都会质疑这种学习方式,认为这只是在搬砖,实际学到的没多少,学习必须循序渐进,没学会走路就想去跑步,急于求成。这个问题,我一直跟我的舍友在争论。但是后来我不再与他争这个话题了。原因是,我很快就能做项目了,在项目实践中认识底层,而他却在Jsp Servlet Spring 这些枯燥的知识点徘徊。我否认学编程从基层学起的观点。可是在正式走上了工作岗位之后,你又有多少时间循序渐进呢?是的,公司并不会在乎你懂不懂,只在乎你能够在什么时候实现这个功能,如果你实现不了,那就不好意思了,要换人了。天下编程,为快不破。就这样我开始接触公司的项目,并在公司的框架中,实现一个模块的功能。
我的第一个任务
结束了一周的入职培训,我接受到了一个任务,就是在原有的系统中加入一个系统日志模块,记录下用户的操作记录(创建,删除,修改),在组长的提示下,他告诉我,这个系统是从一个开源项目做的二次开发
这是一个开源的项目我的任务就是:将里面的日志模块,独立出来,集成到现有的系统。
这个开源项目的框架是
spring+springmvc+hibernate+shiro+quartz+maven+easyui
而公司的项目框架是
spring+springmvc+mybatis+shiro+maven+easyui
显然在这个搬运的工程中,我会了解到
shiro的权限管理机制
hibernate和mybatis这两个数据持久层框架。
而且需要做一个拦截器,拦截用户的(创建,修改,删除)的Action。
easyui的datagrid
很不幸,我在github下载回来的代码,不能运行,我只能通过项目的文件结构猜测。
要搬运的东西有如下
1.拦截器
2.日志模块的Controller
3.日志模块的jsp文件
4.日志模块的数据表
这个任务,我大概用了4天的时间,如果你敢兴趣,不妨去将这个框架转变为ssm。我相信你会有很大的收获。
我和高级Java工程师的故事
坐在我旁边的是一名有10年Java开发经验的工程师,第一天,回来上班,我就问了他一句:“你也是实习生吗?”,爆炸!之后的一个星期,我们似乎没有说过一句话。。。
在一次的项目讨论中,我非常有幸能跟他合作开发项目。
事情的起因是:
公司有个项目,原本是要在Web应用中运行一个Java做的桌面版程序(Swing做的),但是由于这种技术在浏览器支持不太好,而且不能有效地控制用户对数据的操作权限。于是总监决定,把这个应用程序作为一个桌面版的工具(通过拖拽的方式动态生成一个表单,而这张表单就拥有了自己的数据库表,用户可以修改,增加里面的内容),恕我不能上图(保密协议的)。而我负责做一个后台界面用于展示这个页面给用户。当然这个页面是动态的。你只需要通过桌面程序导入一个ZIP包(HTML,js,css),然后就能生成一个jsp页面。还有提供手机访问的restful接口。
我是如何获得了这个任务?
这一次休息的时间,他问我能不能帮他一个忙,你测试一下这个地址,能不能在你电脑中打开(就是在浏览器中打开java桌面程序),后来我利用休息的时间帮他完成了测试,并找到了原先不能运行的原因(浏览器要运行Java桌面程序,必须安装下面两个插件,而谷歌是不支持的)
java浏览器插件,在官网可以下载从此,我获得了公司大部分源代码的访问权限。说这个我想表达的是,做为一个新人,你不能害怕去接受任务,你要乐于助人,主动学习,别人才会高看你一眼。
员和猿的区别是什么?
员和猿的区别是:可以快速使用工具,而且会制造工具;
这个是高级java手把手教学我领悟到的,越来越多的IDE,让编程越来越方便。但是很多时候,我们对IDE的理解仅仅是一个会智能提示的编辑器和一个能够让程序运行起来的工具。当然你确实学会IDE的主要功能。但是没有把这款工具运用到极致。就拿IntelliJ IDEA 这个工具来说吧。
idea自带maven工具,idea自带数据库浏览,idea自带版本控制插件
说这些,我并不是推荐大家使用idea,而是希望大家在使用一款工具的时候,能够用得溜一点,别用得那么业余。。。就是因为这个工具用得不溜,被高级java骂死了。
说到制造工具,试问现如今的你是否写过许多重复的代码,而你是否rebuild过,是否将他封装成通用的代码,而我在和高级java接触的这段时间,我发现他有许多拿来就用的工具代码。如果没有,请你现在开始积累,多年以后这就是你的资本。
如何分析分布式是否合理?
回到这个任务,当我把后台管理的页面做完后,我准备做手机的restful接口,但是又引发了一场关于分布式的思考。
管理后台是不提供Restful接口的
云平台是专门为手机提供服务的,当然他本身也有后台管理系统。
表单服务是专门保存表单数据的,他只是一个dubbo服务,没有界面。
现在问题关键在于,如果手机App需要拿某一份表单的数据,必须通过管理后台调用RPC接口这一条链,而这个过程中完全不需要操作管理后台的业务数据,也就是说管理后台只是转发。如果管理后台的服务器宕机了,结果导致表单服务也宕机。这显然不合理啊。
经过了一番讨论,最终的结果变成了这样
改进后的结构这样就缩短了回调链了,管理后台只相当于云平台的客户端,只是云平的后台管理界面,而管理后台宕机并不会影响手机App的服务。
就这样,我学会了dubbo服务,restful接口是如何去做的,代码如何去实现。在这个任务里面,我逐渐认识到了其实代码并不是很重要,关键的是有合理的设计,一开始就是没有设计好,所以导致写了很多冤枉的代码。。。
我开始独立的去搭建框架负责一个新的项目
在此之前,我都是在公司原有代码的基础上,去新增一些模块,但是现在要从零开始搭建(也是从公司代码演变吧),把原来spring转变为spring-boot。
于是我将上述的开源项目独立得分离出来,基于spring-boot,mybatis,shiro。开始逐渐深入理解这个脚手架了。后来发现这个脚手架并不是那么地完美,代码要写非常多重复的东西。但是做多了就逐渐理解了MVC这个机制了。
这是我搭建的新项目很庆幸,我能够和总监一起完成这个项目,我必将在这个项目中学会很多新的知识,这个系统主要是用于esb接口的管理的。设计听起来非常棒,我很期待!!
</2016><2017>未来</2017>
2016年我也不知道做了什么,想不起来了!!
2017年,我希望做的事情:
1.顺利毕业
2.顺利转正
3.成为一名伪全栈工程师(安卓+web前后台)
4.搭建自己的技术博客
总结
这大概是这45天我的学习经历吧,对这家公司还是挺满意的(我也不知道别人对我满不满意)。算是从Android转了Java后台吧。如果大家有对我更好的建议,欢迎批评和指正。每天都是对着电脑,我都发现我自己写作水平下降了,就写到这里吧。
网友评论