赞
踩
一. Java基础JavaSE基础是Java中级程序员的起点,是帮助你从小白到懂得编程的必经之路。
在Java基础板块中有6个子模块的学习:
基础语法,可帮助你建立基本的编程逻辑思维;
面向对象,以对象方式去编写优美的Java程序;
集合,后期开发中存储数据必备技术;
IO,对磁盘文件进行读取和写入基础操作;
多线程与并发,提高程序效率;
异常,编写代码逻辑更加健全;
网络编程,应用服务器学习基础,完成数据的远程传输。学习该阶段,可以完成一些简单的管理系统、坦克大战游戏、QQ通信等
二、数据库
数据库不仅仅是Java开发工程师的必学课程,也是其他语言都需要掌握的技能。用于对交互过程中客户的数据进行存储。该板块包括关系型数据库和非关系型数据库。例如:MySQL、oracle、redis、MongoDB等。数据库学习完毕后,可以将数据存储到数据库中,也可以通过SQL语句从数据库中查询数据,结合Java项目可以实现动态站点的数据的保存
三、前端技术
Javaweb阶段包括前端、数据库和动态网页。Javaweb是互联网项目的入门课程,是学习后面高进阶课程的基础。首先,我们先看一下前端板块。该板块主要包括如下几个模块:HTML5,网页制作标记语言;CSS,对HTML制作网页进行美化;JavaScript,嵌入在页面中的脚本语言,具备逻辑性;Vue,前端框架,简化了与服务器端交互的操作,用户良好的交互体验是必不可少的。学习前端技术后,可以完成类似京东、淘宝的前端工程的编写。
四、动态网页技术
动态网页是中级程序员服务器端编程的基础,是高级框架学习的必备课程,后期学习的框架、服务底层都是基于动态网页技术之上的。该板块包括Javaweb核心技术、包括Servlet、Request、Response、Cookie和Session等,通过这些技术的学习可以完成动态站点开发,可更好的完成服务器端与客户的交互,让页面的数据“动”起来,做出小型的应用系统。
五、编程强化
编程强化是对解决实际问题方面做一个深入的了解和应用,是对JavaSE基础的加强,对后期自动以框架和对一些服务框架的底层理解做支撑。编程强化板块主要包括如下几个模块:多线程高级、涉及线程内存、线程通信等;JVM优化,对JVM底层进行调优来提高项目执行效率;NIO,同步非阻塞IO来提高效率。学习该阶段,可以对原有项目进行优化从而使程序更快更稳定。
六、软件项目管理
学习了项目的开发与发布之后,我们就可以单独对一个项目进行开发了,但是在企业中开发中,除了编码之外,还需要项目管理、团队协作开发等,这就是软件项目管理板块要学习的内容。该板块包括如下几个模块:Git和SVN,团队协作开发工具;码云,代码托管工具;Maven,项目快速构建工具;Jenkins,项目持续集成工具;Sonar,项目代码质量管理工具等。通过该板块的学习,我们更加真实的还原企业开发的流程,具备真实企业的工作经验。
七、热门技术框架
使用Javaweb进行企业级开发是完全可以的,但是开发效率比较低,所以对常用的逻辑操作进行封装就形成了框架,因此框架是企业开发的入门技能。热门框架板块主流框架有如下几个:Spring框架,占据统治地位,其生态系统涉及各个方面解决方案;MyBatis框架,使用ORM思想对数据库进行操作。该板块学习后,就可以进行真实企业级项目开发了,做出的项目也会更加符合企业要求。
八、分布式架构、
方案随着互联网的发展,业务的复杂性和用户的体验性都需要提高,所以分布式架构出现了。该板块主要讲解的是分布式架构的相关解决方案。主要包括如下模块:Dubbo,高性能的 RPC 服务发布和调用框架;SpringBoot,简化Spring应用的初始搭建以及开发过程;Spring Cloud,一系列框架的有序集合,如服务发现注册、配置中心、负载均衡、断路器、数据监控等。该板块的学习,可以具备大型互联网项目开发的必备技术和实际经验,为进入BATJ打下基础
九、服务器中间件
中间件板块是大型互联网项目中必备的。服务中间件可以帮助各子模块间实现互相访问,消息共享或统一访问等功能。其包括远程服务框架中间件,例如阿里(Apache)的RPC框架Dubbo等;消息队列中间件,例如:阿里巴巴开源分布式中间件RocketMQ、高吞吐量消息发布和流处理服务Kafka等。学习服务中间件是中级JavaEE工程师必要技术,也是JavaEE架构师必须精通的技术。
十、服务器技术
不管是使用原生Javaweb进行开发,还是使用框架进行开发,项目最终需要对外发布才能供全世界的人访问到,而服务器板块就可以解决这个问题,所以服务器是项目发布的必要技术。该板块包括虚拟化和web应用服务器的学习,主要包括如下几个模块:Vmware,虚拟机软件;Linux,专门用于服务器的系统;Nginx,集群部署时反向代理服务器;Tomcat,项目发布时主要使用的服务器。该板块学习后,我们就可以把开发好的项目发布到服务器中,然后供你的小伙伴远程访问了,超酷!
十一、容器技术
容器化技术是近两年超级火的一个专题,通过容器化技术可以对环境进行打包,方便移植,大大提高了开发效率。该板块包括容器化技术Docker和其平台管理引擎Kubernetes,其中,Docker 是一个开源的应用容器引擎,可以打包应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows 机器上,也可以实现虚拟化。而Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效。通过该板块的学习,你可以通过上述技术快速搭建环境,节省开发时间,提高开发效率。
十二、业务解决方案
虽然我们已经具备了基础技术和高阶技术,但是要想与企业开发相接轨,还需要对实际项目的业务解决方案进行探究。而此版块就是在实际业务场景中的真实解决方案集合,常用的业务解决方案有如下:搜索业务场景解决方案、日志收集与分析场景解决方案、工作流引擎场景解决方案、任务调度场景解决方案、地图开发平台场景解决方案、支付开放平台场景解决方案、图表可视化场景解决方案。通过分析实际业务来学习这个解决方案技术集,完全可以达到中级甚至高级工程师水平。
链接:https://www.zhihu.com/question/265634331/answer/830026280
举个例子好了:我现在是个懵懂的小白,老师让我用java做一个图书管理系统:
图书管理系统得有页面吧,页面我该怎么开发呢?
于是你百度:前端入门,然后你就知道了,原来我使用 html js css就可以写一个页面出来了。
假设你坚持到了这一步,你发现用js写这些东西好麻烦啊,特别冗长,关键是原生的JavaScript还有各种浏览器兼容性的问题,你写出来的东西在chrome上能用,在ie上就展示的不正常了。
于是乎你又百度:js框架。浏览器告诉你js的框架有很多:JQuery,React,Vue,假设挑选了Jquery来做你的项目,你会发现,额 是比之前爽多了,毕竟框架会集成好很多方便的功能,你觉得你的效率在提高。
现在你坚持到了第四步,但是你又发现了新的问题,虽然相比之前JQuery操作起来是简单了许多,不过还是要我主动操作dom对象,有没有办法:我只关心我当前页面所用的数据是啥玩意就行了,改了数据之后,跟数据绑定的页面元素能够自动改变呢?这样我不就不用自己操作dom了吗?哦,对了,我之前搜索js框架的时候还有Vue和React,这都是啥玩意,于是乎,你百度:Vue入门。好了,你开始使用Vue来写你的前端页面了,相比之前效率又高了很多,使用Vue的过程中,你可能接触到越来越多的概念,前端的模块啊,打包啊等等。你也许觉得写前端真他妈好玩,于是乎你关闭了这篇文章,去搜索:前端学习路线图。。。。
PS:我现在很难受,我是来跟你们一起学习java的终于到后端了:
现在你已经会写页面了,可是管理系统的数据我怎么展示在页面上呢,总不能写死在页面上吧。要是能有个地方存这个图书管理系统的数据,并且我的页面可以从那个地方拿就好了。存图书数据的地方肯定就是叫数据库啦,于是你百度:数据库入门,书上告诉你数据库有好多种:sql server、mysql、oracle、db2 … 但是无论是哪一种都要先学习一下SQL,不管了,程序员就是爱学习,学呗你现在学会了sql了,你按照网上的说明安装了mysql数据库,知道了怎么用sql操作数据库里面的数据,真是个天才。
但是没用啊,我给别人用的是系统哎,我不能跟他说,你过来,我给你用sql展示一下数据库里面有哪些数据吧。既然是个图书的管理系统,图书的增删改查肯定都得放在后端来做吧,毕竟前端只是做页面样子和交互,后端才是处理数据的,对图书的增删改查就是对数据库的增删改查呗。哦,我记得之前java书上看到JDBC可以操作数据库,把这块知识点捡起来,试着写一段程序操作一下吧。好厉害,你竟然已经学会了java操作数据库,现在哪怕不打开数据库,不借助数据库的各种客户端你也能通过你的java代码查到库里面的内容了。
但是还有个问题,我前端页面怎么跟后端打交道呢?换句话说,我前端页面写的花里胡哨的,可是该怎么告诉后端程序:你给我展示一下数据库里面有哪些书?数据库里面有没有一个叫java从入门到放弃的书?于是你百度:js前后端交互你发现了Ajax,js中的这种技术可以请求后端的接口,拿到数据。然后用数据做相应的展示、交互之类的。并且你也知道了json,他几乎成了前后端交互事实上的数据标准。于是乎,你通过简单的百度之后,知道了该怎么向后端发起请求(当然了 也许在前5步的时候,你已经知道了怎么向后端发送请求,并且你有各种不同的姿势来发,什么原生的js啊,vue啊,react啊,jquery啊。各种姿势都不在话下)页面写好了,也知道在页面上怎么向后端发送指令了,现在就差后端接口了。
我刚刚写的java操作数据库,花里胡哨的,但是没用啊,我要先接收到前端发给我的指令,我再开始查询,或是各种管理吧。前端都没说话呢,你一顿操作,不是个沙雕吗?好吧,那我的java怎么能接收前端发给我的指令呢?你百度:java http接口。于是你知道了 servlet ,tomcat。原来我只要写一个servlet,接着将其放到tomcat中执行,就能对外提供一个接口了呀。天哪,我的servlet成功接收到了前端请求,根据前端的各种命令,后端开始尽职尽责的执行各种java指令,返回json数据给前端。完美啊,我做完了,关闭这篇文章,打游戏去了。。。
等等,首先那个jdbc操作的是在是太麻烦了吧,open connection 各种try catch 。上面不是有个mybatis说是可以简化jdbc操作吗,怎么玩的?百度一下:mybatis入门嗯,mybatis确实太香了。优雅的orm映射、灵活的sql编写。都让你觉得使用原生jdbc操作起来真是太费劲了。不对,我觉得用servlet也有点麻烦,每次建立一个servelt之后,还要在web.xml配置,而且写起来也不优雅,json数据都是各种拼装起来的,真麻烦。是时候学习一下spring了,大家都说spring是java程序员必学的,他到底好在哪呢,我的程序能不能用一下spring?让我百度一下spring入门。果然spring确实方便,有了spring,我再也不用new对象了,我想要的,她都懂我,给我提前准备好了之后,我直接拿就行了。并且啊,她还会贴心的把依赖关系给我搞好。没错,这就是Spring核心的容器和DI功能。你发现,spring家族竟然还有个东西:spring mvc,他是一个MVC框架,大家都在用,你也尝试了一下。十分钟后你觉得:我再也不会用servlet去写了,用springMVC写效率提升十倍不止。爱好学习的你在项目中用了spring,springMVC,mybatis。额,这tm的不就是SSM三大框架吗。嗯,不错,可以出去装逼了同学啊,
你这个管理系统怎么那么慢啊,我查了一本书 :java从入门到放弃,每次查询都要好几秒,程序太烂了吧。你很难受,你的程序被大家吐槽了,要是我能快一点就好了?加个缓存吧,大家都说redis很好,性能高,支持事务,还能持久化。你一顿操作,在项目中集成了redis。班上的同学都很满意,见到你就说,同学,你现在好快啊,每次都不到3秒。用户体验哗哗的提升。你很满足,很自豪。学校新进了一本书,刘慈欣的《三体》,大家都很喜欢看,一听到书籍上架的消息都去用你的系统。结果由于人数太多,你的系统没有抗住,挂掉了。。。不行,有点丢人。加机器吧,我要是能有十台机器,每台上面都部署我的程序,并且这十台都提供给用户服务。那么自然每台的压力就小很多了。但是该怎么做呢,总不能告诉他们说:一班的同学你们使用135的这台机器,二班的同学你们使用136的这台机器吧。要是大家都有统一的入口,但是通过该入口,请求会自动分配到这10台机器上就好了。于是你搜索一下:负载均衡。你发现了nginx还有h5负载均衡器等各种软件或是硬件实现的负载均衡(当然nginx不止这个功能)。加一台nginx吧,毕竟不要钱。你按照文档配置好10台机器的权重。现在用户的请求能被10台机器处理。学校又进了一批热门的图书,这次你的系统没有垮掉。真厉害。
又来了一个需求,系统加了一个关注的功能,用户可以关注某本未上架的书,等它上架的时候,系统要通知用户。所以该怎么做呢,现在的你可能想着,我写个程序不停的去询问数据库,看这本书有没有上架。但是这么做有个问题,就是及时性的问题,你该设置多久询问一次呢?所以,是时候使用mq了,当书上架的时候,将书的信息放到消息队列中,消息消费者一监听到消息,立马就去发送通知。怎么样,这样做是不是逻辑上也解耦了,代码写着也不累了。
你闲着蛋疼,往系统里面新增了各种各样的功能:当用户预约的书到了的时候,发送提醒。一些淘汰的书籍你还给加上了公益拍卖的功能,用户只要竞拍,就可以获取到这个书籍,为公益做贡献。真是个商业奇才。你越写越多,想法犹如泉水一样连绵不绝,然后你发现了一个问题,系统实在是功能太多了,你随便改一下东西可能都影响到别的功能,启动一次动不动五六分钟,关键是有一些新的小伙伴加入你的时候,每个模块的功能他都要了解,否则一不小心就像拍仓鼠一样,一个bug改了,又冒出来一个。拆分吧,装个逼。拆成微服务。用户一个服务,图书的管理一个服务,拍卖一个服务,短信一个服务。每个服务由不同的人来负责,大家都对自己的业务比较熟悉,项目小而精致。但是拆分会面临以下很多问题:怎么拆分,如何划分颗粒度拆分后怎么协作下游服务频繁的失败怎么办怎么保证高可用怎么保证数据的一致性系统间怎么监控?(调用链路、日志、报警机制、)…
后面的路,只要有好奇心和不安分的想法,你就会控制不住自己的双手打开谷歌:xxxx 该怎么办?祝你入坑愉快 哈哈哈哈哈哦对了,别忘了早点准备好《颈椎病康复指南》和《如何预发脱发》
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。