课程试听
阶段一 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++概述
- 01课前准备
- 02对比软件的使用
- 03C++概述
- 04第一个程序helloworld
- 05面向对象的三大特性
- 06命名空间
- 07作用域运算符
- 08命名空间小结
- 09using声明和编译指令
- 10结构体的加强
- 11更加严格的类型转换检查
- 12三目运算符
- 13小结
- 14上午回顾
- 15const修饰的变量
- 16C++编译器不能优化的情况
1-2 引用
- 17引用的概述
- 18引用的注意
- 19数组的引用
- 20引用的本质
- 21尽量用const替代define
- 22指针的引用
- 23C和C++的区别
- 01昨日回顾
- 02引用的使用场景
- 03常量引用和bool类型
- 04内联函数1
- 05内联函数2
- 06函数的默认参数和占位参数
- 07函数的默认参数和占位参数混搭解释
- 08函数传递参数的三种方式
1-3 类和对象
- 09设置求圆的周长类
- 10设计学生类
- 11上午总结
- 12上午回顾
- 13函数重载
- 14函数重载的原理
- 15C++调用C语言
- 16类和对象的概念
- 17封装
- 18尽量把成员属性权限设置为私有
- 19课堂作业
- 20结构体和类的区别
- 21总结-02d
- 01上次内容回顾
- 02作业
- 03立方体案例
- 04点和圆的关系案例思路
- 05点和圆的关系实现
- 06案例小结
1-4 构造和析构
- 07构造函数和析构函数的概念
- 08构造函数和析构函数的概念
- 09上午回顾
- 10默认的构造和析构
- 11拷贝构造
- 12构造函数的分类及调用
- 13构造函数的小结
- 14匿名对象
- 15拷贝构造函数的调用时机
- 16构造函数的调用规则
- 17多个对象的构造函数和析构函数
- 18深浅拷贝
- 01上次内容回顾
- 02explicit的作用
- 03new和delete申请堆区空间和释放堆区空间
- 04堆区申请和释放数组空间
- 05静态成员
- 06C++的对象模型
- 07this指针
- 08this指针的拓展
- 09小结
- 10常函数和常对象
- 11友元的概念及全局友元函数
- 12友元类
- 13类的成员函数成为友元函数
- 14友元的注意
- 15防止空指针调用成员函数
- 16单例模式的实现
- 17单例模式案例
- 18总结-04d
1-5 操作符重载
- 01昨日回顾
- 02数组类的设计1
- 03数组类的设计2
- 04加号运算符重载1
- 05加号运算符重载2及注意点
- 06小结
- 07减号运算符重载
- 08左移运算符重载及友元
- 09右移运算符重载
- 10赋值运算符重载
- 11关系运算符重载
- 12前置加加和后置加加
- 13数组下标重载
- 14总结-05d
- 01上次内容回顾
- 02智能指针类
- 03仿函数
- 04其他重载
- 05字符串类
1-6 继承和多态
- 06继承的概念
- 07继承方式
- 08查看对象模型
- 09修正私有继承
- 10上午内容回顾
- 11继承中的构造和析构的调用
- 12继承中同名成员的处理方法
- 13继承中的静态成员特性
- 14不能被继承的函数
- 15多继承
- 16菱形继承
- 17通过指针访问成员变量
- 18通过指针访问成员变量解释
- 19静态编译
- 20动态编译
- 21总结-06d
- 01昨日内容回顾
- 02多态
- 03多态的实现原理
- 04纯虚函数和抽象类
- 05接口的定义
- 06模版方法模式
- 07虚析构函数和纯虚析构函数
- 08上午回顾
- 09重写重载重定义
- 10父类引用子类对象
- 11动物园案例
- 12多态案例_班级
- 13计数器案例
- 14大总结
第二章 模板和IO
2-1 模版
- 01函数模版
- 02函数模版排序
- 03函数模版和普通函数的区别
- 04函数模版和普通函数的调用规则
- 05函数模版的局限性和解决方法
- 06类模版
- 07复数的模版类及重载
- 08类模版做为函数参数
- 09上午回顾
- 10类模版的继承
- 11类模版的成员函数类内类外实现
- 12类模版分文件编写问题及解决方法
- 13分文件说明
- 14类模版和友元
- 15类模版实现数组
- 16总结-01m
2-2 异常
- 01昨日回顾
- 02C++类型转换
- 03异常的基本语法及流程
- 04异常的优势
- 05异常严格的类型匹配
- 06异常的接口声明
- 07栈解旋
- 08异常的生命周期
- 09异常的多态
2-3 IO
- 10上午回顾
- 11系统的标准异常类
- 12标准的输入流1
- 13标准的输入流2
- 14标准的输出流
- 15文件读写
- 16二进制读写文件
- 17文件读写中有string问题
- 18总结-02i
第三章 STL
3-1 概述和三大组件
- 01STL的介绍
- 02三大组件
- 03STL的工作原理
- 04STL的helloworld
- 05string容器
- 06小结
3-2 线性容器
- 07vector容器
- 08deque容器
- 09打分案例思路
- 10打分案例实现1
- 11打分案例实现2
- 12总结-01d
- 01昨日回顾
- 02stack和queue介绍
- 03stack和queue的常用api
- 04list的数据结构
- 05list常用的api1
- 06list常用的api2
- 07电梯案例业务流程
- 08电梯案例1
- 09电梯案例2
3-3 非线性容器
- 10对组
- 11set容器的介绍
- 12set容器的api1
- 13上午内容回顾
- 14set容器的api2
- 15map容器的api
- 16STL的深浅拷贝问题
- 17案例
- 18函数对象
- 19总结-02s
3-4 算法
- 01上次内容回顾
- 02适配器1
- 03适配器2
- 04空间配置器
- 05遍历算法
- 06查找算法1
- 07查找算法2
- 08上午回顾
- 09查找算法3
- 10排序算法
- 11拷贝和替换算法
- 12算术生成算法
- 13集合算法
- 14综合案例思路
- 15综合案例流程
- 16综合案例实现
- 17总结-03s
第四章 Qt
4-1 第一个helloworld 界面
- 01_课程安排
- 02_qt简介
- 03_qtCreato简介
- 04_第一个Hello程序以及qt项目
- 05_.pro文件介绍
- 06_Qt命名规范和QtCreator常用快捷键
- 07_帮助文档的使用
- 08_父子关系
- 09_Qt坐标系
- 10_Qt常用API
- 11_对象树
- 12_点击按钮关闭窗口
4-2 信号和槽
- 13_信号和槽
- 14_标准信号和槽
- 15_上午课程回顾
- 16_自定义信号和槽
- 17_自定义信号和槽传参以及函数二义性问题解决
- 18_信号和槽的拓展
- 19_Qt4的信号和槽
- 20_qDebug输出转义问题
- 21_lambda表达式
- 22_信号和槽的复习
- 23_作业
4-3 界面控件
- 01_课程回顾
- 02_菜单栏
- 03_工具栏
- 04_状态栏
- 05_停靠部件和核心部件
- 06_ui文件使用
- 07_资源文件的使用
- 08_模态对话框和非模态对话框的创建
- 09_QMessageBox使用
- 10_文件对话框
- 11_上午课程回顾
- 12_布局
- 13_按钮组
- 14_listWidget_01
- 02_listWidget_2
- 03_treeWidget
- 04_tableWidget
- 05_容器
- 06_其他控件
- 07_自定义控件
4-4 事件
- 08_鼠标事件
- 09_事件分发机制
- 10_事件过滤器
- 11_上午课程回顾
- 12_定时器事件
- 13_另一种定时器QTimer
- 14_绘图事件以及QPainter
- 15_手动触发绘图事件
- 16_绘图设备
- 17_作业提示
4-5 返金币游戏案例
- 01_课程回顾
- 02_qfile文件读写
- 03_QFileInfo文件信息获取
- 04_第一天作业
- 05_第三天作业
- 06_翻金币需求分析
- 07_项目初始化和基础搭建
- 08_开始场景背景
- 09_上午课程回顾
- 10_开始按钮以及动画
- 11_场景切换实现
- 12_返回按钮的实现
- 13_关卡按钮排列
- 14_作业
- 01_课程回顾
- 02_第三个场景基础搭建
- 03_硬币按钮样式实现
- 04_硬币翻动动画的实现
- 05_导入关卡数据
- 06_翻动上下左右的硬币
- 07_课程回顾
- 08_胜利条件判断
- 09_胜利动画的实现
- 10_胜利后禁止继续翻动金币
- 11_音效的添加
- 12_窗口位置bug的修复
- 13_打包发布
- 14_第二天作业
- 15_总复习
阶段四 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-完成订单业务代码走读