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:消息的跳跃发送
相关文章:
Linux C++网络编程-王健伟
文章目录 1-1课程详细介绍1-2环境搭建详细介绍2-1nginx简介、选择理由、安装和使用2-2nginx整体结构、进程模型3-1学习nginx源码前的准备工作3-2nginx源码学法,终端和进程的关系说3-3信号的概念、认识、处理动作3-4Unix/Linux体系结构、信号编程初步3-5信号编程进阶…...

接收网络包的过程—— IP层->TCP层->Socket层
在 tcp_v4_rcv 中,得到 TCP 的头之后,我们可以开始处理 TCP 层的事情。因为 TCP 层是分状态的,状态被维护在数据结构 struct sock 里面,因而我们要根据 IP 地址以及 TCP 头里面的内容,在 tcp_hashinfo 中找到这个包对应…...
HTTP 响应头信息
HTTP 响应头信息 HTTP请求头提供了关于请求,响应或者其他的发送实体的信息。 在本章节中我们将具体来介绍HTTP响应头信息。 应答头说明Allow服务器支持哪些请求方法(如GET、POST等)。Content-Encoding文档的编码(Encode&#x…...
Android获取原始图片Bitmap的宽高大小尺寸,Kotlin
Android获取原始图片Bitmap的宽高大小尺寸,Kotlin val options BitmapFactory.Options()options.inJustDecodeBounds trueval decodeBmp BitmapFactory.decodeResource(resources, R.mipmap.p1, options)//此时,decode出来的decodeBmp宽高并不是原始图…...
数据结构之数组:简介、特性与应用
文章目录 🌾引言🌾数组的定义与特性🌿数组的定义🌿数组的特性🌿数组的优缺点 🌾数组的应用场景🍁数组的基本应用🍁动态数组(Dynamic Array)🍁多维…...

Hexo 还是 Hugo?Typecho 还是 Wordpress?读完这篇或许你就有答案了!
Hexo 首先介绍的是 Hexo,这也是咕咕没买服务器之前折腾的第一个博客。 演示站点:https://yirenliu.cn 用的主题是 butterfly,想当年刚用的时候,作者还没建群,现在 qq 群都有上千人了,GitHub 上的星星数量也有 2.7k 了。 优点 如果你不想买服务器,但也想折腾一个博客,…...

ChatGPT重磅升级!集简云支持GPT4 Turbo Vision, GPT4 Turbo, Dall.E 3,Whisper等最新模型
在11月7日凌晨,OpenAI全球开发者大会宣布了 GPT-4的一次大升级,推出了 GPT-4 Turbo号称为迄今为止最强的大模型。 此次GPT-4的更新和升级在多个方面显示出强大的优势和潜力。为了让集简云用户能快速体验新模型的能力,我们第一时间整理了大会发…...

Oracle 中的操作符
1.union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序; SELECT * FROM emp WHERE sal < 1500 UNION SELECT * FROM emp WHERE sal BETWEEN 1000 AND 2000 order by 1 2.union All:对两个结果集进行并集操…...
python之UDP网络应用程序开发
文章目录 版权声明UDP网络应用程序开发UDP初识UDP知识要点socket类的使用UDP发送数据开发流程分析UDP服务客户端通信栗子UDP广播发送 版权声明 本博客的内容基于我个人学习黑马程序员课程的学习笔记整理而成。我特此声明,所有版权属于黑马程序员或相关权利人所有。…...

中低压MOSFET 2N7002W 60V 300mA 双N通道 SOT-323封装
2N7002W小电流双N通道MOSFET,电压60V电流300mA,采用SOT-323封装形式。超高密度电池设计,适用于极低的ros (on),具有导通电阻和最大直流电流能力,ESD保护。可应用于笔记本中的电源管理,电池供电系统等产品应…...

kafka的设计原理
文章目录 1 Kafka简介2 Kafka的架构2.1 Kafka 一些重要概念2.2 工作流程2.3 副本原理2.4 分区和主题的关系2.5 生产者2.5.1 分区可以水平扩展2.5.2 分区策略 2.6 消费者2.6.1 消费方式2.6.2 分区分配策略 2.7 数据可靠性保证2.7.1 副本数据同步策略2.7.2 ACK 应答机制2.7.3 可靠…...

CANdelaStudio 使用教程5 编辑DID
文章目录 在哪编辑DID的分类编辑快照数据添加 DID 在哪编辑 DID的分类 编辑快照数据 添加 DID...

RESTful API 架构快速入门 Flask实现
RESTful 简介 1.1 为什么要使用 RESTful 架构? Representational State Transfer(REST)是一种面向资源的架构风格,广泛应用于网络服务的设计和开发。使用RESTful架构有以下几个优点: 简单性和可扩展性: RE…...

gitee仓库使用教程
下载安装git;在本地项目文件夹右击鼠标点击Git Bash Here;输入git init,这个目录变成git可以管理的仓库,会出现一个.git文件夹,如果没出现的话需要选择“显示隐藏文件”(不会的同学自行百度一下) 4.绑定本地…...

【ARM CoreLink 系列 3.2 -- CCI-400,CCI-500, CCI-550 差异】
文章目录 CCI-400 和 CCI-500 差异ARM CCI-400ARM CCI-500ARM CCI-550CCI-400 和 CCI-500 差异 ARM的 CCI(Cache Coherent Interconnect)系列产品是用于多核处理器之间的高性能缓存一致性互连。CCI-400 和 CCI-500 是该系列中的两种设计,它们旨在允许多个处理器核心和其他资…...
Java8 对象List 排序
目录 1.stream流式排序 1.使用说明: 2.多字段排序 2.Collections.sort(......) 排序 1.stream流式排序 Java8提供了流式操作来简化我们的编程,比如排序、分组、过滤、Map操作等API,配合Lambda表达式给我们编程带来了很大的便利,这篇文章重…...

【深度学习】DAMO-YOLO,阿里,701类通用检测模型,目标检测
https://github.com/tinyvision/DAMO-YOLO/blob/master/README_cn.md DAMO-YOLO是由阿里巴巴达摩院智能计算实验室TinyML团队开发的一个兼顾速度与精度的目标检测框架,其效果超越了目前的一众YOLO系列方法,在实现SOTA的同时,保持了很高的推理速度。DAMO…...

Day45:300.最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组
文章目录 300.最长递增子序列思路代码实现 674. 最长连续递增序列思路代码实现 718. 最长重复子数组思路代码实现 300.最长递增子序列 题目链接 思路 单个字符都是一个长为1的子序列,直接初始化dp为1。先固定一个元素位置i,判断0-i范围内到i的最长子序…...

浅析基于物联网的远程抄表系统的设计及应用
安科瑞 华楠 摘 要:本文基于物联网的概念,使用 ZigBee、通用分组无线服务技术两种无线通信技术相结合的方式实现远程抄表并对数据进行存储和管理。此系统设计主要分为硬件方面的设计和软件方面的设计,硬件方面的设计需要完成三个部分的硬件制…...
springboot(ssm付费自习室管理系统 自习室预约平台Java(codeLW)
springboot(ssm付费自习室管理系统 自习室预约平台Java(code&LW) 开发语言:Java 框架:ssm/springboot vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql 5.7(或8.0&am…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
React---day11
14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...
虚幻基础:角色旋转
能帮到你的话,就给个赞吧 😘 文章目录 移动组件使用控制器所需旋转:组件 使用 控制器旋转将旋转朝向运动:组件 使用 移动方向旋转 控制器旋转和移动旋转 缺点移动旋转:必须移动才能旋转,不移动不旋转控制器…...
【2D与3D SLAM中的扫描匹配算法全面解析】
引言 扫描匹配(Scan Matching)是同步定位与地图构建(SLAM)系统中的核心组件,它通过对齐连续的传感器观测数据来估计机器人的运动。本文将深入探讨2D和3D SLAM中的各种扫描匹配算法,包括数学原理、实现细节以及实际应用中的性能对比,特别关注…...

联邦学习带宽资源分配
带宽资源分配是指在网络中如何合理分配有限的带宽资源,以满足各个通信任务和用户的需求,尤其是在多用户共享带宽的情况下,如何确保各个设备或用户的通信需求得到高效且公平的满足。带宽是网络中的一个重要资源,通常指的是单位时间…...

多模态大语言模型arxiv论文略读(110)
CoVLA: Comprehensive Vision-Language-Action Dataset for Autonomous Driving ➡️ 论文标题:CoVLA: Comprehensive Vision-Language-Action Dataset for Autonomous Driving ➡️ 论文作者:Hidehisa Arai, Keita Miwa, Kento Sasaki, Yu Yamaguchi, …...