Learning Route for Java Web and Java Backend Development

Learning Route for Java Web and Java Backend Development

translate  March 11, 2017 23:14:18

Basics: such as computer systems, algorithms, compilation principles, etc. 

Web development: Mainly related to Web development, including HTML/CSS/JS (front-end pages), Servlet/JSP (J2EE) and Mysql (database) related knowledge. Their learning order should be from front to back, so the first thing to learn should be HTML/CSS/JS (front-end pages), which you can find on the runoob website above.

J2EE: What you need to learn is the Servlet/JSP (J2EE) part. This part is the part that Java back-end development must be very proficient in, so this part is the most laborious of these three parts. Regarding the selection of some videos of Servlet/Jsp, the industry recognizes Ma Soldier's videos.

The last step, you need to learn to use the database, mysql is a good choice for entry, and the mainstream relational database in the Java field is mysql. This part is generally encountered when you learn Servlet/Jsp, and the JDBC part is the database-related part. You not only have to learn to use JDBC to operate the database, but also learn to use database client tools, such as navicat, sqlyog, you can choose one of the two.

 Development framework: At present, the mainstream is the SSM framework, namely spring, springmvc, mybatis. You need to learn the construction of these three frameworks, and use them to make a simple CRUD web project. You may not understand what those configurations mean and why they are done, which will be left for you to understand later. But you must be able to quickly use the three of them to build a web framework, you can record the process of your first build, believe me, you will definitely use it. It should also be mentioned that in the process of building SSM, you may often come into contact with a tool called maven. This tool is also a tool that you almost must use in your future work, so you can also learn about maven in the process of building SSM. At your current stage, you only need to understand the basic usage of maven on the Internet. Some high-end usages will gradually come into contact with your work experience.

 在这一年里,你至少需要看完《Java编程思想》这本书。这本书的内容是帮助你对于Java有一个更加深入的了解,是Java基础的升级版。 总而言之,这个阶段的核心学习思想就是,在工作中实践,并且更加深入的了解Java基础。

 对于参加工作1年到2年的同学。这部分时间段的同学,已经对Java有了一个更加深入的了解。但是对于面向对象的体会可能还不够深刻,编程的时候还停留在完成功能的层次,很少会去考虑设计的问题。于是这个时候,设计模式就来了。我当时看的是《大话设计模式》这本书,并且写了完整版的设计模式博客。因此,我要求大家,最多在你工作一年的时候,必须开始写博客,而设计模式就是你博客的开端。

此外,设计模式并不是你这一年唯一的任务,你还需要看一些关于代码编写优化的书。比如《重构 改善既有代码的设计》,《effective java》。总而言之,这个阶段,你的核心任务就是提高你的代码能力,要能写出一手优雅的代码。

对于参加工作2年到3年的同学有的同学在这个时候觉得自己已经很牛逼了,于是忍不住开始慢慢松懈。请记住,你还嫩的多。这个阶段,有一本书是你必须看的,它叫做《深入理解Java虚拟机》。这本书绝对是Java开发者最重要的书,没有之一。在我眼里,这本书的重要性还要高于《Java编程思想》。这本书的内容是帮助你全面的了解Java虚拟机,在这个阶段,你一定已经知道Java是运行在JVM之上的。所以,对于JVM,你没有任何理由不了解它。

这个时候,你应该去更加深入的了解并发相关的知识,而这部分内容,我比较推荐《Java并发编程实战》这本书。只要你把这本书啃下来了,并发的部分基本已经了解了十之六七。与此同时,这个阶段你要做的事情还远不止如此。这个时候,你应该对于你所使用的框架应该有了更深入的了解,对于Java的类库也有了更深入的了解。


因此,你需要去看一些JDK中的类的源码,也包括你所使用的框架的源码。这些源码能看懂的前提是,你必须对设计模式非常了解。否则的话,你看源码的过程中,永远会有这样那样的疑问,这段代码为什么要这么写?为什么要定义这个接口,它看起来好像很多余?由此也可以看出,这些学习的过程是环环相扣的,如果你任何一个阶段拉下来了,那么你就真的跟不上了,或者说是一步慢步步慢。而且我很负责的告诉你,我在这个阶段的时候,所学习的东西远多于这里所罗列出来的。


总而言之,这个阶段,你需要做的是深入了解Java底层和Java类库(比如并发那本书就是Java并发包java.concurrent的内容),也就是JVM和JDK的相关内容。而且还要更深入的去了解你所使用的框架,方式比较推荐看源码或者看官方文档。另外,还有一种学习的方式,在2年这个阶段,也应该启用了,那就是造轮子。不要听信那套“不要重复造轮子”的论调,那是公司为了节省时间成本编造出来的。重复造轮子或许对别人没有价值,因为你造的轮子可能早就有了,而且一般情况下你造出来的轮子还没有现存的好。

  但是对别人没有价值,不代表对你自己没有价值。一个造轮子的过程,是一个从无到有的过程。这个过程可以对你进行系统的锻炼,它不仅考察你的编码能力,还考察你的框架设计能力,你需要让你的轮子拥有足够好的扩展性、健壮性。而且在造轮子的过程中,你会遇到各种各样的难题,这些难题往往又是你学习的契机。当你把轮子造好的时候,你一定会发现,其实你自己收获了很多。所以,这个阶段,除了上面提到的了解JVM、JDK和框架源码以外,也请你根据别人优秀的源码,去造一个任何你能够想象出来的轮子。

Part 4: Students who have been working for 3 to 4 years For students at this stage, it is difficult to improve, and the learning at this stage tends to be more diverse. Because in the process of the first 3 years, you must have been exposed to some other technologies more or less, such as big data, distributed cache, distributed message service, distributed computing, soft load balancing and so on. If you are proficient in any of these technologies, it will be a huge advantage in your future interviews, so if you are interested in a certain technology,

  It's time to dig deeper. This technique is not necessarily what you use in your work, but it must be relevant. And when researching a new technology, don't be in the dark. Some students go to the whole big data today, and engage in things like Hadoop and hbase. After a while, I felt boring and went to study distributed caches, such as redis. Then after a while, I went to study distributed computing, such as Mapreduce or Storm. As a result, in the end, it seems that I can do everything, and I boldly write about big data, distributed caching, and distributed computing on my resume. In fact, any of them are just superficial. When the interviewer asks casually, they will see through you.

There are three basic books that I highly recommend, namely "In-depth Understanding of Computer Systems", "Tcp/ip Detailed Explanation Volumes 1, 2, and 3", and "Data Structures and Algorithms". Among them, there are three books on TCP/IP, but we consider these three books as one big book here. These three books are suitable for three types of people, and "In-depth Understanding of Computer Systems" is more suitable for people who have been engaged in Java Web development and APP back-end development. "Tcp/ip Detailed Explanation Volumes 1, 2, and 3" is more suitable for people who do network programming. For example, if you use netty to develop, then you must have a deeper understanding of TCP/IP. The book "Data Structures and Algorithms" is more suitable for people who do computing research, such as the distributed computing just mentioned. In addition, I want to emphasize that what I say here is suitable, not that the other two books are useless for you. For example, if you are doing Java Web and APP back-end development, the book "Tcp/ip Detailed Explanation Volume 1, 2, and 3" is also very useful to you. This is just a primary and secondary relationship. If you have enough time, it is best to be able to read all three books intensively.

第五部分:参加工作4年到5年的同学经过前面一年的历练,相信你在自己所钻研的领域已经有了自己一定的见解,这个时候,技术上你应该已经遇到瓶颈了。这个时候不要着急提高自己的技术,已经是时候提高你的影响力了,你可以尝试去一些知名的公司去提高你的背景,你可以发表一些文章去影响更多的人。当然,你也可以去Github创建一个属于你的开源项目,去打造自己的产品。

  这次的开源项目不同于之前的造轮子,你这个时候是真的要去尽量尝试造出来真正对别人有价值的轮子。技术学到这个阶段,很容易遇到瓶颈,而且往往达到一定程度后,你再深入下去的收效就真的微乎其微了,除非你是专门搞学术研究的。然而很可惜,大部分程序猿做不到这一步,那是科学家做的事情。这个时候提高影响力不仅仅是因为技术上容易遇到瓶颈,更多的是影响力可以给你创造更多的机会。程序猿在某种程度上和明星很像,一个好的电视剧和电影就可以成就一批明星,程序猿有的时候也是,一个好的项目就可以成就一群程序猿。比如国内几个脍炙人口的项目,像淘宝、支付宝、QQ、百度、微信等等。这每一个项目,都成就了一批程序猿。我敢说,这里面任何一个项目,如果你是它的核心开发,光是这样一个Title,就已经是你非常大的优势。更何况还不止如此,Title说到底也是个名头,更重要的是,这种项目在做的时候,对你的历练一定也是非常给力的。


基础:比如计算机系统、算法、编译原理等等 

Web开发: 主要是Web开发相关的内容,包括HTML/CSS/JS(前端页面)、Servlet/JSP(J2EE)以及Mysql(数据库)相关的知识。它们的学习顺序应该是从前到后,因此最先学习的应该是HTML/CSS/JS(前端页面),这部分内容你可以去上面的那个runoob网站上找。

J2EE:你需要学习的是Servlet/JSP(J2EE)部分,这部分是Java后端开发必须非常精通的部分,因此这部分是这三部分中最需要花精力的。关于Servlet/Jsp部分视频的选择,业界比较认可马士兵的视频 。

最后一步,你需要学会使用数据库,mysql是个不错的入门选择,而且Java领域里主流的关系型数据库就是mysql。这部分一般在你学习Servlet/Jsp的时候,就会接触到的,其中的JDBC部分就是数据库相关的部分。你不仅要学会使用JDBC操作数据库,还要学会使用数据库客户端工具,比如navicat,sqlyog,二选一即可。

 开发框架:目前比较主流的是SSM框架,即spring、springmvc、mybatis。你需要学会这三个框架的搭建,并用它们做出一个简单的增删改查的Web项目。你可以不理解那些配置都是什么含义,以及为什么要这么做,这些留着后面你去了解。但你一定要可以快速的利用它们三个搭建出一个Web框架,你可以记录下你第一次搭建的过程,相信我,你一定会用到的。还要提一句的是,你在搭建SSM的过程中,可能会经常接触到一个叫maven的工具。这个工具也是你以后工作当中几乎是必须要使用的工具,所以你在搭建SSM的过程中,也可以顺便了解一下maven的知识。在你目前这个阶段,你只需要在网络上了解一下maven基本的使用方法即可,一些高端的用法随着你工作经验的增加,会逐渐接触到的。

 在这一年里,你至少需要看完《Java编程思想》这本书。这本书的内容是帮助你对于Java有一个更加深入的了解,是Java基础的升级版。 总而言之,这个阶段的核心学习思想就是,在工作中实践,并且更加深入的了解Java基础。

 对于参加工作1年到2年的同学。这部分时间段的同学,已经对Java有了一个更加深入的了解。但是对于面向对象的体会可能还不够深刻,编程的时候还停留在完成功能的层次,很少会去考虑设计的问题。于是这个时候,设计模式就来了。我当时看的是《大话设计模式》这本书,并且写了完整版的设计模式博客。因此,我要求大家,最多在你工作一年的时候,必须开始写博客,而设计模式就是你博客的开端。

此外,设计模式并不是你这一年唯一的任务,你还需要看一些关于代码编写优化的书。比如《重构 改善既有代码的设计》,《effective java》。总而言之,这个阶段,你的核心任务就是提高你的代码能力,要能写出一手优雅的代码。

对于参加工作2年到3年的同学有的同学在这个时候觉得自己已经很牛逼了,于是忍不住开始慢慢松懈。请记住,你还嫩的多。这个阶段,有一本书是你必须看的,它叫做《深入理解Java虚拟机》。这本书绝对是Java开发者最重要的书,没有之一。在我眼里,这本书的重要性还要高于《Java编程思想》。这本书的内容是帮助你全面的了解Java虚拟机,在这个阶段,你一定已经知道Java是运行在JVM之上的。所以,对于JVM,你没有任何理由不了解它。

这个时候,你应该去更加深入的了解并发相关的知识,而这部分内容,我比较推荐《Java并发编程实战》这本书。只要你把这本书啃下来了,并发的部分基本已经了解了十之六七。与此同时,这个阶段你要做的事情还远不止如此。这个时候,你应该对于你所使用的框架应该有了更深入的了解,对于Java的类库也有了更深入的了解。


因此,你需要去看一些JDK中的类的源码,也包括你所使用的框架的源码。这些源码能看懂的前提是,你必须对设计模式非常了解。否则的话,你看源码的过程中,永远会有这样那样的疑问,这段代码为什么要这么写?为什么要定义这个接口,它看起来好像很多余?由此也可以看出,这些学习的过程是环环相扣的,如果你任何一个阶段拉下来了,那么你就真的跟不上了,或者说是一步慢步步慢。而且我很负责的告诉你,我在这个阶段的时候,所学习的东西远多于这里所罗列出来的。


All in all, at this stage, what you need to do is to have a deep understanding of the Java bottom layer and Java class library (for example, the book on concurrency is the content of the Java concurrent package java.concurrent), that is, the related content of JVM and JDK. And you need to have a deeper understanding of the framework you are using. It is recommended to look at the source code or official documentation. In addition, there is another way of learning, which should also be enabled at this stage of 2 years, that is, building wheels. Don't listen to the "don't reinvent the wheel" rhetoric, which is made up by companies to save time and cost. Repeatedly building a wheel may be of no value to others, because the wheel you build may already be there, and in general the wheel you build is not as good as the existing one.

  But having no value to others doesn't mean that you have no value to yourself. A process of building a wheel is a process of starting from nothing. This process can exercise you systematically. It not only examines your coding ability, but also examines your framework design ability. You need to make your wheels have sufficient scalability and robustness. And in the process of building a wheel, you will encounter all kinds of problems, and these problems are often opportunities for you to learn. When you build the wheel well, you will find that you have gained a lot by yourself. Therefore, at this stage, in addition to understanding the JVM, JDK and framework source code mentioned above, please also build any wheel you can imagine based on the excellent source code of others.

Part 4: Students who have been working for 3 to 4 years For students at this stage, it is difficult to improve, and the learning at this stage tends to be more diverse. Because in the process of the first 3 years, you must have been exposed to some other technologies more or less, such as big data, distributed cache, distributed message service, distributed computing, soft load balancing and so on. If you are proficient in any of these technologies, it will be a huge advantage in your future interviews, so if you are interested in a certain technology,

  It's time to dig deeper. This technique is not necessarily what you use in your work, but it must be relevant. And when researching a new technology, don't be in the dark. Some students go to the whole big data today, and engage in things like Hadoop and hbase. After a while, I felt boring and went to study distributed caches, such as redis. Then after a while, I went to study distributed computing, such as Mapreduce or Storm. As a result, in the end, it seems that I can do everything, and I boldly write about big data, distributed caching, and distributed computing on my resume. In fact, any of them are just superficial. When the interviewer asks casually, they will see through you.

There are three basic books that I highly recommend, namely "In-depth Understanding of Computer Systems", "Tcp/ip Detailed Explanation Volumes 1, 2, and 3", and "Data Structures and Algorithms". Among them, there are three books on TCP/IP, but we consider these three books as one big book here. These three books are suitable for three types of people, and "In-depth Understanding of Computer Systems" is more suitable for people who have been engaged in Java Web development and APP back-end development. "Tcp/ip Detailed Explanation Volumes 1, 2, and 3" is more suitable for people who do network programming. For example, if you use netty to develop, then you must have a deeper understanding of TCP/IP. The book "Data Structures and Algorithms" is more suitable for people who do computing research, such as the distributed computing just mentioned. In addition, I want to emphasize that what I say here is suitable, not that the other two books are useless for you. For example, if you are doing Java Web and APP back-end development, the book "Tcp/ip Detailed Explanation Volume 1, 2, and 3" is also very useful to you. This is just a primary and secondary relationship. If you have enough time, it is best to be able to read all three books intensively.

Part 5: Students who have worked for 4 to 5 years have experienced the previous year and believe that you already have your own insights in the field you are studying. At this time, you should have encountered a technical bottleneck. Don't rush to improve your skills at this time, it's time to increase your influence, you can try to go to some well-known companies to improve your background, you can publish some articles to influence more people. Of course, you can also go to Github to create an open source project that belongs to you and build your own products.

  这次的开源项目不同于之前的造轮子,你这个时候是真的要去尽量尝试造出来真正对别人有价值的轮子。技术学到这个阶段,很容易遇到瓶颈,而且往往达到一定程度后,你再深入下去的收效就真的微乎其微了,除非你是专门搞学术研究的。然而很可惜,大部分程序猿做不到这一步,那是科学家做的事情。这个时候提高影响力不仅仅是因为技术上容易遇到瓶颈,更多的是影响力可以给你创造更多的机会。程序猿在某种程度上和明星很像,一个好的电视剧和电影就可以成就一批明星,程序猿有的时候也是,一个好的项目就可以成就一群程序猿。比如国内几个脍炙人口的项目,像淘宝、支付宝、QQ、百度、微信等等。这每一个项目,都成就了一批程序猿。我敢说,这里面任何一个项目,如果你是它的核心开发,光是这样一个Title,就已经是你非常大的优势。更何况还不止如此,Title说到底也是个名头,更重要的是,这种项目在做的时候,对你的历练一定也是非常给力的。


Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326030198&siteId=291194637