(1)课程总述(2)基础要求和学习方法(3)简要自我介绍、讲解特点(4)课程详细说明(5)推荐书籍(6)结语
(1)windows下的vs2017安装(2)准备一个word文档(3)windows下的虚拟机安装(4)虚拟机中安装linux 操作系统(5)配置固定IP地址(6)配置远程连接(7)安装编译工具gcc,g++ 等(8)共享一个操作目录
(1)nginx简介(2)为什么选择nginx (3)安装nginx,搭建web服务器(3.1)安装前提(3.2)nginx源码下载以及目录结构简单认识(3.3)nginx的编译和安装(4)nginx的启动和简单使用(4.1)通讯程序基础概念
(1)nginx的整体结构(1.1)master进程和worker进程概览(1.2)nginx进程模型(1.3)调整worker进程数量(2) nginx进程模型细说(2.1)nginx重载配置文件(2.2)nginx热升级(2.3)nginx的关闭(2.4)总结
(1)nginx源码总述(2)nginx源码查看工具(3)nginx源码入口函数定位(4)创建一个自己的linux下的c语言程序(5)nginx源码怎么讲
(1)nginx源码学习方法(2)终端和进程的关系(2.1)终端与bash进程(2.2)终端上的开启进程(2.3)进程关系进一步分析(2.4)strace工具的使用(2.5)终端关闭时如何让进程不退出(2.6)后台运行
(1)信号的基本概念(2)通过kill命令认识一些信号(3)进程的状态(4)常用的信号列举(5)信号处理的相关动作
(1)Unix/Linux操作系统体系结构(2)signal函数范例(2.1)可重入函数(2.2)不可重入函数的错用演示
(1)信号集(2)信号相关函数(3)sigprocmask等信号函数范例演示
(1)fork()函数简单认识(1.1)fork()函数简单范例(1.2)僵尸进程的产生、解决,SIGCHLD(2)fork()函数进一步认识(3)完善一下fork()代码(3.1)一个和fork()执行有关的逻辑判断(4)fork()失败的可能性
(1)普通进程运行观察(2)守护进程基本概念(3)守护进程编写规则(3.1)文件描述符(3.2)输入输出重定向(3.3)空设备(3.4)实现范例(4)守护进程不会收到的信号(4.1)SIGHUP信号(4.2)SIGINT、SIGWINCH信号(5)守护进程和后台进程的区别
(1)信号高级认识范例(2)服务器架构初步(2.1)目录结构规划(2.2)编译工具make的使用概述(2.3)makefile脚本用法介绍(2.4)makefile脚本具体实现讲解
(1)基础设施之配置文件读取(1.1)前提内容和修改(1.2)配置文件读取功能实战代码(2)内存泄漏的检查工具(2.1)memcheck的基本功能(2.2)内存泄漏检查示范(3)设置可执行程序的标题(名称)(3.1)原理和实现思路分析(3.2)设置可执行程序的标题实战代码
(1)基础设施之日志打印实战代码一(2)设置时区(3)基础设施之日志打印实战代码二(3.1)日志等级划分(3.2)配置文件中和日志有关的选项(4)捋顺main函数中代码执行顺序
(1)信号功能实战(2)nginx中创建worker子进程(2.1)sigsuspend()函数讲解(3)日志输出重要信息谈(3.1)换行回车进一步示意(3.2)printf()函数不加\n无法及时输出的解释(4)write()函数思考(4.1)掉电导致write()的数据丢失破解法(5)标准IO库
(1)信号功能实战(2)nginx中创建worker子进程(2.1)sigsuspend()函数讲解(3)日志输出重要信息谈(3.1)换行回车进一步示意(3.2)printf()函数不加\n无法及时输出的解释(4)write()函数思考(4.1)掉电导致write()的数据丢失破解法(5)标准IO库
(1)守护进程功能的实现(2)信号处理函数的进一步完善(2.1)避免子进程被杀掉时变成僵尸进程
(1)客户端与服务器(1.1)解析一个浏览器访问网页的过程(1.2)客户端服务器角色规律总结(2)网络模型(2.1)OSI七层网络模型(2.2)TCP/IP协议四层模型(2.3)TCP/IP协议的解释和比喻(3)最简单的客户端和服务器程序实现代码(3.1)套接字socket概念(3.2)一个简单的服务器端通讯程序范例(3.3)IP地址简单谈(3.4)一个简单的客户端通讯程序范例(3.5)客户端服务器程序综合演示和调用流程图(4)TCP和UDP的区别
(1)TCP连接的三次握手(1.1)最大传输单元MTU(1.2)TCP 包头结构(1.3)TCP 数据包收发之前的准备工作(1.4)TCP 三次握手建立连接的过程(1.5)为什么TCP握手是三次握手而不是二次(2)telnet工具使用介绍(3)wireshark监控数据包(3.1)TCP断开的四次挥手
(1)TCP状态转换(2)TIME_WAIT状态(2.1)RST标志(3)SO_REUSEADDR选项(3.1)两个进程,绑定同一个IP和端口(3.2)TIME_WAIT状态时的bind绑定
(1)listen()队列剖析
(1.1)监听套接字的队列
(1.2)accept()函数
(1.3)syn攻击
(2)阻塞与非阻塞I/O
(3)同步与异步I/O
(3.1)I/O复用
(3.2)思考题
(1)监听端口
(1.1)开启监听端口
(2)epoll技术简介
(2.1)epoll概述
(2.2)学习epoll要达到的效果及一些说明
(3)epoll原理与函数介绍
(3.1)课件介绍
(3.2)epoll_create()函数
(3.3)epoll_ctl()函数
(3.4)epoll_wait()函数
(3.5)内核向双向链表增加节点
(3.6)源码阅读额外说明
(1)一个更正,一个注意
(2)配置文件的修改
(3)epoll函数实战
(3.1)ngx_epoll_init函数内容
(3.2)ngx_epoll_init函数的调用
(1)ngx_epoll_process_events函数调用位置
(2)ngx_epoll_process_events函数内容
(2.1)事件驱动
(3)ngx_event_accept函数内容
(3.1)epoll的两种工作模式:LT和ET
(4)总结和测试
(5)事件驱动总结
(6)一道腾讯后台开发的面试题
(1)ngx_epoll_process_events函数调用位置
(2)ngx_epoll_process_events函数内容
(2.1)事件驱动
(3)ngx_event_accept函数内容
(3.1)epoll的两种工作模式:LT和ET
(4)总结和测试
(5)事件驱动总结
(6)一道腾讯后台开发的面试题
(1)ET,LT模式深入分析及测试
(2)我们的服务器设计
(2.1)服务器设计原则总述
(2.2)收发包格式问题提出
(2.3)TCP粘包、缺包
(2.4)TCP粘包、缺包解决
(1)收包分析及包头结构定义
(2)收包状态宏定义
(3)收包实战代码
(4)遗留问题处理
(5)测试服务器收包避免推诿扯皮
(1)学习方法
(2)多线程的提出
(3)线程池实战代码
(3.1)为什么引入线程池
(4)线程池的使用
(4.1)线程池的初始化
(4.2)线程池工作的激发
(4.3)线程池完善和测试
(1)线程池代码调整及补充说明
(2)线程池实现具体业务之准备代码
(2.1)一个简单的crc32校验算法介绍
(2.2)引入新的CSocket子类
(2.3)设计模式题外话
(2.4)消息的具体设计
(3)threadRecvProcFunc()函数讲解
(4)整体测试工作的开展
(4.1)不做背锅侠
(4.2)客户端测试代码的调整
(1)业务逻辑细节写法说明
(2)连接池中连接回收的深度思考
(2.1)灵活创建连接池
(2.2)连接池中连接的回收
(3)程序退出时线程的安全终止
(4)epoll事件处理的改造
(4.1)增加新的事件处理函数
(4.2)调整对事件处理函数的调用
(5)连接延迟回收的具体应用
(1)业务逻辑细节写法说明
(2)连接池中连接回收的深度思考
(2.1)灵活创建连接池
(2.2)连接池中连接的回收
(3)程序退出时线程的安全终止
(4)epoll事件处理的改造
(4.1)增加新的事件处理函数
(4.2)调整对事件处理函数的调用
(5)连接延迟回收的具体应用
(1)水平触发模式下发送数据深度解释
(2)gdb调试浅谈
(1)发送数据指导思想
(2)发送数据代码实战
(2.1)信号量
(2.2)数据发送线程
(2.3)可写通知到达后数据的继续发送
(2.4)发送数据的简单测试
(3)发送数据后续处理代码
(1)前面学习的总结
(2)心跳包概念
(2.1)什么叫心跳包以及如何使用
(2.2)为什么引入心跳包
(3)心跳包代码实战
(3.1)接收心跳包与返回结果
(3.2)处理不发送心跳包的客户端
(3.3)测试代码的书写
(1)控制并发连入数量
(2)黑客攻击的防范
(2.1)flood攻击防范
(2.2)畸形数据包防范
(3)超时直接提出服务器的需求
(1)输出一些观察信息
(2)遗漏的安全问题思考
(2.1)收到太多数据包处理不过来
(2.2)积压太多数据包发送不出去
(2.3)连入安全的进一步完善
(3)压力测试前的准备工作
(3.1)配置文件内容和配置项确认
(3.2)整理业务逻辑函数
(4)压力测试
(4.1)最大连接只在1000多个
(4.2)学习忠告
(1)cpu占比与惊群
(2)性能优化大局观
(3)性能优化的实施
(3.1)绑定cpu、提升优进程先级
(3.2)TCP/IP协议的配置选项
(3.3)TCP/IP协议额外注意的一些算法、概念等
(4)配置最大允许打开的文件句柄数
(5)内存池补充说明
(1)课程概要总结
(2)课程技术总结
(3)项目的用途总结
(4)学习方法总结
(5)架构师之路
(6)卷2的计划
(7)再见
问题1:消息的跳跃发送