The path to advanced Java development

Source: Internet
Author: User
Tags zookeeper

Background One

I have been in touch with Java development for more than a year.

From the beginning of the jerky contact with grammar, causing the compiler to report a variety of grammatical errors, to contact Ood ideas, encapsulation, inheritance, polymorphism, mengmengdongdong to hear them, and then to learn web development, thinking that these may not be important, the actual use of nothing but DAO, Service, controller just And finally waking awakened: In this way, a year has gone.

People always want to have some goals of struggle, for the time being I am the beginning of the next year, thinking about the next learning path.

Background two

I have been thinking about how to learn Java in the end, what to learn, where to start learning, but also learn how deep?

What I was thinking was, first, wide and deep. So, in addition to training out of the SSM/SSH, but also the spring Boot, Zookeeper, Dubbo, ROCKETMQ, ActiveMQ, Kafka, WebSocket, Git, Redis, Linux, Fastdfs, Nginx , multi-threading, JVM, BIO, NIO, AIO, Netty, Docker, Springcloud, Storm, and common design patterns.

But to think about it, a one-year experience of Java development, which has so much time and energy to learn so many things thoroughly. In the end it is only the fur, a little can be used.

And so many things, presumably most people in the company can not use. As I am now in this company, the project is nothing more than a ssm+redis, in the use of MAVEN modules.

I've seen some of the things I've been reading before: Most of the Java developers ' companies are small companies, and they're all in touch with the usual projects, not even the distributed ones, about learning skills and raising pay.

Just beginning to see these, circumnavigated a chill rise, he did not say wrong. But also the heart is unwilling. Since the choice of the road, how to give up lightly. Chances are always there. The so-called One Life two luck three feng shui, four accumulate merits five reading, if True faith, afraid of a language into a prophecy, one for the fate of the two for the transport.

Beginning

How to learn I now have only a general idea, write, do a share, but also for their next year's study set a goal.

The techniques mentioned above, although I did not learn the fine, but generally have some understanding. While it's a little bit useless, it's important to understand the architecture of the system as a whole. Can know the so-called distributed system of the approximate implementation of ideas, not others said with a Dubbo, Zookeeper, but they do not know, do not understand what the two goods are dry.

The most important point is that, to learn these techniques, most people first step is Baidu first. This I have done, the results read 10,000 technical articles, still foggy. So say, thousands of miles to execute, start with beating. Once again, it's natural to understand.

Second, Linux is really important. I learned something in college, but I forgot it. But, to this day, I can only say that all of the things that Javaweb developed are deployed on Linux. Do not learn it, you even those MQ environment can not set up, talk about what to learn.

If you want to learn it, it is not difficult (everyone will say to their own things ...) ), get a VMware virtual machine software, open a three or so virtual machine, and then get a Xshell, and then began to follow the online tutorial to learn something about the environment of a self-built, it is OK. Of course, it's best to start with the JDK and Tomcat.

Body

Approximate order of study

  1. Design pattern: Familiar with 23 design patterns. While the use of design patterns is slightly redundant for most projects, in some cases the experience that these predecessors have summed up can actually be beneficial to the people's Congress. Of course, the reason to learn it first is that the JDK source code and other types of frameworks, most of which use a lot of design patterns. If it is not familiar with it, then in the future to see the source code when it is not possible to overnight.
  2. Data structures and algorithms: This thing is a little bit bigger. For me, since I chose Javaweb development, it is obvious that I am completely ignorant of these. However, it is recommended that the "Data structure and algorithm" This book to look at once-this coarse is very coarse, I am only the data structure, sorting algorithm and data structure of the curd efficiency of the record, then do it. The reason to understand this, mainly in Java, some of the collection is the use of these structures, so at least to know the approximate structure of these data structures, as well as the efficiency of adding and deleting changes.
  3. JDK Common package source code: This I am also in progress, from the IO package began to see. But halfway through the design pattern went. The benefits of reading JDK source code are many, and it is obvious that you can use each class to get a good idea of what classes are capable of doing and how these classes are generally implemented. Of course, this does not need to look very thin-too fine in fact also can not understand. In addition, it is important to have a JDK document standing.
  4. JVM1: This is the extent to which I now know, only to say that it is learning. But at least the basic concept to understand is the JVM memory model, Cenozoic, Laosheng generation, GC algorithm these. These things are hard to see if they are just a rough look. In addition, a lot of things are actually closely linked. For example, learning multithreading before learning a volatile keyword, just to know that it is to ensure the visibility of the variable, each time it gets the variable annotated by the keyword, get directly from the stack, not from the thread's buffer. Then knowing the JVM, you know that the so-called buffer is Tlab, which is a separate buffer in the heap that is divided into each thread.
  5. JVM2: In addition, you need to understand how classes are loaded. I haven't studied this piece for the moment. But the ClassLoader, including reflection, are really important. Understand this, in order to understand more thoroughly the operation of the code we write-not to say these virtual, on the other, if you want to write a good framework, mostly to use these. I saw a book about writing the JVM in the go language, and I was going to knock it over the book.
  6. JVM3: There is the JVM optimization. What I now know is to set some parameters to reduce the number of GC times. If you want to know more, you should still use specialized tools to get the health of the JVM-I don't know it yet.
  7. Common, guava and other tools jar: These I want to understand is good, can know what function can be used directly. Instead of a function that didn't know, he ran to build his own wheels, and the results were a mess. Of course, if there is any future, you can also look closely at the specific implementations of these jars. But as far as I am concerned, the feeling will still be good.
  8. Various frameworks of source code: Spring, SPRINGMVC, MyBatis and so on. The source code must be read well. But I haven't read it at the moment. The specifics are not very clear.
  9. MySQL: The importance of the database is self-evident. The reason why it is not Oracle is that--oracle is too difficult. Just as a Java development, in their own technology has not mastered the full situation, or do not be ambitious. It is good to have some knowledge about MySQL optimization and some related technologies such as sub-database, distributed transaction and so on. At least ask you at the interview about the database optimization can say thinking.
  10. Other: Finally, recommend reading "Java Programming thought", "effective Java" and other books--of course, in addition to these Xuan--it is because these are actually internal strength--books, some special description of how to use a certain kind of technology book is also essential. This is like martial arts master Duel, let the internal strength of the furious, there must be a skill, to have a useful.
End

Finally, about where to find these learning materials. I just want to say that, as a programmer, even if this is not found, it is really a bit too much. The use of search engines, 95% of the problem, have been paved by predecessors.

The path to advanced Java development

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.