@[toc]

How to learn the basics of Java?

At that time, as an ignorant boy, I learned C and C ++ as well as data structure in my freshman year. Later, I learned Java by myself. With the C ++ foundation, learning Java actually feels quite easy to get started. If you do not have the foundation of C or C ++, it is recommended that you first need to lay the foundation of Java. What does the foundation mean? Basic grammar, can use! As for the source code, it is not recommended to look at the source code at the beginning of learning, absolutely discourage!!

A few recommended books to get started:

  • Head First Java

    • It’s easy to understand, it teaches you how to think like an object developer, and it allows you to quickly grasp the knowledge in your head
  • Crazy Java handout

    • It’s comprehensive, it’s thick, It covers the basic syntax structure of JAVA, the object-oriented characteristics of JAVA, JAVA set framework system, JAVA generics, exception handling, JAVA GUI programming, JDBC database programming, JAVA annotation, JAVA IO stream system, JAVA multithreading programming, JAVA network communication programming and JAVA reflection mechanism.
  • Java Core Technology Volume I (Original Book 10th Edition)

    • Special classic books, the content is more realistic, but there is no crazy JAVA handout so down to earth, very simple, difficult to get started is not very big.

Advanced Books:

  • Java programming ideas, fourth edition

    • The Bible paragraph, absolutely good book, but not suitable for just beginning small white, if you think you want to bite down, you can also explain, it speaks things, very detailed, often revealed: why the Java language is designed this way, if you want to advance, this is absolutely a good book.
  • Java Network Programming (3rd Edition)(O ‘Reilly Java Series)

    • This book is a textbook for an elective course when I was in college. It mainly explains the network application in Java. I can consider it, but it is not a high priority.

Watch videos or read books? Early novice will definitely have a doubt, reading or watching video? Reading books is boring and I can’t stick to it. Watching videos is great, but I can’t remember it after watching it.

Personally think, early reading will be faster, but it is very boring, you can look for some full set of video in B station (small broken station niubiu), remember, while watching while knocking, basically remember!! Suggestions, read a section or a chapter, with the memory of the code out, certainly slow at the beginning, but in the long run, a lot of help, basically can remember and master.

If there is a video, the following two are recommended:

  • Java Zero Basics Tutorial

    • There are more than 700 episodes of teacher Song Hongkang’s videos, which can be watched for a long time. The content is very complete, and the presentation is very detailed. It is not boring.
  • Java Zero Fundamentals tutorial video (suitable for Java 0 fundamentals, Java beginners)

    • Again 700 or 800 episodes, pretty detailed

Conclusion: Video is not much, so is the book, the more you want to be comprehensive, the less likely it is, there is a book, a video is enough, catch the big and let the small, otherwise, it is easy to give up, really from the beginning to give up.

Play more, practice more, practice makes perfect! Quantity of code to occur qualitative change!

In the process, the main things to learn (each can be broken down into a small number of pieces, the following is just a summary, if you think about it) :

  • Basic data types
  • Common Keyword
  • interface
  • An abstract class
  • A collection of
  • Inheritance (subclasses and superclasses)
  • reflection
  • serialization
  • A dynamic proxy
  • annotations
  • Lock with multithreading
  • IO programming
  • JDBC
  • Java Network Programming

What to learn after learning the basics?

After I finished learning the foundation of JAVA at that time, JDBC learned, know how to connect the database, thinking about making the website, I think most people are also, learned something, want to do something out!! This is a very normal state of mind, constantly have feedback to move forward ~

At that time, I had been working on front-end and JSP for a period of time. If I learned Java, I could put front-end knowledge at a lower priority level, so that I could basically understand and use it in the early stage. Don’t forget my real goal.

I learned my front end at w3School, you can go and learn it, you also learned video on MOOCs, but it’s not important, you can click HTML, you can click CSS, you can click JavaScript.

After learning the general knowledge of the front end, you can consider learning servlets and JSP. There are also some people who say that in fact, they do not need to learn this thing again. Now they can directly go on the framework. What I’m saying is, if you’re pressed for time, you can do this. And if you have the time, in college, you might want to consider learning this too, because you’re not going to come back to it, and this is what the framework is built on.

Sometimes, to go slower is to go farther. Two recommended JavaWeb books:

  • In-depth Analysis of Java Web Technology (Revised Edition)

    • This book mainly around Java Web related technology from three aspects of a comprehensive, in-depth elaboration. Firstly, the front-end knowledge is introduced, that is, some basic knowledge involved in JavaWeb development, including Web request process, HTTP, DNS technology and CDN technology. Secondly, it deeply introduces Java technology, including I/O technology, Chinese coding problem, JAVAC compiling principle, class file structure analysis, ClassLoader working mechanism and JVM memory management, etc.
  • Tomcat and Java Web development techniques in detail

    • This book is mainly to explain JavaWeb and Tomcat related knowledge points, in order to learn JavaWeb in the future preparation.

Another recommended blog address, mainly JavaWeb notes, well said: JavaWeb

After learning these can learn the framework, the framework is used most is reflection, dynamic proxy!! Be familiar with it.

At that time, the framework I learned was not the mainstream one, but JFinal. You may not have heard of it, and it is relatively simple. However, it is not recommended for you to learn it now, so you can understand.

SSM(Spring+SpringMVC+ MyBatis), SpringBoot, SpringBoot, SpringBoot, SpringBoot, SpringBoot, SpringBoot, SpringBoot, SpringBoot, SpringBoot, SpringBoot, SpringBoot, SpringBoot, SpringBoot, SpringBoot, SpringBoot, SpringBoot, SpringBoot, SpringBoot, SpringBoot, SpringBoot, SpringBoot, SpringBoot, SpringBoot

It is suggested to learn, you can learn MyBatis first, there are JDBC in front of the foundation, you can quickly get started. Recommend their own blog: MyBatis study notes

If learning video, I suggest to B station search, for example: SSM framework collection

There are many learning videos about SSM, and everyone can judge what type they are suitable for. There is a book: Java EE Internet Lightweight Framework Integration Development: SSM framework (Spring MVC+Spring+MyBatis) and Redis implementation, is the integration and explanation of SSM, not bad, you can consider it.

In the process, you also learn how to handle logs, exceptions, and more.

In the study of Spring, I mainly master the principles and applications of AOP and IOC. In the process of learning, first of all, I need to know how to use it, and then I will dig the source code. If I directly look at the source code, it is another time to persuade me to quit.

After learning the Spring, you can get started SpringBoot, this also has a lot of online tutorials, recommend this web site: standing on its own on b how2j amount according to the play also can find, it is important to act, not resources!!!!!!

Spring has two good book recommendations:

  • Spring Actual (4th Edition) : Actual knowledge
  • Spring source depth analysis: mainly deep source, in fact, you can also find some quality courses on the B station

In the front of the database and Redis related, if the relational database, it is recommended to search the online tutorial to learn, such as: novice tutorial

About the beginner books: MySQL must know

The InnoDB Storage Engine (2nd Edition)

Redis Learning, basic data types, operations, and learning these directly online rookie tutorials are also available: Redis Tutorials

If you need to learn how to use it? The recommended book: Redis Deep Adventures: Core Principles and Applied Practices

After understanding the use, and then do the source analysis of Redis? You can download the Redis source code directly. The first version only has tens of thousands of lines of code. Of course, you need the C language or C ++ foundation. Book: Redis5 Design and Source Code Analysis

What are some commonly used frameworks?

In fact, at this time, you can go into the development stage, the road behind the need to explore their own.

MQ

That is, the message queue, choose a relatively common large learning can be, do not cobble too much, such as Kafka or RabbitMQ, the system is often encountered when doing asynchronous decoupling.

First learn how to use, and then learn the principle of the inside, structure.

Knowledge of the JVM cannot escape

How does a JVM learn? Affirmative recommendation Zhou Zhiming teacher’s in-depth understanding of Java virtual machine, this book recommended to read several times.

In addition, B station Song Hongkang teacher’s video also strongly recommended: a full set of JVM tutorials

Once you’ve done these two things, look for some new JDK11 specific books, and you’ll be fine with the basics.

Microservices and so on

In front of the study, must be a single application, that is, a server, an application. When the number of users reaches a certain number, it is necessary to split the application, and the knowledge to learn is: library and table, RPC framework, micro-service, registry, monitoring and so on.

At the beginning, I recommend reading two books to understand some knowledge of distribution, know the general evolution process of architecture, why to do this, how it was before, how it changed.

  • Large-scale Web Architecture: Core Principles and Case Studies
  • Development practice of large-scale web system and Java middleware

The first two books look very cool, expand the scope of knowledge, but not particularly deep, is an overview and comprehensive understanding. It is impossible to eat through two books!! How can you eat a fat man in one bite? Isn’t it.

Then take a look at the knowledge related to large-scale distributed architecture: large-scale distributed website architecture design and practice: summary of frontline work experience, including the overview of the required technology of large-scale distributed website, the core of the architecture design

Then it is the knowledge point by point each attack (the following knowledge section related examples) :

  • RCP principle
  • Netty
  • DUBBO
  • Zookeeper

other

Data structures and algorithms

If you have a basic knowledge of data structure and algorithms, the following part is only for reference:

  • Algorithms (4th Edition)

    • Commonly known as red book, the most recommended Java programmer learning algorithm books, entry is very friendly, video looks like B station can also be found.
  • Data structure and algorithm analysis

    • Data structure (methods of organizing large amounts of data) and algorithm analysis (estimates of the running time of algorithms) are discussed using the excellent Java programming language as implementation tools. Combining algorithmic analysis with the development of efficient Java programs, this book provides an in-depth analysis of each algorithm in a comprehensive, rigorous way, and a detailed explanation of how to build a well-crafted program.
  • Handbook of Common Java Algorithms (3rd Edition)

    • Very simple algorithm data, very interesting, not difficult, very thin.
  • Introduction to algorithms

    • Absolutely dissuade books, caution! A lot of mathematical formula derivation, as well as pseudocode, is recommended as a programmer on the road to accompany the book 🤣 to call the (anyway I was not finished reading, too perverted)

If you brush the question, it is recommended to brush the sword first to refer to the Offer, and then Leetcode (the time is set by yourself) one question per day/week, and we recommend our own brush notes: codeSolution

[About the author] : Qin Huai, the public number [Qin Huai grocery store] author, I work in a well-known domestic online travel company, the road of technology is not at that time, the mountain is high and the water is long, even if it is slow, Chi and the endless. Personal Writing Direction: Java source analysis, JDBC, MyBatis, Spring, Redis, distributed, sword Offer, Leetcode, etc., carefully write each article, don’t like the title party, don’t like the garb, most of the series of articles, can not guarantee that I write are completely correct, But I guarantee that everything I write has been practiced or researched. If there is any omission or error, please correct it.

Weekday time is precious, can only use the evening and weekend time to learn writing, pay attention to me, let’s grow up together ~

What do I write about in 2020?

Open Source Programming Notes