Current location - Training Enrollment Network - Books and materials - The most comprehensive self-study guide to computer basics!
The most comprehensive self-study guide to computer basics!
The most comprehensive self-study guide to computer basics is as follows:

1, data structure and algorithm

Program = data structure+algorithm.

Data structures are often put together with algorithms. Some universities have two courses, namely Data Structure and Algorithm Design and Analysis.

This has caused confusion among many students. What's the difference between data structure and algorithm? Some students even think that this is a kind of.

Actually:

Data structure mainly describes the organization form of data. This is how these data are stored, so there are arrays, linked lists, stacks, queues, trees and graphs, which are the key points of data structure.

On the other hand, algorithms focus on ideas. For example, how to sort the elements in the array, how to find the largest number and the smallest number, and so on. To put it bluntly, it is the way to solve problems in reality. So there are algorithms such as greed and dynamic programming.

Data structures and algorithms, no matter what you think, must be carefully studied! No matter interview or postgraduate entrance examination, it is necessary!

Let's summarize some important knowledge points, so that we can learn in a targeted way.

Complexity analysis

time complexity

Spatial complexity

In the first lesson of learning data structure and algorithm, I always choose complexity analysis. In my opinion, this is the most important knowledge point in data structure and algorithm, and no refutation is accepted.

Article recommendation:

Nanny teaching! Thoroughly learn the complexity of time and space.

data structure

Array: Array is an aggregate data type, which is a collection of several variables of the same type organized in order.

Linked list: Linked list is a data structure, and data elements are stored in a chained storage structure, which is characterized by physical discontinuity.

Stack: Stack is a special linear table, which can only insert and delete data nodes at the fixed end of the table.

Queue: Queue is a special linear table similar to stack. Unlike stacks, queues are only allowed to be inserted at one end of a table and deleted at the other.

Hash table: Hash table is derived from hash function. Its idea is that if there is a record with the same key and t in the structure, it must be found in the storage location of F(T), so that the searched record can be obtained directly without comparison.

Heap: Heap is a special tree data structure, and the heap usually discussed is a binary heap.

Tree: A tree is a typical nonlinear structure. It is a finite set k with two nodes.

Graphics: Graphics is another nonlinear data structure. In graph structure, data nodes are generally called vertices, and edges are ordered even pairs of vertices.

Operational data structure

Lookup: Find nodes that meet specific conditions in the data structure. Usually, given the value of a field, find the node with that field value.

Insert: Add a new node to the data structure.

Delete: Deletes the specified node from the data structure.

Modify: Change the value of one or more fields of the specified node.

Sorting: Reorder the nodes in the specified order. Such as increment or decrement.

Data structure book recommendation

Big talk data structure, data structure and algorithm analysis.

Compared with similar data structure books on the market, the book "Big Talk Data Structure" is more interesting and readable, and the algorithm is explained in detail and deeply.

It is a very suitable reading for self-study.

Throughout this book, it narrates in an interesting way, quotes a lot of life knowledge for analogy, and makes full use of graphic language to embody abstract content, analyzes some classical algorithms involved in data structure line by line, and compares them with many algorithms.

If you still can't understand, you can look at my picture, which is a little slow, but it is absolutely easy to understand:

Array: the ball encountered array waterloo, and the interviewer suggested going back to the village to raise pigs.

Linked list: Linked list, you can understand it with a few strokes!

Stacks and queues: Hum! "Stack" live, line up!

Strings: Do you know anything about strings?

algorithm

The routine of learning algorithm is very simple. Read more, write more and use computers.

back-track algorithm

Divide and conquer algorithm

enumeration algorithm

greedy algorithm

Dynamic programming

search algorithm

Binary retrieval

Hash table lookup

Tree structure search

String matching

Violent matching

Knuth morris pratt algorithm

10 big sorting algorithm

bubble sort

Selective sorting method

Insertion sort

Schell classification

Combined classification

heapsort

quicksort

counting sort

radix sort

Barrel classification

Algorithm book recommendation

algorithm pattern

Rich examples, illustrated, this is a novel-like algorithm introduction.

Whether you are a professional programmer, a programming enthusiast or a computer major student who needs to review algorithms, this book is your best choice.

The first three chapters in the book will help you lay a good foundation and take you to learn method of bisection, big O representation, two basic data structures and recursion.

The remaining pages will mainly introduce widely used algorithms, including: solving skills when facing specific problems, how to use greedy algorithm or dynamic programming; Application of hash table; Graphic algorithm; Kzui nearest neighbor algorithm.

Algorithm (fourth edition)

The classic reference book in the field of algorithm includes the core knowledge system of algorithm that has evolved for decades.

The book explains a variety of algorithms and data structures, so that you can realize, debug and apply them in various computer environments.

As a classic reference book in the field of algorithm, this paper comprehensively introduces the necessary knowledge of algorithm and data structure, especially discusses sorting, search, graphic processing and string processing.

The fourth edition specially gives 50 algorithms that every programmer should know and understand, and provides the actual code.

Video tutorial recommendation

"Data Structure" is jointly taught by Professor Zhejiang University and Professor He. Excellent course, complete system, good class experience, online difficulty coefficient and good quality. You can learn a lot of thinking methods and skills, and students who want to learn data structure well must not miss it.

"Data Structure and Algorithm", the biggest feature of this course is the combination of theory and practice. You will learn the algorithm skills to solve various calculation problems and realize the coding problem of about 100 algorithm.

Website recommendation

If you still find it difficult to learn, you can use the following website to learn.

Dynamic visualization website of data structure and algorithm.

take exercise

Learning data structures and algorithms is often accompanied by "brushing questions". If there are no special circumstances, I suggest you brush LeetCode.

For LeetCode, there are many solutions to the problem, and we often pursue the optimal solution. The following is the optimal solution of LeetCode compiled by Senior Tsinghua, which is highly recommended:

Two people should be comfortable together.

2, the principle of computer composition

The principle of computer composition is the principle of "computer" and "composition"

I think it is the most difficult course among all the basic computer courses. The core of the whole course is to build a machine that can run assembly instructions by using digital logic circuits and triggers.

Book recommendation

How does the computer work? How does the program work?

It is precisely because the principle of computer composition is difficult to learn, so for beginners, compared with other courses, the choice of introductory books for this course is more friendly.

How does the computer work and how does the program work? These two books are very thin. The author expounds knowledge in vernacular Chinese, which is quite good for beginners.

Compared with the mentality of learning, I read more with curiosity.

How does the computer work?

This book advocates returning to the basic knowledge of computer in today's rapid development of computer and continuous innovation of technology. By exploring the nature of computers, engineers can be more interested in computers, and they can quickly grasp the main points and use them flexibly in the face of complex latest technologies.

How does the program work?

Starting with the internal structure of the computer, this book explains in detail the binary, memory, data compression, the relationship between source files and executable files, operating system and application programs, assembly language, hardware control methods and so on. In the form of illustrations. The purpose is to let readers know what happened between the time when the user double-clicked the program icon and the time when the program started running.

Video recommendation

This video is the first time to promote Carnegie Mellon University's "Deep Understanding of Computer Systems" series courses. Is English not good? Never mind, there are Chinese and English subtitles. After watching this video, I successfully got knowledge +6.

The supporting textbook for watching this video is Deep Understanding of Computer Systems.

3. Operating system

No matter what language you learn, you can't avoid dealing with the operating system. The final execution of all languages depends on the operating system. For example, if you learn Java and use multithreading technology, the operating system is actually responsible for managing processes and threads.

If you don't know the operating system, you will be at a loss to learn the advanced features of programming languages, such as thread scheduling, memory allocation, or Linux-related knowledge.

Only by learning the operating system can we learn other languages and technologies better. Therefore, the operating system is a profound knowledge for programmers.

Book recommendation

Introductory recommendation: Introduction to operating system and modern operating system.

In-depth series: Understand the computer system deeply and understand the computer system from the programmer's point of view.

This is an entry-level book. In fact, this book is not "in-depth" and the content is relatively shallow.

"Wide coverage" is actually the greatest advantage of this book. It tells us how the computer is designed and works, what are the key points of the operating system and what are their functions.

After reading this book, we can have a rational understanding of the working mode of each component of the computer system. To some extent, it is actually training the way of thinking-computational thinking.

Video recommendation

Operating system, to be honest, it is not recommended to look directly at it from the beginning. Because this book looks really boring.

Tsinghua University's operating system courses are recommended here, which are divided into upper and lower levels. When watching videos, you can recommend them in combination with the above books.

You can watch (1) with the introduction of the operating system and (2) with the modern operating system.

4. Computer network

Computer network related knowledge is often used in work.

To learn computer network, you need to know Socket programming, TCP/IP network model, OSI seven-layer network architecture, and how to package a data packet layer by layer, then unpack it layer by layer and send it from the client to the server.

But computer networks are much easier to learn, because computer networks are not abstract, and examples can be found in real life.

Book recommendation

Graphic HTTP

Illustrated and easy to understand, it is very suitable for getting started. It is not easy to make a written book easy to read and cover the main knowledge fields. This book has done it, from the coverage of HTTP knowledge to readability.

The feature of this book is that while explaining, it is supplemented by a large number of vivid communication legends to better help readers understand the interaction between client and server in the process of HTTP communication.

computer network

Most of them are using Xie Xiren's "Computer Network", which is very good and easy to understand, and it is also a common teaching material for 408.

Video recommendation

First of all, we should vigorously promote Hu Da's computer network micro-classroom, which is the best computer network video course with animation. The logic of the teacher's lecture is clear and easy to understand.

5. Database database

A database is a place to store data, but it is more than that.

To learn database, we should not only know the basic parts of SQL statement and table design structure, but also know the optimization of index, slow query and configuration parameters.

In-depth study of SQL optimization, backup recovery, architecture optimization and other advanced content.

Book recommendation

Introductory series: SQL basic course, SQL learning guide, introduction to database system.

The introduction rhythm of this book is more moderate, and the knowledge is introduced more vividly with bold illustrations and keywords, which is suitable for students with zero foundation.

For zero-based friends, Mick's sql basic course is easier to understand and learn, which is very suitable for beginners to learn.

Deep series: MySQL technology insider -InnoDB storage engine, Redis design and implementation.