Java EE企业级应用程序开发学习经验分享

时间:2024-04-11 14:24:54

一、下定决心

       2020年7月1日,是我下“决心”要开始学习Java EE企业级编程的日子。为什么要用“决心”这么强烈感情色彩的词汇呢,是因为学习向来就不是一个简简单单一蹴而就的事情,尤其像Java EE这样的高级架构和编程技能的学习,会占用你大量的时间和精力。我自己也会经过一番激烈的思想斗争,到底拿出这么多时间去学习一套如此高级的知识领域,真的会有收货吗?慢慢地,心里越来越坚定,与其在这胡思乱想,还不如把时间省出来都花在学习上来得更充实,所谓吾尝终日而思矣,不如须臾之所学也。所以,下定决心后就不要再迟疑,开干!(不对,是开学!)

 

二、当前学习成果汇报

       跟大家汇报一下我当前的学习成果。自2020年7月1日截止到2020年8月14日,我工作日每天拿出3个小时来学习,每天学习到晚上10:30,周六学习一天,周日休息,至今据不完全统计投入了150+个小时。这段时间我共学习并掌握了:

  1. Java SE标准库编程
  2. 反射
  3. Junit单元测试
  4. MySQL数据库
  5. JDBC
  6. HTML
  7. CSS
  8. JavaScript
  9. BootStrap
  10. Servlet
  11. Filter
  12. Listener
  13. AJAX
  14. JSP
  15. Maven
  16. MyBatis
  17. Docker
  18. Spring基础
  19. Spring Boot基础

等众多知识和技能。我感到特别充实,正应了那句话,付出总会有回报。接下来我还会继续深入学习Spring框架、SpringMVC框架、Spring Boot高级、Vue、持续集成与容器管理、K8S、自动化测试等在工作中都会用到的众多高级架构和相应领域的知识。我始终相信,艺多不压身,多学习总是有好处的。

Java EE企业级应用程序开发学习经验分享

三、学习Java EE对我工作的帮助

把学习和工作结合起来,会更加促进学习的积极性。学习Java EE这段时间以来,明显对我自己的工作也产生了很大的积极作用比如:

  1. 让我对开发和部署的整体流程有了体验式的认知,与大家的对话会产生更多的共鸣。
  2. 作为敏捷教练,Java EE及相关知识会帮我在推动自动化测试开发,持续集成和持续部署的工作方面提供极具价值的技术支撑。
  3. 让我更加深切体会当前团队遇到的痛点,协助我提出更加落地的解决方案。

我相信,随着学习的继续深入,它对我的工作将会继续产生积极正向的推动作用。

四、学习心得分享

和大家分享一下这一个多月我的学习心得。

  • 先给自己定一个小目标

做任何事情之前,给自己设定一个目标特别重要。我的心得是除了要设定一个特别宏达的目标外,还要把大的目标拆分成更小的目标,一开始的目标越小越好,因为越小越容易达成,就越容易获得成就感,也就越容易坚持下去。比如我一开始给自己定的目标就是两周内先把Java SE基础部分拾起来。等学习玩基础部分之后,再定下一个目标,再在两周之内把Java SE的高级部分学完。我没有给自己过大的压力,就这样步步为营,一步一个脚印的坚持到了现在,并且还会继续坚持下去。

  • 保持初心,不要动摇

当把目标定下来之后,一定要保持初心,不要轻言放弃,不要动摇你的决心。学习最困难的还是贵在坚持,在这个过程中,你很可能会觉得无聊,觉得学到的东西暂时用不到,觉得和我本职工作没关的内容学来就是浪费时间。每当这个时候我就告诉自己,想想初心,不用胡思乱想,多学点东西没有任何坏处,与其吾尝终日而思矣,不如须臾之所学也嘛。慢慢地,也就这么学过来了。

  • 重视基本功

我在前期学Java SE的时候投入了特别大的精力,而且重点学习了面向对象中多态的思想和编程技巧,网络编程的基本方法和注意事项以及Java多线程的实现方式等。我相信越是基础知识就越要重视,因为后续的高级架构中一定都是基于基础知识来构建的。事实证明就是如此,比如在学习解耦合思想的时候,在表现层的实现类中用服务层的接口来定义对象实现解耦,就是用了多态的思想。如果你不懂基本的多态知识,就根本没有办法理解多态如何实现了解耦合。基础知识,怎么重视都不为过。

  • 每天进步一点点

把学习内容分布到每一天里,不要尝试一下子都挤压到周末学。压迫式学习既不会有好的学习效果,还会影响学习士气。我会每天拿出3个左右小时的时间全身心投入到学习中,每天都进步一点点,坚持2周左右就养成习惯了。

  • 打卡,让更多人鼓励自己

在整个学习过程中,我会时不时“恬不知耻”地把学习状态和成果发布到个人朋友圈中。一来是炫耀一下,让自己更有成就感J。当然更重要的是为了打卡,让多更人监督我的学习,获得更多朋友的鼓励和支持,这样我就更不好意思放弃了。如果你也正在学习,请炫耀出来,我们一起督促前行吧。

  • 设定完成标准

给自己设定一个学习完成标准特别重要。就像工作中的验收标准一样,我们学习到什么程度才算是学完呢,是看一遍讲义吗,还是听完了教学视频就算完成了。每个人对自己的要求不一样。我对自己这样要求:

  1. 必须完成:让每节课的Java程序,在自己电脑的IDEA集成开发环境中成功运行起来。并且看懂所有的class类源文件代码和资源文件的配置项内容。
  2. 选择完成:听完所有教学视频。
  3. 最好完成:修改源文件,尝试实现自定义的某些功能点。
  • 与公司实际工作结合着学

强烈建议,在学完基础知识后,请尽可能去学习公司当前正在使用的架构知识,比如Spring Boot,Vue等。一来是和实际工作找到更好的契合点,二来如果遇到什么学习问题,还能请教身边的专家们,每每从专家同事这里得到答案后,都有一种醍醐灌顶的感觉,让我对公司的开发和部署以及运维的过程有了更深入的了解,更加有助于我和团队之间开展工作。这就是一个让学习效率事半功倍的方法。

  • 大胆假设,小心求证

学习其实是一个不断提出质疑与解决质疑后增长知识的过程。在学习的过程中,一定要有“大胆假设,小心求证”的思想。越是随着学习的深入,我就越是对公司中真实的工作框架和方法产生好奇感,于是脑海中就会迸发出很多大胆的假设或问题,比如:

  1. 合作部门提供给我们的是不是jar/war包,和相应的实现类及相应的方法。
  2. 在合作部门还没完成代码之前,我们这边调用的mock方法是如何实现的,是提前写了一个假的实现类吗,还是用的反射技术。
  3. 所谓的测试环境,UAT环境和生产环境,是不同的镜像吗,还是相同镜像下不同的容器,还是相同镜像下相同容器中不同的war包。
  4. 如何实现负载均衡。有多少台服务器,不同的服务器是用nginx实现的负载均衡吗。
  5. 不同的服务器访问的是同一个数据库吗?数据库如何备份的。
  6. 所谓的选择不同的环境,他们背后的逻辑是访问不同的容器服务器吗。
  7. 测试用的服务器和生产环境的服务器是同一台吗。
  8. 除了user数据库,还有哪些重要数据库。

然后我会带着这些问题去找专家们请教,各个击破,这个过程特别有成就感。

 

 

好了,以上就是我想和大家分享的学习心得,最后再送给大家几句话共勉:

  • 不是因为有了希望才坚持,而是因为坚持了才有希望
  • 不是因为成功了才挑战,而是因为挑战了才成功
  • 只要功夫深,铁杵磨成针

 

让我们找到更多志同道合的小伙伴,一起学习进步吧。