Books worth reading Java programs

The best way to learn is to read

"The best way to learn is to read", which is my first experience after learning by myself and having a certain accumulation. I think reading has two advantages:

1. A book that can be published must have been repeatedly thought, carved and reviewed. Therefore, from a professional point of view, the value of a good book far exceeds that of other materials

2. It's convenient to knock on the code in the book

"The best way to improve yourself again after reading a book is to read some relevant good blog posts". I personally think this is the second step of learning, because a book often has hundreds of pages. Good blog posts are some summary and refinement after reading and learning, which is very good for combing the learning content. Of course, this is not about your own learning methods, so I won't talk about it anymore.

Many programmers often have the impulse to read books, but they don't know which books to read. Next, I'll recommend some good books to you Java program apes (the author of each book will be bold). Most of them are the books I usually read. It can also be regarded as a small summary and afterfeeling of the books I usually read.

At present, there are many books on design patterns on the market. Although I said that reading is the best, I recommend this blog for friends who are interested in design patterns. The blogger's design pattern is very, very good. I think 90% of the content is OK and worth learning. The general route of explaining the design pattern is:

1. The beginning points out the definition of the design pattern

2. Explain the structure of the design pattern with pictures and text

3. Write the implementation of this design pattern in the form of detailed code

4. Supplementary content

5. Explain the advantages and disadvantages of this design pattern

For a design pattern, aren't the above knowledge points we pay attention to and learn?

However, I would like to remind netizens that there are many ways to write the same design mode, which does not mean that only writing according to a certain way is this design mode. For example, when we focus on the adapter mode, we must focus on what the adapter mode is, not how to write the adapter mode. Don't think that a piece of code is not written according to the writing method of the adapter mode, it is not the adapter mode. Remember this, When you learn design patterns, you will have a deeper understanding of the design patterns used in the code.

Deep understanding of the Java virtual machine: JVM advanced features and best practices

If you're not satisfied with doing one, you can only write if else... I want to go further. Let me give a few examples:

1. Understand the underlying running mechanism of Java code

2. Positioning performance problems

3. Performance tuning of the whole system

4. Solve all kinds of strange online and offline problems

5. More advanced, tailor a virtual machine suitable for your own project

Then Java virtual machine is a technology you must learn. Zhou Zhiming is the author of in-depth understanding of Java virtual machine: advanced features and best practices of JVM. This book can be said to be the best book about Java virtual machine in China. I have read this book at least five times in recent six months. In addition to this book, there are some other books on virtual machines in China. I have also bought them. However, a rough look shows that many contents are also in the book in-depth understanding of Java virtual machine: JVM advanced features and best practices.

In addition, it is worth mentioning that the book "in-depth understanding of Java virtual machine: advanced features and best practices of JVM" is available in electronic version, which can be downloaded by searching online. However, it is recommended that interested friends buy books. The electronic version is generally downloaded to the older version. Compared with the latest revised version of in-depth understanding of Java virtual machine: JVM advanced features and best practices, there are many new knowledge points added by the author.

Hotspot practice

All Java virtual machines follow the Java virtual machine specification. There are dozens of Java virtual machines on the market. The virtual machine in the book "understanding Java virtual machine: JVM advanced features and best practices" is not specific to a specific virtual machine, but explains Java virtual machine from the perspective of Java virtual machine specification.

Most of the Java virtual machines we usually use and even commercial ones are sun's hotspot. You can see it by CMD entering the command line and using the "Java - version" command. If you want to further understand how some details of the virtual machine are implemented on the basis of the Java virtual machine specification, you can take a look at the book "hotspot actual combat", written by Chen Tao. However, since the source code of hotspot is written in C / C + +, readers are required to have a very good C / C + + foundation. If you are not very familiar with these two languages, reading this book may not be very helpful to you.

Finally, if you are interested, you might as well download an openjdk online first. The source code of hotspot is in it.

Java Concurrent Programming Practice

This book is often listed in the top ten books that Java programmers must read, but I don't recommend it very much.

Brian Goetz is the author of Java Concurrent Programming practice. How to say, I have read this book about twice before and after. My personal feelings are:

1. More text and less code

2. More explanation and less practice

I think this may be the characteristic of foreigners writing books, Because Java is a North American country (Canada and the United States) developed and maintained, so foreigners have a very clear and thorough grasp of all aspects of the theoretical knowledge system of Java. Open this book to see what multithreading is used, what deadlock is, what competition is, what thread safety is, and so on. All aspects of knowledge are explained in a lot of words, which makes people feel very boring and difficult to understand Readers have made substantial progress. I've read this book twice, which also means ten lines at a glance. I'll focus on what I'm interested in.

In any case, as a book that often ranks among the top ten books that JVA programmers must read, it must be recommended to you.

Core technology of Java multithreaded programming

Gao Hongyan, author of core technology of Java multithreading programming. For those who want to learn multithreading, this book is highly recommended by me. More than 20 multithreaded blog posts in my personal blog are based on this book, refined and summarized on the basis of this book.

Contrary to the practical battle of Java Concurrent Programming, this book is characterized by a large amount of code + a small amount of fine explanation, which may be related to the pragmatic style of books written by Chinese people. This book explains thread safety, synchronized, reentrant, timer, etc. with detailed code, and many small knowledge points under each big knowledge point will be explained in detail, which is of great practical value.

Interested friends, I believe that as long as you follow the three steps of knocking, running and thinking in this book, you will take a few big steps in the use and understanding of multithreading.

However, the disadvantage of this book is that some classes under the Java concurrency package, such as countdownlatch, semaphore, cyclicbarrier, future and callable, are not mentioned, the key CAS and AQS are not touched, and the implementation principle of key classes is not mentioned. Of course, this is very in-depth. After learning this book, if you can learn and study these knowledge, you will slowly grow into a very powerful multithreading expert.

Effective JAVA Chinese version

This is the only book I didn't buy. I first got to know this book in my blog java code optimization (long-term update). A friend mentioned this book when commenting below. At that time, I said I would buy it, but I haven't had time to go to the bookstore for the past two months. It's a pity. I will definitely find time to buy this book later.

The author of effective JAVA Chinese edition is Joshua Bloch, who is very powerful. He is the chief architect of Google and belongs to the level of super technology bull. Ha ha. I can't comment because I haven't read this book, but from the popularity of this book and the origin of its author (to mention more, this book is also a Book praised by Dr. James Gosling, the father of Java), I believe it must be a good book worth reading.

Good code is what every java programmer should pursue. It doesn't mean that writing a good piece of code today will greatly improve the performance compared with writing a bad piece of code. It should improve the readability of the code and avoid many potential and unknown problems, so as to avoid taking time to maintain the code after it goes online -- whether in terms of time, cost Both labor cost and risk cost are very high.

In depth analysis of Java Web Technology

In depth analysis of Java Web technology, author Xu Lingbo, Taobao engineer.

This book is summed up in one word: all. It's really comprehensive, including HTTP, DNS, CDN, statics, jetty, Tomcat, servlet, spring, mybatis, etc. it involves a wide range of knowledge, but it doesn't go as far as a Book specializing in a certain knowledge point. I feel that this book is to try to explain the inside of some technologies used by java web in a short space, Let readers have a rational understanding of the technical insider of these knowledge points.

However, although the length of each knowledge point is not much, the key points are basically mentioned. It is a really fruitful book. If you want to further understand the technical inside of these technologies, you have to buy relevant books or check the information on the Internet. You have a feeling that you can attract jade by throwing a brick, or that the master leads you in and practice.

Core principles and case analysis of large website technical architecture

One word evaluation of the book, Niuhuan reef Limulus Limulus Limulus Limulus Limulus Limulus Limulus Limulus Limulus Limulus Limulus Limulus Limulus Limulus Limulus Limulus Limulus Limulus Limulus Limulus Limulus Limulus Limulus Limulus Limulus Limulus Limulus Limulus Limulus Limulus Limulus Limulus Limulus Limulus Limulus Limulus Limulus Limulus

The author of "core principles and case analysis of large website technical architecture" is Li Zhihui, a former Alibaba technical expert.

Most Java applications are used on the web. Now as long as a slightly larger web application is a distributed system, what technologies are used in a distributed system? How does a large website grow from a small website? How to keep your website safe? Distributed systems use caches. What caches are there? What should I pay attention to when using cache?

The distributed knowledge points are reflected in this book. Only you can't think of it, he can't write it, and it's very easy to understand. Basically, you can see it once or twice and take some notes to know what's going on. If you watch it several times, your understanding of distributed will deepen a lot. Moreover, it is not only distributed knowledge, but also very grounded in how to be a good architect. In fact, I think it is not only written to readers who want to be architects, but also to give readers some suggestions on how to better put forward opinions, how to make others pay more attention to your voice and how to see the advantages of others, which makes people benefit a lot.

Practice of large website system and Java Middleware

Zeng Xianjie, author of large website system and Java middleware practice, is the technical director of Taobao. It should be at least P8 level in Alibaba.

Some of the contents of this book coincide with the core principles and case analysis of large website technical architecture by Li Zhizhi, such as the evolution of distributed system, CDN, cap theory and base theory, which also shows that these are the key contents of distributed system or a large website, which is good to learn again.

The key point of this book is middleware. Middleware is a very important thing in distributed systems. Its most important role should be decoupling, reducing the strong dependence between modules, reducing the dependence between different modules, so that they can develop their own functions independently, which can also be said to be the goal and driving force of software engineering development.

Therefore, part of this book is based on middleware, which explains various knowledge of middleware and JMS in detail. It is suitable for readers who are familiar with distributed systems and want to study middleware.

Principles and practices of distributed consistency from Paxos to zookeeper

Principle and practice of distributed consistency from Paxos to zookeeper, author Ni Chao, Alibaba engineer.

This book is a book I have been studying recently. Like the practice of large website system and Java middleware above, it belongs to the category of distributed components and some in-depth content. Of course, it is also my own personal interest. Of course, if you want to be an excellent large-scale website architect and technical director of the company, these knowledge must be mastered.

This book starts with the basic theory of distributed system, talks about Paxos algorithm, and finally slowly introduces it to zookeeper step by step. Of course, it's not convenient for me to express any views at present, because I haven't understood the Paxos algorithm in the second chapter of the book (Paxos algorithm is really difficult to understand and not easy to understand), and I haven't read the next chapter.

If your company is using zookeeper and you are interested in zookeeper and want to study its principle, this book will be the best choice.

Mysql5.6 learning from scratch

Mysql5.6 learning from scratch, by Liu Zengjie and Li Kun.

As a java programmer, I think we should never think that database is a DBA thing. Database is also a knowledge that a java programmer must master. Rich experience in database performance optimization is a necessary skill for a top programmer.

At present, the mainstream databases include Oracle and mysql. Of course, MySQL is recommended. I think there are two main reasons:

1. Compared with Oracle, MySQL is lighter, smaller and more convenient to install and uninstall. SQL is almost the same. If you want to learn database, you can learn mysql. You can study it conveniently at home. If your company uses Oracle, just use the comparative learning method to pay attention to the difference between Oracle and mysql

2. With the progress of Alibaba's campaign to go to IOE in 2009, many domestic Internet companies will choose MySQL as their database. Because MySQL is free, it saves money and does not need to rely on Oracle when there is a problem

MySQL learning I recommend this book "MySQL 5.6 learning from scratch", which I have studied and read. I think it is a good book. The knowledge points in the book are very detailed and comprehensive. Aren't these two points the criteria for readers to choose books?

Deep analysis of spring source code

"Deep analysis of spring source code", by Hao Jia.

The spring framework is so good and powerful that many developers only know spring and do not know what is a factory, what is a singleton What is an agent (my real experience of interviewing others). This powerful framework must have a very complex implementation, which leads to that once your program uses spring, there may be an error, an exception, or the running result of the program is not what you expected. When such problems occur, you will be confused, except searching the information on the Internet or asking others People don't seem to have a better solution.

Studying spring's source code is a good way to learn. Personally, I think it has many advantages:

1. After understanding the implementation within the framework, you can take the initiative to solve the problem without relying on others

2. Many design patterns are used in the internal implementation of the spring framework. Good code design ideas will greatly improve your code writing and understanding of design patterns

3. Studying the spring framework will greatly enhance your ability to read the code. I believe that as long as you can study how spring is implemented internally, the source code of any other framework will not defeat you

In a word, I think the ability to read code is one of the biggest differences between an ordinary programmer and a good programmer. The former can only use what others have written, and the latter can not only use it well, but also know how to realize the bottom of what others have written, which can be easily solved in case of problems.

For spring source code, I personally recommend the book in-depth analysis of spring source code. If you really want to study and write clearly the spring source code, I'm afraid three or four books are not enough. The author tries to explain how the spring source code is implemented in nearly 400 pages. It's not easy. Although it can't be completely explained, I believe the author's explanation can cooperate with the readers' own research, You can certainly have a deeper understanding of the implementation of spring.

Postscript

These are some good books worth reading that I recommend to Java developers. However, there are no books such as Java basics and Java tutorials in these books. It's not that I don't recommend them. It's several years since I learned java basic technology. I forgot what I read when I studied, so I can't irresponsibly recommend some books I haven't read to you.

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>