Please place unbridled praise, wechat search [Silent King ii] concern about this programmer in luoyang, the ancient capital of nine dynasties. This article has been included in GitHub github.com/itwanger, which also contains the interview questions I carefully prepared for you.

Back when I was learning Java 10 years ago, resources were extremely scarce. The teacher recommended two books to us, one was Java Programming Ideas and the other was Java Development Bible. The teacher thinks the first book is about theory, the second book is about practice, a perfect combination.

In fact, only 13 students in the class were in software development when they graduated. The other 30 students either switched majors in their freshman year or gave up programming early.

Ideas for Java Programming is a great classic, yes, but as a primer, it’s a come-back. “Java development treasure book” is a book of advice, which is made of Java projects are very classic, such as browser, backgammon, but xiao Bai simply can not control ah!

Ten years later, I have over ten years of programming experience. Don’t ask. Ask is overtime. I have gained some experience in Java programming, so I recommended a list of books on Zhihu, which has been read by more than 660,000 people and received more than 1200 likes. It shows that everyone likes it very much.

Here’s the address. If you need it, you can look around.

www.zhihu.com/question/26…

The above answer contains 13 classic books, and is in a step-by-step way, I believe that students will read after the private letter to thank me. However, this answer is more than a year old, I would like to add some more books to the list, still in the order of introduction to advanced to in-depth.

Introduction to 01,

  • Java Core Technology Volume 1

  • Head First Java

Note that the chapters of Swing, AWT, and Applet are skipped. Of course, you can also take a look at these Java tutorials I wrote, more popular and easy to pass some, the number, almost 200, or very comprehensive to force.

www.itwanger.com/java.html

  • Birdman’s Linux Home Dish

Why learn Linux? Because in the actual development work, the project is basically deployed to a Linux environment. Windows as a server is rare for no other reason than slowness.

If can master the word of a few Linux basic operation ahead of schedule, it is add points on resume not only, in the job more can quick person one step.

  • Maven in Action

  • Git’s Definitive Guide

When I first learned Java, the code was native, and you had to install a SVN server and client for version control. In addition, there is no cloud syncing, and changing computers will basically require copying all the jars your code and project depend on.

Remember, code is a trivial file that takes a long time to copy and paste; If the project is large and depends on many JARS, copying and pasting will be slower.

Now good, code cloud, GitHub these cloud warehouse can be used, multiple computers for synchronization is very convenient. Combined with Maven (project build tool) and Git (version control tool), it’s 666!

02, advanced

  • Ideas for Java Programming

The Mind of Java Programming is a great book, but you need to read it after you get started in Java so you can really understand the ideas.

Many students who do not have enough programming foundation, blindly confident, directly open to chew this book, and then they find that it is very painful to chew, this is because there is no foundation caused by the reason, just like not learning to walk before starting to run, fell very painful.

The author makes it clear in the introduction that the reader needs to know basic program statements (such as if and for in C), that is, the author assumes that the reader is already familiar with some C syntax. As you can imagine, the students who have no programming foundation are very painful when reading this book.

I was in the university teacher’s misdirection to open chew this book, the first time, read only the preface, read not to go on, obscure, difficult to understand. At the end of my one-year internship, I read the book a second time, still feeling big and trying to endure it, and after nearly 200 pages, my stamina wore out.

It wasn’t until two years ago that I returned to the book and found it enjoyable to read, with each chapter producing an article, and the value of the book truly reflected. Why is that? Because I have many years of programming experience, combined with the theoretical knowledge in the book, reading it is a kind of “aha!” feeling.

Ideas for Java Programming teaches us not just how to do it, but why, which is the essence of the Java programming language.

However, The Java Programming Mind was published in 2007, more than a decade ago, and while classic, it is inescapably outdated. Fortunately, On Java 8 was written by Bruce Eckel, the author of Thinking About Java Programming. In fact, On Java 8 is the fifth edition of Ideas for Java Programming, with JDK 1.5 being used in version 4 and Java 8 upgraded to Java 8.

Where can I buy On Java 8?

Github.com/LingCoder/O…

Don’t buy it, Lei Feng has translated the book into Chinese and made it open source. Visit the link above to read it on GitHub.

  • Java Web Programming

Java Network Programming is not a highly rated book overall, but it is very useful for learning the basics of Java network programming.

  • Netty In Action

Whether it is to build high-performance Web, game server, push system, RPC framework, message middleware or distributed big data processing engine, Netty is inseparable from the whole industry, Netty’s wide and successful application, making it become the outstanding framework of Java high-performance network programming.

  • “Effective Java”

The third edition of Effective Java contains a total of 90 useful rules of thumb, each of which is worth following in the real world for Java programmers. The book does not need to be read from beginning to end, but can be read in any section at will, because each rule is relatively independent, and although there are cross-references between them, it does not prevent us from reading as we wish.

The author, Josh Bloch, was Google’s chief Java architect, and Java Developer Magazine ranked him among the top 40 software people in the world. James Gosling, the father of Java, also praised Effective Java.

  • Alibaba Java Manual

“Alibaba Java Development Manual” this booklet, although only dozens of pages, but mainly about some typical development specifications, programming specifications, and best practices, has become the industry generally followed development specifications.

The newest edition is songshan edition, the cover has a sweeping monk, alas, this fierce ah!

  • The Code Clean Way

The quality of software depends not only on architecture, but also on code quality. The quality of the code is directly proportional to its cleanliness, and the neater the code, the higher the quality will undoubtedly be.

The first chapter of Clean Code provides a definition of clean code that every programmer should keep in mind.

Clean code focuses on one thing: every method, every class. Naming more to give a person a “as the name implies” feeling.

2. Clean code is straightforward and never hides the designer’s intentions. 3. Clean code should have unit tests. 4. Clean code refuses to repeat, and its expression is straight to the heart.

  • Java Concurrent Programming

  • The Beauty of Concurrent Programming in Java

  • Practical Java High Concurrency Programming

The efficiency of a program can be greatly improved if it is capable of concurrency. For programmers, if they are proficient in Java concurrent programming, their earning power will increase dramatically. This is not a joke, but a sincere one.

These three books on Java concurrency can be read together, complementing each other and helping students quickly improve in this area.

  • The Definitive Guide to Java Performance

Through reading the Java performance authoritative guide to the book, we can use four basic principles for maximum performance test, the effect of using the JDK’s own tools performance data collection program, understand the advantages and disadvantages of JIT (just-in-time compilers) compiler, tuning the JVM garbage collector, maximum optimization multithreading, and so on.

  • Spring In Action

  • Spring Revealed

Spring is an open source framework for the Java platform that provides extensive support for Web applications built on Java.

1. Spring helps us create and assemble dependencies between objects based on configuration files.

2. Spring section-oriented programming can help us achieve logging, performance statistics and security control without coupling.

3. Spring helps us manage database transactions very simply.

4. Spring can seamlessly integrate with third-party data access frameworks such as MyBatis and JPA.

5. Spring can easily integrate with Java EE (such as Java Mail and task scheduling).

“Spring Practice” and “Spring Secrets” can help students have a more comprehensive understanding and mastery of Spring.

  • Spring Boot+Vue Full Stack Development Actual Combat

Spring Boot is a new framework from the Pivotal team designed to simplify the initial setup and development process for new Spring applications. The framework uses a specific way to configure so that developers no longer need to define boilerplate configurations. Simply put, Spring Boot is not a new framework. It has many frameworks configured by default, just as Maven integrates all jars and Spring Boot integrates all frameworks.

There are not many good books on Spring Boot, so I would like to recommend my good friend Jiangnan little Rain’s book. He also recorded a lot of free videos, these videos supporting his book, you can definitely have a full grasp of Spring Boot.

springboot.javaboy.org/

This link is a collection of jiangnan little Rain tutorials, I think the quality is very high, I myself in learning Spring Boot when referring to a lot of.

  • Illustrated HTTP

  • The Definitive GUIDE to HTTP

Programmers, after all, are engaged in IT (Information Technology), the network is still very important. HTTP stands for HyperText Transfer Protocal, namely: Hypertext Transfer Protocol, which has been widely used on the WWW since 1990, is now the most widely used protocol on the WWW. HTTP is an application layer protocol, and when you surf the Web, the browser and the Web server send and receive data over the Internet over HTTP.

The Illustrated HTTP and the Definitive HTTP Guide are well worth reading.

  • High Performance MySQL

  • MySQL Must Know must Know

  • InnoDB Storage Engine

MySQL has become the most popular open source database due to its high performance, low cost and good reliability. As MySQL continues to mature, more and more large-scale websites begin to use MySQL, such as Wikipedia and Google.

As a Java programmer, MySQL must know and must know.

  • MyBatis from Beginner to Master

MyBatis is an excellent persistence layer framework that supports custom SQL, stored procedures, and advanced mapping. MyBatis eliminates almost all of the JDBC code and the work of setting parameters and fetching result sets. MyBatis can configure and map primitive types, interfaces, and Java POJOs (Plain Old Java Objects) to records in the database via simple XML or annotations.

In addition to the book “MyBatis from Entry to Mastery”, students can also directly read MyBatis Chinese.

Mybatis.org/mybatis-3/z…

  • Redis In Action

  • Redis Deep Adventure: Core Principles and Practical Application

Redis, the most widely used storage middleware in Internet technology, is a combination of bold letters in three words: Remote Dictionary Service.

Redis is known for its super high performance, perfect documentation and simple source code. Many large Internet companies at home and abroad are using it, such as Ali, Tencent, GitHub, Stack Overflow and so on. It is getting more and more powerful. It was originally used as a cache database, but now it can be used to implement message queues.

Suffice it to say, mastering Redis has become a basic skill that back-end engineers must have.

  • RabbtiMQ Guide

RabbitMQ is an open source message queuing system. The key features are robustness, ease of use, high performance, high concurrency, easy cluster scaling, and strong open source community support. Starting from the concept of messaging middleware and the history of RabbitMQ, RabbitMQ Combat Guide mainly describes RabbitMQ installation, use, configuration, management, operation and maintenance, principle, and extension.

  • The Definitive Guide to Kafka

Each application generates data, including log messages, metrics, user activity records, response messages, and so on. How the data is moved has become almost as important as the data itself. If you are an architect, developer, or product engineer who is also new to Apache Kafka, this practical guide will help you become an expert at handling real-time data on streaming platforms.

  • The First Docker Book

Docker is an open source application container engine, developers can use Docker to package their applications and dependencies into a portable container, and then publish to any popular Linux machine, can also achieve virtualization.

The first Docker book can help us learn the installation, deployment, management and extension of Docker.

03, in-depth

  • In-depth Understanding of the Java Virtual Machine

“In-depth understanding of Java virtual machine” this book cow force to what extent, almost all write Java virtual machine aspects of the article, not a note at the end of the article: this article refers to the word Zhou Zhiming teacher “in-depth understanding of Java virtual machine”. If this article is not noted at the end, it is not respecting copyright.

  • Refactoring to Improve the design of Existing Code

Refactoring, Improving the Design of Existing Code is one of the most popular books in the industry, but it seems to require some energy and endurance. After reading the above books, this one will be a great help in re-examining existing code.

  • Nginx in Depth

Nginx is an asynchronous framework web server that can also be used as a reverse proxy, load balancer, and HTTP cache. Understanding Nginx in Depth is a book that helps you develop HTTP modules quickly and efficiently by bringing back Nginx design ideas and dissecting the Nginx architecture.

  • In-depth Analysis of Tomcat

Tomcat is a Servlet container and provides some unique functionality as a Web server. Almost all Java programmers who have written Web programs have used Tomcat as a server, so it’s worth taking a closer look at Tomcat if you have the time.

  • Design Patterns in the JDK

This is not a book, but a post by Left Ear Mouse that lists 23 classic design patterns in the JDK and is well worth a look.

Coolshell. Cn/articles / 33…

  • Simple Design Patterns

  • Zen of Design Patterns

  • Head First Design Patterns

You’ve all heard that learning design patterns is very important, so why is it so important? What are design patterns? The analogy is that learning programming is like learning martial arts.

There are two things you can’t lose when you practice kung fu. First, internal work; Second, it is the secret book of martial arts. Internal work corresponding to programming is our basic programming ability, the design mode of programming can be imagined as the secret of martial arts.

Design patterns are about designing elegant (coded) solutions for different types of scenarios. There are many advantages to learning design patterns well. For example, it is easy to understand the logic in classic code (many good open source frameworks make extensive use of design patterns). Answer fluently in the interview (design model is the focus of the interview); You can write elegant solutions (or code).

  • “The algorithm”

  • Big Talk Data Structure

Nowadays, the big factory interviews are particularly fond of the knowledge of algorithms and data structures, which is regarded as an assessment standard of programmers’ level. For most business development, it is more common to make use of already encapsulated ready-made interfaces and class libraries, and rarely need to implement their own data structures and algorithms.

However, if you know the principles behind these libraries, and understand the time and space complexity analysis, you can definitely work very well. Understanding data structures and algorithms is very useful both for reading the source code of the framework and for understanding the design ideas behind it. Write high-quality, open source code, algorithms, and data structures that are worth mastering.

  • “Large Web System and Java Middleware Practice”

  • Technical Architecture for Large Web Sites: Core Principles and Case Studies

  • Core Technology of Website Architecture with 100 million Traffic

With these three books, if you can handle them, you’re basically a rare high-level Java expert.

No problem is baidu cloud disk can not be solved, don’t forget to like!

Link: cowtransfer.com/s/f38807155… Extract code: 9JS99V Alternate link: shimo.im/docs/pJQv6q…

04, learning methods

We all went through school days (and some of you still are), the same class, the same teacher, so why are the grades so different? Some students are very talented and learn everything quickly, while others are weak but do it the right way and still get good grades. If you don’t have talent and you don’t have a way to learn, you have two words — yes, underachiever (I was an underachiever in college).

So what’s the right way to learn?

First, use search engines. Usually need to find information, need to solve the problem, if they will not have a way, to search.

Google is the first choice, Bing is the second choice and wechat search is the third choice. On the PC side, Google and Bing are very reliable, and almost everything you’re looking for has good results. Mobile phone terminal words, use wechat search, the answer is also very reliable.

Second, learn to ask questions. If a search engine can’t find the answer, don’t dump the question on a group, a colleague, a boss, or a boss. Comb through the question first.

What I want to ask, what my environment is, whether the problem is clearly described and the attitude is correct.

Don’t be abrupt, don’t be intrusive, and have thick skin. It’s hard, right? That’s the art of asking questions.

Third, good at summing up and induction. Many students gave me feedback, “brother, why do I always feel that I can’t remember? After learning, I forget. Is there any good way?”

Yes, of course. After learning a knowledge point, if you need to practice, then go to the code, knock again, or understand, knock again. If you really feel like you understand, try writing an article to share what you learned and see if you can teach it to others.

If you are half a bottle of water, pour out only half a bottle of water; Only he is a bottle of water, poured out can be more than half a bottle of water, right?

The good thing about generalization is that you turn bits and pieces of knowledge into systems, creating a blueprint in your mind, and over time, you’ll find yourself turning from a stream into an ocean.

By the way, I recommend the Feynman method, inspired by Nobel Prize winner Richard Feynman, using the Feynman technique, it only takes 20 minutes to thoroughly understand the knowledge. Sounds amazing, doesn’t it?

The four steps of feynman learning:

The first step is to be able to teach a child. This is a bit like bai Juyi, an ancient poet, who hoped that his poems could be understood by an old woman, and that was good poetry.

So how do we do that? Take out a piece of paper, write down the topic, think about how you can teach it to a child, what you’ll talk about, and write it down.

Students can change the white paper into iPad, Youdao Cloud notes, etc.

Step two, review. When we try to explain things to young children, we may get stuck, and we need to relearn those stuck points, and these points may be our cognitive boundaries — places of relearning.

Step 3: Simplify the language. If you find that the text is complicated and not clear enough, try to read it out until it is smooth, until it is natural, until it is concise.

Fourth, teach. This is optional, but really important. If you make sure you understand it, then teach it to others and see if you can teach it to others, which is what I call being good at summarizing and generalizing.

The entire mind map (recommended online sites are Baidu Brain Map, ProcessOn), or the blog (suggested markdown format).

Fourth, practice more. Practice gives true knowledge, in the end 马谡行 is not good, give him a street pavilion to keep a guard, right, do not accept is an armchair strategist, have no what bird to use.

There are a lot of great open source projects on GitHub or the code cloud. Pick some good ones, take them down, and study them. Try to make some optimizations or add some features to the original code.

By doing it yourself, you’ll discover, wow, there really is something new.

Fifth, skilled use of development tools. Intellij IDEA and VSCode are very popular development tools, which can help us become more efficient in study and work. Are there any shortcuts in them?

When writing code with Intellij IDEA, it is important to pay attention to code specifications. Install plugins like SonarLint and Alibaba development protocol in advance, check the code as soon as you write it, and follow the tips to correct any bad habits.

Sixth, learn English well. This is really, really, really, really, really important, important, important, even if you have poor English skills, don’t give up on yourself, right? Lei Jun dare a “are you OK” walk the world, what are you afraid of?

Besides, Chrome can install Google Translation plug-in, Intellij IDEA can install Translation Translation plug-in, as long as a little bit of English foundation, completely do not fear.

As your English level improves, you can read official documents, look for answers on Stack Overflow, check JDK source code, and so on, your programming level will increase day by day.

Seventh, pay attention to rest. Physical health is very important, do not become a work machine, think that when you are young should desperately work overtime, through overtime to improve skills, earn more money. You can have those thoughts, but you have to control them, okay?

The task is tight and the deadline is coming soon. You can work overtime appropriately, but don’t work overtime 365 days a year. Take time to travel, read, study, fall in love and enjoy life.

Young people, do not be a “struggle force”, struggle can, but do not blindly. Think about that bit of hair on your head, don’t stay up late. When one person works overtime, a second person works overtime, a third person works overtime, and a fourth person works overtime endlessly. Only when everyone does not go to work overtime, can the benign atmosphere of work have ah!

Above, I hope you can help, Peace.


I am the second Silent King, a programmer who lived in Luoyang, the ancient capital of nine dynasties. Attention can improve learning efficiency, thank you for your support, Ollie to 🌹.

If you feel that the article is helpful to you, welcome to wechat search “Silent King two” for the first time to read, reply to the keyword [xiaobai] can get my handwriting 10W+ word [Java Xiaobai progression path] PDF; This article has been included at GitHub github.com/itwanger.