课程试听
阶段一 C开发实战
展开第一章 C语言基础语法

1-1 C概述

- 什么是C语言 免费试学
- C语言发展历史 免费试学
- 编写C程序--环境搭建 免费试学
- 编写C程序--第一个C程序 免费试学
- 注释 免费试学
- 程序框架介绍 免费试学
- System函数 免费试学
- 常用快捷键 免费试学
- 代码调试 免费试学
- C4996错误警告 免费试学
- 转义字符 免费试学
- 编译原理 免费试学
- 代码片段管理工具 免费试学
1-2 数据类型

- CPU与寄存器 免费试学
- 内存中的计量单位 免费试学
- 变量 免费试学
- 常量 免费试学
- 关键字 免费试学
- 标识符命名规则 免费试学
- 整型--整型的基本使用 免费试学
- 整型--有符号和无符号整型 免费试学
- sizeof的使用 免费试学
- 字符型 免费试学
- 浮点型 免费试学
- 字符串 免费试学
- 输入的输入 免费试学
- 类型转换 免费试学
1-3 进制转换与数据存储

- 进制概念
- 十进制转其他进制
- 其他进制转十进制
- 二、八、十六进制转换
- 程序中输出不同进制
- 存数据
- 取数据
- 补码的意义
- 数据存取案例
- char的取值范围以及溢出情况
1-4 运算符

- 算术运算符
- 自增自减运算符
- 赋值运算符
- 比较运算符
- 逻辑运算符
- 运算符优先级
1-5 程序流程结构

- if语句--if语句的三种形式和嵌套
- if语句--if语句案例
- if语句--if语句注意事项
- 三目运算符
- switch语句
- while循环
- while循环案例
- do while循环
- do while循环案例
- for循环
- for循环案例
- 循环嵌套循环
- 循环嵌套循环案例
- 跳转语句break
- 跳转语句continue
- 跳转语句goto
1-6 数组

- 一维数组定义
- 一维数组数组名
- 五只小猪称体重
- 数组元素逆置
- 冒泡排序
- 二维数组定义
- 二维数组数组名
- 分数统计
- 字符数组初始化
- 字符串长度统计
- 字符串输入输出
1-7 函数

- 函数的定义和调用
- 函数的声明
- 函数的分类
- 函数的值传递
- 函数的分文件编写
- exit和return的区别
- 随机数案例
- 打字游戏案例
1-8 指针

- 指针的定义和使用
- 指针所占内存空间
- 空指针与野指针
- const修饰指针
- 不同类型指针区别
- 指针和数组_01_指针操作数组元素(上)
- 指针和数组_01_指针操作数组元素(下)
- 指针和数组_02_指针数组
- 指针和数组_03_指针在数组中的运算
- 二级指针
- 万能指针
- 指针和函数_01_参数传递方式
- 指针和函数_02_数组名做函数参数
- 指针和函数_03_字符数组名做函数参数
- 指针和函数_04_冒泡排序封装
1-9 字符串

- 字符串常量和字符串变量
- strcpy和strncpy
- strcat和strncat
- strcmp和strncmp
- sprintf
- sscanf
- strchr
- strstr
- strtok
- atoi
1-10 内存管理

- 作用域(上)
- 作用域(下)
- 内存四区
- memset
- 10内存管理_04_memcpy
- 10内存管理_05_memmove
- 10内存管理_06_memcmp
- 10内存管理_07_malloc
- 10内存管理_08_malloc案例_动态数组
- 10内存管理_09_内存操作易错点
1-11 复合类型

- 11复合类型_01_结构体定义和创建
- 11复合类型_02_结构体成员访问和赋值
- 11复合类型_03_结构体数组
- 11复合类型_04_结构体数组排序
- 11复合类型_05_结构体嵌套结构体
- 11复合类型_06_结构体指针
- 11复合类型_07_结构体与堆区
- 11复合类型_08_结构体做函数参数
- 11复合类型_09_结构体案例_结构体嵌套一级指针
- 11复合类型_10_const修饰结构体指针
- 11复合类型_11_联合体
- 11复合类型_12_枚举
1-12 文件

- 12文件_01_文件的基本概念
- 12文件_02_文件指针
- 12文件_03_文件打开和关闭
- 12文件_04_字符方式读写文件
- 12文件_05_字符读写文件案例
- 12文件_06_文本文件和二进制文件区别
- 12文件_07_行方式读写文件
- 12文件_08_行读写文件案例(上)
- 12文件_08_行读写文件案例(下)
- 12文件_09_格式化方式读写文件
- 12文件_10_格式化读写文件案例
- 12文件_11_块方式读写文件
- 12文件_12_文件定位
- 12文件_13_系统文件指针
- 12文件_14_文件状态
- 12文件_15_文件的重命名与删除
- 12文件_16_比赛成绩管理系统_01_系统需求
- 12文件_16_比赛成绩管理系统_02_添加菜单界面
- 12文件_16_比赛成绩管理系统_03_用户交互及退出
- 12文件_16_比赛成绩管理系统_04_添加新的记录
- 12文件_16_比赛成绩管理系统_05_查看往届记录
- 12文件_16_比赛成绩管理系统_06_清空往届记录
- 12文件_16_比赛成绩管理系统_07_检测空文件
1-13 贪食蛇

- 13贪食蛇_01_案例介绍
- 13贪食蛇_02_制作思路
- 13贪食蛇_03_墙模块
- 13贪食蛇_04_光标定位
- 13贪食蛇_05_蛇模块
- 13贪食蛇_06_食物模块
- 13贪食蛇_07_蛇的移动
- 13贪食蛇_08_蛇的方向控制
- 13贪食蛇_09_蛇吃食物
- 13贪食蛇_10_蛇的死亡检测
- 13贪食蛇_11_解决bug和优化游戏
- 13贪食蛇_12_分数功能
- 13贪食蛇_13_难度设定
- 13贪食蛇_14_颜色添加
阶段二 C高级编程
展开第一章 C高级

1-1 变量和内存分布

- 01 听课要求
- 02 技术层次
- 03 C语言标准
- 04 数据类型概念
- 05 typedef的使用
- 06 void 使用
- 07 sizeof使用
- 08 变量的修改方式
- 09 内存四区-运行前
- 10 内存四区-运行后
- 11 上午课程回顾
- 12 栈区注意事项
- 13 堆区使用
- 14 堆区注意事项
- 15 静态变量和全局变量
- 16 const修饰的常量
- 17 字符串常量
- 01 课程回顾
- 02 宏函数
- 03 函数的调用流程
- 04 调用惯例
- 05 变量传递分析
- 06 栈的生长方向
- 07 内存存储方式
1-2 指针强化

- 08 空指针和野指针
- 09 野指针三种情况
- 10 指针的步长
- 11 指针步长的练习
- 12 指针的间接赋值
- 13 指针做函数参数的输入特性
- 14 指针做函数参数的输出特性
- 15 字符串注意事项
- 16 字符串拷贝
- 17 字符串翻转
- 18 sprintf的使用
- 01 课程回顾
- 02 calloc和realloc
- 03 sscanf的使用
- 04 sscanf的练习
- 05 sscanf课堂作业
- 06 字符串强化-查找子串
- 07 一级指针易错点
- 08 const的使用场景
- 09 二级指针做函数参数的输入特性
- 10 二级指针做函数参数输出特性
- 11 二级指针练习-文件读写(上)
- 12 二级指针练习-文件读写(下)
- 13 位运算
- 14 移位运算符
- 01 C提高1~3天复习
- 02 一维数组名称
- 03 一维数组名做函数参数
- 04 数组指针定义
- 05 数组指针补充
- 06 二维数组数组名
- 07 选择排序算法
- 08 指针数组排序
1-3 结构体和文件的高级用法

- 09 结构体使用
- 10 结构体赋值问题以及解决
- 11 结构体嵌套一级指针的练习
- 01 课程回顾
- 02 结构体嵌套二级指针需求分析
- 03 结构体嵌套二级指针代码实现
- 04 结构体偏移量
- 05 内存对齐
- 06 结构体嵌套结构体内存对齐计算方式
- 07 文件基本概念
- 08 文件读写-按字符方式
- 09 文件读写回顾_格式化和文件光标
- 10 文件读写注意事项
- 11 配置文件练习需求
- 12 配置文件读写(上)
- 13 配置文件读写(下)
- 14 文件加密作业布置
- 01 课程回顾
- 02 文件加密实现
1-4 链表和回调函数

- 03 链表的基本概念
- 04 链表的分类
- 05 静态链表和动态链表
- 06 带头节点的链表
- 07 链表操作-初始化和遍历功能
- 08 链表操作-插入功能实现
- 09 链表操作-删除节点功能实现
- 10 链表操作-清空链表和销毁链表
- 11 函数指针基本概念
- 12 函数指针定义方式
- 13 回调函数案例1-打印任意类型数据
- 14 回调函数案例2-打印任意类型数组
- 15 回调函数案例3-查找数组中的元素
- 01 课程回顾
- 02 链表作业
- 03 回调函数作业-实现对任意类型数组进行排序
- 04 作业补充-堆区数据释放
1-5 编译过程和面向接口

- 05 预处理指令
- 06 静态库配置
- 07 静态库与动态库优缺点
- 08 动态库配置
- 09 递归函数-实现字符串逆序输出
- 10 递归函数案例-斐波那契数列
- 11 面向接口编程-甲方实现
- 12 面向接口编程-乙方功能实现以及接口对接
第二章 数据结构

2-1 动态数组和链表

- 01 C提高day4到day7课程回顾
- 02 数据结构基本概念
- 03 动态数组设计
- 04 动态数组初始化实现
- 05 动态数组插入和遍历功能实现
- 06 动态数组删除实现
- 07 动态数组销毁功能实现
- 08 动态数组分文件编写
- 09 链表的设计
- 10 链表初始化、插入和遍历功能实现
- 11 删除链表节点的功能实现
- 12 返回链表长度、清空销毁功能实现
- 01 课程回顾
- 02 单向链表企业版本设计思路
- 03 企业版本链表初始化、插入遍历功能实现
- 04 企业版本链表删除、销毁功能实现
2-2 栈和队列

- 05 栈的基本概念
- 06 栈的顺序存储解析
- 07 栈的顺序存储实现
- 08 栈的分文件编写
- 09 栈的链式存储
- 10 栈的应用案例-就近匹配思路
- 11 栈的应用案例-就近匹配代码实现
- 12 中缀表达式转后缀表达式
- 13 基于后缀表达式的运算
- 01 课程回顾
- 02 队列的基本概念
- 03 队列的顺序存储实现
- 04 队列链式存储思路分析
- 05 队列的链式存储实现
2-3 二叉树

- 06 树的基本概念
- 07 二叉树的性质
- 08 二叉树递归遍历思路
- 09 二叉树递归遍历代码实现
- 10 二叉树求叶子数量以及统计树高度
- 11 二叉树拷贝
- 12 二叉树释放
- 13 二叉树非递归遍历思路分析
- 14 二叉树非递归遍历
- 15 插入排序
阶段三 C++核心编程和桌面应用开发
展开第一章 C++核心编程

1-1 C++初识

- 1C++初识_01_C++简介
- 1C++初识_02_第一个C++程序
- 1C++初识_03_双冒号作用域运算符
- 1C++初识_04_命名空间
- 1C++初识_05_using声明以及using编译指令
1-2 C++对C语言的增强

- 2C++对C语言的增强_01_全局变量和函数
- 2C++对C语言的增强_02_类型转换和结构体
- 2C++对C语言的增强_03_三目运算符和const
- 2C++对C语言的增强_04_const其他注意事项
1-3 C++对C语言的扩展

- 3C++对C语言的扩展_01_bool类型
- 3C++对C语言的扩展_02_内联函数
- 3C++对C语言的扩展_03_默认参数
- 3C++对C语言的扩展_04_占位参数
- 3C++对C语言的扩展_05_引用_01_引用的基本语法
- 3C++对C语言的扩展_05_引用_02_建立对数组的引用
- 3C++对C语言的扩展_05_引用_03_参数的传递方式
- 3C++对C语言的扩展_05_引用_04_引用的本质
- 3C++对C语言的扩展_05_引用_05_指针的引用
- 3C++对C语言的扩展_05_引用_06_常量的引用
- 3C++对C语言的扩展_06_函数重载_01_重载条件
- 3C++对C语言的扩展_06_函数重载_02_注意事项
- 3C++对C语言的扩展_06_函数重载_03_重载原理
- 3C++对C语言的扩展_06_函数重载_04_externC使用
1-4 类和对象基本概念

- 4类和对象基本概念_01_圆类案例
- 4类和对象基本概念_02_学生类案例
- 4类和对象基本概念_03_封装_01_C语言下的封装
- 4类和对象基本概念_03_封装_02_C++语言下的封装
- 4类和对象基本概念_03_封装_03_封装的访问权限
- 4类和对象基本概念_03_封装_04_成员属性私有化
- 4类和对象基本概念_04_立方体案例
- 4类和对象基本概念_05_点和圆关系案例
1-5 对象的构造和析构

- 5对象的构造和析构_01_构造函数和析构函数
- 5对象的构造和析构_02_构造函数的分类
- 5对象的构造和析构_03_构造函数的调用
- 5对象的构造和析构_04_拷贝构造调用时机
- 5对象的构造和析构_05_构造函数的创建规则
- 5对象的构造和析构_06_浅拷贝与深拷贝
- 5对象的构造和析构_07_初始化列表
- 5对象的构造和析构_08_类对象作类成员
- 5对象的构造和析构_09_explicit关键字
1-6 new运算符和静态成员

- 6new运算符和静态成员_01_new运算符的基本使用
- 6new运算符和静态成员_02_new运算符的注意事项
- 6new运算符和静态成员_03_new运算符开辟数组
- 6new运算符和静态成员_04_静态成员变量
- 6new运算符和静态成员_05_静态成员函数
- 6new运算符和静态成员_06_单例模式_01_单例模式概念
- 6new运算符和静态成员_06_单例模式_02_主席类案例
- 6new运算符和静态成员_06_单例模式_03_打印机类案例
1-7 this指针与友元

- 7this指针与友元_01_对象模型初探
- 7this指针与友元_02_this指针介绍
- 7this指针与友元_03_this指针使用
- 7this指针与友元_04_this指针工作原理
- 7this指针与友元_05_空指针访问成员函数
- 7this指针与友元_06_常函数
- 7this指针与友元_07_常对象
- 7this指针与友元_08_全局函数做友元
- 7this指针与友元_09_类做友元
- 7this指针与友元_10_成员函数做友元
1-8 运算符重载

- 8运算符重载_01_数组类封装_01_案例需求与数组类创建
- 8运算符重载_01_数组类封装_02_案例实现与测试
- 8运算符重载_02_加号运算符重载_01_加号重载分析
- 8运算符重载_02_加号运算符重载_02_加号重载实现
- 8运算符重载_03_左移运算符重载
- 8运算符重载_04_递增运算符重载_01_前置递增
- 8运算符重载_04_递增运算符重载_02_后置递增
- 8运算符重载_05_指针运算符重载
- 8运算符重载_06_赋值运算符重载
- 8运算符重载_07_关系运算符重载
- 8运算符重载_08_函数调用运算符重载
- 8运算符重载_09_中括号运算符重载
- 8运算符重载_10_运算符重载注意事项
- 8运算符重载_11_字符串类封装_01_案例需求与字符串类创建
- 8运算符重载_11_字符串类封装_02_字符串构造_析构_输入_输出
- 8运算符重载_11_字符串类封装_03_字符串字符索引_赋值_拼接_对比
1-9 继承

- 9继承_01_继承的基本语法
- 9继承_02_继承方式
- 9继承_03_继承中的对象模型
- 9继承_04_继承中的构造和析构顺序
- 9继承_05_继承中的同名成员处理
- 9继承_06_继承中的同名静态成员处理
- 9继承_07_多继承的基本语法
- 9继承_08_菱形继承的问题及解决
- 9继承_09_菱形继承深入探讨
1-10 多态

- 10多态_01_静态多态和动态多态
- 10多态_02_多态实现原理
- 10多态_03_多态原理深入剖析
- 10多态_04_多态案例一
- 10多态_05_纯虚函数和抽象类
- 10多态_06_多态案例二
- 10多态_07_虚析构和纯虚析构
- 10多态_08_向上向下类型转换
- 10多态_09_重载重写重定义
- 10多态_10_多态案例三_01_案例需求
- 10多态_10_多态案例三_02_案例实现
第二章 C++提高编程

2-1 模板

- 11模板_01_函数模板基本语法
- 11模板_02_函数模板注意事项
- 11模板_03_函数模板练习
- 11模板_04_普通函数与函数模板的区别
- 11模板_05_普通函数与函数模板的调用规则
- 11模板_06_模板的局限性
- 11模板_07_类模板的基本语法
- 11模板_08_类模板的注意事项
- 11模板_09_类模板中成员函数创建时机
- 11模板_10_类模板对象做函数参数
- 11模板_11_类模板与继承
- 11模板_12_类模板成员函数类外实现
- 11模板_13_类模板分文件编写
- 11模板_14_类模板与友元_01_全局函数类内实现
- 11模板_14_类模板与友元_02_全局函数类外实现
- 11模板_15_类模板案例_01_数组类封装需求
- 11模板_15_类模板案例_02_数组类封装实现
2-2 异常

- 12异常_01_异常的基本语法
- 12异常_02_异常的注意事项
- 12异常_03_异常对象的生命周期
- 12异常_04_异常下的多态
- 12异常_05_栈解旋与智能指针
- 12异常_06_异常的接口声明
- 12异常_07_标准异常
- 12异常_08_自定义异常类
2-3 类型转换和输入输出流

- 13类型转换和输入输出流_01_静态类型转换
- 13类型转换和输入输出流_02_动态类型转换
- 13类型转换和输入输出流_03_常量类型转换
- 13类型转换和输入输出流_04_重新解释转换
- 13类型转换和输入输出流_05_输入输出流简介
- 13类型转换和输入输出流_06_标准输入流
- 13类型转换和输入输出流_07_标准输入流案例1
- 13类型转换和输入输出流_08_标准输入流案例2
- 13类型转换和输入输出流_09_标准输出流
- 13类型转换和输入输出流_10_写文件
- 13类型转换和输入输出流_11_读文件
2-4 STL初识与容器

- 14STL初识与容器_01_STL概述
- 14STL初识与容器_02_容器算法迭代器初识_01_vector存放内置数据类型
- 14STL初识与容器_02_容器算法迭代器初识_02_vector存放自定义数据类型
- 14STL初识与容器_02_容器算法迭代器初识_03_vector嵌套vector
- 14STL初识与容器_03_string容器_01_构造和赋值
- 14STL初识与容器_03_string容器_02_拼接和追加
- 14STL初识与容器_03_string容器_03_查找和替换
- 14STL初识与容器_03_string容器_04_比较和字符存取
- 14STL初识与容器_03_string容器_05_插入和删除
- 14STL初识与容器_03_string容器_06_截取子串
- 14STL初识与容器_03_string容器_07_转换
- 14STL初识与容器_04_vector容器_01_构造和赋值
- 14STL初识与容器_04_vector容器_02_容量和大小
- 14STL初识与容器_04_vector容器_03_插入和删除
- 14STL初识与容器_04_vector容器_04_容器交换
- 14STL初识与容器_04_vector容器_05_预留空间
- 14STL初识与容器_04_vector容器_06_逆序遍历
- 14STL初识与容器_04_vector容器_07_数据存取
- 14STL初识与容器_05_deque容器_01_构造和赋值
- 14STL初识与容器_05_deque容器_02_大小操作
- 14STL初识与容器_05_deque容器_03_插入和删除
- 14STL初识与容器_05_deque容器_04_数据存取
- 14STL初识与容器_05_deque容器_05_排序
- 14STL初识与容器_06_STL综合案例一
- 14STL初识与容器_07_stack容器_01_基本概念
- 14STL初识与容器_07_stack容器_02_常用接口
- 14STL初识与容器_08_queue容器_01_基本概念
- 14STL初识与容器_08_queue容器_02_常用接口
- 14STL初识与容器_09_list容器_01_基本概念
- 14STL初识与容器_09_list容器_02_构造和赋值
- 14STL初识与容器_09_list容器_03_交换和大小
- 14STL初识与容器_09_list容器_04_插入和删除
- 14STL初识与容器_09_list容器_05_数据存取和反转
- 14STL初识与容器_09_list容器_06_排序
- 14STL初识与容器_09_list容器_07_高级排序
- 14STL初识与容器_10_set和multiset容器_01_构造和赋值
- 14STL初识与容器_10_set和multiset容器_02_交换和大小
- 14STL初识与容器_10_set和multiset容器_03_插入和删除
- 14STL初识与容器_10_set和multiset容器_04_统计和查找
- 14STL初识与容器_10_set和multiset容器_05_pair对组
- 14STL初识与容器_10_set和multiset容器_06_set和multiset区别
- 14STL初识与容器_10_set和multiset容器_07_指定内置数据类型排序规则
- 14STL初识与容器_10_set和multiset容器_08_指定自定义数据类型排序规则
- 14STL初识与容器_11_map和multimap容器_01_构造和赋值
- 14STL初识与容器_11_map和multimap容器_02_交换和大小
- 14STL初识与容器_11_map和multimap容器_03_插入和删除
- 14STL初识与容器_11_map和multimap容器_04_统计和查找
- 14STL初识与容器_11_map和multimap容器_05_指定排序规则
- 14STL初识与容器_12_STL综合案例二
2-5 函数对象与适配器

- 15函数对象与适配器_01_函数对象基本概念
- 15函数对象与适配器_02_一元谓词
- 15函数对象与适配器_03_二元谓词
- 15函数对象与适配器_04_内建函数对象_01_算术仿函数
- 15函数对象与适配器_04_内建函数对象_02_关系仿函数
- 15函数对象与适配器_04_内建函数对象_03_逻辑仿函数
- 15函数对象与适配器_05_函数适配器
- 15函数对象与适配器_06_取反适配器
- 15函数对象与适配器_07_函数指针适配器
- 15函数对象与适配器_08_成员函数适配器
2-6 STL常用算法

- 16STL常用算法_01_常用遍历算法_01_for_each
- 16STL常用算法_01_常用遍历算法_02_transform
- 16STL常用算法_02_常用查找算法_01_find
- 16STL常用算法_02_常用查找算法_02_find_if
- 16STL常用算法_02_常用查找算法_03_adjacent_find
- 16STL常用算法_02_常用查找算法_04_binary_search
- 16STL常用算法_02_常用查找算法_05_count
- 16STL常用算法_02_常用查找算法_06_count_if
- 16STL常用算法_03_常用排序算法_01_sort
- 16STL常用算法_03_常用排序算法_02_random_shuffle
- 16STL常用算法_03_常用排序算法_03_merge
- 16STL常用算法_03_常用排序算法_04_reverse
- 16STL常用算法_04_常用拷贝和替换算法_01_copy
- 16STL常用算法_04_常用拷贝和替换算法_02_replace
- 16STL常用算法_04_常用拷贝和替换算法_03_replace_if
- 16STL常用算法_04_常用拷贝和替换算法_04_swap
- 16STL常用算法_05_常用算术生成算法_01_accumulate
- 16STL常用算法_05_常用算术生成算法_02_fill
- 16STL常用算法_06_常用集合算法_01_set_intersection
- 16STL常用算法_06_常用集合算法_02_set_union
- 16STL常用算法_06_常用集合算法_03_set_difference
- 16STL常用算法_07_演讲比赛流程管理系统_01_系统需求简介
- 16STL常用算法_07_演讲比赛流程管理系统_02_创建项目及管理类
- 16STL常用算法_07_演讲比赛流程管理系统_03_菜单功能和退出功能实现
- 16STL常用算法_07_演讲比赛流程管理系统_04_创建选手类
- 16STL常用算法_07_演讲比赛流程管理系统_05_比赛流程搭建及抽签功能实现
- 16STL常用算法_07_演讲比赛流程管理系统_06_比赛功能实现
- 16STL常用算法_07_演讲比赛流程管理系统_07_显示分数及第二轮比赛实现
- 16STL常用算法_07_演讲比赛流程管理系统_08_保存分数
- 16STL常用算法_07_演讲比赛流程管理系统_09_读取记录
- 16STL常用算法_07_演讲比赛流程管理系统_10_查看往届记录
- 16STL常用算法_07_演讲比赛流程管理系统_11_优化项目
- 16STL常用算法_07_演讲比赛流程管理系统_12_清空记录
2-7 C++综合案例

- 17C++综合案例_01_案例简介
- 17C++综合案例_02_CSV文件制作
- 17C++综合案例_03_解析单行CSV数据
- 17C++综合案例_04_解析全部CSV数据
- 17C++综合案例_05_创建武器基类
- 17C++综合案例_06_小刀类实现
- 17C++综合案例_07_其他武器类实现
- 17C++综合案例_08_英雄类实现
- 17C++综合案例_09_怪物类实现
- 17C++综合案例_10_英雄的攻击实现
- 17C++综合案例_11_战斗交互实现
第三章 Qt桌面应用开发

3-1 Qt基础

- 18Qt基础_01_Qt简介
- 18Qt基础_02_QtCreator简介及创建项目
- 18Qt基础_03_默认代码解析
- 18Qt基础_04_Qt中的命名规范与常用快捷键
- 18Qt基础_05_按钮控件及窗口设置
- 18Qt基础_06_Qt中的对象树
- 18Qt基础_07_Qt中的坐标系
- 18Qt基础_08_信号和槽_01_信号和槽初识
- 18Qt基础_08_信号和槽_02_自定义信号和槽
- 18Qt基础_08_信号和槽_03_重载问题及解决
- 18Qt基础_08_信号和槽_04_信号和槽拓展
- 18Qt基础_08_信号和槽_05_Qt4版本信号和槽
- 18Qt基础_08_信号和槽_06_Lambda表达式
- 18Qt基础_09_QMainWindow_01_菜单栏
- 18Qt基础_09_QMainWindow_02_工具栏
- 18Qt基础_09_QMainWindow_03_状态栏
- 18Qt基础_09_QMainWindow_04_铆接部件和核心部件
- 18Qt基础_10_导入资源文件
- 18Qt基础_11_对话框_01_模态对话框
- 18Qt基础_11_对话框_02_非模态对话框
- 18Qt基础_11_对话框_03_消息对话框
- 18Qt基础_11_对话框_04_其他标准对话框
- 18Qt基础_12_界面布局
- 18Qt基础_13_常用控件_01_PushButton和ToolButton
- 18Qt基础_13_常用控件_02_RadioButton和CheckBox
- 18Qt基础_13_常用控件_03_ListWidget
- 18Qt基础_13_常用控件_04_TreeWidget
- 18Qt基础_13_常用控件_05_TableWidget
- 18Qt基础_13_常用控件_06_Containers
- 18Qt基础_13_常用控件_07_其他常用控件
- 18Qt基础_14_自定义控件_01_封装自定义控件
- 18Qt基础_14_自定义控件_02_扩展自定义控件
3-2 Qt高级

- 19Qt高级_01_事件_01_鼠标进入和离开
- 19Qt高级_01_事件_02_鼠标按下释放和移动
- 19Qt高级_01_事件_03_定时器事件
- 19Qt高级_01_事件_04_定时器类
- 19Qt高级_01_事件_05_事件分发器
- 19Qt高级_01_事件_06_事件过滤器
- 19Qt高级_02_绘图_01_基本绘图
- 19Qt高级_02_绘图_02_高级绘图
- 19Qt高级_02_绘图_03_图片绘制
- 19Qt高级_03_绘图设备_01_QPixmap
- 19Qt高级_03_绘图设备_02_QBitmap
- 19Qt高级_03_绘图设备_03_QImage
- 19Qt高级_03_绘图设备_04_QPicture
- 19Qt高级_04_文件操作_01_读文件
- 19Qt高级_04_文件操作_02_写文件及编码格式
- 19Qt高级_04_文件操作_03_文件信息读取
- 19Qt高级_04_文件操作_04_文件流
3-3 Qt综合项目一

- 20Qt综合项目一_01_项目简介及创建
- 20Qt综合项目一_02_导入资源
- 20Qt综合项目一_03_鸟类创建
- 20Qt综合项目一_04_鸟动画实现
- 20Qt综合项目一_05_鼠标拖拽
- 20Qt综合项目一_06_自动移动
- 20Qt综合项目一_07_右键菜单
- 20Qt综合项目一_08_窗口透明化
3-4 Qt综合项目二

- 21Qt综合项目二_01_项目简介及创建
- 21Qt综合项目二_02_导入资源
- 21Qt综合项目二_03_主场景搭建
- 21Qt综合项目二_04_开始按钮创建
- 21Qt综合项目二_05_开始按钮跳跃效果实现
- 21Qt综合项目二_06_选择关卡场景搭建
- 21Qt综合项目二_07_主场景进入选关场景
- 21Qt综合项目二_08_返回按钮创建
- 21Qt综合项目二_09_返回按钮功能实现
- 21Qt综合项目二_10_选关按钮创建
- 21Qt综合项目二_11_选关按钮数字显示
- 21Qt综合项目二_12_游戏场景搭建
- 21Qt综合项目二_13_游戏场景配置
- 21Qt综合项目二_14_游戏场景的返回按钮实现
- 21Qt综合项目二_15_游戏场景显示当前关卡号
- 21Qt综合项目二_16_硬币背景图创建
- 21Qt综合项目二_17_硬币类的创建
- 21Qt综合项目二_18_关卡配置数据引入
- 21Qt综合项目二_19_初始化全部关卡
- 21Qt综合项目二_20_翻转硬币实现
- 21Qt综合项目二_21_禁用按钮
- 21Qt综合项目二_22_翻转周围硬币实现
- 21Qt综合项目二_23_游戏胜利检测
- 21Qt综合项目二_24_胜利效果展示
- 21Qt综合项目二_25_胜利后禁用硬币点击
- 21Qt综合项目二_26_音效添加
- 21Qt综合项目二_27_项目优化
- 21Qt综合项目二_28_辅助玩法介绍
- 21Qt综合项目二_29_打包发布流程说明
- 21Qt综合项目二_30_安装和卸载项目
阶段四 Linux高并发服务器开发
展开第一章 Linux-系统编程

1-1 Linux命令基础

- 01-命令解析器 免费试学
- 02-shell简介 免费试学
- 03-bin和dev目录 免费试学
- 04-home目录 免费试学
- 05-cd命令的使用 免费试学
- 06-宿主目录和终端提示符 免费试学
- 07-lib库目录 免费试学
- 08-tmp、usr和var 免费试学
- 09-快捷键的使用 免费试学
- 10-Linux 软件在线安装 免费试学
- 11-ls-l命令-Linux系统的7种文件类型 免费试学
- 12-ls-l命令-文件访问权限 免费试学
- 13-ls-l命令-其他几个部分 免费试学
- 14-ls命令-其他参数 免费试学
- 15-文件目录操作命令-上-touch-mkdir-rm- 免费试学
- 16-文件目录操作命令-中-cp-mv-cat 免费试学
- 15-文件目录操作命令-下-cat-more-less-tail 免费试学
- 17-硬链接和软连接 免费试学
- 01-wc和whoami 免费试学
- 02-chmod 修改文件权限 免费试学
- 03-新增、删除用户和用户组 免费试学
- 04-修改文件所有者和所属组 免费试学
- 05-find命令-name-type-size 免费试学
- 06-find命令-maxdepth-exec-xargs 免费试学
- 07-压缩和解压缩 免费试学
- 08-软件离线安装 免费试学
- 09-vim-3种工作模式 免费试学
- 10-vim-切换编辑模式8种方法 免费试学
- 11-vim-保存退出和光标移动 免费试学
- 12-vim-复制粘贴 免费试学
- 13-vim-剪切删除 免费试学
- 14-vim-查找替换 免费试学
- 15-分屏操作 免费试学
- 16-vim的配置 免费试学
1-2 文件编译、调试及库制作

- 01-rwx对于文件和目录的区别 免费试学
- 02-gcc编译过程 免费试学
- 03-数据段合并和地址回填说明 免费试学
- 04-gcc编译其他参数 免费试学
- 05-函数库简介 免费试学
- 06-静态库的使用 免费试学
- 07-动态库的简介 免费试学
- 08-动态库制作的基本流程 免费试学
- 09-启动app错误解决方法12 免费试学
- 10-启动app错误解决方法34 免费试学
- 11-makefile的一组规则 免费试学
- 12-makefile的2个函数 免费试学
- 02-makefile自动变量的定义和使用 免费试学
- 04-makefile的 ALL和clean的使用 免费试学
- 05-模式规则和静态模式规则 免费试学
- 06-makefile的其他参数和变量使用 免费试学
- 07-gdb调试,基础指令 免费试学
- 09-gdb的其他指令 免费试学
- 10-补充知识:栈帧 免费试学
- 11-gdb中的bt和frame指令 免费试学
1-3 Linux文件操作

- 12-man帮助手册组成 免费试学
- 13-系统调用和库函数之前的调用关系 免费试学
- 14-open和close系统调用 免费试学
- 15-3参open创建文件 免费试学
- 16-创建文件的权限和umask 免费试学
- 03-read和write系统调用 免费试学
- 04-mycp函数实现 免费试学
- 05-错误处理函数 免费试学
- 06-预读入,缓输出 免费试学
- 08-文件描述符 免费试学
- 08-阻塞和非阻塞 免费试学
- 09-read函数的返回值 免费试学
- 10-fcntl修改文件访问权限 免费试学
- 11-位图的使用 免费试学
- 12-lseek函数 免费试学
- 13-truncate拓展文件大小 免费试学
- 14-传入传出参数 免费试学
- 01-文件系统相关概念 免费试学
- 02-stat获取文件类型 免费试学
- 03-lstat函数和相关知识 免费试学
- 04-link和unlink 免费试学
- 05-目录操作函数 免费试学
- 06-目录操作函数-实现简单ls 免费试学
- 07-dup复制文件描述符 免费试学
- 09-dup2函数 免费试学
- 10-dup2实现cat重定向 免费试学
- 11-fcntl实现fd拷贝 免费试学
1-4 进程

- 12-并发访问 免费试学
- 13-cpu简单介绍 免费试学
- 14-MMU简介 免费试学
- 15-pcb成员 免费试学
- 16-进程的状态 免费试学
- 17-环境变量简介 免费试学
- 18-fork创建子进程 免费试学
- 02-fork子进程相关琐碎知识 免费试学
- 03-循环创建n个子进程 免费试学
- 04-父子进程异同和共享 免费试学
- 05-函数fork的gdb调试 免费试学
- 06-execlp函数 免费试学
- 07-execl函数 免费试学
- 08-其他exec函数 免费试学
- 10-回收子进程概念 免费试学
- 11-孤儿进程 免费试学
- 12-僵尸进程 免费试学
- 13-wait回收子进程 免费试学
- 14-wait回收子进程-获取退出状态 免费试学
- 15-waitpid函数 免费试学
- 16-waitpid回收N个子进程 免费试学
1-5 进程间通信

- 17-4种IPC方式
- 18-pipe匿名管道特质和局限性
- 02-管道的读写行为
- 03-父子进程ls-wc-l
- 04-兄弟进程ls-wc-l
- 05-管道缓存区
- 06-管道优劣
- 07-fifo命名管道
- 08-文件进程间通信
- 10-mmap-操作函数
- 12-mmap-建立映射区
- 13-mmap-使用注意事项
- 14-mmap一般调用形式
- 15-父子进程间通信
- 16-无血缘关系进程间通信
- 17-匿名映射
1-6 信号

- 02-信号简介
- 03-信号相关的概念
- 04-信号4要素
- 05-常见产生信号5种方式
- 06-kill发送信号
- 07-alarm定时器
- 08-setitmer定期器
- 09-自定义信号集操作函数
- 11-设置屏蔽解除屏蔽操作函数
- 12-查看未决信号集
- 13-验证9号和19号信号不能被屏蔽
- 14-signal实现信号捕捉
- 15-sigaction函数原型分析
- 16-sigaction函数实现信号捕捉,及捕捉特性
- 17-信号捕捉函数回收子进程
- 18-内核实现信号捕捉
1-7 守护进程

- 02-创建会话
- 03-守护进程概念
- 04-守护进程创建代码
1-8 线程

- 05-进程和线程的概念
- 06-线程内核三级映射
- 07-线程优缺点
- 08-创建线程和获取线程id的函数
- 10-创建子线程
- 11-循环创建N个子线程
- 12-子线程传参地址错误演示分析
- 13-主、子线程共享全局变量、堆空间
- 14-线程退出
- 15-pthread_join回收线程退出值
- 16-pthread_detach线程分离
- 17-杀死线程pthread_cancel
- 18-进程线程比对
- 19-线程属性简介
1-9 线程同步

- 02-线程同步相关概念
- 03-锁属性-建议锁
- 04-mutex互斥锁操作函数
- 05-互斥锁使用的注意事项
- 06-互斥量的初始化方法
- 07-死锁
- 08-读写锁特性
- 09-读写锁操作函数
- 10-读写锁使用示例
- 11-条件变量操作函数
- 13-生产者消费者模型简单分析
- 14-条件变量实现生产者消费者模型代码预览
- 15-条件变量实现生产者消费者模型流程分析
- 16-条件变量实现生产者消费者模型
- 17-wait放置到while循环中
- 18-信号量和信号量操作函数
- 19-信号量生产者消费者图示分析
- 20-信号量生产者消费者代码示例
第二章 Linux-网络编程

2-1 套接字通信基础

- 01-知识点概述 免费试学
- 02-两种网络模型 免费试学
- 03-服务器开发是什么 免费试学
- 04-IP分类 免费试学
- 05-IP协议 免费试学
- 06-查看ip地址和测试主机之间是否能够通信 免费试学
- 07-端口 免费试学
- 08-IP和端口的使用以及域名的作用 免费试学
- 09-ISO OSI 七层和四层模型 免费试学
- 10-网络协议是什么 免费试学
- 11-数据在网络环境中的发送和接收过程 免费试学
- 12-套接字通信涉及的知识点 免费试学
- 13-字节序 免费试学
- 14-大小端存储举例 免费试学
- 16-IP和端口大小端转换函数 免费试学
- 17- 字符串类型的主机字节序IP转网络字节序 - inet_pton 免费试学
- 18-网络字节序转字符串类型的主机字节序ip地址 - inet_ntop 免费试学
2-2 tcp通信

- 19-tcp特点 免费试学
- 20-套接字通信里边的文件描述符结构 免费试学
- 21-套接字通信服务器端的通信流程 免费试学
- 22-基于tcp的客户端通信流程 免费试学
- 23-文件描述符对应的内核缓冲区和读写操作的关系 免费试学
- 24-创建套接字函数 socket 免费试学
- 25-绑定函数 bind 免费试学
- 26-设置监听 listen 免费试学
- 27-等待并接受客户端连接请求 - accept 函数 免费试学
- 28-接收数据 read recv 免费试学
- 29-发送数据和连接函数 write send connect 免费试学
- 30-ip和端口需要使用网络字节序 免费试学
- 31-基于tcp的服务器端程序-代码 免费试学
- 32-基于tcp的客户端实现-代码 免费试学
- 33-程序测试 免费试学
2-3 三次握手四次挥手

- 01-知识点概述
- 03-tcp协议
- 04-三次握手的过程
- 05-四次挥手的过程
- 06-滑动窗口的作用
- 07-滑动窗口的值是如何发送给对方的
- 08-滑动窗口如何控制发送端阻塞
- 09-tcp通信关键字解释
- 10-tcp通信的全部过程分析
2-4 套接字并发服务器

- 12-昨天套接字服务器的弊端
- 13-如何通过多进程的方式实现服务器端的并发
- 14-多进程服务器-1
- 15-多进程服务器-2
- 16-多进程版程序-回收子进程被信号中断的处理
- 17-多线程版tcp服务器处理思路
- 18-多线程并发服务器编写
- 19-为什么不能把文件描述符地址传到子线程中
- 20-多线程程序测试
2-5 tcp状态转换

- 01-知识点概述
- 02-多线程多进程服务器细节回顾
- 03-tcp三次握手过程中状态变化
- 04-四次挥手过程中的状态转换
- 05-tcp状态转换图2
- 06-处于TIME_WAIT的进程等待2msl时长的原因
- 07-半关闭
- 08-半关闭函数shutdown()
- 09-通过netstat命令查看进程的网络状态
- 10-为什么要设置端口复用
- 11-端口复用的设置
2-6 IO多路转接之select

- 12-什么是多路IO转接
- 15-select函数是如何工作的
- 16-select函数的细节
- 17-文件描述符集合操作函数
- 18-select检测的集合fd_set和文件描述符表的对应关系
- 19-select函数的使用流程
- 20-使用select处理服务器端通信-1
- 21-使用select处理服务器通信-2
- 22-select集合参数是传入传出要保存原始集合数据
- 23-select服务器代码
- 24-select测试
2-7 IO多路转接之epoll

- 01-知识点概述
- 03-poll的使用 - 了解内容
- 04-epoll和select poll的对比
- 05-epoll的使用步骤
- 06-创建epoll模型 epoll_create
- 07-epoll模型节点操作函数 epoll_ctl()
- 08-epoll检测函数 epoll_wait()
- 09-epoll_wait第二个传出参数中的数据是怎么来的
- 10-基于epoll的tcp服务器伪代码
- 11-epoll服务器代码
- 13-epoll水平模式的特点
- 14-水平模式现象演示
- 15-边沿模式
- 16-如何给文件描述符设置边沿模式
- 17-epoll的边沿模式现象演示
- 18-epoll的边沿模式为什么是非阻塞模式
- 19-设置文件描述符的非阻塞行为
- 20-边沿非阻塞的epoll服务器-代码
- 21-非阻塞读内存如何判断数据读完了-通过错误号
2-8 udp通信

- 23-udp特点
- 24-udp通信流程
- 25-sendto和recvfrom函数
- 01-知识点概述
- 02-全局变量errno的值对应的头文件定义
- 04-udp通信流程
- 05-udp服务器程序代码
- 06-udp客户端代码
- 07-udp通信测试
- 08-udp的应用场景
- 11-广播的特点
- 12-广播的流程
- 13-设置广播属性使用setsockopt
- 14-广播代码修改
- 15-组播特点
- 17-上午广播bug的修改
- 18-广播特点总结
- 19-组播地址
- 20-组播的通信流程
- 21-通过setsockopt设置组播属性和加入到多播组
- 22-组播代码修改
- 23-组播代码的测试
- 24-组播特点总结
2-9 本地套接字

- 25-本地套接字介绍
- 26-本地套接字服务器端通信流程
- 27-本地套接字客户端通信流程
- 28-本地套接字客户端和服务器-代码
- 29-本地套接字测试-bug修改
- 30-进程间通信的场景
2-10 libevent

- 02-libevent 特点介绍
- 03-libevent的安装和解决动态库找不到的问题
- 04-事件处理框架的创建
- 05-启动事件循环 event_base_dispatch() 函数
- 06-事件的终止函数
- 07-事件的创建和销毁 struct event
- 08-将创建的事件添加到事件处理框架 event_add()
- 09-事件和事件处理框架之间的关系
- 10-通过event事件写管道-代码
- 11-使用event事件读写管道测试
- 12-event_add第二个参数超时时长的说明
- 14-struct event中的超时处理
- 15-带缓冲区的事件 bufferevent
- 16-创建带缓冲区的事件 bufferevent_socket_new()
- 17-连接服务器函数 bufferevent_socket_connect()
- 18-bufferevent缓冲区的读写函数 bufferevent_write() bufferevent_read()
- 19-给bufferevent设置回调函数bufferevent_setcb()
- 20-bufferevent回调函数的函数原型
- 21-基于bufferevent的套接字客户端处理流程
- 22-套接字通信的客户端-1
- 23-套接字通信的客户端-2
- 24-客户端套接字程序流程总结
- 25-创建链接监听器 evconnlistener_new_bind()
- 26-链接监听器的回调函数
- 27-链接监听器其他属性设置
- 28-套接字服务器端处理流程分析
- 29-套接字服务器程序实现
- 30-套接字通信的客户端和服务器通信流程串讲和补充以及测试
第三章 Linux-网络编程案例

3-1 案例概述

- 01-要实现的案例效果展示
3-2 html标签

- 03-html网页的特点和基本结构
- 04-设置字体的标签 font
- 05-段落标签 p
- 06-单标签 br 和 hr
- 07-文本格式标签 strong em del ins
- 08-无序列表 ul
- 09-有序列表ol
- 10-自定义列表 dl
- 11-图片标签-img
- 12-超链接标签 a
- 13-表格标签 table
3-3 http请求

- 14-http协议的划分
- 15-http请求概述
- 16-使用get方式向服务器提交数据已经数据格式解析
- 17-http请求使用post提交数据数据格式
- 18-get和post请求的区别
3-4 http响应

- 01-知识点概述
- 03-http响应消息
- 04-http响应中的状态码
- 05-浏览器客户端如何向服务器发送请求分析
- 06-web服务器端的处理步骤分析
3-5 编写服务器监听代码

- 07-在vs中创建linux项目
- 08-初始化监听的套接字-initListenFd()
- 09-关于阿里云服务器程序访问失败问题
3-6 服务器epoll模型代码

- 10-启动epoll模型
- 11-和客户端建立新连接
- 12-接收客户端的http请求数据
3-7 处理客户端请求

- 13-上午代码回顾和从接收的数据中读出请求行
- 14-解析请求行
- 15-正则表达式以及匹配
3-8 如何向客户端回复数据

- 16-解析请求行以及后续处理
- 17-对path处理说明
- 18-如何回复响应数据
- 20-关于文件对应content-type如何查询
- 21-服务器处理流程梳理
3-9 向客户端发送文件

- 03-和客户端断开连接的处理
- 04-客户端http请求处理流程回顾
- 05-发送状态行和响应头
- 06-根据文件获取content-type和发送文件
- 07-程序调试和访问文件测试
3-10 向客户端发送目录

- 08-发送目录主要做什么事儿
- 09-scandir遍历目录和使用
- 11-发送目录
- 12-关于超链接的添加
3-11 程序优化

- 13-浏览器访问服务器中有中文名文件失败的原因
- 14-解析访问文件名中的特殊字符串
- 15-案例的性能优化
3-12 epoll_loop.c文件函数讲解

- 16-epool_loop.c的main函数
- 17-initlistensocket 函数
- 18-acceptconn 函数
- 19-数据的接收和发送
阶段五 Windows/Linux 跨平台企业项目实战 (项目1)
展开第一章 数据库

1-1 Oracle数据库

- 01-Oracle数据库简介 免费试学
- 02-Oracle数据库安装 免费试学
- 03-Oracle体系结构 免费试学
- 04-Oracle基本概念 免费试学
- 05-Oracle基本元素 免费试学
- 06-Oracle数据库启动和关闭 免费试学
- 07-sqlplus登录oracle数据库相关操作 免费试学
- 08-sqlplus的基本操作 免费试学
- 09-Oracle中上课使用的方案 免费试学
- 10-SQL语言分类 免费试学
- 11-SQL中select语句语法和注意事项 免费试学
- 12-Oracle中查询相关示例 免费试学
- 13-上午课程复习 免费试学
- 14-别名和distinct去重 免费试学
- 15-算术运算和NULL 免费试学
- 16-SQL语句中where中日期格式 免费试学
- 17-SQL语句中比较运算 免费试学
- 18-SQL语句中模糊查询 免费试学
- 19-SQL语句中逻辑运算 免费试学
- 20-SQL语句排序 免费试学
- 21-数值函数 免费试学
- 22-日期函数和时间函数 免费试学
- 01-上一次课程复习 免费试学
- 02-转换函数 免费试学
- 03-通用函数(了解) 免费试学
- 04-条件表达式 免费试学
- 05-分组函数 免费试学
- 06-分组数据 免费试学
- 07-having过滤 免费试学
- 08-笛卡尔积概念 免费试学
- 09-多表查询等值连接 免费试学
- 10-多表查询不等值连接 免费试学
- 11-多表查询外连接 免费试学
- 12-多表查询中自连接 免费试学
- 13-子查询引出 免费试学
- 14-上午课程复习 免费试学
- 15-子查询(2) 免费试学
- 16-单行子查询 免费试学
- 17-多行子查询 免费试学
- 18-子查询相关一些问题 免费试学
- 19-集合运算符 免费试学
- 20-集合运算应用 免费试学
- 21-insert语句基本用法 免费试学
- 22-地址符 免费试学
- 23-批量处理 免费试学
- 24-更新数据和删除数据操作 免费试学
- 25-事务 免费试学
- 01-上一次课复习-09 免费试学
- 02-表的创建 免费试学
- 03-修改表列 免费试学
- 04-请空表 免费试学
- 05-删除表和重命名表 免费试学
- 06-约束概念和分类 免费试学
- 07-约束举例说明 免费试学
- 08-视图 免费试学
- 09-序列 免费试学
- 10-索引 免费试学
- 11-同义词 免费试学
- 12-SQL和sqlplus区分 免费试学
- 13-上午课程复习 免费试学
1-2 MySql数据库

- 14-MySQL数据库介绍
- 15-MySQL数据库安装
- 16-MySQL数据库启动和登录
- 17-MySQL数据库CURD
- 18-MySQL数据库表CURD
- 19-MySQL数据库表数据CURD
- 20MysQL基础综合练习
- 21-MySQL数据库总日期和时间函数
- 22-MySQL中函数
- 23-PLSQL工具使用介绍
- 24-Oracle实例别名和Oracle客户端
- 01-上一次课复习-10
- 02-Oracle客户端工具安装
- 03-MySQL多表查询
- 04-MySQL约束
- 05-MySQL中文乱码问题
- 06-Navicate连接和操作MySQL
- 07-MySQL参考手册概述
- 08-C连接MySQL数据库
- 09-MySQL使用CAPI执行insert语句
- 10-上午课程复习
- 11-Makefile编写
- 12-执行删除和更新SQL语句
- 13-mysql_error函数应用
- 14-mysql_store_result获取结果集
- 15-执行select语句输出结果
- 16-执行select语句输出结果(2)
- 17-简单客户端实现
- 18-MySQL预处理语句
- 19-MySQL事务
第二章 金融类安全传输平台项目

2-1 项目介绍-密码学知识

- 01-文档介绍 免费试学
- 02-知识点概述 免费试学
- 04-项目准备 免费试学
- 05-序列化介绍 免费试学
- 06-项目中的基础组件介绍 免费试学
- 07-基础模块在项目中的作用-简述 免费试学
- 08-项目中的其他模块介绍 免费试学
- 09-加密三要素 免费试学
- 10-对称加密和非对称加密的秘钥 免费试学
- 11-对称和非对称加密的特点 免费试学
- 12-对称加密算法des 免费试学
- 13-3des对称加密算法 免费试学
- 14-对称加密算法aes 免费试学
- 15-重要知识点回顾 免费试学
- 16-秘钥分发过程 免费试学
- 17-哈希算法特点 免费试学
- 18-常用哈希算法以及散列值长度 免费试学
- 19-哈希算法不可逆 免费试学
- 20-消息认证码 免费试学
- 21-数字签名和校验签名 免费试学
- 22-openssl介绍 免费试学
- 23-windows下openssl安装 免费试学
- 24-vs下openssl的配置 免费试学
- 25-openssl在linux下的安装 免费试学
2-2 git

- 01-知识点概述 免费试学
- 02-版本控制工具的作用 免费试学
- 03-git和svn 免费试学
- 04-git介绍 免费试学
- 05-git的安装 免费试学
- 06-工作区 暂存区 版本库 概念 免费试学
- 07-本地文件添加到暂存区和提交到版本库 免费试学
- 08-文件的修改和还原 免费试学
- 09-查看提交的历史版本信息 免费试学
- 10-版本差异比较 免费试学
- 11-删除文件 免费试学
- 12-本地版本管理设置忽略目录 免费试学
- 13-远程git仓库介绍 免费试学
- 14-创建远程仓库 免费试学
- 15-本地仓库中的项目推送到远程仓库 免费试学
- 16-将远程仓库内容克隆到本地 免费试学
- 17-克隆的应用场景 免费试学
- 18-生成rsa秘钥对 免费试学
- 19-设置本地ssh秘钥 免费试学
- 20-远程仓库ssh公钥设置 免费试学
- 21-使用ssh地址进行仓库操作注意事项 免费试学
- 22-分支介绍 免费试学
- 23-分支的切换 免费试学
- 24-合并分支和解决冲突 免费试学
- 25-往远程非空仓库推动本地仓库内容 免费试学
- 26-git提交代码操作 免费试学
- 27-protobuf部署 免费试学
2-3 序列化-protobuf使用

- 01-知识点概述new
- 02-如何使用uml描述一个类
- 03-uml描述继承关系
- 04-uml中描述关联关系
- 05-uml中对组合和聚合的描述
- 06-uml中的依赖关系的描述
- 07-uml总结
- 08-序列化介绍
- 09-网络通信中常见问题分析
- 10-常用的数据序列化方式
- 11-protobuf使用步骤
- 12-编写proto文件并生成对应的类
- 13-protobuf生成的类分析
- 14-复习
- 15-protobuf序列化数据和解析
- 16-protobuf中数组的使用 - repeated
- 17-protobuf中使用枚举
- 18-在一个proto中导入其他proto文件
- 19-测试在一个类中包含其他类对象
- 20-protobuf中添加命名空间
- 21-要实现的编解码的类
2-4 工厂模式-套接字通信

- 01-知识点概述
- 02-解决windows下动态库找不到的问题
- 03-编解码类图分析
- 04-通过protobuf生成需要的c++类
- 05-编解码基类Codec实现
- 06-编解码类代码分析
- 07-工厂模式介绍
- 08-简单工厂模式实现-伪代码
- 09-工厂模式使用-伪代码
- 10-编解码类图
- 11-服务器通信效率分析
- 12-线程池设计思路
- 13-线程池相关
- 14-客户端效率的优化
- 15-套接字连接池实现-伪代码
- 16-连接池 c api
- 17-套接字通信C语言api分析
- 18-套接字通信客户端类封装
- 19-服务器端C++类设计 - 有问题
- 20-服务器端类改进
- 21-封装之后的套接字类服务器和客户端通信流程 - 伪代码
- 22-套接字类图
2-5 共享内存

- 01-知识点概述
- 02-tcp类封装对应的头文件分析
- 03-TcpServer类实现代码分析
- 04-tcp服务器代码分析
- 05-套接字超时处理思想
- 06-accept超时处理
- 07-read超时处理
- 08-write超时处理
- 09-connect超时处理思路
- 10-connect超时等待设置
- 11-tcp粘包的原因
- 12-粘包的解决
- 13-项目中对粘包问题的处理
- 14-共享内存使用流程
- 15-创建或打开共享内存
- 16-进程和共享内存关联-shmat
- 17-进程和共享内存分离
- 18-共享内存操作
- 19-共享内存进程间通信测试
- 20-共享内存思考的问题
- 21-共享内存操作命令和key==0的情况
- 22-ftok函数
- 23-内存映射区和共享内存区别
- 24-共享内存类的封装
- 25-共享内存子类功能-读写共享内存
2-6 使用openssl加解密

- 01-知识点概述
- 02-哈希的特点和常用的哈希算法散列值长度
- 03-linux下openssl相关的安装问题
- 04-md5 api
- 05-其他的哈希算法使用
- 06-sha1测试
- 07-哈希类的封装
- 08-非对称加密特点和应用场景
- 09-生成密钥对-rsa
- 10-在内存中生成rsa密钥对-代码
- 11-将密钥对写入磁盘
- 12-使用bio方式将秘钥写入磁盘文件中
- 13-从内存RSA对象中取出公钥或私钥信息
- 14-rsa加解密函数
- 15-rsa使用公钥加密数据-代码
- 17-rsa加解密测试-bug修改
- 18-rsa签名和校验签名
- 19-签名和验证签名-代码
- 20-rsa类的封装
- 21-aes知识点回顾
- 22-对象加密- 密码分组模式
- 23-初始化对称加密的秘钥
- 24-aes加解密函数AES_cbc_encrypt
- 25-aes加解密-代码
2-7 jsoncpp-秘钥协商

- 01-知识点概述
- 02-openssl rsa内存释放
- 03-json介绍
- 04-json数组和json对象
- 05-写json文件注意事项
- 06-vs下jsoncpp库的生成
- 07-linux下jsoncpp环境搭建
- 08-jsoncpp中Value类api
- 09-jsoncpp中的Reader类
- 10-jsoncpp中的FasterWrite类
- 11-组织json数据写磁盘
- 12-jsoncpp测试
- 13-秘钥协商客户端需求分析
- 14-秘钥协商客户端操作流程
- 15-秘钥协商服务器端业务数据分析
- 16-秘钥协商服务器业务流程
- 17-任务
- 18-在vs编写linux项目需要设置的一些属性
2-8 秘钥协商

- 01-秘钥协商客户端main函数
- 02-main函数的逻辑处理
- 03-客户端构造函数实现
- 04-在项目中添加已经封装好的类
- 05-客户端数据初始化并序列化
- 06-rsa非对称加密类走读
- 07-生成对象加密的密钥对和签名
- 08-秘钥协商客户端功能实现
- 09-启动服务器
- 10-服务器端处理流程和线程回调函数类型
2-9 秘钥协商-base64

- 01-知识点概述
- 02-main函数中代码修改
- 03-秘钥协商客户端代码细节修改
- 04-秘钥协商服务器读配置文件
- 05-秘钥协商服务器启动代码
- 06-服务器线程回调函数实现
- 07-签名校验
- 08-生成随机秘钥
- 09-服务器给客户端回复数据
- 10-客户端程序调试
- 11-服务器程序编译调试
- 12-签名和校验签名的段错误
- 13-签名和验证签名bug修改
- 14-rsa加密直接对二进制数据进行操作的bug
- 15-base64介绍
- 16-base64应用场景
- 17-通过base64算法推导出的结论
- 18-qt中base64编解码的api
- 19-openssl中bio链的工作模式
- 20-openssl中创建bio对象的两种方式
- 21-bio对应的读写函数
- 22-bio链中添加和删除节点
- 23-bio链写数据举例
- 24-通过openssl进行base64编码
- 25-通过openssl进行base64解码
- 26-log日志类概述
- 27-连接池的使用场景
- 28-连接池代码分析
2-10 共享内存和数据库操作

- 01-知识点概述
- 02-使用base对加解密数据进行编解码处理
- 03-项目测试-未完待续
- 04-测试和设置随机数种子
- 05-项目中秘钥协商模块和业务模块的关系
- 06-共享内存中对秘钥的存储
- 07-存储共享内存的数据结构定义
- 08-共享内存类
- 09-在项目中添加秘钥写共享内存的操作-思路
- 10-centos下防火墙设置
- 11-启动和关闭oralce数据库复习
- 12-oralce数据操作c++接口occi
- 13-occi使用之前需要知道的问题
- 14-在程序中使用occi接口的大致流程
- 15-创建测试项目并初始化occi环境
- 16-occi中创建连接数据库的Connection实例
- 17-使用occi接口查询并遍历结果集
- 18-occi进行插入操作
- 19-linux下occi环境配置
- 20-occi接口测试
- 21-使用plsql develop导入脚本文件
- 22-配置oracle数据库连接名
2-11 数据库操作

- 01-知识点概述
- 02-occi中事务操作
- 03-数据表介绍
- 04-关于数据库中创建的第二个用户
- 05-项目中秘钥协商对应的数据库操作
- 06-项目中数据库操作对象的添加和初始化
- 07-共享秘钥写入数据库
- 08-写数据库操作先关occi函数封装和使用
- 09-验证秘钥写数据功能
- 10-配置管理终端的作用
- 11-在qt中通过源码编译oci驱动
- 12-qt中的QSqlDatabase类常用 的api
- 13-qt中数据库查询相关的api函数
- 14-qt中连接数据代码
- 15-数据库查询遍历结果集
- 16-qt中的数据库事务操作
- 17-qt中连接mysql的注意事项
- 18-配置管理终端作用
- 19-QJsonDocument和QJsonArray类
- 20-json对象类
- 21-QJsonValue类
- 22-将json数组或对象转换为字符串步骤
2-12 外联接口-项目总结

- 01-知识点概述
- 02-秘钥协商的秘钥写入到共享内存中
- 03-秘钥写共享内存测试
- 04-外联接口作用
- 05-外联接口类的封装
- 06-配置文件定义
- 07-外联接口的打包
- 08-外联接口的实现
- 09-外联接口读共享内存得到秘钥
- 10-将外联接口制作成动态库
- 11-外联接口的使用
- 12-外联接口测试-有bug
- 13-外联接口测试
- 14-外联接口的改进
- 15-知识点总结
- 16-项目中的知识点总结-2
- 17-线程池思想
- 18-ora-24550解决方案
- 19-秘钥注销和校验
阶段六 游戏服务器开发 (项目2)
展开第一章 zinx框架使用

1-1 git命令使用

- 1-服务器需求分析 免费试学
- 2-面向框架编程简介 免费试学
- 3-zinx框架初始 免费试学
- 4-回显标准输入 免费试学
- 5-vs结合git 免费试学
- 6-完善readme范例 免费试学
- 7-添加退出功能 免费试学
- 8-添加命令处理类 免费试学
- 9-添加日期前缀思路 免费试学
- 10-添加日期前缀功能 免费试学
1-2 zinx的学习

- 1-zinx框架建议用法 免费试学
- 2-三层结构重构原有功能 免费试学
- 3-实现三层结构回显 免费试学
- 4-添加关闭输出功能 免费试学
- 5-添加日期前缀功能 免费试学
- 6-tcp数据适配 免费试学
- 7-tcp通道实现 免费试学
- 8-协议层记录消息来源 免费试学
1-3 zinx的扩展

- 1-timer_fd产生超时事件 免费试学
- 2-timer_fd使用案例 免费试学
- 3-初次实现定时器 免费试学
- 4-定时器管理思路 免费试学
- 5-定时器管理类实现 免费试学
- 6-第一版本定时器的缺陷 免费试学
- 7-时间轮定时器原理 免费试学
- 8-时间轮定时添加删除任务 免费试学
- 9-调度时间轮 免费试学
- 10-时间轮定时器完善 免费试学
- 11-向开源项目贡献代码 免费试学
第二章 游戏业务实现

2-1 TCP通讯以及protobuf

- 0-游戏业务分层
- 1-游戏通道层实现
- 2-消息结构设计
- 3-消息类实现
- 4-Tcp粘包处理思路
- 5-TCP粘包实现
- 6-tcp粘包测试
- 7-协议层序列化实现
2-2 AOI业务逻辑

- 0-项目进度回顾
- 1-完善整体架构
- 2-AOI网格思路
- 3-网格AOI数据结构
- 4-游戏世界类添加,删除和构造
- 5-AOI查找实现
- 6-GameRole类结合AOI
- 7-登陆时发送ID和姓名
- 8-登陆时发送周围玩家位置
- 9-玩家上线完成
- 10-玩家下线处理
2-3 玩家聊天以及出生地

- 1-世界聊天思路
- 2-世界聊天实现
- 3-玩家移动思路
- 4-玩家移动初始实现
- 5-视野切换实现
- 6-随机出生
- 7-内存泄漏查看
- 8-退出程序思路
- 9-定时退出程序实现
- 10-随机姓名思路
- 11-随机姓名实现
2-4 redis的使用

- 0-当前进度
- 1-守护进程
- 2-进程监控
- 3-玩家姓名添加文件
- 4-文件删除玩家姓名
- 5-redis安装
- 6-redis-存取命令
- 7-redis链表存取
- 8-redis程序结构
- 9-hiredisAPI使用
- 10-基于redis查找玩家姓名
- 11-Makefile编写
- 12-游戏业务实现总结
第三章 zinx抽象框架实现

3-1 zinx的epoll反应堆

- 1-框架需求分析
- 2-输入回显功能分析
- 3-kernel中的epoll
- 4-回显功能完成
- 5-通道类抽象
- 6-抽象通道的输出函数
- 7-通道抽象实现
- 8-管道通道类实现
- 9-FIFO打开阻塞解决
3-2 zinx责任链抽象

- 0-转大写字母思路
- 1-转大写输出实现
- 2-责任链模式思路
- 3-责任链模式实现
- 4-通道层重构设计和消息设计
- 5-责任链重构通道和功能处理
- 6-sourceinsight安装和使用
- 7-框架代码分析
3-3 zinx的TCP通道实现

- 0-TCP通道遇到的问题
- 1-工厂方法模式分析
- 2-基于工厂方法设计TCP通道类
- 3-TCP监听通道实现
- 4-TCP数据通道实现
- 5-TCP数据通道测试
- 6-框架分发
- 7-tcp客户端非阻塞connect
- 8-框架内部实现总结
第四章 商业化部署

4-1 docker基本使用

- 1-多实例部署方案 免费试学
- 2-容器的概念 免费试学
- 3-docker初识 免费试学
- 4-docker-仓库 免费试学
- 5-docker-镜像 免费试学
- 6-docker-容器 免费试学
- 7-docker和虚拟机的区别 免费试学
- 8-docker命令解释 免费试学
- 9-dockerfile构建镜像 免费试学
- 10-离线分发镜像 免费试学
4-2 nginx和http

- 1-容器运行游戏需求分析 免费试学
- 2-静态编译游戏服务 免费试学
- 3-手动创建游戏镜像 免费试学
- 4-编写游戏启动脚本 免费试学
- 5-脚本创建游戏服务器镜像 免费试学
- 6-登陆服务器架构选择 免费试学
- 7-http协议初识 免费试学
- 8-http报文分析 免费试学
- 9-nginx简介和安装 免费试学
- 10-Nginx配置静态页面 免费试学
- 11-Nginx配置反向代理 免费试学
4-3 CGI和fastCGI

- 1-CGI程序处理流程
- 2-CGI程序的输入
- 3-CGI程序读取环境变量和标准输入
- 4-FastCGI程序简介
- 5-FCGI结合SpawnFCGI使用
- 6-添加注册静态页面
- 7-摘要值计算脚本
- 8-注册页面和处理框架搭建
- 9-用户信息存储和查询实现
- 10-注册业务流程梳理
4-4 qt登录器实现

- 1-界面搭建
- 2-登陆客户端步骤分析
- 3-拼接登陆请求实现
- 4-发送http请求
- 5-服务器登陆请求处理
- 6-客户端处理服务器回复数据
- 7-注册页面启动
- 8-qt启动游戏程序
4-5 游戏房间创建实现

- 1-客户端创建房间修改
- 2-创建容器脚本
- 3-服务器创建房间实现
- 4-房间跟随
- 5-分布式部署思路
- 6-redis发布订阅机制
- 7-hiredis库实现发布订阅
- 8-异步处理hiredis订阅
- 9-跨主机redis通信
4-6 游戏房间容器化

- 1-分布式部署设计
- 2-分布式部署的CGI程序实现
- 3-容器管理进程
- 4-分布式测试
- 5-容器退出思路
- 6-容器退出删除房间实现
- 7-分布式跟随房间实现
- 8-创建qt客户端安装包
4-7 RPC以及cmake

- 1-RPC概念
- 2-RPC实现计算举例
- 3-python进行rpc调用
- 4-thrift实现分布式容器创建
- 5-阶段总结
- 6-cmake简介
- 7-cmake使用的一般步骤
- 8-cmake编译多层次文件
- 9-cmake编译多种交付件
阶段七 入侵检测与网络攻防(赠送)
展开第一章 网络攻防实战

1-1 网络攻防以及信息搜集和扫描

- 01_课程安排
- 02_课程介绍
- 03_渗透测试的介绍
- 04_ptes渗透测试执行标准的介绍
- 05_网络攻防环境的介绍
- 06_kali系统的介绍和调整
- 07_搜索引擎踩点
- 08_dnsenum和nslookup
- 09_whois命令
- 10_traceroute命令
- 11_复习
- 12_traceroute原理
- 13_telnet命令
- 14_在线存活ping
- 15_nmap扫描1
- 16_nmap扫描2
- 17_p0f被动探测
- 18_nessus的安装
- 2019-04-28 17-49-58
1-2 暴力破解

- 02_nessus扫描任务
- 03_漏洞信息共享平台的介绍
- 04_nessus扫描结果
- 05_漏扫报告的查看
- 06_暴力破解以及hydra的使用
- 07_crunch命令生成字典
- 08_其他方式获取字典
- 09_复习
- 10_关于暴力破解的防御的讨论
- 11_pam配置的讲解
- 12_pam弱密码保护
- 13_pam锁定账户
- 14_shadow文件的解析
- 15_hashcat命令的使用
1-3 网络嗅探以及ARP攻击

- 02_tcpdump基本使用
- 03_tcpdump条件过滤
- 04_wireshark的介绍
- 05_wireshark条件过滤
- 06_tcp握手挥手分析
- 07_telnet服务的介绍和部署
- 08_复习
- 09_telnet服务的报文嗅探
- 10_网络嗅探基础
- 11_arp协议的解析
- 12_arp攻击原理以及实验环境
- 13_arp实验以及防御方式
1-4 web扫描以及DDoS攻击

- 02_web敏感信息
- 03_web信息搜集——踩点
- 04_dirb命令的使用及原理
- 04_暴力扫描的防护讨论
- 05_owasp介绍
- 06_DDoS的介绍
- 07_复习
- 08_synflood原理
- 09_synflood攻击实现细节
- 10_netwox发起synflood攻击
- 11_synflood的防御
- 12_netwox其他工具介绍
- 13_iptables四表五链
1-5 防火墙iptables

- 02_iptabels的caommand
- 03_iptables的条件判断
- 04_iptables ssh服务器环境搭建
- 05_ping attack的防护
- 06_复习
- 07_iptabels规则的导出和导入
- 08_tcpwrapper
- 09_审计服务介绍和安装
- 10_审计服务的规则配置
- 11_生产环境审计配置
- 12_auditctl命令
- 13_ausearch命令
- 14_aureport命令
1-6 权限控制以及入侵分析

- 02_基础命令
- 03_访问的概念
- 04_文件权限的标记位
- 05_目录的权限
- 06_粘着位
- 07_setuid和setgid
- 08_acl的设置和删除
- 09_复习
- 10_acl的掩码
- 11_权限判断的依据
- 12_文件属性
- 13_特权能力
- 14_入侵检测——可疑用户
- 15_入侵检测——自启动服务
- 16_入侵检测——shell自启动命令
- 17_入侵检测——命令历史的查看
第二章 项目实战—深度报文解析

2-1 DPI项目初始化搭建

- 02_入侵分析——日志查看
- 03_入侵分析——可以进程
- 04_报文解析项目介绍
- 05_dpi项目的需求分析
- 06_pcap文件的获取
- 07_pcap文件的介绍
- 08_pcap文件编程实现报文计数
- 09_复习
- 10_dpi库的设计
- 11_dpi库的接口基本实现
- 12_pcap透传参数实现以太网报文计数
- 13_以太网分析packet header长度问题
- 14_报文分析思路路径
- 15_解析以太网报文的类型
- 16_ip报文的统计
2-2 IP/TCP报文拆解以及SSH识别

- 02_ip报文结构讲解
- 03_ip报文分片讨论
- 04_ip报文解析的实现
- 05_日志模块的讨论
- 06_tcp报头解析
- 07_复习
- 08_协议遍历的实现
- 09_流程回顾以及调整
- 10_ssh协议分析以及解析思路
- 11_识别ssh版本协商报文1
- 12_识别ssh版本协商报文2
- 13_剩余报文识别思路
2-3 链表的使用以及UDP报文识别

- 02_剩余报文识别的编程思路
- 03_容器选择的讨论
- 04_链表的设计理念
- 05_循环上相链表的实现
- 06_实现连接的存储
- 07_复习
- 08_ssh剩余报文的识别实现
- 09_UDP报文解析基础分析
- 10_sftp命令的使用
- 11_tftp服务的安装
2-4 TFTP和NTP报文的识别

- 02_tftp客户端的使用
- 03_tftp协议分析以及特征提取
- 04_tftp报文的识别1
- 05_tftp报文的识别2
- 06_复习
- 07_ntp协议原理
- 08_ntpdate同步时间和抓包
- 09_ntp协议解析
- 10_ntp报文识别实现
- 11_bug追踪系统
阶段八 Shell脚本编程
展开第一章 Shell脚本编程

1-1 shell语法

- 01_shell的介绍
- 02_shell的内建命令
- 03_shell脚本执行的几种方法
- 04_变量的使用
- 05_变量的使用
- 06_文件名代换和参数拓展
- 07_命令代换
- 08_算数代换
- 09_shell中的转义
- 10_引号
- 11_复习
- 12_条件测试
- 13_if分支结构
- 14_case分支结构
- 15_for循环
- 16_while循环
- 17_位置参数以及shift
- 18_shell中的输出
- 01_复习
- 02_管道1
- 03_管道2
- 04_重定向
- 05_函数
- 06_函数2
- 07_脚本调试的集中方法
1-2 shell高级和正则表达式

- 08_正则表达式
- 09_C中使用正则
- 10_复习
- 11_sort命令
- 12_uniq命令
- 13_wc命令
- 14_grep命令
- 15_find命令
- 16_xargs命令
- 17_sed命令
- 18_awk命令
- 19_crontab
阶段九 负载均衡远程服务调用系统(赠送)
展开第一章 Reactor并发服务器框架

1-1 基础TCP服务

- 1-Lars课程模块介绍
- 2-Lars的功能演示机场景作用
- 3-Lars的Reactor框架的组成部分
- 4-Lars-Reactor的项目目录构建
- 5-Lars-tcp_server的基础服务开发
- 6-Lars-tcp-server的accept实现
- 7-LarsV0.1总结
1-2 自定义内存池管理

- 8-内存管理_io_buf的结构分析
- 9-Lars-内存管理-io_buf内存块的实现
- 10-io_buf总结
- 11-buf_pool连接池的单例模式设计和基本属性
- 12-buf_pool的初始化构造内存池
- 13-buf_pool的申请内存和重置内存实现
- 1-课前回顾
1-3 Reactor事件触发机制

- 2-LarsV0.2-reactor_buf实现
- 3-LarsV0.2-outpu_buf实现
- 4-larsV0.2-reactor继承内存管理
- 5-LarsV0.2-流程总结
- 6-LarsV0.3-多路IO事件的分析
- 7-LarsV0.3-io_event和event_loop定义
- 8-LarsV0.3-event_loop添加一个事件
- 9-LarsV0.3-event_loop的epoll_wait封装
- 10-LarsV0.3-event_loop删除事件
- 11-LarsV0.3-event_loop添加listenfd读事件
- 12-LarsV0.3-event_loop添加写事件-基于V0.3开发
- 13-LarsV0.3总结
1-4 TCP连接封装与TcpClient封装

- 1-LarsV0.3回顾
- 2-解决粘包问题的message结构体定义
- 3-LarsV0.4-链接对象的方法和属性的定义
- 4-LarsV0.4-tcp_conn链接的初始化
- 5-LarsV0.4-tcp_conn处理读事件方法do_read
- 6-LarsV0.4-tcp_conn模块回顾
- 7-LarsV0.4-send_message主动发包实现
- 8-LarsV0.4-tcp_conn处理写时间方法do_write
- 9-LarsV0.4-tcp_server创建tcp_conn对象
- 10-LarsV0.4-tcp_conn连接封装流程总结
- 11-LarsV0.4-tcp_client属性和方法分析
- 12-LarsV0.4-tcp_client非阻塞客户端套接字创建链接方式
- 13-LarsV0.4-tcp_client读写方法实现
- 14-LarsV0.4-tcp_client模块客户端实现问题
- 15-LarsV0.4-tcp_client-send_message无效问题解决
- 16-LarsV0.3-event_loop添加时间buf修复
- 1-LarsV0.4复习
1-5 消息路由分发机制

- 2-LarsV0.5-tcp_server链接管理的功能实现及测试
- 3-LarsV0.6-消息路由分发机制msg_router的定义
- 4-LarsV0.6-抽象链接类net_connection的定义
- 5-LarsV0.6-tcp_server集成路由消息分发机制
- 6-LarsV0.6-tcp_server集成消息路由分发机制总结
- 7-LarsV0,6回顾
- 8-LarsV0.6-tcp_client集成消息路由分发机制
1-6 连接Hook注册机制

- 9-LarsV0.7-Hook流程的说明
- 10-LarsV0.7-tcp_server集成链接Hook函数
- 11-LarsV0.7-tcp_client集成连接Hook注册功能
1-7 消息队列与线程池

- 1-昨日回顾
- 2-单线程的多路IO服务器模型和多线程模型区别
- 3-服务器的几种并发模型
- 4-LarsV0.8-task_msg消息队列任务数据类型
- 5-LarsV0.8-thread_queue消息队列的发送和接收流程介绍
- 6-LarsV0.8-thread_queue消息队列的实现
- 7-LarsV0.8-thread_pool线程池的实现
- 8-LarsV0.8-处理新链接任务的函数业务实现
- 9-LarsV0.8-线程池继承到tcp_server中
- 10-LarsV0.8-启用线程池测试
- 11-LarsV0.8-限制链接数量的溢出bug问题
1-8 UDP Server功能

- 12-LarsV0.9-配置文件功能
- 13-LarsV0.10-udp-server的实现
- 14-LarsV0.10-udp-client的实现
1-9 QPS性能测试

- 1-昨日回顾
- 2-QPS_test-protobuf协议的集成
- 3-QPS_test-server端实现
- 4-QPS_test-qps简单介绍
- 5-QPS_test-qps客户端工具编写和性能测试
1-10 异步消息任务功能与连接属性

- 6-LarsV0.11-异步消息机制的event_loop增添属性分析
- 7-Lars
- 8-LarsV0.11-异步消息发送机制的实现及测试
- 9-LarsV0.11-异步消息任务机制bug修复和效果演示
- 10-LarsV0.12-连接参数属性的绑定
第二章 LarsDns子系统

2-1 Dns-Route关系构建

- 11-Lars-dns-mysql环境搭建
- 1-LarsDNS-系统整体模块的简单说明
- 2-Lars-Dns-功能的说明
- 3-Lars-Dns-数据表的创建
- 4-Lars-Dns-整体功能说明
- 5-Lars-DnsV0.1-Route类的单例实现
- 6-Lars-DnsV0.1-Route类的链接数据库方法实现
- 7-Lars-DnsV0.1-定义存放RouteData关系的map数据结构
- 8-课前回顾
- 9-Lars-DnsV0.1-将RouteData数据加载map中
- 10-Lars-Dns的proto协议定义
- 11-Lars-DnsV0.1-实现获取Route信息功能
- 12-Lars-DnsV0.1获取Route hosts信息测试
- 13-Lars-DnsV0.1总结
2-2 订阅功能与发布功能

- 1-lars-DnsV0.1回顾
- 2-Lars-DnsV0.2-订阅功能的订阅模块分析
- 3-Lars-DnsV0.2-订阅模块的类的单例创建及方法属性初始化
- 4-Lars-DnsV0.2-发布功能的实现
- 5-Lars-DnsV0.2-发布功能的总结
- 6-Lars-DnsV0.2-订阅流程复习
- 7-Lars-DnsV0.2-订阅模块的集成
- 8-Lars-DnsV0.2订阅模块的测试
- 9-Lars-DnsV0.2订阅模块测试2
- 10-Lars-DnsV0.2的发布问题bug修复
- 11-Lars-DnsV0.2订阅发布流程梳理
2-3 实时监测与自动发布功能

- 1-LarsDns-V0.3BackenThread后端实时监控线程流程
- 2-LarsDns-V0.3加载当前Route版本号方法实现
- 3-LarsDns-V0.3加载RouteChange修改表的信息
- 4-LarsDns-V0.3实现实时监控流程线程业务
- 5-LarsDnsV0.3编译bug修改和功能测试
- 6-Lars Web管理界面的集成
- 7-LarsDnsV0.3 Dns模块总结
第三章 LarsReporter子系统

3-1 上报功能与存储线程池

- 8-Lars-reportV0.1 report模块介绍
- 9-Lars-reporterV0.1 reporter项目目录构建
- 10-Lars-ReporterV0.1 数据表和proto协议环境搭建
- 11-Lars-ReporterV0.1上报请求业务处理
- 12-Lars-ReporterV0.1上报请求模块的测试
- 13-Lars-ReporterV0.2开辟存储线程池-网络存储分离
第四章 LarsLbAgent负载均衡系统

4-1 Agent代理模块基础构建

- 1-课程复习
- 2-Lars-lbAgentV0.1-udpserver启动
- 3-Lars-lbAgentV0.1-dns-reporter-client-thread启动
- 4-Lars-lbAgentV0.1-dns-client实现
- 5-Lars-lbAgentV0.1-dns-client编译错误修正
- 6-Lars-lbAgentV0.1-reporter_client实现
4-2 获取主机信息功能

- 7-Lars-lbAgentV0.2-赋值均衡数据结构关系分析
- 8-Lars-lbAgent0.2-host_info-load_balance-route_lb数据结构的定义
- 9-Lars-lbAgentV0.2-proto协议的定义
- 10-Lars-lbAgentV0.2-route_lb与UDP server的关联
- 10-Lars-lbAgentV0.2-route_lb与UDP server的关联程序编译
- 11-Lars-lbAgentV0.2-route_lb更新host主机路由信息业务和调试
- 11-Lars-lbAgentV0.2-route_lb获取host信息不存在情况
- 1-昨日回顾及agent获取host信息流程
- 2-Lars-LbAgentV0.2-Api获取主机信息-更新流程梳理
- 3-Lars-LbAgentV0.2-Api-load_balance模块更新主机信息实现
- 4-Lars-LbAgentV0.2-Api目录结构创建
- 5-Lars-LbAgentV0.2-Api创建udp连接实现-lars-lbagent启动失败修正
- 6-Lars-LbAgentV0.2-Api-getHost请求实现
- 7-Lars-LbAgentV0.2-loadBalance-选择主机业务实现
- 8-Lars-LbAgentV0.3-api-get_hostAPI接口测试
- 9-Lars-LbAgentV0.3-api-get_hostAPI流程总结
- 10-Lars-LbAgentV0.4-api-上报业务实现
4-3 负载均衡算法与实现

- 1-lars 系统架构回顾
- 2-lars-lbAgentV0.4-route_lb处理report业务流程
- 3-lars-lbAgentV0.4-负责均衡判断参数配置
- 4-lars-lbAgentV0.4-负载均衡idle节点的失败率判断
- 5-lars-lbAgentV0.4-负载均衡overload节点的成功率判断
- 6-lars-lbAgentV0.4-负载均衡上报提交模块
- 7-lars-lbAgentV0.4-数据问题修改-上报业务测试
- 8-lars-lbAgentV0.4-模拟器测试工具
- 9-lars-lbAgentV0.5-idle连续成功-overload连续失败的定期窗口重置机制
- 10-lars-lbAgentV0.6-loadbalance主动更新主机信息功能
- 1-昨日回顾
- 2-Lars-LbAgentV0.7-GetRouteAPI实现
- 3-Lars-LbAgentV0.7-Udp-server-获取路由服务业务注册
- 4-Lars-LbAgentV0.7-Udp-server-API和udpserver的测试
4-4 集成测试与自动启动脚本

- 5-Lars-LbAgentV0.7-route_lb获取路由全部主机信息实现
- 6-Lars-LbAgentV0.7-API模块注册功能实现和测试工具get_host,get_route,example,simulator实现
- 7-Lars-LbAgentV0.7-项目构建工具
- 8-Lars-LbAgentV0.7-启动工具脚本实现
- 8-Lars-有关fd泄露的调试办法
- 9-Lars-qps性能测试
- git企业开发基本流程
阶段十 Go语言微服务项目(赠送)
展开第一章 go语言概述

1-1 基础环境配置

- 01-go语言介绍-课程介绍
- 02-GOPATH-GOROOT配置
- 03-helloworld详解
1-2 go语言整体介绍

- 04-go语言介绍1
- 05-go语言特点2
- 06-go命令-设置git终端方法
第二章 go语言基础语法

2-1 go语言基础语法

- 07-变量定义
- 08-自增语法
- 09-指针
- 10-go不支持的语法
- 11-string
2-2 go语言与c语言差异化功能

- 12-定长数组-forrange
- 14-动态数组追加元素
- 15-切片截取-copy-make介绍
- 16-map介绍
- 17-函数
- 18-内存逃逸
- 19-import
2-3 go语言与c语言细节语法对比

- 02-命令行参数-switch
- 03-标签与continue-goto-break配合使用
- 04-枚举const-iota
- 05-结构体基本语法
- 06-init函数
- 07-defer-文件读取-匿名函数
第三章 go语言类操作

3-1 封装

- 08-类封装-绑定方法
3-2 继承

- 09-类的继承
3-3 多态

- 11-类访问权限-字段大小写-public-private
- 12-接口类型介绍
- 13-多态介绍
第四章 go语言高并发

4-1 go程基础概念

- 14-go程介绍-demo演示
- 15-return-exit-goexit区别
4-2 go程实现通信

- 16-多go程通信-channel
- 17-通道读写次数不对等会出现-崩溃-内存泄露
4-3 go程高级用法

- 18-(for-range变量管道)
- 02-管道总结
- 03-判断管道是否已经关闭
- 04-单向通道
- 05-(select)
第五章 socket套接字

5-1 server与client基础通信

- 06-socket-client-server通信过程分析
- 07-socket-server-单次处理
- 08-socket-client
5-2 server与client高级通信

- 09-socket-server-多连接建立
- 10-socket-client多次发送数据
第六章 http编程

6-1 http请求协议

- 12-http介绍
- 13-http请求格式详解
- 14-http请求头代码演示-postman
6-2 http响应协议

- 15-http响应格式详解
- 16-http响应代码演示
- 17-http-server代码实现
6-3 json编解码

- 18-json编解码介绍
- 19-结构体标签(tag)
第七章 网络聊天室案例

7-1 聊天室设计分析

- 02-聊天室-功能分析-效果演示-技术分析
- 03-socket-server建立成功
- 04-聊天室设计分析
- 05-聊天室设计分析2
7-2 聊天室基础模块搭建

- 06-定义User和map结构
- 07-创建message广播通道
- 08-广播go程持续监听-增加defer-msg改为缓冲
- 09-用户管道数据回写到客户端的go程
7-3 聊天室命令实现

- 11-who命令介绍
- 12-rename命令介绍1
- 13-rename命令实现2
- 14-用户主动退出ctrl+c
- 15-超时退出-map竞争需要上锁
第八章 微服务基础技术

8-1 微服务简介

- 01-项目简介
- 02-单体式架构
- 03-微服务优缺点
- 04-单体式和微服务区别
8-2 rpc和rpc服务

- 05-RPC简介
- 06-RPC使用步骤
- 07-注册RPC服务函数接口
- 08-绑定服务和调用方法函数接口
- 09-rpc服务端和客户端编码实现
- 10-json的rpc
- 11-rpc的封装
- 12-rpc封装小结
8-3 基于protobuf的grpc

- 13-protobuf语法回顾
- 14-protobuf的编译、和其他序列化比较
- 15-查看protoc编译文件对比自定义封装
- 16-grpc安装简介
- 17-grpc服务远程调用作业布置
- 01-作业-grpc-server端
- 02-作业-grpc-client端
第九章 微服务和服务发现

9-1 consul服务发现

- 03-go-micro简介
- 04-服务发现的简单认识
- 05-consul的安装
- 06-consul常用的命令
- 07-注册服务到consul并验证
- 08-consul健康检查
- 09-consul结合grpc使用-上(只实现grpc远程调用)
- 10-consul结合grpc使用-中(注册服务到consul)
- 11-consul结合grpc使用-下(client从consul获取服务连接)
- 12-consul结合grpc使用-小结
- 13-服务注销
9-2 go-micro框架

- 14-创建go-micro项目-查看生成的 proto文件
- 15-创建go-micro项目-查看生成的main文件和handler目录文件
- 01-http补充说明知识
- 02-go-micro框架服务端-客户端测试
9-3 gin框架实现web端

- 03-gin框架介绍和测试
- 04-gin框架客户端与micro服务端对接
- 05-使用访问发现consul测试
- 06-consul使用图解和RESTful
- 07-MVC简介
- 08-创建项目-创建目录结构-查看文档-导入错误处理包
- 09-创建项目-资源目录html介绍
第十章 图片、短信验证码生成及存储

10-1 生成图片验证码

- 10-session的处理
- 01-获取网页图片验证码ID
- 02-测试图片验证码
- 03-图片验证码模块集成
- 04-图片验证码功能移植微服务
- 05-图片验证码功能对接微服务的web实现
- 06-对接微服务的web实现步骤小结
10-2 redis数据库应用

- 07-Redis数据库基本操作回顾
- 08-go语言操作Redis数据库API介绍
- 09-go语言操作Redis数据库-测试案例
- 10-在微服务端添加redis数据库存储
- 11-对应web端实现及流程总结
10-3 阿里平台短信验证码

- 12-开发者平台简介
- 13-阿里云申请账号说明
- 01-申请账号测试作业复习
- 02-短信验证码测试及使用流程总结
- 03-获取短信验证码-提取URL中GET请求携带的数据
- 04-短信验证码实现
- 05-短信验证码存入Redis数据库
- 06-微服务实现短信验证码-生成微服务-修改密码本
- 07-微服务实现短信验证码-移植发送短信验证码功能
- 08-微服务实现短信验证码-修改连接池初始化位置
- 09-短信验证码-微服务对应的客户端实现
- 10-短信验证码-微服务对应的客户端实现流程总结
- 11-获取绑定数据-Request-Payload
第十一章 gorm框架

11-1 gorm框架操作MySQL

- 01-gorm介绍
- 02-MySQL操作回顾
- 03-gorm创建表
- 04-MySQL的init函数说明
- 05-gorm框架提供的MySQL连接池
- 06-gorm插入数据
- 07-gorm查询数据
- 08-gorm更新数据
- 09-gorm软删除-创建表
- 10-gorm软删除-实现
- 10-MySQL的8小时时区问题
- 12-gorm实现创建表指定属性
- 13-初始化MySQL连接池-创建项目用表
第十二章 用户信息处理

12-1 用户注册

- 01-微服务实现用户注册-微服务端-上
- 02-微服务实现用户注册-微服务端-下
- 03-微服务实现用户注册-web端
- 04-微服务实现用户注册-web端-流程小结
- 05-获取地域信息-读MySQL写Redis入
- 06-获取地域信息-先查redis-没有读MySQL写入
12-2 Cookie、Session和用户登录

- 07-Cookie简介
- 08-Session简介
- 09-Cookie和Session的对比和生成
- 10-Cookie操作练习
- 11-Session的操作练习-上-初始化容器
- 12-Session的操作练习-下-设置属性获取session
- 13-获取手机号密码登录用户-存入session
- 01-修改GetSession函数,完成用户登录
- 02-用户退出登录
12-3 获取、更新用户信息

- 03-获取用户信息-上
- 04-获取用户信息-下
- 05-更新用户名实现
12-4 中间件

- 06-中间件简介和中间件类型
- 07-中间件测试和模型分析
- 08-中间件测试案例和小结
- 09-项目使用中间件
第十三章 图像存储展示和其他业务

13-1 fastDFS图像管理

- 10-测试-上传头像到test目录
- 11-云存储扯淡和作业布置
- 01-fastDFS的安装配置和启动
- 02-fastDFS-Nginx模块的安装配置和启动
- 03-go语言使用fastDFS-Nginx模块
- 04-go-fastDFS框架及环境测试
- 05-按字节上传头像并展示到浏览器
- 06-用户头像上传-集成到项目中
13-2 其他重复业务和脚本管理

- 07-用户实名认证
- 08-发布房屋信息
- 09-上传房屋图片
- 10-其他房屋操作
- 11-脚本管理项目
第十四章 docker基础-镜像-容器管理

14-1 docker简介

- 01-知识点概述
- 02-docker是什么
- 03-docker和虚拟机的区别
- 04-docker架构
14-2 docker快速入门

- 05-docker安装
- 06-docker的删除
- 07-docker加速器设置
- 08-docker操作的权限问题
- 09-dcoker服务器相关的操作命令
- 10-docker镜像的查询和下载
14-3 docker镜像管理

- 11-镜像的查看
- 12-镜像的重命名和删除
- 13-镜像的导出-save
- 14-镜像的导入-load
- 15-查看镜像的历史记录
- 16-查看镜像的详细的属性信息
- 17-docker镜像操作命令总结
14-4 docker容器管理

- 18-查看容器的信息-docker ps
- 19-容器 的创建
- 20-容器的启动
- 21-容器的创建和启动-docker run
- 22-容器的暂停重启
- 23-容器的关闭stop kill
- 24-容器的删除
- 25-容器的进入 docker exec
- 26-查看容器的详细信息
- 27-容器端口映射查看和容器重命名
- 28-容器命名总结
第十五章 docker数据卷-网络管理

15-1 docker数据卷简介

- 01-知识点概述
- 02-镜像的两种导入导出方式
- 03-文件拷贝
- 04-数据卷挂载命令
- 05-数据卷挂载两种方式
15-2 docker数据卷实践

- 06-数据卷容器概念
- 07-数据卷容器挂载的步骤
- 08-数据卷容器挂载操作
- 09-数据卷容器数据备份
- 10-数据卷容器数据备份演示
- 11-数据卷容器数据还原
15-3 docker网络管理

- 12-端口映射和随机分配端口
- 13-nginx介绍
- 14-手动指定端口映射
- 15-网络管理命令ls inspect使用
15-4 docker网络模型实践

- 16-docker常用的网络模式
- 17-创建桥接网络
- 18-容器加入到指定网络中
- 19-容器添加到网络和从网络中删除
- 20-host网络的使用
15-5 dockerfile简介

- 21-dockerfile介绍
- 22-dockerfile演示
15-6 dockerfile快速入门

- 23-dockerfile的run和maintainer
- 24-RUN和EXPOSE关键字
- 25-ENTRYPOINT和CMD关键字
- 26-COPY,ADD,VOLUME关键字
第十六章 Dockerfile && docker-compose

16-1 dockerfile语法介绍

- 01-知识点概述
- 02-dockerfile复习
- 03-环境变量ENV的使用
- 04-WORKDIR的使用
- 05-USER和ARG的使用
- 06-ONBUILD的使用
- 07-dockerfile的缓存相关的参数
- 08-dockerfile的编写
- 09-测试-没成功-好像是网不行
16-2 docker-compose快速入门

- 10-docker-compose介绍
- 11-docker-compose的安装
16-3 docker-compose命令详解

- 12-yaml文件书写规则
- 13-yaml中的数据类型
- 14-docker-compose配置文件格式
- 15-docker-compose中的关键字
- 16-prots和volumes关键字的使用
- 17-volumes_from的使用
- 18-extends的使用
- 19-networks的使用
- 20-docker-compose启动和关闭容器
- 21-docker-compose的start stop rm命令
阶段十一 打车软件项目(赠送)
展开第一章 打车软件—java基础编程

1-1 java语法

- 1-项目结构介绍
- 2-helloworld
- 3-java中的类的基本定义
- 4-java中的值传递和引用传递
- 5-java中的常量final
- 6-java中的static
- 7-java中的extends继承和final方法
- 8-instanceof关键字
- 9-java中的array
- 10-java中的String对象
- 11-java中的date
- 12-java中的finalize方法和垃圾回收器
- 13-java中的文件操作
- 14-java中的abstract关键字
- 15-java中的interface接口
- 16-java中import和package
第二章 打车软件—Android基础UI开发

2-1 Android组建编程

- 17-android环境
- 1-项目演示
- 2-创建TextView控件
- 3-创建一个button控件
- 4-日志的调试
- 5-editText控件
- 6-checkBox控件和登陆界面布局
2-2 登录界面实现

- 7-中午回顾
- 8-登陆界面的布局实现
- 9-界面的跳转
- 10-注册界面的实现
- 11-Activity的生命周期
- 12-autoCompleteTextView控件
第三章 打车软件—JNI终端编程业务

3-1 JNI编程

- 1-昨日回顾
- 2-配置JNI开发环境
- 3-java调用jni接口
- 4-java调用传参int类型的jni接口
- 5-java调用传参bool类型的jni接口
- 6-java调用传参String类型jni接口
3-2 登录及注册与libcurl集成

- 7-Login登陆JNI接口的封装
- 8-Login接口集成json接口
- 9-curl环境的搭建
- 1-libcurl的编程(1)
- 2-libcurl的编程(2)-post请求
- 3-libcurl的编程(3)-处理服务器返回的数据
- 4-Android上部署libcurl
- 5-Android上集成libcurl编程
- 6-libevent的http-server
- 7-登陆模块和服务器通信调试
- 1-reg注册jni接口实现-封装Json类
- 2-reg注册jni接口实现-封装Curl类
3-3 git版本控制

- 3-git的简介
- 4-git的下载和提交代码
- 5-git添加一个新文件
- 5-删除一个文件
- 6-git的批量添加和提交文件
- 7-git重命名文件名
- 8-git解决代码冲突
- 9-git的分支的概念
- 10-创建项目代码仓库
- 1-git提交代码复习
3-4 https协议

- 2-https的认证和加密过程
- 3-搭建libevnet-https环境
- 4-测试Android-jni的login模块https通信
3-5 session开发

- 5-server服务器的git环境搭建
- 6-实现注册业务web-server和data-server的通信
- 7-sessionid的生成
第四章 打车软件—地图编程及服务端业务

4-1 高德地图API

- 1-创建高德远程应用和key的注册
- 2-配置高德so及jar包环境
- 3-创建高德地图
- 4-amap和uisetting修改地图属性
- 5-开启定位服务
- 6-添加覆盖物
- 7-以自我为中心展示地图
- 8-构建司机界面
- 9-构建乘客界面
- 1-搜索POI兴趣点
- 2-关键字匹配列表展示InputTips
- 3-高德地图的线路规划
4-2 项目业务开发

- 4-项目业务-司机和乘客的状态转换
- 5-数据的设计
- 6-地理位置信息GeoHash和redis的Geo操作
- 7-司机的业务(上)
- 8-下单业务
- 9-司机的业务(下)
- 10-完成订单业务
- 11-乘客的业务
- 1-注册业务代码走读
- 2-登陆的业务代码走读
- 3-下单业务
- 4-司机的业务代码走读
- 5-完成订单业务代码走读