Linux C/C++编程技术汇总

在软件开发的宏大版图中,C++ 语言宛如一座巍峨的高山,吸引着无数开发者攀登探索。而 Linux 操作系统,以其开源、稳定、高效的特性,成为了众多开发者钟爱的开发平台。将 C++ 与 Linux 相结合,就如同为开发者配备了一把无坚不摧的利刃,能够在系统级编程、高性能计算、游戏开发等诸多领域披荆斩棘。对于 C++ 程序员而言,掌握 Linux 环境下的 C/C++ 编程技术,不仅仅是提升自身技能的关键一步,更是在激烈的职场竞争中脱颖而出的必备法宝。这就好比一位武林高手,不仅要熟练掌握各种招式,更要修炼深厚的内功。而 Linux C/C++ 编程技术,就是 C++ 程序员的 “内功心法”。

在日常开发中,我们常常会遇到各种挑战:如何优化代码性能,让程序运行得更加高效?怎样利用多线程技术,充分发挥多核处理器的优势?如何与底层系统进行交互,实现更强大的功能?这些问题,都能在 Linux C/C++ 编程技术的世界中找到答案。接下来,就让我们一同踏上这趟 Linux C/C++ 编程技术的探索之旅,从基础语法到高级应用,从文件操作到网络编程,从多线程处理到内存管理,全方位地深入学习,修炼 C++ 程序员的深厚 “内功”。无论你是初出茅庐的编程新手,还是经验丰富的开发老兵,相信都能在这篇文章中收获满满,为自己的编程之路注入强大的动力。

一、C/C++ Linux全栈开发
大厂标准 , 面试常问, 工作常用技术栈;手写代码实现:sdpk文件系统,dpdk用户态协议栈,异步网络库zvnet ,协程,io_uring,Nginx,bpf,线程池,内存池,连接池,原子操作,ringbuffer,定时器,死锁检测,分布式锁,日志,probuf,kafka,grpc,udp可靠传输;上线项目:KV存储项目,图床项目,即时通讯项目,内网穿透channel,魔兽游戏项目等。

1.1精进基石专栏
(1)数据结构与算法

随处可见的红黑树

红黑树的应用场景进程调度cfs,内存管理

红黑树的数学证明与推导

手撕红黑树的左旋与右旋

红黑树添加的实现与添加三种情况的证明

红黑树删除的实现与删除四种情况的证明

红黑树的线程安全的做法

分析红黑树工程实用的特点

磁盘存储链式的B树与B+树

磁盘结构分析与数据存储原理

多叉树的运用以及B树的定义证明

B树插入的两种分裂

B树删除的前后借位与节点合并

手撕B树的插入,删除,遍历,查找

B+树的定义与实现

B+树叶子节点的前后指针

B+树的应用场景与实用特点

B+树的线程安全做法

海量数据去重的abhloriter bitap

hash的原理与hash函数的实现

hash的应用场景

分布式hash的实现原理

海量数据去重布隆过滤器

布隆过滤的数学推导与证明

(2)设计模式

创建型设计模式

单例模式

策略模式

观察者模式

工厂方法模式与抽象工厂模式

原型模式

结构型设计模式

适配器模式

代理模式

责任链模式

状态模式

桥接模式

组合模式

(3)c++新特性

stI容器,智能指针,正则表达式

unordered_ _map

stl容器

hash的用法与原理

shared_ ptr,unique_ ptr

basic_ regex,sub_ match

函数对象模板function, bind

新特性的线程,协程,原子操作,lamda表达式

atomic的用法与原理

thread_ local 与condition_ var iable

异常处理exception_ _ptr

错误处理error _ category

coroutine的用法与原理

(4)Linux工程管理

Makefi le/ cmake/conf igure

Makefile的规则与make的工作原理

单文件编译与多文件编译

Makefile的参数传递

多目录文件夹递归编译与嵌套执行make

Makefile的通配符,伪目标,文件搜索

Makefile的操作函数与特殊语法

configure生成makefile的原则

cmake的写法

分布式版本控制git

git的工作流程

创建操作与基本操作

分支管理,查看提交历史

git服务器搭建

Linux系统运行时参数命令

进程间通信设施状态ipcs

Linux系统运行时长upt ime

CPU平均负载和磁盘活动iostat

监控,收集和汇报系统活动sar

监控多处理器使用情况mpstat

监控进程的内存使用情况pmap

系统管理员调优和基准测量工具nmon

密切关注Linux系统glances

查看系统调用strace

ftp服务器基本信息ftptop

电量消耗和电源管理powertop

监控mysq| 的线程和性能mytop

系统运行参数分析htop/top/atop

Linux网络统计监控工具netstat

显示和修改网络接口控制器ethtool

网络数据包分析利刃tcpdump

远程登陆服务的标准协议teInet

获取实时网络统计信息iptraf

显示主机上网络接口带宽使用情况iftop

(5)gdb调试

vscode远程连接Linux

vscode gdb开发环境设置

gdb调试概述

gdb调试准备

gdb调试命令详解

gdb多线程调试

gdb附加进程调试

gdb core fles调试

1.2高性能网络设计专栏
(1)网络编程异步网络库zvnet

网络io与io多路复用select/poll/epoll

socket与文件描述符的关联

多路复用select/poll

代码实现LT/ET的区别

事件驱动reactor的原理与实现

reactor针对业务实现的优点

poll封装send_ cb/recv_ _cb/ accept_ _cb

reactor多核实现

跨平台(select/epoll/kqueue)的封装reactor

redis,memcached, nginx网 络组件

http服务器的实现

reactor sendbuffer与recvbuffer封装http协议

http协议格式

有限状 态机fsm解析http

其他协议websocket, tcp文件传输

(2)网络原理

服务器百万并发实现(实操)

同步处理与异步处理的数据差异

网络io线程池异步处理

ulimit的fd的百万级别支持

sysctI. conf的rmem与wmem的调优

conntrack的原理分析

Posix API与网络协议栈

connect,listen, accept与三次握 手

listen参数backlog

syn泛洪的解决方案

close与四次挥手

11个状态迁移

大量close_ wait与time wait的原因与解决方案

tcp keepalive与 应用层心跳包

拥塞控制与滑动窗口

UDP的可靠传输协议QUIC

udp的优缺点

udp高并发的设计方案

qq早期为什么选择udp作为通信协议

udp可靠传输原理

quic协议的设计原理

quic的开源方案quiche

kcp的设计方案与算法原理

协程调度器实现与性能测试

调度器的定义分析

超时集合,就绪队列,io等待集合的实现

协程调度的执行流程

协程接口实现,异步流程实现

hook钩子的实现

协程实现mysql请求

协程多核方案分析

协程性能测试

(3)自研框架:基于dpdk的用户态协议栈的实现(已开源)

用户态协议栈设计实现

用户态协议栈的存在场景与实现原理

netmap开源框架

eth协议,ip协议, udp协议实现

arp协议实现

icmp协议实现

应用层posix api的具体实现

socket/bind/listen的实现

accept实现

recv/send的实现

滑动窗口/慢启动讲解

重传定时器,坚持定时器,time_ wait定时器,keepalive定时器

手把手设计实现epoll

epoll数据结构封装与线程安全实现

协议栈fd就绪回调实现

epoll接口实现

LT/ET的实现

高性能异步io机制io_ _uring

与epo1l媲美的io_ uring

io_ _uring系统调用io_ _uring_ setup, io_ _ur ing_ register, io_ _ur ing_ enter

liburng的io_ uring的关系

io_ uring与epoll性能对比

io_ _uring的共享内存机制

io_ uring的使用场景

io_ ur ing的accept, connect, recv, send实现机制

io_ uring网络读写

io_ uring磁盘读写

proactor的实现

windows异步机制iocp(以下为新增)

iocp完成端口的工作机制

iocp的精髓重叠io

iocp处理维护连接以及连接上的收发数据

iocp多线程处理方案

1.3基础组件设计专栏
(1)池式组件

手写线程池与性能分析(项目)

线程池的异步处理使用场景

线程池的组成任务队列执行队列

任务回调与条件等待

线程池的动态防缩

扩展: nginx线程池实现对比分析

内存池的实现与场景分析(项目)

内存池的应用场景与性能分析

内存小块分配与管理

内存大块分配与管理

手写内存池,结构体封装与API实现

避免内存泄漏的两种万能方法

定位内存泄漏的3种工具

扩展:nginx内存池实现

mysq|连接池的实现(项目)

连接池性能的影响的2个因素,top连接和mysq|认证

连接请求归还策略

连接超时未归还策略

链接断开重连策略

连接数量最优策略

(2)高性能组件

原子操作CAS与锁实现(项目)

互斥锁的使用场景与原理

自旋锁的性能分析

原子操作的汇编实现

无锁消息队列实现(项目)

有锁无锁队列性能

内存屏障Barrier

数组无锁队列设计实现

链表无锁队列设计实现

网络缓冲区设计

RingBuffer设计

定长消息包

ChainBuffer 设计

双缓冲区设计

定时器方案红黑树,时间轮,最小堆(项目)

定时器的使用场景

定时器的红黑树存储

时间轮的实现

最小堆的实现

分布式定时器的实现

手写死锁检测组件(项目)

死锁的现象以及原理

pthread_ _mutex_ lock/pthread_ _mutex_ _unlock dIsym的实现

有向图的构建

有向图dfs判断环的存在

三个原语操作 lock before, lock_ after, unlock_ after

死锁检测线程的实现

手写内存泄漏检测组件(项目)

内存泄漏现象

第三方内存泄漏与代码内存泄漏

malloc与free的dIsym实现

内存检测策略

应用场景测试

手把手实现分布式锁(项目)

多线程资源竞争互斥锁

自旋锁

加锁的异常情况

非公平锁的实现

公平锁的实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值