Network Security Internet Technology Development Database Servers Mobile Phone Android Software Apple Software Computer Software News IT Information

In addition to Weibo, there is also WeChat

Please pay attention

WeChat public account

Shulou

The books that the background developer should read

2025-03-29 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Servers >

Share

Shulou(Shulou.com)06/02 Report--

According to my experience to talk about, first introduce my situation, coordinates in Shanghai, background development (also with a team), a well-known Internet company.

At present, the mainstream ones are C++ and JAVA,C++. I have a little more experience. Let me just talk about my learning experience on C++. If you are a student, nearing graduation and do not have so much time to read a lot of books, you can refer to them according to the importance listed below.

First of all, I think you should prepare algorithms and data structures well, so that you can be very familiar with common algorithms and data structures, so that you can easily get some offer from big factories (BAT, etc.) when you graduate and apply for a job. I have a non-professional background, and I have struggled with all kinds of things after graduation. As soon as you graduate and go to a big factory, you feel that there are two advantages. first, your income will be much higher than that of ordinary small companies. Small companies have relatively lower recruitment requirements and pay much less. They are actually recruiting people who can do their jobs. Second, your starting point will also be higher than that of ordinary students who enter a small factory. I am not discriminating against small factories here, but I am just talking about a common situation. I myself came all the way from a small factory. Here I emphasize the importance of algorithms and data structures. Especially when new graduates apply for a job, they should prepare this well, because this thing is the basis of principle. When interviewing fresh students, enterprises will not ask too much about project experience and various operating system principles, network communication principles and so on, and this is the only thing that can examine a person's basic skills. I was recruited by the club into a big factory, and basically questions such as algorithms and data structures were asked much more than the project experience itself. But the social recruitment is not quite the same, because in addition to preparing algorithms and data structures, you have to be prepared to have project experience, understand the principles of the operating system, be familiar with network communications, understand databases, be familiar with various open source frameworks and technologies required, and so on. There are so many that no matter how much you prepare, you may not be able to win in one fell swoop. On the contrary, as long as the new graduates prepare the algorithm and data structure well, the other major courses in the university are not too bad, which is basically the shortcut to enter the big factory. In terms of books, you can use the relevant teaching materials of your computer major, or you can use rigorous textbooks such as "data structure and algorithm Analysis: C language description" and "introduction to algorithms". To be fair, I dare not recommend "introduction to algorithms", because this book is really too large, without good mathematical knowledge, it is really difficult to read. If you want to see more humorous and relaxed books, you can take a look at Cheng Jie's "big data structure".

Secondly, if you have more time to learn, you can take a look at the books on the principles of the operating system, and of course you can use your teaching materials. I recommend one I have read, Tanenbaum.A.S Modern operating system. Tanenbaum is a Dutch and an enlightening teacher on the Linus Torvalds operating system, the father of Linux. Of course, my suggestion is that this kind of book is theoretical knowledge after all, and you don't have to finish it, but be sure to understand some basic concepts, such as process thread memory patterns. If you still have time, it is highly recommended to take a look at Yu Jiazi's "programmer's self-cultivation: link, load and Library", which involves both Windows and linux operating system platforms. Various auxiliary tools are used to analyze the details of the program from source code to binaries to loading into the process address space. Even the stack structure and stack structure in the process address space are analyzed clearly. At the same time, it also analyzes the principle and execution logic of operating system interface libraries such as C Runtime (CRT) and glibc. It is a really good book to help you fight the principles of operating systems. I particularly like a paragraph in the preface of this book:

"CPU architecture, assembly, C language (including C++) and operating system are always magic weapons for programmers, just like the Shaolin Temple's Book of Yi Jin, which is the best martial arts; after learning the Book of Yi Jin, you will be omnipotent and can create martial arts; after learning to program the Book of Yi Jin, masters can develop operating systems, compilers and even a new programming language at will!"

Third, you learn these things in order to practice and produce in the future, and the thing to implement this output is the programming language. If it is an introduction, I will first recommend Cingray +. Only if you are proficient in a programming language can you turn your ideas into reality. Note that here I put C and C++ together, but strictly speaking, C and C++ are still a little different, but except for some grammatical details, they can basically be considered to be the same. Personally, I feel that C language is the most important entry language for all people who want to be a master. Don't talk to me about the popular languages like python and go. "Xuandu Guanli peach trees are all planted by Liu Lang." I also recommend a book on C language here. If you are interested, you can refer to "C language programming: modern methods". Don't mention Tan Haoqiang's book, and then there is the tome C++ Primer. Although it is a good book, it is really too big. Things at the grammatical level can be learned very quickly, and things in the stl library need to be practiced, and they can't be mastered by reading books like this kind of dictionary. Of course, if you want to master Clippers well, you must see the "Deep Exploration of C++ object Model". C++ actual coding skills there is another very good book, which introduces the common C++ coding techniques "programming techniques to improve C++ performance". It is recommended that C++ developers master all the skills mentioned in the book.

Let's go on to talk about the network. first of all, I don't recommend any books on the basic aspects of the network. now many computer schools are also starting to use the good textbook "computer Network: top-down approach." if you haven't read it, you can read it. Of course, you must understand the same sentence rather than finish it. For example, you must be clear about the details of three handshakes and four waves. Then you can find a practical book on network programming. If you don't have any experience in socket api programming, you can take a look at the "TCP/IP Network programming" written by South Korean Yoon Sung-Yu, which has very detailed and vivid examples from the basic socket api introduction to the more advanced io reuse technology. If you are at a junior level, it is highly recommended to read this book. There are so many details of network programming that need to be paid attention to, which are all introduced in this book. Many people, especially some students, write some Mini Program that they can chat with each other and feel familiar with network communications, but when such programs are taken to the Internet or leave the local area network, either the connection is wrong or the data is always incomplete. That's how I did it at that time. Read this book and you can understand the causes of many network failures. After you have a certain degree of network programming (proficient in using common socket API), you can take a look at Youshuang's "Linux High performance Server programming". This book gives the impression to people who have no foundation or do not have a solid foundation, especially in the first three chapters of the book. Why is this book so rubbish, but if you have the foundation to follow the steps in the book and practice it on the machine again? You will find that it is really a rare and conscientious book. If you have mastered the knowledge mentioned in this book, you will further improve if you look at teacher Chen Shuo's "Linux multithreaded server programming" or open source network libraries like libevent. This is also some of my experience in learning network programming. Note that it is necessary to mention here: books such as UNP, APUE, and detailed explanation of TCP/IP, if you do not specialize in network work or research in the future, it is not recommended to read them, because the head is too large, followed by too many theories and Unix things, the time-output input ratio is very low.

Let's go on to say that all of the above are basic things. In fact, no matter what kind of development, background development is no exception, you all need to be based on a specific operating system. Not to mention the Windows system here, just take the linux operating system as an example. Since you have chosen to develop in this aspect, you need to be familiar with some common API functions provided by this operating system platform. Network communication has been mentioned above. In addition to network communication, there are various API interface functions commonly used, such as operation files, operation memory, string manipulation, process thread series, thread synchronization series (such as mutex, condition variables, semaphores), pipes and so on. What this means is that instead of memorizing the signature of each interface function, you need to know when to use which interface, how to use it, and what to pay attention to. When I started, I read Robert Love's "Linux system programming". Those who are familiar with this person should know that google's engineer, he also has another very famous book, "Linux Kernel Design and implementation."

Finally, I would like to emphasize that if you are a graduating student and are under pressure to find a job, you should focus on algorithms and data structures. If you are a freshman or sophomore at this stage, you can still consider chewing the books I recommend above. The standard is to understand, not to finish.

To add something I think you should master if you want to be a master, let's start with the compilation. Although there are more and more third and fourth generation languages, the hardware performance is getting better and better. But if you are proficient in assembly, you will have many advantages over others, and you will know thoroughly the efficiency of the machine instructions behind every line of code you write. Whether it is to do safety engineering or their own technical upgrading are very good. Here is a recommended copy of teacher Wang Shuang's Assembly language (3rd Edition). This book is not thick, the language is easy to understand, and you don't have to memorize it deliberately. Basically, you can read it quickly as a novel book. There is another way of "old code" in compiling practical books: the reverse training road of system view from machine code to frame. Personally, I like this book very much. When I read this book at that time, I really had a feeling of "laughing at my wife's sorrow? I can't help but be ecstatic with poems and books at random." Even though I didn't even have a girlfriend at that time!

In addition, add some books I read when I was a student. I am familiar with the development of Windows and linux. This is also due to some classic books I read when I was a student, which may be a little off topic. If you don't mind, I can tell you about it:

The fifth edition of Windows programming (after the sixth edition, this is no longer using Windows Native API to write C programs, but transferred to the C # platform), this book is China's first generation of programs windows enlightenment books, you see most of the desktop software, such as QQ, developers may be inspired by reading this book.

"Windows Core programming", this book engaged in Windows development must know the weight of this book.

"linux Kernel scenario Analysis" teacher Mao Dezao's book is very real. in addition, he has written a set of books on Windows source code analysis, which is based on the open source "Windows" ReactOS called "Windows Kernel scenario Analysis".

"Compiler system Perspective: graphical compiling principles", practical books on compiling principles.

"the Beauty of programming", about the interview, is mainly about some algorithms and logical thinking.

Refactoring: improving existing code design is not recommended without actual code writing experience.

The book "the practice of programmers-from a small worker to an expert" is especially recommended for students to read, which can greatly improve your actual coding skills and coding style.

"the way to clean code" is the same as above.

"boast design pattern"

Authoritative Guide to Windows PE documents

"Java programming thought"

"Effective C++" series

"80x86 Assembly language programming course"

Generally speaking, when I was a student, I mainly focused on basic knowledge to study. Four years of undergraduate and three years of master's degree. Thanks to these books for helping me grow up. I remember that when I graduated from college, I had ten notebooks full of reading notes.

After working, I also read books like redis, netty, and distributed. But that's all for the job. Because of my solid foundation, of course, it may also be because of luck, so I am favored by some companies that focus on solid technology foundation, giving me a salary that looks good at this stage (of course, there may be someone better than me. Then I'm laughing here, so please don't spray). At the same time, I am very grateful to the companies and colleagues I met along the way for their technical and life help. Salary itself can not tell whether a person is successful, I code so many words, I hope that the majority of developers pay attention to the foundation, do not build a high platform in the floating sand. Especially for students, you have plenty of opportunities to study, so you must cherish your college time. After all, after work, especially after graduation, faced with work, family and other problems, you may no longer have the mood and complete time to study and improve. So early accumulation is very important, after all, choose the road of technology, improve technology is the most direct way to improve living standards. Finally, let's end with a poem written by a technical predecessor when I was a student:

The world of war rats is crazy.

There is a net striding up to the blue sky.

The stars play with the sun and the moon

Lying drunk in the clouds and laughing at the world.

Looking for a dream for seven years is like fighting a fire.

Who is crazy with me in Kyushu?

= =

About what books you need to read about JAVA, I will open another topic in my official account to introduce. Please look forward to it. If you are interested, you can also contact me through the official account below.

The above is my experience, and I have been lost and helpless. There are also many friends who come to me and want me to do some experience sharing and career planning guidance. To this end, I specially opened a Wechat official account "easyserverdev". If you need my help with any technical or professional problems, you can contact me through this official account, which not only shares the experience and stories of high-performance server development, but also provides free technical answers and career answers for the majority of technical friends. If you have any questions, you can leave a message on the Wechat official account directly, and I will reply to you as soon as possible.

Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.

Views: 0

*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.

Share To

Servers

Wechat

© 2024 shulou.com SLNews company. All rights reserved.

12
Report