1、学什么?
就目前而言。2020年。
java基础语法,Spring boot官网,mybaits官网,就三个,其他都不要学,因为不是必须的。
zookeeper不要学,JSP不要学,底层servlet不要学,netty不要学,jvm也不要学,底层原理也不要学,多线程一类的也“先”不要去学,另外各种设计模式也先不要去学,然后一旦有人谈起架构,马上捂住耳朵,“先”不要去听,这些都以后再说吧。
其他我没提到的,反正也不要去学。就我提到的那三个,你学精了能做产品了,光是文档看下来做个企业级demo都需要好几个月,经过一轮实战的领悟,把开发到发布到服务器一条流程走通,相关所需要的工具都涉及到了(git/maven/linux/shell/json/xml/jdbc等等),起码1-2年吧,请问哪里有时间去学那些濒临淘汰的框架和不是底层的底层。
总之,培训学校在教的框架一概不学,别跟我说别人都在学你不学,要相信你是科班出身本来就很强,不用去学那些花架子。
不要去学别的,天知道你会进入什么样的公司,公司里有前辈在用你偷师学一下。
你还在学校,可能还在怀疑,我给你举一个例子吧。
netty不要去学,因为这东西诞生的年代久远,那时候消息队列产品还没普及,但是现在呢?消息队列产品已经不再奢侈了,你都无需亲自动手去写一些网络通信的代码。还有一些框架里面虽然用netty,已经封装好了,比如dubbo。它就是个框架,一些高端的框架也是框架套框架。反正他不是原理,也不常用,你要学原理去看一下socket套接字,真要用看下文档边学边用。
另外多线程什么阻塞非阻塞的、jvm和servlet这类底层原理性的东西为什么也不要学?因为你是科班出身,操作系统原理和web应用程序原理都学过的话,没必要再为java单独啃一种原理,说白了这些所谓的技术都是在重复造操作系统的轮子而已。死磕多线程主要存在于10年前单机应用的年代,想提高单台服务器多核CPU利用率。现在这个时代,服务器端已经从单台服务器升级到了云计算虚拟化技术的时代了,再经历过了微服务架构的时代,纠结线程的不多了,更多关注进程,你看吧,绕了一圈又回到操作系统了。
java已经有太多东西被淘汰了,什么ssh、ejb、swing、j2ee、j2me,当年精通这些的人,现在不知道在哪里。
作为一个专业的程序员,这些东西如有需要刷题应付面试即可,老实人才正儿八经地去研究这些不上不下的东西(上指服务器端架构设计理念,下指真正的原理)。
2、开发流程是怎样的?
你是科班出身,开发流程见软件工程。
需求、设计、编码、测试、部署。。。。。。
不想把整本书贴一遍,白话一点吧。
首先你确定采用面向对象的设计,还是结构化设计。
比如我们先采用结构化设计好了,你把需求整理出来,然后需求能和数据流图对应上,不许画什么流程图。
那么我们如果采用面向对象设计的话呢?你把需求转化成UML图,各种UML图,然后UML图要求和你的工程、代码能对应起来,如果程序跑起来了,然后代码和图对应不起来,说明你的设计肯定有问题的。
写出一个能运行的程序很容易,难的是程序可测试性、重用性、可维护性。
我们都知道java是一种面向对象语言,圈内喜欢讲高内聚、低耦合,讲重构,重用,那么问题来了,假设一个类被多处引用,如何保证你修改了这个类后程序按照你预期的运行呢?
你会设计什么样的测试用例去测试它呢?
文档不管多少,至少要和实际的东西对应起来,人员流动这么频繁的行业,如果做不到,谈什么可维护性。
然后就是发布到服务器,后续运维就不描述了。
最后,你这些问题都考虑到并能解决了,你就能了解到要设计并开发出一套好的系统是如此艰难。还有好多点没讲到,有时候金矿就在你身边,总之好好学正规课本上的东西,比外面那些有的没得强太多了。
网友评论