Inventory of C/C++ open source projects suitable for introductory learning

basis

Google Open Source Code Specification

Insert picture description here
https://github.com/zh-google-styleguide/zh-google-styleguide
evaluation: have not learned

CPlusPlusThings

Project name: CPlusPlusThings

Project introduction: CPlusPlusThings is a C++ learning project open sourced by Chinese people. It systematically divides C++ learning into [Basic Advanced], [Practical Series], [C++2.0 New Features], [Design Patterns] and [STL Source Code Analysis], [Concurrent Programming], [C++ Idioms], [Learning Course], [Tools], [Extension]. As a comprehensive and systematic C++ learning project, CPlusPlusThings is excellent. It reasonably arranges the actual combat part of 10 Days, and understands the syntax and function usage in actual combat.

For our role: It can help us learn C++ related knowledge systematically

Project source code address: https://github.com/Light-City/CPlusPlusThings
Rating: 8.9 K⭐
Evaluation: Fair (you may see it when you have time)

Modern C++: modern-cpp-tutorial

Project name: modern-cpp-tutorial is a modern C++ tutorial. Its purpose is to provide a comprehensive introduction to the relevant features of modern C++ (before 2020). In addition to introducing the code, it also introduces the historical background of its technical requirements as briefly as possible, which is a great help in understanding why these features appear.

Project source address: https://github.com/changkun/modern-cpp-tutorial

Rating: 11.8 K⭐
Evaluation: Recommended (to be learned)

CppTemplateTutorial

Rating: 4.4k
Rating: Main content: C++ template meta-programming, which is rarely used in actual programming, and you can learn and learn when you have nothing to do.

Algorithms and design patterns

Because I am not a professional algorithmist, I can only learn this at the end, and write down the link for now.

C-Plus-Plus

Project introduction: C-Plus-Plus is a collection of various algorithms implemented in C++, and is authorized in accordance with the MIT license agreement. These algorithms cover various topics such as computer science, mathematics and statistics, data science, machine learning, and engineering. In addition, you may find that multiple implementations of the same goal use different algorithm strategies and optimizations.

Project address: https://github.com/TheAlgorithms/C-Plus-Plus
Rating: 9.7K ⭐
Evaluation: Good code style (to be learned)

C

Project name: C

Project introduction: Yes, you read correctly, the name of this project is a single letter C. C is a treasure project, it can be said to be a powerful tool for learning data structure and brushing algorithm problems, because it contains almost all kinds of basic algorithms, data structures, and the C language implementation of LeetCode algorithm problems. Specifically:

Client/server issues
Statistical method issues Binary
conversion issues
Various data structures: arrays, linked lists, dictionaries, binary trees, heaps, stacks, queues, hashes, graphs, etc.
Search/find issues,
sort issues,
LeetCode exercises, and
other miscellaneous issues
. The following figure only intercepts a part of the specific implementation of data structure and algorithm questions:
Insert picture description here
For our role: It can help us better learn data structure and brush algorithm questions.

Project source code address: https://github.com/TheAlgorithms/C

design-patterns-cpp

Project name: design-patterns-cpp

Project introduction: You can guess from the project name. This is a C++ language version of the design pattern implementation, which contains the C++ language implementation of common design patterns.
Insert picture description here

For us: to help us understand and practice design patterns related knowledge

Project source code address: https://github.com/JakubVojvoda/design-patterns-cpp

Network and environment programming

cpp-httplib[recommended]

A header-only cross-platform HTTP/HTTPS server and client C library

Project source code address: https://github.com/yhirose/cpp-httplib
Xingxing: 4.6K
Evaluation: Just a header file, it should not be too difficult to read it! recommend

libhv (novice unfriendly)

Project name: libhv

Project introduction: libhv is similar to libevent, libev and libuv. It is a cross-platform asynchronous event-driven library with non-blocking I/O and timers, but libhv provides a simpler and easier-to-use API interface and supports richer network protocols Based on it, it can quickly drive the HTTP server and client to provide high-performance http services.

Main technical points or features: Cross-platform, event loop, non-blocking I/O, support IPv6, use OpenSSL, support multiple network protocols

For our role: can help us understand and practice the relevant knowledge of the operating system

Project source code address: https://github.com/ithewei/libhv
Rating: 1.7K ⭐
Evaluation: I read this project, the author's code style is not good, and there are very few examples, novices are not recommended to enter

Drogon

Drogon is an HTTP application framework based on C++ 14/17. Drogon can be used to easily build various types of web application server programs using C++. Drogon is the name of a dragon in the American TV series "Game of Thrones" that I like very much.

Drogon is a cross-platform framework that supports Linux, macOS, FreeBSD, OpenBSD and Windows. Its main features are as follows:

  • Use epoll-based non-blocking I/O network library (kqueue under macOS/FreeBSD) to provide high-concurrency, high-performance network IO, please visit TFB test results for more details;
  • Provide a completely asynchronous programming mode;
  • Support Http1.0 / 1.1 (server-side and client-side);
  • Based on the template, a simple reflection mechanism is implemented to completely decouple the main program framework, controller and view.
  • Support cookies and built-in sessions;
  • Support back-end rendering, the controller generates data to the view to generate Html pages. The view is described by a CSP template file, and the C
    ++ code is embedded in the HTML page through CSP tags. The drogon command line tool will automatically generate C++ code files for compilation;
  • Support view page dynamic loading (dynamic compilation and runtime loading);
  • Provide a convenient and flexible routing solution from the path to the controller processing program;
  • Support filter chain to facilitate the execution of unified logic (such as login verification, Http method constraint verification, etc.) before processing HTTP requests;
  • Support https (based on OpenSSL);
  • Support WebSocket (server and client);
  • Supports requests and responses in JSON format, which is very friendly to Restful API application development;
  • Support file download and upload; Support gzip, brotli compression transmission;
  • Support pipeline;
  • Provide a lightweight command-line tool drogon_ctl to simplify the creation of various classes in Drogon and the generation of view code; support asynchronous read and write databases based on non-blocking I/O (PostgreSQL and MySQL (MariaDB) databases);
  • Support asynchronous read and write sqlite3 database based on thread pool;
  • Support ARM architecture;
  • Provides a convenient and lightweight ORM implementation, and supports conventional object-to-database bidirectional mapping;
  • Support plug-ins, which can be installed by configuration files when loading;
  • Support AOP through built-in connection points.
  • Support C++ coroutine

Project address: https://github.com/an-tao/drogon
star: 5.1k
evaluation: the example is not too rich

netdata (novice unfriendly)

Project name: netdata

Project introduction: netdata is an open source and free system monitoring tool for real-time performance and operating status of a cool Linux system. Netdata provides flexible and easy-to-use system monitoring through the use of interactive dashboards. In addition to supporting the installation of common system platforms, it can also be easily installed in Docker containers and clusters and provide monitoring services.

For our role: It is not only an efficient tool, studying its source code can also help us learn and understand actual programming in the Linux environment.

Project source code address: https://github.com/netdata/netdata

Evaluation: The code is too messy and messy, don't read it now, novices don't mess into it

json-tutorial

Insert picture description here

Insert picture description here

Rating: 4.2K ⭐

WebServer

Insert picture description here

Insert picture description here

Project address: https://github.com/linyacool/WebServer
Rating: 2.6K ⭐

webbench

Webbench is a very simple website stress testing tool written by Radim Kolar in 1997 and used under Linux. It uses fork() to simulate multiple clients accessing the URL we set at the same time to test the performance of the website under pressure. It can simulate up to 30,000 concurrent connections to test the load capacity of the website. Very suitable for learning network programming, the amount of code is not large, suitable for beginners:

Project address: https://github.com/EZLippi/WebBench
Rating: 1.8K ⭐
Evaluation: Haven't seen it yet

tmux

Project name: tmux

Project introduction: tmux is an open source and free terminal reuse software. Its command line interface is very cool and easy to use, supports free split windows, and can be moved and adjusted freely, flexible and powerful. A very powerful usage scenario is: when connecting to the server remotely, you only need to start tmux, and you can use it to conveniently perform subsequent operations without opening multiple ssh console windows.

Insert picture description here
For our role: It is not only an efficient tool, studying the source code can also help us learn and understand the actual programming of the Linux environment.

Project source code address: https://github.com/tmux/tmux

other

Nintendo Red and White Machine Emulator

Insert picture description here

Insert picture description here

https://github.com/amhndu/SimpleNES

Other resources

https://isocpp.org/get-started
http://www.cppstdlib.com/

GitHub-Chinese-Top-Charts

Insert picture description here

https://github.com/kon9chunkit/GitHub-Chinese-Top-Charts

Know the question and answer

C++ book list

  • Effective C++
  • More Effective C++
  • Effective STL
  • STL source code analysis
  • In-depth exploration of the C++ object model
  • C ++ Primer
  • Linux high-performance server programming
  • Linux multi-threaded server-side programming (optional)
  • Advanced Programming in the UNIX Environment
  • UNIX Network Programming Volume 1 (must see, five-star recommendation)

I have seen

  • The design and evolution of the C++ language: This book is really hard to read, I don’t know if it’s a translation problem

My technical route: I have studied C, C++, Java, Rust, Go, Python, read a little front-end, and developed desktop software.
Determined to focus on back-end development in the future, the language has not yet decided which

Guess you like

Origin blog.csdn.net/zhizhengguan/article/details/107056943