C/C++ Linux后台服务器开发学习知识路线总结

Linux开发工程师,学习步骤:
一、Linux开发环境
1、了解Linux环境搭建,了解Linux C编程;
2、了解Linux安装,命令使用,shell编程;
3、shell脚本实现检测局域网内哪些ip地址机宕机。

二、Linux C编程
1、Linux C编程 统计文件单词数量
包括:文件操作、文件指针
2、Linux C编程 实现通讯录
包括:结构体

三、Linux环境编程
1、并发下的计数方案
包括:互斥锁、自旋锁、原子操作
2、实现线程池
包括:线程队列、任务队列,条件变量
3、CPU与进程的关系
包括:进程操作,进程与CPU粘合,进程通信
4、数据库操作
包括:数据库封装,sql语句封装,网络连接封装

四、网络编程
1、DNS请求器
包括:UDP通信,DNS协议,协议解析
2、实现http请求器 TCP客户端
包括:TCP编程,HTTP请求协议
3、百万级并发服务器 TCP服务器
包括:tcp,网络io,Linux系统

Linux后台开发工程师,学习步骤:
千里之行,始于足下。
一、算法与设计
1、排序与查找
包括:插入排序、快速排序、希尔排序、桶排序、基数排序、归并排序
2、常用算法
包括:布隆过滤器、字符串匹配KMP算法、回溯算法、贪心算法、推荐算法、深度/广度优先
3、常用的数据结构
包括:平衡二叉树、红黑树、B-树、KMP算法、栈/队列
4、常用设计模式
包括:单列模式、责任链模式、过滤器模式、发布订阅模式、代理模式、工厂模式

二、后台组件编程
后台组件是开发入门石。
1、持久化MySQL
包括:MySQL安装配置与远程连接、数据操作源于SQL语句、存储过程与事务处理、SQL函数,运算,临时表、防数据丢失备份与恢复、MySQL建库建表索引
2、消息队列ZeroMQ
包括:ZMQ编译安装与开发环境搭建、publisher-subscriber模式实现、request-response模式实现、Router-Dealer模式实现、消息队列-性能分析
3、缓存Redis
包括:Redis编译安装配置、客户端全局唯一ID保存机制、Redis消息队列机制 发布订阅、Redis事务实战、Redis安全性能,数据备份与恢复、Redis分布式锁详解
4、反向代理Nginx
包括:Nginx开发介绍、反向代理负载均衡配置详解、自定义协议upstream开发、子域名映射、服务器后台攻击预防、nginx双虚拟主机
5、Restful Http
包括:Http第三方接口实现、异步Http请求、ngrok与Restlet、长连接与短连接
6、协调服务ZooKeeper
包括:ZK编译安装与C API开发环境、集群管理与服务注册、节点创建与监控、分布式锁的实现、ZK伪集群部署与服务管理
7、NoSQL MongoDB
包括:MongDB安装与开发介绍、MongoDB备份与恢复、MongoDB文档操作、全文检索与正则表达式、MongoDB建库建集合

三、代码工程化
代码组织能力与代码迭代能力。
1、架构工程
包括:工程参数配置与编译cmake、代码规范与命名规则、文件命名与变量命名规则、脚本配置工具autoconf、代码工程组织架构Makefile
2、管理代码
包括:分布式版本控制系统git、远程仓库、标签管理、github与码云、创建仓库,导入、checkout、svn环境搭建与原理、分支管理冲突解决、产品代码版本管理SVN

四、网络服务
网络IO是网络通信的血管,数据是血液。血液的流动是不能离开血管的。
1、源码实现
包括:服务器IO核心——epoll编程实战、客户端多网络连接机制poll、文件IO管理select
2、框架
包括:高性能的时间循环libev、跨平台异步I/O libuv、跨平台的C++库Boost.Asio、事件通知库libevent
3、理论
包括:阻塞型BIO、异步IO AIO、非阻塞型IO NIO

五、开源框架
站在巨人的肩膀上,看到窗外的景色。
1、TCP协议栈
包括:基于DPDK的高性能用户态协议栈f-stack、基于Netmap单线程协议栈NtyTcp、精简版tcp协议栈LWIP
2、并发性
包括:用OpenCL的C++ GPU计算库Boost.Compute、Intel线程构建块Intel TBB、并行编程的异构系统的开放标准OpenCL、C++11的反应性编程库C++ React
3、数据库
4、国际化
5、压缩
6、日志
7、多媒体库
包括:开源音频库——跨平台的音频API OpenAL、网络实时流媒体通信WebRTC、音频和音乐数字信号处理库Maximilian、C++易用和高效的音频合成Tonic
8、序列化
9、XML库
10、脚本
11、Json库
12、数学库
包括:高质量的C++线性代数库Armadillo、数学图形模板库GMTL、用于高精度计算的C/C++库GMP、高级C++模板头文件库Eigen
13、安全
包括:SSL,TLS和DTLS协议的安全通信库GnuTLS、功能齐全的,开源加密库OpenSSL、有关加密方案的免费的C++库Cryto++
14、Web应用框架
包括:安全快速开源Web服务器Lighttpd、与Qt库的web框架QDjango、高性能的HTTP和反向代理web服务器Nginx
15、网络库
包括:C异步网络开发库Dyad.c、多协议文件传输库Curl、高速模块化的异步通信库ZeroMQ、C++面向对象网络工具包ACE
16、异步事件
包括:事件通知库libevent、跨平台异步I/O libuv、功能齐全,高性能的时间循环libev、网络和底层I/O编程的跨平台的C++库Boost.Asio
17、协程
包括:纯c版的协程框架ntyco、C++11实现协程库,golang风格的libgo、微信支持8亿用户同时在线的底层IO库libco

六、性能测试
从技术反馈中理解知识的原理。
1、调试库
包括:Boost测试库Boost.Test、内存调试性能分析工具Valgrind、谷歌C++测试框架GoogleTest、内存分配跟踪库MemTrack
2、测试库
包括:单元测试框架minUnit、测试用例编写libtap、轻量级的C++单元测试框架UnitTest++、自动化测试用例gtest和luatest
3、性能工具

七、Linux系统
1、系统命令工具
包括:进程间通信设施状态ipcs、Linux系统运行时长uptime、CPU平均负载和磁盘活动iostat、监控、收集和汇报系统活动sar、监控多处理器使用情况pmap、系统管理员调优和基准测量工具nmon、密切关注Linux系统glance、查看系统调用strace
2、基础命令工具
包括:系统进程状态ps、虚拟内存统计工具vmstat、控制台的流量监控工具vnstat、进程监控工具atop,htop、内存使用状态free
3、网络参数工具
包括:Linux网络统计监控工具netstat、显示和修改网络接口控制器ethtool、网络数据包分析利刃tcpdump、远程登录服务的标准协议telnet、获取实时网络统计信息iptraf、显示主机网络接口带宽使用情况iftop
4、磁盘参数工具
5、日志监控工具
6、参数监控工具

——参考今日头条公众号 Hu先生Linux后台开发 湖南零声信息科技有限公司

你可能感兴趣的:(总结梳理,他山之石)