当前位置: 首页 > news >正文

Linux C++网络编程-王健伟

文章目录

    • 1-1课程详细介绍
    • 1-2环境搭建详细介绍
    • 2-1nginx简介、选择理由、安装和使用
    • 2-2nginx整体结构、进程模型
    • 3-1学习nginx源码前的准备工作
    • 3-2nginx源码学法,终端和进程的关系说
    • 3-3信号的概念、认识、处理动作
    • 3-4Unix/Linux体系结构、信号编程初步
    • 3-5信号编程进阶、sigprocmask范例
    • 3-6fork函数详解、范例演示
    • 3-7守护进程详解、范例演示
    • 4-1服务器程序目录规划、makefile编写
    • 4-2读配置文件、查泄漏、设置标题实战
    • 4-3日志打印实战,优化main函数调用顺序
    • 4-4信号,子进程实战,文件IO详谈-1
    • 4-5信号,子进程实战,文件IO详谈-2
    • 4-6守护进程及信号处理实战
    • 5-1C/S, TCP/IP协议妙趣横生、惟妙惟肖谈
    • 5-2TCP三次握手详析、telnet,wireshark示范
    • 5-3TCP状态转换,TIME_WAIT,SO_REUSEADDR
    • 5-4listen()队列剖析、阻塞非阻塞、同步异步
    • 5-5监听端口实战、epoll介绍及原理详析
    • 5-6通讯代码精粹之epoll函数实战1
    • 5-7通讯代码精粹之epoll函数实战2-1
    • 5-8通讯代码精粹之epoll函数实战2-2
    • 5-9ET、LT深释,服务器设计、粘包解决
    • 5-10通讯代码精粹之收包解包实战
    • 6-1业务逻辑之多线程、线程池实战-1
    • 6-2业务逻辑之多线程、线程池实战-2
    • 6-3业务逻辑之打通业务处理脉搏实战
    • 6-4预发包,多线程资源回收深度思考-1
    • 6-5预发包,多线程资源回收深度思考-2
    • 6-6LT发数据机制深释、gdb调试浅谈
    • 6-7发数据、信号量、并发、多线程综合实战
    • 7-1过往总结、心跳包代码实战
    • 7-2控制连入数,黑客攻击防范及畸形包应对
    • 7-3超负荷安全处理、综合压力测试
    • 7-4惊群、性能优化大局观
    • 8-1结束语、课程总结
    • 9-1问题1:消息的跳跃发送

Linux C++网络编程-王健伟

1-1课程详细介绍

(1)课程总述(2)基础要求和学习方法(3)简要自我介绍、讲解特点(4)课程详细说明(5)推荐书籍(6)结语

1-2环境搭建详细介绍

(1)windows下的vs2017安装(2)准备一个word文档(3)windows下的虚拟机安装(4)虚拟机中安装linux 操作系统(5)配置固定IP地址(6)配置远程连接(7)安装编译工具gcc,g++ 等(8)共享一个操作目录

2-1nginx简介、选择理由、安装和使用

(1)nginx简介(2)为什么选择nginx (3)安装nginx,搭建web服务器(3.1)安装前提(3.2)nginx源码下载以及目录结构简单认识(3.3)nginx的编译和安装(4)nginx的启动和简单使用(4.1)通讯程序基础概念

2-2nginx整体结构、进程模型

(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)总结

3-1学习nginx源码前的准备工作

(1)nginx源码总述(2)nginx源码查看工具(3)nginx源码入口函数定位(4)创建一个自己的linux下的c语言程序(5)nginx源码怎么讲

3-2nginx源码学法,终端和进程的关系说

(1)nginx源码学习方法(2)终端和进程的关系(2.1)终端与bash进程(2.2)终端上的开启进程(2.3)进程关系进一步分析(2.4)strace工具的使用(2.5)终端关闭时如何让进程不退出(2.6)后台运行

3-3信号的概念、认识、处理动作

(1)信号的基本概念(2)通过kill命令认识一些信号(3)进程的状态(4)常用的信号列举(5)信号处理的相关动作

3-4Unix/Linux体系结构、信号编程初步

(1)Unix/Linux操作系统体系结构(2)signal函数范例(2.1)可重入函数(2.2)不可重入函数的错用演示

3-5信号编程进阶、sigprocmask范例

(1)信号集(2)信号相关函数(3)sigprocmask等信号函数范例演示

3-6fork函数详解、范例演示

(1)fork()函数简单认识(1.1)fork()函数简单范例(1.2)僵尸进程的产生、解决,SIGCHLD(2)fork()函数进一步认识(3)完善一下fork()代码(3.1)一个和fork()执行有关的逻辑判断(4)fork()失败的可能性

3-7守护进程详解、范例演示

(1)普通进程运行观察(2)守护进程基本概念(3)守护进程编写规则(3.1)文件描述符(3.2)输入输出重定向(3.3)空设备(3.4)实现范例(4)守护进程不会收到的信号(4.1)SIGHUP信号(4.2)SIGINT、SIGWINCH信号(5)守护进程和后台进程的区别

4-1服务器程序目录规划、makefile编写

(1)信号高级认识范例(2)服务器架构初步(2.1)目录结构规划(2.2)编译工具make的使用概述(2.3)makefile脚本用法介绍(2.4)makefile脚本具体实现讲解

4-2读配置文件、查泄漏、设置标题实战

(1)基础设施之配置文件读取(1.1)前提内容和修改(1.2)配置文件读取功能实战代码(2)内存泄漏的检查工具(2.1)memcheck的基本功能(2.2)内存泄漏检查示范(3)设置可执行程序的标题(名称)(3.1)原理和实现思路分析(3.2)设置可执行程序的标题实战代码

4-3日志打印实战,优化main函数调用顺序

(1)基础设施之日志打印实战代码一(2)设置时区(3)基础设施之日志打印实战代码二(3.1)日志等级划分(3.2)配置文件中和日志有关的选项(4)捋顺main函数中代码执行顺序

4-4信号,子进程实战,文件IO详谈-1

(1)信号功能实战(2)nginx中创建worker子进程(2.1)sigsuspend()函数讲解(3)日志输出重要信息谈(3.1)换行回车进一步示意(3.2)printf()函数不加\n无法及时输出的解释(4)write()函数思考(4.1)掉电导致write()的数据丢失破解法(5)标准IO库

4-5信号,子进程实战,文件IO详谈-2

(1)信号功能实战(2)nginx中创建worker子进程(2.1)sigsuspend()函数讲解(3)日志输出重要信息谈(3.1)换行回车进一步示意(3.2)printf()函数不加\n无法及时输出的解释(4)write()函数思考(4.1)掉电导致write()的数据丢失破解法(5)标准IO库

4-6守护进程及信号处理实战

(1)守护进程功能的实现(2)信号处理函数的进一步完善(2.1)避免子进程被杀掉时变成僵尸进程

5-1C/S, TCP/IP协议妙趣横生、惟妙惟肖谈

(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的区别

5-2TCP三次握手详析、telnet,wireshark示范

(1)TCP连接的三次握手(1.1)最大传输单元MTU(1.2)TCP 包头结构(1.3)TCP 数据包收发之前的准备工作(1.4)TCP 三次握手建立连接的过程(1.5)为什么TCP握手是三次握手而不是二次(2)telnet工具使用介绍(3)wireshark监控数据包(3.1)TCP断开的四次挥手

5-3TCP状态转换,TIME_WAIT,SO_REUSEADDR

(1)TCP状态转换(2)TIME_WAIT状态(2.1)RST标志(3)SO_REUSEADDR选项(3.1)两个进程,绑定同一个IP和端口(3.2)TIME_WAIT状态时的bind绑定

5-4listen()队列剖析、阻塞非阻塞、同步异步

(1)listen()队列剖析
(1.1)监听套接字的队列
(1.2)accept()函数
(1.3)syn攻击
(2)阻塞与非阻塞I/O
(3)同步与异步I/O
(3.1)I/O复用
(3.2)思考题

5-5监听端口实战、epoll介绍及原理详析

(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)源码阅读额外说明

5-6通讯代码精粹之epoll函数实战1

(1)一个更正,一个注意
(2)配置文件的修改
(3)epoll函数实战
(3.1)ngx_epoll_init函数内容
(3.2)ngx_epoll_init函数的调用

5-7通讯代码精粹之epoll函数实战2-1

(1)ngx_epoll_process_events函数调用位置
(2)ngx_epoll_process_events函数内容
(2.1)事件驱动
(3)ngx_event_accept函数内容
(3.1)epoll的两种工作模式:LT和ET
(4)总结和测试
(5)事件驱动总结
(6)一道腾讯后台开发的面试题

5-8通讯代码精粹之epoll函数实战2-2

(1)ngx_epoll_process_events函数调用位置
(2)ngx_epoll_process_events函数内容
(2.1)事件驱动
(3)ngx_event_accept函数内容
(3.1)epoll的两种工作模式:LT和ET
(4)总结和测试
(5)事件驱动总结
(6)一道腾讯后台开发的面试题

5-9ET、LT深释,服务器设计、粘包解决

(1)ET,LT模式深入分析及测试
(2)我们的服务器设计
(2.1)服务器设计原则总述
(2.2)收发包格式问题提出
(2.3)TCP粘包、缺包
(2.4)TCP粘包、缺包解决

5-10通讯代码精粹之收包解包实战

(1)收包分析及包头结构定义
(2)收包状态宏定义
(3)收包实战代码
(4)遗留问题处理
(5)测试服务器收包避免推诿扯皮

6-1业务逻辑之多线程、线程池实战-1

(1)学习方法
(2)多线程的提出
(3)线程池实战代码
(3.1)为什么引入线程池
(4)线程池的使用
(4.1)线程池的初始化
(4.2)线程池工作的激发
(4.3)线程池完善和测试

6-2业务逻辑之多线程、线程池实战-2

6-3业务逻辑之打通业务处理脉搏实战

(1)线程池代码调整及补充说明
(2)线程池实现具体业务之准备代码
(2.1)一个简单的crc32校验算法介绍
(2.2)引入新的CSocket子类
(2.3)设计模式题外话
(2.4)消息的具体设计
(3)threadRecvProcFunc()函数讲解
(4)整体测试工作的开展
(4.1)不做背锅侠
(4.2)客户端测试代码的调整

6-4预发包,多线程资源回收深度思考-1

(1)业务逻辑细节写法说明
(2)连接池中连接回收的深度思考
(2.1)灵活创建连接池
(2.2)连接池中连接的回收
(3)程序退出时线程的安全终止
(4)epoll事件处理的改造
(4.1)增加新的事件处理函数
(4.2)调整对事件处理函数的调用
(5)连接延迟回收的具体应用

6-5预发包,多线程资源回收深度思考-2

(1)业务逻辑细节写法说明
(2)连接池中连接回收的深度思考
(2.1)灵活创建连接池
(2.2)连接池中连接的回收
(3)程序退出时线程的安全终止
(4)epoll事件处理的改造
(4.1)增加新的事件处理函数
(4.2)调整对事件处理函数的调用
(5)连接延迟回收的具体应用

6-6LT发数据机制深释、gdb调试浅谈

(1)水平触发模式下发送数据深度解释
(2)gdb调试浅谈

6-7发数据、信号量、并发、多线程综合实战

(1)发送数据指导思想
(2)发送数据代码实战
(2.1)信号量
(2.2)数据发送线程
(2.3)可写通知到达后数据的继续发送
(2.4)发送数据的简单测试
(3)发送数据后续处理代码

7-1过往总结、心跳包代码实战

(1)前面学习的总结
(2)心跳包概念
(2.1)什么叫心跳包以及如何使用
(2.2)为什么引入心跳包
(3)心跳包代码实战
(3.1)接收心跳包与返回结果
(3.2)处理不发送心跳包的客户端
(3.3)测试代码的书写

7-2控制连入数,黑客攻击防范及畸形包应对

(1)控制并发连入数量
(2)黑客攻击的防范
(2.1)flood攻击防范
(2.2)畸形数据包防范
(3)超时直接提出服务器的需求

7-3超负荷安全处理、综合压力测试

(1)输出一些观察信息
(2)遗漏的安全问题思考
(2.1)收到太多数据包处理不过来
(2.2)积压太多数据包发送不出去
(2.3)连入安全的进一步完善
(3)压力测试前的准备工作
(3.1)配置文件内容和配置项确认
(3.2)整理业务逻辑函数
(4)压力测试
(4.1)最大连接只在1000多个
(4.2)学习忠告

7-4惊群、性能优化大局观

(1)cpu占比与惊群
(2)性能优化大局观
(3)性能优化的实施
(3.1)绑定cpu、提升优进程先级
(3.2)TCP/IP协议的配置选项
(3.3)TCP/IP协议额外注意的一些算法、概念等
(4)配置最大允许打开的文件句柄数
(5)内存池补充说明

8-1结束语、课程总结

(1)课程概要总结
(2)课程技术总结
(3)项目的用途总结
(4)学习方法总结
(5)架构师之路
(6)卷2的计划
(7)再见

9-1问题1:消息的跳跃发送

问题1:消息的跳跃发送

相关文章:

  • Qt文件读写详解
  • JMeter+Python 实现异步接口测试
  • Windows环境搭建
  • Jenkins与Docker的自动化CI/CD流水线实践
  • 硬盘上不小心删除了重要文档?试试这6个成功率高的数据恢复工具!
  • billet-doux
  • Centos 7、Debian、Ubuntu中tree指令的检查与下载
  • sql 动态语句
  • Tower for Mac:强大的Git客户端,轻松管理代码版本,提升开发效率
  • [BJDCTF 2020]easy_md5
  • bodymovin:AE动画导出为JSONforMac/win中文版下载
  • Qt实现绘制自定义形状
  • 利用MATLAB进行矩阵运算(2)
  • 蓝牙运动耳机哪个好?蓝牙运动耳机排行榜前十名
  • 【Python3】【力扣题】349. 两个数组的交集
  • canvas 高仿 Apple Watch 表盘
  • CSS居中完全指南——构建CSS居中决策树
  • echarts的各种常用效果展示
  • gulp 教程
  • iOS | NSProxy
  • Node项目之评分系统(二)- 数据库设计
  • PHP的Ev教程三(Periodic watcher)
  • Protobuf3语言指南
  • Redux系列x:源码分析
  • TypeScript迭代器
  • vue--为什么data属性必须是一个函数
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • windows下mongoDB的环境配置
  • 程序员最讨厌的9句话,你可有补充?
  • 关于for循环的简单归纳
  • 看域名解析域名安全对SEO的影响
  • 前端性能优化——回流与重绘
  • 微信小程序设置上一页数据
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 因为阿里,他们成了“杭漂”
  • ​人工智能书单(数学基础篇)
  • #Linux(帮助手册)
  • (30)数组元素和与数字和的绝对差
  • (k8s中)docker netty OOM问题记录
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (排序详解之 堆排序)
  • (七)Java对象在Hibernate持久化层的状态
  • (强烈推荐)移动端音视频从零到上手(上)
  • (十六)一篇文章学会Java的常用API
  • (循环依赖问题)学习spring的第九天
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • .net FrameWork简介,数组,枚举
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理
  • /dev下添加设备节点的方法步骤(通过device_create)
  • @JsonSerialize注解的使用
  • [20170713] 无法访问SQL Server
  • [C#]无法获取源 https://api.nuge t.org/v3-index存储签名信息解决方法