This part of Java learning is actually the focus of today. This part is used to answer questions that many friends in the group have asked, that is, how do you learn Java? Can you give me some suggestions? Today I plan to talk about some practical information, so let’s not talk about some learning methods and techniques, but directly talk about the content to be learned at each stage and even some books. The content of this part is also applicable to some students who want to switch careers to Java.
Before everyone reads it, I want to make two points. 1. Since I am a Java back-end developer, the recommended learning content is the Java Web and Java back-end development route. Students who are not Java Web and Java back-end developers should refer to their learning ideas appropriately. Do not copy. 2. The following recommended content for [Part 1] is intended to help you become a Java developer who can work as soon as possible. It is more suitable for students who are unemployed and are preparing to switch to Java.
If you are a school student, you must first learn the basics (such as computer systems, algorithms, compilation principles, etc.) before considering the following studies.
Part One: For students who have not yet done Java work, including some current students and students who are just preparing to switch to Java.
1. Java Basics First find a basic Java tutorial to learn. Here we can recommend a QQ group for Java learning and communication. You can go to this group to find corresponding video tutorials. When learning the basics of Java, you should try to do as much as possible. Many times, when you write out and run the things you take for granted, you will find that it is not the case. If you don’t believe it, just try it. After learning the above content, you should have a basic understanding of Java. You can write some simple programs in Java language, and you use the simplest editor, such as Notepad. At this time, don’t rush to the next part. Leave a few days to write some programs and become as familiar with these basic contents as possible.
2. Web development After you write programs for a few days, you will often feel confused because what you write seems useless, such as implementing a simple calculator, reading a file, etc. . At this time you should learn to write something that you find interesting, so you should learn more knowledge. These contents are mainly related to Web development, including HTML/CSS/JS (front-end pages), Servlet/JSP (J2EE) and Mysql (database) related knowledge. The order of learning them should be from front to back, so the first thing to learn should be HTML/CSS/JS (front-end page). You can find this part on the runoob website above.
You can try to write some pages yourself, of course, you can try your best to make it the most beautiful. This part of the content is not particularly important in theory for back-end Java, but it must at least reach a level where you can write some simple pages by yourself. Next, what you need to learn is the Servlet/JSP (J2EE) part. This part is a part of Java back-end development that you must be very proficient in. Therefore, this part requires the most energy among the three parts. And at this time, you have to learn Use development tools instead of Notepad. You can choose eclipse. After you download and install eclipse, please follow the tutorial in the video step by step, and be sure to do it more. Regarding the selection of Servlet/Jsp videos, the industry recognizes Ma Soldier’s videos, so we recommend them to everyone.
Of course, I haven’t watched his video myself, so I can’t say too absolutely. If you have a better choice, you can stick to your own and don’t let me interfere. I originally planned to publish a teaching video, but due to time issues, I decided to give up. But if you encounter problems while watching the video, you are welcome to come to my communication group to ask questions, or go to Douyu to watch my live broadcast and ask your questions. The live broadcast address and group number are on the left side of my personal blog. The last step is to learn to use a database. MySQL is a good entry choice, and the mainstream relational database in the Java field is MySQL. This part is usually exposed when you learn Servlet/Jsp. The JDBC part is the database-related part. You must not only learn to use JDBC to operate the database, but also learn to use database client tools, such as navicat and sqlyog. Just choose one of the two.
3. Development Framework After you learn the above content, you are not enough to participate in the work at this time, you still need to continue your studies. In order to improve development efficiency, companies will use some Java Web frameworks, so you also need to learn some development frameworks. Currently, the more mainstream ones are SSM frameworks, namely spring, springmvc, and mybatis. You need to learn how to build these three frameworks and use them to make a simple add, delete, modify, and query Web project. You don’t have to understand what those configurations mean and why you should do them. You can learn these later.
But you must be able to quickly use the three of them to build a Web framework. You can record your first construction process. Trust me, you will definitely use it. Another thing to mention is 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 will almost have to use in your future work, so you can also learn about maven while building SSM. At your current stage, you only need to learn about the basic usage of maven on the Internet. As your work experience increases, you will gradually come into contact with some high-end usage.
4. Find a job After you finish studying the development framework, you should find a job. Those who are in school will find internships, and those who have graduated will find full-time jobs. At the same time, you should not stop studying while looking for a job. To be precise, you should not stop studying in the future. You have just learned to use the above content in a hurry. You can gradually try to learn more. The Internet is your most important teacher.
Part 2: For students who have been working for less than one year. Congratulations, at this time, you already have a Java job. This stage is when you grow extremely fast, and you may often work overtime. But working overtime does not mean you can relax. Always remember what I said, from the moment you enter the industry, you must keep learning. During this year, you need to at least read the book "Java Programming Thoughts". The content of this book is to help you have a deeper understanding of Java. It is an upgraded version of Java basics. This book is very thick. It took me three months to read it. At normal speed, I should be able to finish it in about half a year. I’m not asking too much here, as long as you finish reading this book within a year. Of course, what I mean by reading it is fully absorbing it, rather than reading it once, so you may read some content more than once. All in all, the core learning idea at this stage is to practice at work and have a deeper understanding of the basics of Java.
Part Three: For students who have been working for 1 to 2 years. Students during this period have already gained a deeper understanding of Java. But the experience of object-oriented may not be deep enough. When programming, it still stays at the level of completing functions, and rarely considers design issues. So at this time, design patterns came. I was reading the book "Dahua Design Patterns" and wrote a full version of the design pattern blog. Therefore, I ask everyone to start blogging when you have been working for a year at most, and design pattern is the beginning of your blog.
Please remember that what I have mentioned are basically the minimum requirements, so don’t have any laxity. Otherwise, after five years, you should not envy others whose salary is higher than yours, nor should you envy others who have entered the industry. a certain company. This year, you must know design patterns well, and "Dahua Design Patterns" can be your starting point. In addition, design patterns are not your only task this year, you also need to read some books on code writing optimization. For example, "Refactoring to Improve the Design of Existing Code" and "Effective Java". All in all, at this stage, your core task is to improve your coding capabilities and be able to write elegant code.
Part 4: For students who have been working for 2 to 3 years. Some students feel that they are already very good at this time, so they can't help but start to relax slowly. Please remember, you are still very young. At this stage, there is a book you must read, it is called "In-depth Understanding of the Java Virtual Machine". This book is definitely the most important book for Java developers, bar none. In my eyes, this book is more important than "Java Programming Thoughts". The content of this book is to help you comprehensively understand the Java virtual machine. At this stage, you must already know that Java runs on the JVM. So, when it comes to the JVM, you don't have any reason not to know about it.
In addition, in the past two years of work, you must have been exposed to concurrency more or less. At this time, you should have a deeper understanding of concurrency-related knowledge, and for this part, I recommend the book "Java Concurrent Programming in Practice". As long as you read this book, you will basically understand the concurrency part. At the same time, there is much more to do at this stage than just that. At this time, you should have a deeper understanding of the framework you are using, and a deeper understanding of the Java class library.
Therefore, you need to look at the source code of some classes in the JDK, including the source code of the framework you are using. The prerequisite for understanding these source codes is that you must have a good understanding of design patterns. Otherwise, when you look at the source code, you will always have questions like, why is this code written like this? Why define this interface, it seems redundant? It can also be seen from this that these learning processes are interlocking. If you fail at any stage, then you really cannot keep up, or you will be slowing down step by step. And I am very responsible to tell you that when I was at this stage, I learned far more than what is listed here.
Therefore, don’t think that you have learned a lot. What I have said are only the minimum requirements. Not only me, many people have learned far more than the scope of this article during this period. If you can't keep up with the pace, after a few years, if the programmer market is not good, you will probably not only have a lower salary than others, and the company will not be as good as others, but also you will not be able to find a job at all. All in all, at this stage, what you need to do is to have a deep understanding of the underlying Java and Java class libraries (for example, the book on concurrency is the content of the Java concurrency package java.concurrent), that is, the related content of the JVM and JDK. And you need to have a deeper understanding of the framework you are using. It is recommended to read the source code or read the official documentation. In addition, there is another way of learning that should also be used at the 2-year stage, and that is to make wheels. Don’t fall for the “don’t reinvent the wheel” argument, it’s made up by companies to save time and money. Reinventing the wheel may not be of value to others, because the wheel you create may have already existed, and generally the wheel you create is not as good as the existing one.
But having no value to others does not mean it has no value to yourself. The process of making a wheel is a process of making something from scratch. This process can give you a systematic exercise. It not only tests your coding ability, but also your framework design ability. You need to make your wheel scalable and robust enough. And in the process of making wheels, you will encounter various problems, and these problems are often opportunities for you to learn. When you build the wheel, you will definitely find that you have actually gained a lot. Therefore, at this stage, in addition to understanding the JVM, JDK and framework source code mentioned above, you are also asked to build any wheel you can imagine based on other people's excellent source code.
Part 5: Students who have been working for 3 to 4 years It is already difficult for students at this stage to improve, and the learning at this stage is often more diversified. Because in the past three years, you must have been more or less exposed to other technologies, such as big data, distributed caching, distributed messaging services, distributed computing, soft load balancing, etc. If you are proficient in any of these technologies, it will be a huge advantage for you in future interviews. Therefore, if you are interested in a certain technology, you can study it in depth at this time. The technology doesn’t have to be what you use in your work, but it must be relevant. And when researching a new technology, be careful not to act haphazardly. Some students went to work on big data today, working on things like Hadoop and hbase. After a while, I felt it was boring and started to study distributed cache, such as redis. Then after a while, I started studying distributed computing again, such as MapReduce or Storm. As a result, in the end, I seem to know everything, and I boldly write on my resume that I understand big data, distributed caching, and distributed computing. In fact, any of them are just superficial. When the time comes, the interviewer will figure it out with just a casual question.
Be sure to remember that as a programmer, you may be exposed to many technologies in daily life, but if you want to make a technology your advantage, then you must have a better understanding of this technology. Most people can do it. Therefore, at this stage, you can no longer simply study the content of the previous three years. Although the previous study must still be continued if it is not in-depth enough, at this time you should consider more about building your advantages, which can also be called for difference. I believe that difference is not difficult to understand, it is to make yourself unique. Your study in the first three years is enough for you to become a basically qualified Java developer, but you are still far away from becoming an excellent Java developer.
The so-called excellence means being able to do what others cannot. What you have learned in the first three years can be mastered by many who have been doing Java development for several years. So in order to differentiate yourself, you need to find another way and find a direction to study in depth, hoping that in the future, you can become an expert in this field, such as an expert in the field of distributed computing, an expert in the field of big data, and an expert in the field of concurrency. etc. In addition, in addition to establishing your differentiation, you also need to make up for the deficiencies in your basics. Until now, I have not mentioned the basics. The reason is that the basics are very boring. Learning it too early is not only easy to make you confused, but also easy to cause psychological shadow when you are confused, so that you don't want to study these basics in the future. But the basics are what you must master when you delve into some fields. For example, if you study distributed computing, if you don’t understand algorithms, why don’t you just play with it? For example, if you want to do distributed caching, but you don’t understand the memory of the computer system, how can you do caching?
If your foundation is already very strong, congratulations, I believe you have fully realized the help of these foundations in your previous work. But I believe that most people's foundation is very weak. Even those who have graduated from majors, many people dare not say how strong their original basic knowledge is, such as algorithms, computer system principles, compilation principles, etc. But everyone’s time is limited, and it takes a year and a half to read each of these basic books, and you really can’t finish them, so you still have to make a choice. Although doing more art is not a burden, the problem is that doing more art comes with a price, which requires your time and energy. Personally, I prefer to get the maximum gain at the same price.
First of all, 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 regard these three books as one big book here. These three books are suitable for three types of people respectively. "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 Volume 1, 2, and 3" is more suitable for people who do network programming. For example, if you use netty to develop, you need to have a deeper understanding of TCP/IP. The book "Data Structures and Algorithms" is more suitable for people doing computing research, such as the distributed computing mentioned just now. In addition, I want to emphasize that the suitability mentioned here does not mean that the other two books are useless to 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" will also be of great use to you. This is just a ranking of priorities. If you have enough time, it would be best if you could read all three books intensively.
But if time is limited, then choose the book that is most helpful to you and read it first. Theoretically speaking, if you can intensively read one of these three books this year, you will be very powerful. With the foundation and previous work experience, you can explore your own field. During this year, you must plan your own field, establish your own advantages, and create differences. If you are not clear enough about your field, as you work longer and longer, you will be exposed to more and more technologies. At this time, you can easily be drowned in the ocean of technology. It seems that the more technologies you are exposed to, the more technology you are exposed to. The more you use it, the more you will use it, but you have no advantage. Some students may ask, "I, I don't know what my field is? What should I do?" To such people, I just want to say, "Damn it, you are asking me? Why don't I just do it for you?" You can learn well, okay?” At this time, you should have encountered a technical bottleneck.
Don’t rush to improve your skills at this time. It’s time to improve 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 of your own to build your own products.This time's open source project is different from the previous wheel-making. At this time, you really have to try your best to create a wheel that is truly valuable to others. At this stage of technical learning, it is easy to encounter bottlenecks, and often after reaching a certain level, the effect of further deepening is really minimal, unless you are specialized in academic research. Unfortunately, most programmers cannot do this. That is what scientists do. Improving influence at this time is not only because it is easy to encounter technical bottlenecks, but also because influence can create more opportunities for you. Programmers are similar to celebrities to a certain extent. A good TV series or movie can create a group of stars. Programmers sometimes do the same. A good project can create a group of programmers. For example, there are several popular projects in China, such as Taobao, Alipay, QQ, Baidu, WeChat, etc. Each of these projects has created a group of programmers. I dare say that if you are the core developer of any project here, just having such a Title is already a huge advantage for you. What's more, it's not just that. Title is just a title after all. More importantly, when doing this kind of project, it must be very powerful for your experience.
If you want to participate in such a project, in addition to relying on luck, influence is also a very important means. For example, if you have a certain influence in the field of distributed computing, if there are any good projects related to distributed computing, the other party is likely to invite you. Even if someone doesn't invite you and you take the initiative to go for an interview, if the other party knows your influence in this field, it will definitely play a big role, and this role may even exceed your current technical ability. Therefore, at this stage, your biggest task is to improve your influence and prepare for that day in your working career for the next ten years. If you can rely on your influence and the skills you have accumulated in the past to participate in a great project, then you will be successful in the next five years. Of course, I am fully prepared now and have only been a programmer for less than 4 and a half years. Therefore, regarding the 4 to 5 years part, my opinion may not be correct, and even if it is correct, it may not be suitable for everyone. .
Therefore, I hope that everyone can use their own judgment to decide how to spend this year. Conclusion This article basically ends here. The whole article is very long, but in fact it mainly talks about two parts, one is preparation for social recruitment interviews, and the other is learning Java career. I have already given my own opinions on these two parts, but again, when everyone absorbs knowledge, they must have the ability to extract the essence and remove the dross. Some of what I said may be right, some may be wrong, some may be suitable for you, and some may not be suitable for you. You have to be able to judge for yourself. In fact, it's the same in life and work. There are all kinds of people around you, some you like, some you hate. But in fact, people you like also have shortcomings, and people you hate also have advantages. You have to learn to learn the good qualities from people you hate, and never beat them to death, as this will only cost you a lot of opportunities to learn and grow. Well, having said so much, let’s stop here. I hope this article can help you as a programmer or as a programmer who is about to become a programmer.
The above is the detailed content of Suggestions on learning routes for Java beginners from senior experts. For more information, please follow other related articles on the PHP Chinese website!