This articleArticleIt is 100th blogs. This article summarizes the good books I have read and provides good guidance to later users. Reading books is more systematic, comprehensive, and more efficient than searching on the Internet. In addition, it is recommended that you do not read the electronic version or read the printed version for convenience.
C Language
A good entry book: cProgramDESIGN: Tan haoqiang, Which is concise and easy to understand and is very suitable for entry-level learning;
In-depth study: C expert programming;
C ++ Language
Syntax learning: C ++ primer plus. The syntax is comprehensive and systematic;
In-depth research: "C ++ object model", this book is a must-read. After reading this book, I understand the underlying mechanism of C ++, in order to deeply understand C ++'s obscure "irrational" syntax;
Object-oriented Thinking: Cheng Jie of the big talk design model. To be honest, the design model of the gof version is hard to understand. This big talk design model is easy to understand, in addition, the design model should be object-oriented, So the most important thing is to pay attention to the ideas, so I recommend the easy-to-understand and funny big talk design model.
Algorithm
System learning: Introduction to algorithms;
Practice enhancement: Peking University ACM exercise. Website: http://poj.org/. programming is very important to keep the key points of the algorithm in mind;
Others
C ++ knowledge: STL, reference count, boost, and STL are used as much as possible in actual work. Reference count may be an essential technology in all object-oriented languages, it has two main functions: one is automatic memory recovery, the other is memory saving (including some objects do not have the significance of replication), and boost is a library and is also used for multiple purposes;
Multithreading: multithreading first understands why multithreading is unsafe because both threads use global variables or local static variables. To ensure thread security, try not to use global variables or local static variables, if you cannot avoid them, you need to use the synchronization method. multi-thread synchronization involves four methods (mutex lock, semaphore, mutex lock + condition variable, and atomic operation ).
Android
Binder: although the actual work really does not need to understand how the binder is implemented, as a senior engineer, you must understand the Binder Mechanism and analyze it in my blog;
SP and WP: This is the reference count mentioned above, and the defect of strong SP references is that objects cannot be released when circular references are made. At this time, at least one party uses weak references;
JNI: JNI has two main points: one is the reference count of JNI, which is different from the reference count of C ++, because the reference count of JNI requires the support of Java Virtual Machine; the other is exception handling;