[项目] Linux高并发服务器

杂谈

最近越来越感觉那些教你几小时做个网站啊之类的速成教程对技术学习有着很大危害,在贩卖焦虑的同时给你蛇油(虚伪的万金油),造成自己好像学了挺多的,做的挺好的假象。

这对我来说,属实有些折磨了,因为作为普通人类的我,是很难抵挡住大数据推荐的勾引的。

后来想了想还是找一些相对完整的项目学一下比较好,大一下的时候照着大佬的教程写了一个很水的JSON解析库,从中学到了很多,这种满足感真正令我感到充实。比较遗憾的是,后期没有做足够完整的总结,现在很多细节操作都忘的差不多了。

翻了一波互联网,发现牛客上的项目案例还不错,所以打算写写看,希望能有新的收获。

项目完成后会发布到开源平台上

项目目标

项目驱动学习

  • 熟悉并掌握Linux系统编程和网络编程技术
  • 能够开发高性能高并发网络服务器程序
  • 积累C++开发实战经验

项目计划

暂定为期一个半月

日期

目标

10.4~ 10.10

Linux 系统编程入门

10.11~ 10.17

Linux多进程开发

10.18~10.24

Linux多线程开发

10.25~10.31

Linux网络编程

11.1~11.15

项目实战与总结

11.15~11.30

录复盘总结视频

项目知识点

Linux 系统编程入门

  • Linux开发环境搭建
  • Gcc编译
  • 静态库和动态库
  • Makefile
  • GDB调试
  • 虚拟地址空间
  • 文件描述符
  • open 函数
  • read 函数
  • write 函数
  • lseek 函数
  • stat 函数
  • 目录操作函数
  • dup 函数
  • dup2 函数
  • fcntl函数

Linux多进程开发

  • 程序和进程概述
  • 并行和并发
  • pcb进程信息管理
  • 进程状态转换
  • 进程相关命令
  • fork函数
  • 父子进程用户区数据读写
  • 多进程gdb调试
  • exec族函数
  • 结束进程、孤儿进程、僵尸进程
  • wait、waitpid函数
  • 进程间通信简介
  • 匿名管道
  • 有名管道
  • 内存映射
  • 信号
  • 进程组和会话
  • 守护进程

Linux多线程开发:

  • 线程概述
  • 创建线程
  • 线程退出
  • 回收子线程资源
  • 线程分离
  • 线程取消
  • 设置线程属性
  • 线程同步
  • 互斥锁
  • 死锁
  • 读写锁
  • 条件变量
  • 生产者消费者模型
  • 信号量

Linux网络编程:

  • BS和CS架构模式
  • IP和端口
  • 网络模型
  • 协议
  • 字节序
  • IP操作函数
  • sockaddr数据结构
  • TCP和UDP简介
  • TCP通信流程
  • TCP实现服务器和客户端通信
  • TCP三次握手
  • TCP滑动窗口
  • TCP四次挥手
  • TCP通信并发
  • TCP状态转换
  • 半关闭
  • 端口复用
  • IO多路转接-select、poll、epoll
  • UDP通信
  • 广播
  • 组播
  • 本地套接字

项目实战与总结:

  • 网络服务器概述
  • HTTP协议
  • 服务器基本工作流程
  • 有限状态机
  • HTTP请求的读取和分析
  • 线程同步机制封装类
  • 高效的事件处理模式
  • 线程池类封装
  • HTTP连接处理
  • 定时器处理非活动连接
  • 压力测试

录复盘总结视频

  • 了解自己对项目的掌握情况
  • 训练自己介绍和总结项目的能力

学习笔记

Linux系统编程基础

​​[Linux 高并发服务器]制作静态库与动态库​​[Linux 高并发服务器]Makefile
[Linux 高并发服务器]GDB调试
[Linux高并发服务器]模拟实现 ls -l 指令
[Linux 高并发服务器]文件IO

多进程

​​[Linux 高并发服务器] 进程概述​​[Linux 高并发服务器] 进程状态的转换
[Linux 高并发服务器] 进程创建以及GDB多进程调试
[Linux 高并发服务器] exec函数族
[Linux 高并发服务器]进程控制
[Linux高并发服务器]进程间通信简介
[Linux 高并发服务器] 管道
[Linux 高并发服务器] 内存映射
[Linux 高并发服务器] 信号
[Linux 高并发服务器]共享内存
[Linux 高并发服务器]守护进程

多线程

​​[Linux 高并发服务器]线程​​[Linux 高并发服务器]生产者与消费者模型

网络编程