A freshman in computer science, but can't find the way to do it, begging the seniors to show you the way?

In fact, the courses in the university tell you what to study? First recommend three very good Github repositories for computer science learning! I hope everyone has to help! cry cry! If only I had been told about these open source projects when I was in college!

God-level programming website, it can be called a charging station for programmers, I will find it for you, you can't miss it

TeachYourselfCS-CN (Teach Yourself Computer Science)

zju-icicles (Zhejiang University Curriculum Strategy Sharing Program)

REKCARC-TSC-UHT (Tsinghua University Department of Computer Science Course Guide)

There is no doubt that obtaining a certificate in a timely manner in a university will be beneficial for computer majors to find a job. However, compared with certificates, technology stacks, internship experience, and project experience are particularly important.

Certificates with gold content : ACM International College Students Programming Competition, GPLT Team Programming Competition, Blue Bridge Cup National Software and Information Technology Professionals Competition, China College Students Computer Design Competition, Baidu Star Competition, Ali Tianchi Competition, Hackathon, Huawei Software Elite Challenge, National Computer Simulation Grand Prix....

In addition to obtaining a certificate, looking for a job requires:

  • At least one programming language is required, for example, C/C++ or Java;

  • Need to learn data structures and algorithms, at least master common data structures and algorithms;

  • Need to learn database knowledge, because the project is almost inseparable from the database, the database must be mastered;

  • Master a skill, such as back-end development, web development, mobile development, artificial intelligence, etc.;

Of course, further improvement is required, and you can learn related professional courses such as operating systems, computer networks, computer organization principles, and compilation.

Personally, my undergraduate major is electronic information, and my graduate study is communication and information systems. In the School of Computer Science, I am not entirely a computer major. When I was a graduate student, I taught myself to switch to computer. Currently, I am engaged in C++ background development. This article is mainly aimed at the direction of Linux C/C++.

C language

At the beginning, it was a book, and then it was copying the code, debugging it on the computer, imitating the modification, watching it n times, and the quantitative change caused the qualitative change, and the programming thinking will be cultivated! ! !

Book

This book is a good introduction. I feel that it can improve my interest in C, and the things in it are not so difficult to understand. Can be used as an introductory first book.

C programming language

The first book "C Programming Language", Mechanical Industry Press, author Brian W. Kernighan / (US) Dennis M. Ritchie. Written by the father of the C language, an introductory classic book.

C Primer Plus

"C Primer Plus", People's Posts and Telecommunications Publishing House, author Stephen Prata. It can be used as a C language reference book or as an introduction. The content is step-by-step and can exercise programming ideas.

C and pointers

"C and Pointers" In-depth understanding of pointers, no longer afraid of pointers after reading.

C pitfalls and pitfalls

"C Traps and Defects" As the book says, "The knowledge revealed in this book can at least help you reduce 90% of the bugs in C code and primary C++ code". After reading it, you can avoid some pits in C language development.

C language introductory video:

  1. "Hao Bin C language self-study course"

Hao Bin C language self-study course

https://www.bilibili.com/video/BV1os411h77o?from=search&seid=15026475169248378667

  1. "Introduction to Programming - C Language" (Zhejiang University Weng Kai)

Introduction to Programming - C Language

https://www.bilibili.com/video/BV1ME411h75N?p=45

Windows development

Windows Programming (5th Edition Collector's Edition)

The book "Programming for Windows (5th Edition Collector's Edition)" is actually a book that I started to read when I was working on a project. This book mainly introduces the development of Windows system desktop software. As a necessary reference for Windows developers, it covers Basic knowledge and intermediate and advanced topics, comprehensively introduce the details involved in Windows programming, students who want to understand and engage in this development can take a look. After reading this book, you will have a deeper understanding of the software you use on your computer. How the window comes out, how the menu is handled after clicking, how the animation is drawn, and how the software communicates with the operating system, you will know everything after reading this book.

Linux

Linux programming

"Linux Programming" is my introductory book on Linux programming. This book has been widely praised for its simplicity, comprehensiveness, and rich examples.

Brother Bird's Linux Private Kitchen

"Brother Bird's Linux Private Kitchen" is also a Linux introductory book. It was written by a Chinese. It was a book written by a Chinese who really understood the system and then wrote it according to the thinking habits of the Chinese, so it is easy to understand.

C++

C language -> C with class -> C++;

It can be seen from the evolution of C++ that C++ is a C language with classes at the beginning. What is the relationship between C language and C++?

After watching Mr. Hou Jie's video or the book "Effective C++", we know that when we talk about C++, we should consider it as a huge "language federation", which at least contains the following important components:

  • procedural programming

  • Object-Oriented Programming

  • generic programming

  • metaprogramming

  • functional programming

  • STL standard library

Among them, "procedural-oriented programming" is exactly the part of the backward-compatible C language provided by C++.

C++ evolution (C++ 98 -> C++ 03 -> C++ 11 -> C++ 14 -> C++20 -> ..... )

C++ consists of the C++ language and the standard library. As the C++ language becomes more complex as it evolves, the standard library is especially important because using the standard library is more productive!

Book

C++ Primer Chinese version

"C++ Primer Chinese Edition" is a very friendly self-study textbook for beginners of the C++ language. The author clearly explained the basic concepts of C language and the programming details that need attention, and has rich routines and exercises. I believe that after reading it carefully, you can complete the goal of getting started with C language.

Guidelines for High Quality Programming

"High-Quality Programming Guide", recommended by the wall crack, this book is quite enjoyable to read, there are some programming specifications in the book, it is good for people who write programs, it can cultivate good coding habits, deepen the Consolidation of some knowledge. It is more practical, and it is also suitable for reading before the interview.

Essential C++ Chinese version

"Essential C++ Chinese Edition" is a little but very practical C++ introductory book, emphasizing quick start and understanding of C++ programming. This book focuses on a series of increasingly complex programming problems and the language features used to solve them. You'll learn not only the functions and constructs of C++, but also their design purpose and rationale.

More Effective C++ (Chinese version)

"More Effective C++ (Chinese version)", the book is organized around 55 principles, each of which introduces a method that allows you to write better C++ code, and discusses it in detail with specially designed examples.

Programming Techniques to Improve C++ Performance

"Programming Techniques to Improve C++ Performance", this book believes that 20% of performance defects will take up 80% of our time. So we focus our energy on where it is most valuable. This book discusses in detail temporary objects, memory management, inheritance, virtual functions, inlining, reference counting, and the STL, all of the details that might improve the efficiency of C++. Whether you are a practitioner in related fields, or a C++ programming enthusiast, or a programming enthusiast who is eager to break through the bottleneck of programming and greatly improve your self-cultivation, this book will surely benefit you a lot.

Learn C/C++ from Defects

"Learning C/C++ from Defects" is essentially a set of C/C++ wrong questions. The entire book includes errors caused by 63 problems, the flaws in the title. It is also a guide to avoiding pits.

C++ Templates Chinese version

"C++ Templates Chinese Edition", a practical book for an in-depth understanding of modern C++ templates. Not only is this book an authoritative explanation of C++ templates, but it also provides an in-depth introduction to other general C++ ideas.

Analysis of STL source code

"Analysis of STL Source Code" provides a detailed understanding of the underlying implementation mechanism of STL, as well as a deeper understanding of common data structures and C++ memory management.

In fact, there are also "C++ Standard Library (2nd Edition)", "C++ Concurrent Programming Practice", "C++ Programming Ideas (two volumes combined)", etc. I have bought all the books introduced, but to be honest, the latter Several books are read in general, as reference books.

video

  1. Tsinghua University-Zheng Li-C++ Language Programming (Basic)

Tsinghua University-Zheng Li-C++ language programming

https://www.bilibili.com/video/BV1PA411b75a?p=92

  1. Teacher Hou Jie's Eight Parts:

Teacher Hou Jie's Eight Parts

https://github.com/tangtangcoding/CC-

  1. QT video tutorial:

QT video tutorial

https://www.bilibili.com/video/BV1jK4y1m7d4

Data Structures and Algorithms

Book

If you want to learn data structure systematically, it is recommended to read "Dahua Data Structure", "Algorithm (4th Edition)" and "Data Structure and Algorithm Analysis".

big data structure

Algorithms (4th Edition)

Data Structure and Algorithm Analysis

If you are new to data structures, you can start with "Algorithm Illustration" and "My First Algorithm Book".

Algorithm diagram

my first algorithm book

video

  1. Hao Bin data structure

Although it is relatively old, it is more detailed, easy to understand, and very friendly to beginners.

https://www.bilibili.com/video/BV1Ut411a7rN?from=search&seid=14411767501116137153

  1. Data Structures-Zhejiang University

The course was co-recorded by Chen Yue and He Qinming. Both station b and MOOC.com are clearer.

https://www.icourse163.org/course/ZJU-93001?from=searchPage#/info

  1. Data Structure and Algorithm Fundamentals

The course was recorded by Mr. Wang Zhuo from Qingdao University. It is very suitable for postgraduate entrance examinations and has many topics.

https://www.bilibili.com/video/BV1nJ411V7bd?p=1

more hands-on

Do it, do it, do it. Say the important thing three times.

Hands-on includes masturbation and "multi-painting"

Learn and draw. Because for the storage structure in the data structure, especially the tree structure and the graph structure, the storage structure is indeed more complicated, and it is inevitable that there will be disclosure only by spatial imagination, and many "pits" can often be avoided by drawing pictures by yourself. In the article with the algorithm, I will also add some animations.

Graph and visualize data structures. Get an intuitive feel for what a data structure looks like. What it's like to use it, what it looks like abstractly and concretely. That's the most important thing. And it is important and effective whether it is for simple queues, stacks or balanced trees. Draw the data structure and you can imagine it in your head. In short, all you need to do is to understand these data structures intuitively.

When learning some algorithms, you can also use drawing to deepen your understanding. You can draw pictures while reading the code, so that the implementation logic of the code can be clarified more quickly.

On the basis of understanding the storage structure and implementation logic through "multi-painting", beginners also need to "multi-code" to write the implementation code. For a certain storage structure or algorithm, it is difficult to achieve integration without three or more independent implementation processes.

In addition, you can write more questions on leetcode and Niuke.com.

computer network

Book

TCP/IP Explained Volume 1: Protocol

Called the bible in the field of TCP/IP. The author W. Richard Stevens, from the perspective of users (programmers), uses tcpdump as a tool to explain the TCP protocol, which is admirable. I am afraid that the designer of the TCP protocol is also difficult to explain so well, at least not as patiently and meticulously as he draws hundreds of timing diagrams for sending and receiving packages.

Computer Networks: A Systems Approach (Original Book 5th Edition)

Classic books, focus on the TCP/UDP part.

video

  1. computer network micro-class

https://www.bilibili.com/video/BV1c4411d7jb?p=1

  1. Han Ligang Computer Network Xie Xiren 7th Edition

https://www.bilibili.com/video/BV1gV411h7r7?p=1

database

Book

MySQL must know must know

An introductory book that starts with an introduction to simple data retrieval and progresses to more complex content, including the use of joins, subqueries, regular expressions and full text-based searches, stored procedures, cursors, triggers, table constraints, and more .

High-Performance MySQL (3rd Edition)

Advanced books, classics in the field of mysql. Not only suitable for database administrators (dba) to read, but also suitable for developers to learn. Whether you are a database novice or an expert, I believe you can gain something from this book.

Inside MySQL Technology: The InnoDB Storage Engine (Version 2)

The sublimation book explains in detail the implementation principle of each functional module inside the InnoDB storage engine, which has important guiding significance for everyone to read and understand the source code of InnoDB. Read for all developers and DBAs looking to build and manage high-performance, high-availability MySQL database systems.

Other books:

"Database System Implementation", "Redis Design and Implementation".

video

MySQL_Basic + Advanced Chapter-Database-sql-mysql tutorial_mysql video_mysql getting started

https://www.bilibili.com/video/BV12b411K7Zu?from=search&seid=2779357081480449466

Principles of Computer Composition

Book

Deep Understanding of Computer Systems (Original Book 3rd Edition)

This is a very in-depth and directional book that every CS student should read. It will tell you, in order to become an excellent programmer, you should focus on understanding the underlying principles of computers.

Other books:

Principles and Design of Computer Composition.

video

  1. Principles of Computer Composition Liu Weidong from Tsinghua University lectures on national excellent courses in 58

https://www.bilibili.com/video/BV1c4411w7nd?p=1

  1. Principles of Computer Composition (Liu Hongwei, Harbin Institute of Technology) 135 lectures (full) HD

https://www.bilibili.com/video/BV1t4411e7LH?p=1

operating system

Book

Modern Operating Systems (3rd Edition)

This book is a classic in the field of operating systems. It covers processes, threads, storage management, file systems, I/O, deadlocks, interface design, multimedia, performance trade-offs, and the latest trends in operating system design. . It not only covers the principles and practices of modern operating systems, but also pays special attention to Linux operating systems, Windows Vista operating systems, embedded operating systems, real-time operating systems, and multimedia operating systems. Therefore, it is also a collection of interview written test operating systems.

Other books:

"Restore the truth of operating system", "30-day self-made operating system".

video

  1. Operating System (Mr. Li Zhijun, Harbin Institute of Technology) 32 lectures (full) ultra-clear

https://www.bilibili.com/video/BV1d4411v7u7?p=1

  1. 2020 Nanjing University "Operating System: Design and Implementation" (Jiang Yanyan)

https://www.bilibili.com/video/BV1N741177F5?p=1

network programming

When I first started working, my first project was IoT backend server software. There are similar network service programs on the Internet, such as backend servers for instant chat software, online game servers, financial transaction systems, distributed mass storage for Internet companies, and Weibo. Internal broadcast notifications for posts and more. Of course, there are also transplants or maintenance of TCP/IP protocol stacks and so on on embedded systems.

  • Familiar with some network models, such as IOCP used under WINDOWS system. Epoll, select, and poll models used in Linux systems.

  • Familiar with some common libraries such as socket Server, RPC Framework

  • memory management. Overload new/delete, memory pool, object pool processing.

  • Memory leak detection, memory access out-of-bounds alert, and memory fragmentation recovery.

  • Pre-allocated pools reduce switching and scheduling, pre-processed thread pools and connection pools, such as database connection pools, etc.

  • Multi-process programming, multi-threaded programming

  • Five IO models: synchronous, asynchronous, blocking, non-blocking, signal-driven

  • Inter-process communication methods: semaphores, pipes, shared memory, sockets, etc.

  • Thread safety issues, lock handling, critical resources

  • Load balancing concept, data preparation and real-time calculation, if there is a time-consuming business, microservices and load balancing can be considered.

  • Timer, heartbeat, regular check for dead links, etc.

Book

It is important to have a foundation of networking and operating systems.

TCP/IP network programming

It is very suitable for beginners to learn, and the explanation of network programming is clear and straightforward. It is completely suitable for beginners to get started, and writes every step of network programming.

UNIX Network Programming Volume 1: Socket Networking API (3rd Edition)

UNIX Network Programming Volume 2 Interprocess Communication

Classic books that are necessary for learning Unix, read important chapters, and can be used as reference books.

Advanced Programming in the UNIX Environment (3rd Edition)

Process control, thread control, process environment, and process communication are particularly exciting, and the network part is relatively shallow, but it is sufficient. The whole book can be said to cover all aspects of Linux, and even very detailed.

This book is a classic work in the field of Linux server programming. From the network protocol TCP/IP, the core elements of server programming, Linux network programming API, advanced I/O functions, Linux server programming specifications, high-performance server programming framework, I/O multiplexing , signals, timers, high-performance I/O framework library Libevent, multi-process programming, multi-thread programming, process pools and thread pools, etc., comprehensively explain the methods, skills and ideas of writing high-performance Linux server applications. It also includes two comprehensive cases, which explain the optimization of high-performance servers and the use of system monitoring tools from the perspective of actual combat.

Linux multi-threaded server programming

This book is the work of Chen Shuo, focusing on explaining a programming model of a highly adaptable multi-threaded server, namely one loop per thread. This is the most mature mode for writing user-mode high-performance network programs in native language under Linux. After mastering it, various common server-side network applications can be developed smoothly. This book takes the muduo network library as an example to explain the usage and precautions of this programming model.

Video & source code

Recommend Chen Shuo's "Linux CC++ Network Programming Practice" and the open source library muduo

https://github.com/tangtangcoding/CC - https://github.com/chenshuo/muduo

libevent is a lightweight network programming library based on event callback mechanism, which can support Linux, Solaris, Windows and other systems. It is written in C language and is more suitable for entry-level reading.

https://github.com/libevent/libevent

Asio is a network programming library in boost, written in C++ language. It uses a lot of boost data structures and techniques, including the use of a large number of templates, which has a certain language difficulty.

https://www.boost.org/doc/libs/1_75_0/doc/html/boost_asio.html

at last

Welcome to like + watch + forward.

Je suppose que tu aimes

Origine blog.csdn.net/weixin_41055260/article/details/126661779
conseillé
Classement