0. Preface: On the road, then the road
In the preface, the Road of Programmer's cultivation-(0) Preface: In the road, again on the road, the knowledge system has been combed, mainly divided into problem definition, algorithm and data structure, system Platform API, programming language implementation, code design, test verification and so on. This is probably the hardest part of concentrating on writing algorithms and data structures. Other parts of the fragmented have been involved before, and then slowly added.
1. Computer Mathematics
Discrete Mathematics and Concrete mathematics.
2. Algorithm Analysis Design
For this part of the content of the layout, mainly in the "algorithm design and Analysis basis", "algorithm" and Leetcode algorithm problems in the category of horizontal, in the "Algorithm design and analysis of the basic" listed in the classic design skills for the longitudinal, throughout each section. Because traditional algorithmic books are often structured to speak algorithms, Catalog content classification is rigid. What I want is to solve this kind of problem what algorithm? What skills and ideas are used to design?
2.1 Theoretical basis
- The path of Programmer's cultivation-(1) Foundation (above): algorithm design
- The path of Programmer's cultivation-(1) Basic (middle): Performance analysis
- The path of Programmer's cultivation-(1) Foundation (bottom): proof of correctness
2.2 Linear table
- The path of Programmer's cultivation-(2) linear table (top): Arrays and Lists
- The path of Programmer's cultivation-(2) linear table (bottom): Stack, queue
2.3 Sort
- The path of Programmer's cultivation-(3) sort (UP): basic sort
- The path of Programmer's cultivation-(3) sort (middle): Merge and Quick sort
2.4 Search
- The path of Programmer's cultivation-(4) Search (top): Linear and binary search
- The path of Programmer's cultivation-(4) Search (middle): Two forks find tree
- The path of Programmer's cultivation-(4) Search (bottom): Hash table
2.5 string
Very important, a separate chapter.
2.6 Figure
The graph algorithm is equally important, and the close to real life even exceeds all of the above data structures.
2.7 Summary
"How to solve problems", poor solution, reduce the rule, divide and conquer, dynamic planning, greed.
3. System Platform
Computer Architecture (Computer composition principle, assembly language, etc.), operating system (Linux and Windows common system APIs, etc.), compiling links (principles of compilation and linking).
3.1 Architecture
"In-depth understanding of computer systems", absolute classics, forever Csapp:
- Six-Star Classic Csapp notes (1) Computer system parade
- Six-Star Classic Csapp notes (2) operation and presentation of information
- The six-Star classic Csapp note (3) machine-level representation of the program
- Six-Star Classic csapp-notes (7) Loading and linking (top)
- Six-Star Classic csapp-notes (10) system I/O
- "Six-Star Classic csapp-notes (11) Network Programming"
- Six-Star Classic csapp-notes (12) concurrent programming (UP)
3.2 Operating System
"Operating system Concept", 9 points of good books, do not know which is better than "modern operating system":
- Basic knowledge of the Operating System Concept process
- "Operating System Concept process scheduling"
3.2.1 Linux
"Linux c one-stop learning", quite a classic book, or domestic bar:
- Basic concepts of the first chapter of the Linux C one-stop learning program
- "Linux c one-stop learning Chapter three simple Functions"
- "Linux c one-stop learning seventh chapter structure"
- "Linux c one-stop learning Eighth chapter array"
Learning the operating system, especially Linux,shell, is also essential, and for a while is passionate about writing shells:
- The first chapter of the Shell scripting Tutorial background knowledge
- The Shell Scripting Learning Guide Chapter II study notes
- Shell Scripting Learning Guide Chapter III Find and replace
- Shell Scripting Tutorial Fourth Text Processing tool
3.2.2 Windows
Programming practices under the Windows platform, "Windows Programming" and "Windows game Programming Master Tricks" can be said to be the two Bibles of the Windows platform programming:
- "The Master of Windows game Programming skill one, the art is boundless"
- Windows programming model, Windows game Programming Master Skill II
- "Windows game Programming Master Skills" Three, Windows advanced programming
- "Windows game Programming Master Tips", GDI, controls, and whim
- "Windows game programming Master Trick five, DirectX basics and Scary com"
- The first chapter of Windows program design starts
- Introduction to the design of the second chapter of Windows programming Unicode
- "Windows Programming chapter III Windows and Messages"
3.3 Computer Network
Fundamentals of Java Network programming:
- Java socket Programming (i) Introduction to TCP/IP
- "Java socket Programming (II) Socket Basics"
- Java Socket Programming (iii) Send and receive in depth
- Java Socket Programming (quad) socket advanced
- Java Socket Programming (v) NIO
3.4 Database
This part of the current relatively miscellaneous, before the "database concept" did not timely collation, to be supplemented.
- High-performance MySQL reading notes (top)
- "10 tips and experiences on databases"
- The MongoDB authoritative guide to Getting Started notes
3.5 Compiling Links
- "Csapp Buffer overflow Attack experiment"
- "Csapp Buffer Overflow attack experiment" (bottom)
- "Programmer self-accomplishment: (1) Target Document"
4. Encoding implementation
C/c++/java and other mainstream languages, how to achieve our design, including language grammar, memory allocation, encapsulation abstraction, sub-package library and other small details.
4.1 Development Tools 4.1.1 Editor
- The problem of network agent in the construction of development environment
- "Ten IntelliJ idea shortcut keys"
- Eclipse vs. idea shortcut key comparison Encyclopedia
- "Sublime Text 3, C + + development environment Building"
- The reason for learning Emacs
- "Emacs+lisp Environment Construction"
- An excerpt from the Emacs series of tutorials
4.1.2 Debugging Tools
- "C Combat: A powerful Program debugging tool GDB"
4.1.3 Project Construction
- "Practical Maven Packaging script"
- "Maven relies on inheritance"
- Introduction to the development of MAVEN2 plug-in
4.1.4 Version Control
- Conquer SVN command line common commands
4.1.5 Continuous Integration
- "Jenkins Continuous Integration Environment building"
4.2/C + +
- Introduction to the first chapter of the C programming language
- "C programming language Chapter II types, operators and expressions"
- "C programming Language Chapter III control Flow"
- "C Programming language fourth chapter function and program Structure"
- C and the reading notes of pointers
- C and the 14th chapter of the pointer preprocessor
- In-depth learning of interesting bit operations
4.3 Java4.4 PHP
- PHP and MySQL programming object-oriented PHP
- PHP and MySQL Programming chapter III PHP Basics
- "PHP and MySQL programming eighth chapter exception handling"
- PHP Framework Yii Series Tutorial (i): Getting Started example
- PHP Framework Yii Series Tutorial (ii): feature Brief
- PHP Framework Yii Series Tutorial (iii): Integrated Redis
- PHP Framework Yii Series Tutorial (iv): Save session with Memcache
4.5 Golang4.6 Web
- "< The sharp jquery> of the jquery introduction"
- "< The sharp jquery> of jquery and Ajax"
5. Program Design
Abstract level definition, 23 design patterns, refactoring to improve the design.
5.1 Abstraction Level 5.2 Coding specification
- < code clean Road > Reading notes
5.3 Design Patterns 5.4 Methodology
5.5 Architectural design 6. Test validation
Unit testing, performance testing and other technologies.
6.1 Unit Test
- The powerful Mockito testing framework
6.2 Performance Testing
- "YCSB Performance test Tool use"
- Introduction to the pressure test tool AB
Appendix 1: Amateur Practice projects
Mainly to practice C, free time to write a lot of code, from the Web to the desktop to the game to the algorithm class, dabble some miscellaneous ... However, the harvest is still very large, the future is to insist on more practice, write more practical small things!
- Using QT to develop a simple browser (i)
- Using QT to develop a simple browser (ii)
- "Introduction to PSP Application Development"
- Windows game Programming Master Tips T3d game console program examples and the first part of the summary
- "My first Chrome plugin: Weather forecast App"
- Bayes ' formula and spell checker
- The application of trie and the optimization of spell checker
- "Developing a gadget to revisit C # Classic issues"
- "Java version of Redis"
- The signal-slot mechanism of QT implementation in Java
- Generating reports with groovy and Jfreechart
- "Development of Nginx module HelloWorld"
- "Intellij idea plug-in development primer"
Attachment 2: Open Class
- Stanford < Programming methodology > Open Class
- "Stanford < Programming Methodology > Environment Building and FAQs"
- Introduction to mit< Computer Science and Programming > Lecture Notes
- "Introduction to mit< Computer Science and Programming > Sixth Lecture"
- "Introduction to mit< Computer Science and Programming > Seventh Lecture"
Attached 3: "Introduction to Algorithmic Learning Notes"
The "Introduction to the algorithm," the study notes, adhere to the dynamic planning is a little, DP is very difficult ...
- Introduction to < Algorithm > introduction of chapter II
- Introduction to < Algorithm > 6th heap sequencing (1) Maximum heap and heap sequencing
- Introduction to < Algorithm > 6th heap sequencing (2) Priority queue
- Introduction to < Algorithm > 6th heap sequencing (3) K-Way merger
- Introduction to < algorithm > 8th linear time sequencing (1) Counting sort
- Introduction to < Algorithm > 6th heap sequencing (4) Young's matrix
- Introduction to < Algorithm > the 7th Chapter on fast sequencing (four variants)
- Introduction to < Algorithm > 9th Order Statistics (1) Minimum and maximum values
- Introduction to < algorithm > 9th sequential Statistics (2) Random selection
- Introduction to < Algorithm > 10th basic Data Structure (2) linked list
- Introduction to < algorithm > 11th hash List (1) Direct addressing table
- Introduction to < algorithm > 11th hash list (2) hash list
- Introduction to < algorithm > 11th hash Table (3) Open addressing
- Introduction to < algorithm > 12th two Fork Lookup tree (1) traversal
- Introduction to < algorithm > 12th two fork Find Tree (2) Find, insert, and delete
- Introduction to < algorithm > 12th two fork Find Tree (3) cardinality tree
- Introduction to < Algorithm > 14th expansion of data structures (1) Dynamic sequential statistics
- Introduction to < Algorithm > expansion of Data Structures (2)
- Introduction to < Algorithm > 15th dynamic Programming (1) assembly line scheduling
- Summary and sentiment of algorithmic learning
The path of programmer's cultivation