日萌社
人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新)
大数据、AI、python、C++学习资源 到上面一个文章中有度娘下载
ASCII码表
运算符优先级
vim 快捷键
指针、数组:指针的使用形式、int->intptr_t->void*(void*传递int值)、内存冗余法(void*传递“存有结构体数据”的堆空间地址)、C语言指针转换为intptr_t类型、
数组名、数组类型(C提高讲义)
指针类型转换(转换步长),解引用时从首地址开始取指定的字节数
指针数组
数组指针、二维数组:二维数组名本质是数组指针(C提高讲义)
结构体中的指针
指针详解:指针运算、两指针大小比较(地址高低比较)、指针强化(C提高讲义)、字符指针强化(C提高讲义)
二级指针、三级指针、指针数组作函数参数传入和返回值传出、栈中指针数组、堆中指针数组(C提高讲义)
char*指针 指向 常量区、栈区、堆区 的三种用法
数组、指针练习题总结
函数指针、函数指针数组、回调函数、函数指针作为回调函数、结构体指针/类对象指针中的函数指针作为回调函数使用
typedef结构体类型、typedef数组类型、typedef数组指针类型、typedef函数指针类型、typedef函数指针数组类型
堆、栈
栈(区)、堆(区);全局/静态区:未初始化数据段/区(bss)、初始化数据段的读写段/区;常量区:初始化数据段的只读段/区
堆的分配和释放:malloc、calloc、realloc、free
内存管理:全局变量、全局静态变量、全局常量、局部变量、局部静态变量、全局函数、静态函数、auto自动变量、静态成员变量、静态成员函数
文件作用域、函数作用域、代码块作用域
内存泄露
各变量的作用域、寿命、所处段(区)
可重入函数、不可重入函数
内存管理综合知识点
内存分区管理(C提高讲义)
标识符的要求(自定义名字的要求)
变量的本质
void、void*、void*泛型编程
匿名对象
文件IO:
getc、putc、fgetc、fputc(day08、day17):getc、fgetc、putc、fputc详细代码
gets、puts、fgets、fputs(day08、day17):gets、puts、fgets、fputs 详细代码
getchar、putchar(day05、06)
scanf、scanf_s(day07、day08、day17):
sscanf(day08、day17):sscanf使用正则进行格式化输入、通过sscanf的输入值的类型限制和根据返回值判断是否符合输入要求、sscanf详细代码、sscanf作为atoi使用
strtol:把字符串转换为2到36进制的数据
sprintf、snprintf(day08、day17):snprintf、sprintf作为itoa使用
atoi(day08):不使用库函数把字符串转换为int
fprintf、fscanf(day17)
fopen(day17):读取写入模式:二进制模式、文本模式、\n和\r\n区别、rb/r/wb/w 的区别(代码详细)、ascii/binarymo模式在linux和window之间传递数据(day18)
fclose(day17)
EOF、feof(day17)
fread、fwrite(day18):fread、fwrite代码详细
FILE结构体(day18)
fseek(day18):fseek快速创建出大文件(无IO)、rewind把读写指针恢复到文件头位置
ftell(day18)
fflush(day18)
1.gcc编译(day04):gcc a.c -lm
Linxu下调试:gdb调试(day22)
2.#include <xx.h> 和 #include”xx.h” 区别(day04)
3.变量的声明和定义(day04)
4.函数的声明和定义、函数的形参与实参、函数的返回类型与返回值(day08):指针、数组、指针数组作函数参数
函数中的return语句(day08)
5.main函数两种写法 和 return 0、return -1、return 大于0的数(day04)
6.System系统调用(day04):清屏、退出黑窗口
7.二进制/八进制/十进制/十六进制之间互相转换(day04)
8.#define / const 定义常量(day04)
9.两变量互换(利用第三方变量temp、异或)(day05)
10.原码、反码、补码(day05)
11.sizeof / strlen (day05、day07)
12.%... 类型(day05)
数据类型本质(C提高讲义)
uint8_t/uint16_t/uint32_t/uint64_t
C语言数据类型的32位和64位不同:char、short、int、long int、long long int、intptr_t、ssize_t、size_t
Linux基本数据类型大小:char、short、int、long int、long long int
13.类型所占字节大小(day05)
14.显式类型提升、隐式类型提升(day05)
15.大端区、小端区(day05)
10进制数值 转换为 IP地址
字节序:大端、小端(C提高讲义)
大端、小端字节序转换:htonl、ntohl(linux day06)
htonl、ntohl、htons、ntohs(linux day06)
16.冒泡排序(day07)
选择排序(就业班day01)
17.#define(day07):宏函数
#define 和 typedef 的区别
18.变长数组(day08)
19.有符号数和 unsigned 无符号数(day05)
20.char(day05)
21.除(/)和模(%)的使用(day05)
22.volatile / register(day05)
23.字符串、字符数组(day05):存于json中的base64字符串
24.前++ 和 后++(day05)
25.强转(float/double),保留有效小数(day05)
26.逗号表达式(day05)
27.switch - case - break - default(day06)
28.goto(day06)
29.break和continue 的区别(day06)
30.while死循环、for死循环(day06)
31.-std=c99(c99对for循环的增强)(day06)
32.求出该整数的二进制的bit位上的 1 的出现的次数(day07)
33.数组(day07)
34.for循环(day07):双重for循环实现由数字组成的正三角/倒三角
35.逆置数组(day07)
36.srand、rand(day07)
随机产生4个不相同的随机数
37.已定义int arr[100][800],已知a[9][9]的地址为0x0088aaff,求a[99][11]的地址(day07)
38.合并两个数组,保证合并后的数组中的元素保持有序(day07)
39.GBK、UTF-8(day07)
40.空指针、野指针
41.值传递、地址传递、指针传递
42.const、常量指针、指针常量
C++中的 const
43.内存对齐
44.static静态变量(不可重入函数)
45.代码判断当前系统是32位操作系统还是64位操作系统
46.strcat、strncat(day08)
47.strcmp、strncmp(day08)
48.strcpy、strncpy(day08)
strcpy_s、strncpy_s、strcat_s、data
strdup(linux day06)
49.strtok(day08)
可重入函数、不可重入函数:strtok、strtok_r、readdir、readdir_r(linux笔记中)
50.多文件编译(day08):防止头文件重复包含
51.extern(day08)
“extern全局变量”的用法(项目二)
52.值传递、地址传递(day11)
53.strchr、strstr(day11)
54.memset(day11)
55.memcpy、memmove(day11)
memcmp
56.typedef(day15):typedef结构体类型、typedef数组类型、typedef数组指针类型、typedef函数指针类型、typedef函数指针数组类型
57.浅拷贝、深拷贝(day15)
58.isalnum、isalpha、iscntrl、isdigit、isgraph、islower、isprint、ispunct、isspace、isupper、isxdigit、tolower、toupper(day16)
59.结构体struct (day15)
访问结构体中成员变量的方式
结构体中的内存对齐、结构体大小:结构体内存对齐(C提高讲义)、结构体中的成员变量的偏移量
结构体数组
互相交换两个结构体对象中的成员变量的值、交换两个结构体对象中的所有数据
写入结构体大小的数据到文件中,同样读取结构体大小的数据到堆栈中,并使用结构体指针指向堆栈中的多个结构体大小的数据
键盘输入,把结构体写入到文件中;从文件中读取结构体到程序中打印
键盘输入,把结构体中short/int/long整数转换字节序写入到文件中;从文件中读取结构体中的short/int/long整数转换字节序写入到程序中打印
结构体中的一级指针
结构体中的二级指针
结构体嵌套
结构体对象作值传递、结构体对象作地址传递(推荐:地址传递)
C++中的结构体
“密钥结构体指针->成员变量”对共享内存进行读写操作(项目二)
60.联合体union(共用体)(day15)
61.枚举enum (day15)
62.stat:获取文件的各种属性,只能用于linux下(day18)
63.rename、remove(day18)
64.计算运行消耗的时间
65.休眠Sleep(window)、sleep(linux)
66.查看汉字的负数ASCII码值
67.递归:十进制转二进制、翻转字符数组中的字符
函数递归(C提高讲义)
68.qsort快速排序函数、回调函数
79.交换两个变量的值
70.预处理、文件包含处理、宏定义、#include、条件编译、防止头文件重复包含、预定义宏
条件编译:#if、#else、#endif、#ifdef 、#ifndef
71.#pragma once与#ifndef #define #endif 两种防止头文件二次编译的区别
72.int argc、char** argv / char* argv[]、char** env / char* env[]
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
C提高、C++、STL
链表(C提高讲义)(C提高day06)
链表:静态链表、动态链表、带头节点不带头节点的链表
单向链表的基本操作:增删改查、增删查改、链表节点排序(链表节点整体互换)、链表翻转、链表节点整体交换
链表实现电子辞典(C提高day07)
斐波那契数列递归、非递归
递归查找出链表中倒数第n个节点
逆序打印链表节点
链表节点翻转(两种方式)
单向链表版本一的选择排序(优化版本)
单向链表版本二的选择排序(未优化版本/优化版本)
插入排序
运算符的优先级和结合方向
1.vs代码模板
2.位运算(C提高day03)
3.加密解密接口(C提高day05)
4.读写配置文件(C提高day05)
5.文件拷贝(C提高day05)
6.静态库、动态库(C提高day06)
7.可变参数(C提高day07)
8.求出1到100之和为5050
9.多态:面向接口编程(C提高day07)
多态(抽象):遵循开闭原则,在不修改原有代码功能模块的基础上,添加新代码功能模块
10.C++头文件格式、using namespace std、cout、cin、endl(day12 C++)
11.三目运算符(day13 C++)
12.::作用域运算符(day13 C++)
13.namespace命名空间、using(day13 C++)
14.C++中的struct(day13 C++)
15.C++中更严格的类型转换(day13 C++)
16.C/C++中的const、#define、volatile const、可变参数数组(day13 C++)
17.引用(day13 C++)
18.内联函数inline、预定义宏#define的缺陷(day13 C++)
19.函数中形参的默认参数、占位参数(day13 C++)
20.函数重载、extern“C”(day13 C++)
21.VS设置随机基址(地址)、固定基址(地址)(day13 C++)
22.通过指针获取变量值、类(结构体)中成员变量值(day13 C++)
23.类中成员的访问权限、struct和class的区别(day14 C++)
24.成员函数、全局函数的定义和调用、对象成员(day14 C++)
25.构造函数、析构函数、拷贝函数、返回值优化(day14 C++)
26.深拷贝、浅拷贝(day14 C++)
27.初始化列表:1.初始化成员变量值;2.对类中对象成员进行初始化,调用带参构造器;3.继承中调用父类构造器(day14 C++)
28.explicit(day15 C++)
29.new、delete(day15 C++)
30.static静态成员变量、static静态函数成员、const static成员变量(day15 C++)
静态代码块、静态全局变量、静态局部变量、静态函数
31.类名::(day15 C++)
32.单例(饿汉式)(day15 C++)
33.面向对象模型(day15 C++)
34.this指针(day15 C++)
35.常量对象、常量函数、mutable(day15 C++)
36.友元类、友元成员函数、友元全局函数(day16 C++)
37.运算符重载概念(day16 C++)
38.重载左移运算符的友元函数(day16 C++)
39.重载右移运算符函数(day16 C++)
40.重载+号运算符函数(day16 C++)
41.重载[]号运算符函数(day16 C++)
42.重载=号赋值运算符函数(day16 C++)
43.重载前置++/--和后置++/--运算符重载(day16 C++)
44.数组类封装(day16 C++)
45.字符串类封装(day17 C++)
46.字符串类封装(day20 C++)
47.重载指针运算符(->和*)函数(day17 C++)
48.重载函数调用()符号函数(day17 C++)
49.重载bool函数(day17 C++)
50.不能重载&&和||(day17 C++)
51.继承、派生(day17 C++)
52.继承中的构造和析构、继承方式与组合方式(day17 C++)
子类不会自动继承父类的私有成员和函数
53.子类访问父类中私有的成员变量:1.通过指针访问;2.友元(day17 C++)
54.继承中同名成员的处理方法(day17 C++)
初始化列表
55.继承中的静态成员(day17 C++)
56.多继承(day17 C++)
57.菱形继承(重复继承)问题,使用虚继承解决(day17 C++)
58.多态(day18 C++)
多态练习(图形父类:矩形圆形子类)、多态练习(动物园、动物、猫狗)
59.实现多态:父类指针/引用指向子类对象,通过父类指针/引用操作子类对象;继承关系中子类重写父类的虚函数/纯虚函数(day18 C++)
通过指针调用父类的函数、虚函数和纯虚函数
60.虚析构函数、纯虚析构函数(day18 C++)
61.重写、重载、重定义(day18 C++)
62.模板(day19 C++)
63.函数模板(day19 C++)
64.类模板(day19 C++)
65.数组类模板(day19 C++)
66.模板案例:链表模板(day19 C++)
67.C++类型转换:静态转换、动态转换、const常量类型转换、强制类型转换(day21 C++)
68.异常、栈解旋(day21 C++)
69.C++标准异常库(day21 C++)
70.编写自己的异常类(day21 C++)
71.C++输入流、输出流(day21 C++)
72.标准输入流cin、输出流cout、控制符格式化输出、使用流对象有关的成员函数(day21 C++)
73.文件读写:ifstream文件输入流(文件->程序)、ofstream输出文件流(程序->文件)、read、write、open、close(day21 C++)
控制符格式化输出、ofstream输出文件流重载
对文件进行读写数据操作:在文件中进行“key = value”格式的数据的读写操作(项目二)
获取当前程序运行的所在绝对路径信息、拼接绝对路径信息(项目二)
74.ASCII文件读写(day21 C++)
75.二进制文件读写(day21 C++)
IO读取文件数据,进行排序后,重新写入到文件中
76.迭代器(day22 C++)
77.string(day22 C++)
78.vector(day22 C++)
79.deque(day22 C++)
deque容器案例:评委打分案例
80.stack(day23 C++)
81.queue队列(day23 C++)
两个stack栈实现一个queue队列(day26 C++)
82.list(day23 C++)
83.set/multiset、对组pair(day23 C++)
84.map、multimap(day23 C++)
multimap案例(day23 C++)
Map迭代
85.STL容器元素深拷贝、浅拷贝(day23 C++)
86.STL容器使用时机(day23 C++)
87.内建函数对象(包含头文件functional)(day23 C++)
创建set/map的同时,使用内建函数对象自定义容器中的元素存储规则;给sort()函数自定义排序规则
88.函数对象、仿函数(一元仿函数/二元仿函数 等同于 一元谓词/二元谓词)(day24 C++)
89.谓词(一元谓词/二元谓词 等同于 一元仿函数/二元仿函数)(day24 C++)
90.函数对象适配器:bind1st/bind2nd(继承binary_function)、ptr_fun(普通函数适配器:把普通函数转换为函数对象)、not1/not2取反适配器(day24 C++)
函数对象适配器实现原理模拟、模板的函数对象适配器实现原理模拟
std::bind 和 std::function
91.mem_fun和mem_fun_ref成员函数适配器(day24 C++)
92.遍历算法:for_each、transform(day24 C++)
93.查找算法:find、adjacent_find、binary_search、find_if、count、count_if(day24 C++)
94.排序算法:merge、sort、random_shuffle、reverse(day24 C++)
95.拷贝和替换算法:copy、replace、replace_if、swap(day24 C++)
96.算数生成算法:accumulate、fill(day24 C++)
97.集合算法:set_intersection、set_union、set_difference(day24 C++)
98.综合案例_演讲比赛(day24 C++)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
QT
-j8/-j4:多核多线程编译,加快编译速度
Qt中的QString和QByteArray
indexOf、lastIndexOf
QJsonObject和QByteArray之间的相互转换
QJsonObject和QByteArray和QJsonArray之间的相互转换
QJsonArray
QJsonDocument
QJsonObject
QJson
QStringList
1.QWidget窗口基本结构(day01)
2.第一个QWidget窗口(15年QT开发day01)
3.QDebug:输出调试信息相当于cout(day01)
4.“delete父类对象”会自动把子类对象也同时释放掉(day01)
5.链接信号和槽:发出信号,槽函数处理信号(day01)
6.集合类(QVector、QList、QMap)操作:插入、删除、修改、遍历(day01)
QList<指针*>(象棋中悔棋用法)(day04)
7.QString字符串 和 QByteArray字节数组(day01)
8.文件IO读写:QFile、QBuffer、QDataStream(day01)
QDataStream序列化存储/读取数据(day04)
9.消息机制:实现解耦(day01)
10.标准信号和槽(15年QT开发day01)
11.自定义槽函数(15年QT开发day01)
12.两个独立的窗口(15年QT开发day01)
13.互相切换两个独立的窗口(15年QT开发day01)
14.运行别人代码要注意(15年QT开发day01)
15.带参数的信号函数可以重载:解决信号重载函数的二义性(15年QT开发day01)
16.Lambda表达式替换槽函数(15年QT开发day01)
17.坐标系统(15年QT开发day01)
18.QWidget 窗口、QPushButton按钮控件(day02)
19.QLineEdit:单行输入控件(day02)
20.QLabel:文本和图片显示控件(day02)
21.QComboBox:下拉框控件(day02)
22.QHBoxLayout水平布局控件,按照从左到右水平排列(day02)
23.QVBoxLayout垂直布局,按照从上到下水平排列(day02)
24.grid表格(day02)
25.登陆框实现(day02)
26.函数指针、function函数对象、bind函数:自定义绑定函数(day02)
27.信号和槽(day02)
28.QT内置的信号函数和槽函数(day02)
29.lambel表达式(day02)
30.通过鼠标事件移动窗口:窗口随着鼠标移动而移动(day03)
31.窗口截图/全屏截图(day03)
32.消息的忽略和接受(day03)
33.消息机制、定时器(day03)
34.模态框、弹出自带的确定取消框、文件打开框(带格式)(day03)
35.菜单栏、工具栏、状态栏(day03)
36.修改exe图标(day03)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Linux
1.VMwareTools:winow上文件直接拉到linux上(day01)
2.绿色版打包(day01)
3.文件(day01)
4.启动和登录(day01)
5.根路径/用户目录(day01)
6.程序、进程(day01)
7.错误处理(day01)
8.信号、系统调用和库函数(day01)
9.文件IO(day01)
10.VIM常用命令(day01)
11.VIM配置插件(day01)
12.文件读写操作、文件指针、lseek文件共享、文件读写效率(day01)
13.dup、dup2、重定向、文件描述符(day02)
14.读写文件的原子性问题:O_APPEND、O_EXCL(day02)
15.fcntl、ioctl(day02)
16.删除正在打开的文件的真实执行顺序(day02)
17.文件映射:内存中操作“被映射到进程”的文件(day02)
18.临时文件、刷新缓存(day02)
19.文件IO常用命令(day02)
20.文件和目录、文件属性stat、文件类型、文件访问权限(day02)
21.分区和挂载(day02)
22.SUID、SGID、StickBit(day03)
23.文件大小、文件类型(day03)
24.inode、数据块、文件、目录、路径和寻址(day03)
25.硬链接和软链接(day03)
26.通过程序修改文件的属性(day03)
27.文件时间(day03)
28.拷贝文件并修改文件属性(day03)
29.虚拟文件系统(day03)
30.删除文件和目录文件夹(day03)
31.打开、读取目录文件夹(day03)
32.操作文件、目录的函数、命令(day03)
33.压缩、解压缩、readdir(day03)、遍历目录文件夹(day11)
34.进程:PCB、PID、PPID、账户id、组id(day04)
35.环境变量(day04)
36.进程状态(day04)
37.记录进程运行时间(day04)
38.当前工作目录和根目录:getcwd、chdir、chroot(day04)
39.动态库和静态库(day04)
40.申请内存:mmap、alloca(day04)
41.操作进程、操作目录、申请内存的命令和函数(day04)
42.fork(day05)
popen
pipe
fifo
43.进程退出时自动调用on_exit函数(day05)
44.wait、waitpid回收结束的进程(day05)
45.僵尸进程、孤儿进程(day05)
46.exec执行指定的进程(day05)
47.进程组、session会话(day05)
48.不定参数(可变参数)的函数和宏:va_list/va_start/va_arg(day05)
49.多线程拷贝模拟(day06)
多线程拷贝(day11)
50.自定义shell:实现外置命令(ls)、内置命令(cd)(day06)
51.信号:忽略信号、发送信号(day07)
52.信号掩码:掩盖信号(day07)
53.不可靠信号(day07)
54.可重入函数、不可重入函数:strtok、strtok_r、readdir、readdir_r(day07)
55.SIGCHLD、wait/waitpid回收进程(day07)
56.中断系统调用(中断阻塞)(day07)
57.sigaction和sigqueue(day07)
58.操作信号的函数命令(day07)
59.进程间通信的种类(day08)
60.匿名管道(day08)
61.read读、write写(day08)
62.命名管道:管道文件(day08)
63.socketpair(day08)
64.父子进程之间:mmap实现内存共享(day08)
65.非父子进程之间:mmap实现内存共享:shm_open、shm_unlink(day08)
66.文件锁flock(day08)
记录锁fcntl(day10)
67.pthread_mutex_t mutex锁对象(day08)
68.守护进程(day08)
守护进程:把服务器端程序的进程切换为守护进程、使用脚本结束守护进程的操作(项目二day06)
69.线程创建(day09)
70.pthread_t线程标识(day09)
71.线程退出(day09)
72.线程回收(day09)
73.线程在客户端、服务器使用场景(day09)
74.线程不同步问题(day09)
75.pthread_mutex_t锁对象(day09)
76.循环锁:解决死锁;(读写锁)共享锁/排他锁(day09)
77.生产者消费者模型(加锁版本)(day09)
78.生产者消费者模型(不加锁版本)(day09)
79.条件变量(day09)
80.信号量(day09)
81.可重入函数、不可重入函数:strtok、strtok_r、readdir、readdir_r(day09)
82.分离线程:pthread_detach(day09)
83.线程的其他属性(day09)
84.thread_local线程私有数据(day09)
85.线程取消(day09)
86.open(day10)
87.高级IO:非阻塞IO(day10)
88.主线程同时读取鼠标、键盘设备文件(问题:造成互相阻塞)(day10)
89.解决一:多线程read两个设备文件,每个线程各读取一个设备文件,解决互相阻塞问题(day10)
90.解决二:多路IO,解决互相阻塞问题(day10)
91.多路IO:select(day10)
92.多路IO:epoll(day10)
93.TCP套接字通信、发送方和接收方之间互相收发数据(day11)
94.未封装的函数实现客户端向服务器传输文件数据(day11)
95.accept、EINTR(day11)
96.封装的函数实现客户端向服务器传输单文件数据(TCB下未解决粘包问题)(day12)
97.封装的函数实现客户端向服务器端传输单文件数据(TCB下解决了粘包问题)(day12)
98.封装的函数实现把指定的目录和该目录下的所有文件/文件夹进行传输,也可以传输单个文件(TCB下解决了粘包问题)(day12)
99.UDP套接字(day12)
100.UDP:发送方(服务器端)和接收方(客户端)之间进行数据通信(day12)
101.TCP和UDP的区别、read/recv/recvfrom/write/send/sendto、 客户端和服务器端之间互相收发数据(day12)
102.广播(day12)
103.组播(多播)(day12)
104.IP地址(day12)
105.使用TCP实现登陆和注册:只能单用户登录(day13)
106.使用TCP实现登陆和注册:多进程实现多用户登录(day13)
107.使用TCP实现登陆和注册:多线程实现多用户登录(day13)
pthread_create创建线程
int->intptr_t->void*
108.libevent(day15)
109.event_base_new、evconnlistener_new_bind、listen_cb、bufferevent_setcb、readcb、writecb、eventcb(day15)
110.聊天通信(day15)
error: cannot find -lGL
111.Http协议和请求报文(day16)
112.curl(day16)
113.Http响应报文(day16)
114.安装apache(day16)
115.libcurl(day16)
116.curl实现http客户端、curl发送POST请求数据(day16)
117.通过CGI程序处理客户端请求(day16)
118.JSON:cJSON(day16)
119.tufao和curl通信:QJson(day16)
安装cmake
120.github(day18)
121.聊天窗(day19)
122.TCP通信客户端、TCP的echo服务器
编写一个能判断客户端发送的字符串是否是回文的服务器程序、多线程并发服务器
123.arp欺骗
124.滑动窗口
125.多线程和多进程的特点(day13)
126.使用select实现服务器同时和多客户端进行数据通信(day13)
127.select、poll、epoll之间的区别(day13)
epoll的ET模式:EPOLLOUT和EPOLLIN触发时刻
128.使用epoll实现服务器同时和多客户端进行数据通信(day13)
129.使用epoll和多线程实现服务器,同时和多客户端进行数据通信、gdb调试(多线程、锁pthread_mutex_t、条件变量、epoll、EPOLLONESHOT/O_NONBLOCK/EPOLL_CTL_MOD)(day13)
130.使用线程池(多线程、锁pthread_mutex_t、信号量、epoll、EPOLLONESHOT/O_NONBLOCK/EPOLL_CTL_MOD)(day14)
131.多线程/多进程执行accept(day14)
132.高性能服务器(对象池、多线程、循环锁pthread_mutex_t、信号量、宏函数、epoll、EPOLLONESHOT/O_NONBLOCK/EPOLL_CTL_MOD)(day14)
133.高性能服务器测试:模拟多客户端访问服务器端(day14)
正确配置Linux系统ulimit值的方法
设置 Linux最大打开文件描述符数
gdb调试核心已转储的崩溃的程序
gdb调试死锁(永久阻塞)的程序、gdb调试多线程的程序
gdb的基本用法
深入分析Sleep(0)与Sleep(1)的区别
Java中sleep、wait的区别
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
数据库
1.MySQL数据库(day01)
2.window下MySQL客户端连接Linux下MySQL服务器(day01)
3.对表操作、数据类型、对数据增删改查、条件查询、模糊查询、分组查询、排序、嵌套查询(day01)
4.多表联查(day02)
5.字符串函数、日期时间函数(day02)
6.limit、索引、约束、外键、事务、触发器(day02)
7.存储过程:把SQL封装到函数中调用(day02)
8.视图、数据库的导入导出、SQL注入(day02)
9.mysql的C语言API函数(day03)
10.mysql的C语言API预处理函数(day03)
11.安装cmake、mongodb、mongodb的C驱动、C++驱动(day04)
12.网盘项目(day06)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1.安卓:在window上显示手机app窗口(day01)
2.安卓:打印error、warn、info、verbose、debug信息(day01)
3.安卓:Activity跳转:绑定按钮的点击事件,进行跳转界面(day01)
4.安卓:Activity生命周期(day01)
5.安卓:给按钮绑定点击事件(回调函数)(day01)
6.安卓:自动补全下拉框(day02)
7.安卓:高德地图(day02)
1.JNI和NDK(day02)
2.配置NDK、ndk-build把C/C++代码编译为动态库(day02)
3.调用native函数,实际调用JNI接口,即为调用动态库中C/C++代码(day02)
在AS中编写C/C++代码没有语法提示,在QT中编写C++才会有语法提示
4.(1)java通过native函数,把参数传递给C/C++的JNI接口类和接收JNI接口类返回的参数;
(2)Java字符串转换为C++字符串、C++字符串转换为Java字符串;
(3)JNI不仅定义了java如何调用C/C++,还定义C/C++如何调用java:
1.C/C++如何调用java的系统函数/自定义函数;
2.C/C++调用java函数时,还需要使用javap获取java函数的方法签名。(day02)
5.javah、javap(day02)
6.配置JNI支持STL和C++11(day02)
7.阿里云ubuntu配置安装、本地连接/本地上传文件到阿里云ubuntu、本地连接阿里云ubuntu的MySQL数据库(day05)
8.使用MySQL Workbench远程连接阿里云服务器上的MySQL(day05)
9.不同的ubuntu之间传输文件:scp命令(day05)
10.qmake、make编译项目:项目一的编译的运行的命令(day05)
11.服务器端(基础版1.0):tufao服务器、Mysql数据库连接、sql执行“exec(sql)”、QJson响应数据给客户端、md5密码加密(day05)
12.客户端模拟注册和登录操作:libcurl进行http通信,实现客户端连接服务器,并发送JSON给服务器和接收服务器响应返回的JSON(day05)
13.安卓客户端(后台基础版1.0):Java和C++代码(登录模块)
JNI(Java的native函数对应C++的JNI接口类、Java和C++之间的相互调用和参数传递)、c2j/j2c(Java字符串和C++字符串相互转换)、cJSON、
“libcurl实现客户端连接服务器端,并发送JSON给服务器端和接收服务器响应返回的JSON”、javah 、项目一环境变量配置、NDK编译、
项目运行(day05)
14.Redis:配置安装、redis命令(day06)
15.C语言的客户通过hiredis库访问Redis服务器(day06)
16.Application.mk和Android.mk中的配置用于如何把jni目录下的C语言文件编译为动态库、
手动ndk-build和自动ndk-build:把jni目录下的C语言文件编译为动态库的操作(day06)
17.安卓客户端配置使用高德地图(day06)
18.通过脚本中的scp命令,把本地代码上传到阿里云服务器上、项目编译与运行(day06)
19.安卓客户端的前端部分(基础版1.0)(day06)
20.安卓客户端(后台封装改进版2.0):Java和C++部分(登录、注册模块)
JNI(Java的native函数对应C++的JNI接口类、Java和C++之间的相互调用和参数传递)、c2j/j2c(Java字符串和C++字符串相互转换)、cJSON、
“libcurl实现客户端连接服务器端,并发送JSON给服务器端和接收服务器响应返回的JSON”、自定义JSON类封装cJSON、自定义Curl类封装CURL库函数(day06)
21.scp传输文件、项目一编译与运行、切换前台程序为后台程序(使用命令或守护进程)(day06)
22.服务器端(增加版2.0):redis数据库、tufao服务器、Mysql数据库连接、sql执行“exec(sql)”、QJson响应数据给客户端、md5密码加密(day06)
23.make、makefile、cmake、qmake、qmake、pro文件、pri文件和makefile文件(day06)
24.安卓:项目编译后的apk所在的目录(day07)
25.安卓:编译时无法删除该debug目录:第一种方式 clean项目;第二种方式 手动删除build目录(day07)
26.单向/双向免密码登陆:在两个Linux主机之间ssh互相连接访问都可免密码(day07)
27.安卓客户端的前端部分(增强版2.0)(day07)
28.安卓客户端(后台功能完善版3.0):Java和C++部分(登录/注册模块、“查找附近司机”模块)
JNI(Java的native函数对应C++的JNI接口类、Java和C++之间的相互调用和参数传递)、c2j/j2c(Java字符串和C++字符串相互转换)、cJSON、
“libcurl实现客户端连接服务器端,并发送JSON给服务器端和接收服务器响应返回的JSON”、自定义JSON类封装cJSON、自定义Curl类封装CURL库函数、Map、单例、
函数指针做回调函数、bind和function做回调函数、GeoHash、私有化拷贝函数/赋值函数禁止在别的类中使用(day07)
29.服务器端(功能增强版3.0):redis数据库、tufao服务器、Mysql数据库连接、sql执行“exec(sql)”、QJson响应数据给客户端、md5密码加密(day07)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
MFC
1.消息队列、入口函数、窗口创建、消息循环、消息处理(day01)
2.消息映射、字符集(day01)
3.CString
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Oracle的虚拟机推荐挂起,不推荐关机
对称加密、非对称加密
1.项目框架(day01)
2.Oracle数据库的安装配置与启动(day01)
3.SQL Developer的安装与连接Oracle数据库(day01)
4.使用“数据库脚本”创建Oracle数据库的表(day01)
5.在OracleDB版本下的Linux上,创建Linux用户(day01)
6.使用UE连接linux进行文件传输(day01)
7.给linux的新增用户配置进入Oracle数据库的权限(day01)
8.配置完环境后,启动项目检验是否启动成功(day01)
9.TLV(ANYBUF结构体)报文的编码与解码(day02)
10.项目二使用的动态库(day03)
11.使用UE连接linux,并浏览linux下文件,并对文件进行修改保存
使用UE时:注意编辑的文件的编码格式要为UTF-8,防止在linux上中文乱码(day03)
12.window下制作动态库dll(day03)
13.linux下制作动态库so(day03)
14.makefile中的语法格式(day03)
15.网络通信知识(day03)
16.(多线程并发)网络通信服务器实现(day03)
17.客户端:使用socketlib动态库进行socket通信(day04)
18.客户端:(多线程并发)使用socketlib动态库中的socket连接池进行socket通信(day04)
19.客户端:内存冗余法(void*传递“存有结构体数据”的堆空间地址),并且(多线程并发)使用socketlib动态库中的socket连接池进行socket通信(day04)
20.linux内核中的共享内存(day04)
Window/Linux下共享内存的区别
21.MsgKey_Req(密钥请求报文)和MsgKey_Res(密钥应答报文)、MsgEncode(编码)和MsgDecode(解码)、MsgMemFree(释放MsgKey_Req/MsgKey_Res结构体)(day03测试)
22.把“项目的功能实现”的代码生成为window的动态库dll(day03测试)
23.调用动态库中接口函数,测试生成的动态库dll是否能运行成功(day03测试)
24.把“项目的功能实现”的代码生成为linux的动态库so(day03测试)
25.使用make命令执行makefile文件中的编译命令(day03测试)
26.进程间通信的种类(day05)
27.当前项目编译的两种方式(day05)
28.当前项目编译的两种方式、使用脚本关闭服务器端程序的进程(day06)
29.守护进程:把服务器端程序的进程切换为守护进程、使用脚本结束守护进程的操作(day06)
30.linux文件中出现^M字符的原因与解决方式(day06)
31.Oracle数据库启动、启动TNS服务(day07)
32.SQL Developer工具连接Oracle数据库、当前项目编译的两种方式(day07)
33.Oracle数据库基础sql(day07)
34.Oracle数据库-事务(day07)
35.Oracle数据库的原理(day07)
36.Oracle数据库-操作API(day07)
37.根据错误码提示获取详细错误原因信息(day07)
38.游标获取查询结果集的每行数据(day07)
39.base64编码(day07)
40.Oracle数据库中的锁机制:“for update”(day07)
41.在Oracle数据库中连续多次使用错误的用户名密码访问导致用户被锁问题的解决方法(day07)
42.“密钥结构体指针->成员变量”对共享内存进行读写操作(day08)
43.创建一个TNS服务(day08)
44.配置ODBC:使用ODBC连接TNS(day08)
45.MFC框架集成(day08)
46.视图切分QQ抽屉效果(day08)
47.添加CFormBackground类:使用该类为程序界面添加背景(day08)
48.mfc框架对接-视图切换效果(day09)
49.配置管理终端功能分析、获取配置文件所在的绝对路径(day09)
50.读取配置文件中数据保存到全局变量(day09)
51.“extern全局变量”的用法(day09)
52.对文件进行读写数据操作:在文件中进行“key = value”格式的数据的读写操作(day09)
53.获取当前程序运行的所在绝对路径信息、拼接绝对路径信息(day09)
54.创建提示框,让用户输入“连接Oracle数据库”的账号密码(day09)
55.把用户输入的“用于链接数据库”的信息保存到后台中(day09)
56.odbc连接和关闭数据库(day09)
57.odbc测试连接数据库(day09)
58.把用户输入的“用于连接Oracle数据库”的信息写入到ini配置文件(day09)
59.重写父类的OnInitialUpdate函数,函数中要求要求从数据库中查询数据并把查询结果放到界面中显示(day09)
60.通过odbc驱动自动生成记录类:使用记录类定义中的成员变量,可以直接把成员变量值写入到数据库中,或把查询数据库的结果集数据自动存到成员变量中(day09)
61.记录类的说明(day10)
62.记录类查询用户表数据的函数(day10)
63.读取用户表中数据回显到界面的输入框控件中(day10)
64.把界面中的输入框控件中的内存保存到数据库的用户表中(day10)
linux代码:
4大基础组件源码和动态库:icdblib、msgderlib、shmlib、socketlib
(头文件)客户端和服务器端的socket连接、客户端的socket连接池
(实行文件、头文件、动态库)客户端和服务器端的socket连接、客户端的socket连接池
(头文件)TLV(ANYBUF结构体)的编码/解码、密钥请求报文结构体、密钥应答报文结构体
(实现文件、头文件、动态库)TLV(ANYBUF结构体)的编码/解码、密钥请求报文结构体、密钥应答报文结构体
(头文件)数据库连接/增删改查
(实现文件、头文件、动态库)数据库连接/增删改查
(头文件)共享内存API、共享内存中的密钥结构体的读写
(实现文件、头文件、动态库)共享内存、共享内存中的密钥结构体的读写
客户端:main函数、函数定义的头文件、实现函数的实现文件
服务器端:main函数、函数定义的头文件、实现函数的实现文件
MFC代码:
(头文件)定义的全局变量
读写“secmngadmin.ini”配置文件中的“key = value”数据的实现函数
查询数据库中的数据回显到界面中的输入框中、界面中的输入框中的数据保存到数据库中
按“key = value”格式把数据写入到“secmngadmin.ini”配置文件中、ODBC进行测试连接Oracle数据库
MFC程序的main函数:读取“secmngadmin.ini”配置文件中的用户信息用于ODBC连接Oracle数据库
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1.项目的简单架构、传统的集群、fastDFS的集群和分布式、大文件碎片化式分布式存储(day01)
2.安装fastDFS、解决“执行程序缺少so动态库”的问题(day01)
安装fastDFS、一般安装第三方库的步骤(day01)
解决“执行程序缺少so动态库”的问题(day01)
3.修改fastDFS的配置文件:tracker.conf、storage.conf、client.conf、执行fastDFS指令:上传、下载、删除文件指令(day01)
修改fastDFS的配置文件:tracker.conf、storage.conf、client.conf;执行上传文件指令(day01)
执行fastDFS指令:上传、下载、删除文件指令(day01)
4.自定义文件上传功能实现:创建新进程执行“fdfs_upload_file”上传指令(使用到管道)(day01)
使用脚本管理fastDFS的tracker、storage的启动和关闭(day01)
使用fastDFS提供的的上传功能模块进行文件上传、-w、-W、-Wall的区别(day01)
自定义文件上传功能实现:创建新进程执行“fdfs_upload_file”上传指令(使用到管道)(day01)
LOG函数:日志模块的集成(day01)
5.fdfs的api的接口实现(day02)
6.redis的api接口封装实现、安装redis-hiredis(day02)
fdfs上传文件的api封装(day02)
memcached(day02)
memcached的安装(day02)
memcached的客户端api(day02)
memcached分布式存储的实现(day02)
redis的各种数据类型的使用:redis的持久化、redis的配置文件、List、Hash、Set、Zset、Sub订阅、Pub发布(中文官网:redis.cn)(day02)
7.redis建表:文件fileid和对应的文件相关的属性、获取系统时间(day03)
8.nginx的安装(day03)
9.fastcgi的安装(day03)
搭建反向代理服务器(day03)
redis:调用list、string的api接口(二期day03)
redis的事务(二期day03)
nginx的安装(day03)
nginx的配置文件nginx.conf(day03)
nginx的进程模型、并发模型(day03)
nginx搭建反向代理服务器(day03)
cgi和fastcgi(day03)
fastcgi程序的demo应用示例搭建(day03)
fastcgi的应用程序:可用于获取GET请求数据(day03)
echo回显的应用程序:可用于获取POST请求数据;strtol(day03)
10.使用脚本:获取进程的进程号ID(day04)
11.int argc、char** argv / char* argv[]、char** env / char* env[](day04)
12.搭建echo回显服务器,并使用curl发送POST请求数据测试(day04)
13.nginx部署zyupload上传页面(day04)
14.上传环境搭建,并上传文件暂时存储到项目目录下(day04)
15.上传文件存储到fdfsDFS中的storage中,并保存上传的文件的相关信息到redis数据库中(day04)
脚本中启动redis-server服务器:推荐设置为后台启动
部署 HTML5上传插件“zyUpload”到服务器上(day04)
处理文件上传的请求(day04)
解析标准的http文件上传协议(day04)
redis建表(day04)
16.git的常用指令、git提交代码(day05)
17.部署网盘前端界面(day05)
18.主界面查询显示“写死的JSON数据”(day05)
19.从redis数据库查询文件相关信息并封装为JSON传到浏览器显示、下载量增加(day05、day06)
20.cJSON(day05)
上传文件的页面配置(day05)
部署下载文件页面(day05)
主界面显示文件列表:redis数据库查询文件业务(day05)
浏览器从storage中下载文件:要求在storage中搭建有nginx服务器,安装方法是在nginx中集成fdfs-module(day05)
21.浏览器从storage中下载文件:要求在storage中搭建有nginx服务器,安装方法是在nginx中集成fdfs-module(day06)
22.登录和注册(day06)
下载点击量增加(day06)
注册业务(day06)
登录业务(day06)
网盘文件列表只显示属于当前用户的文件(day06)
网盘文件分享业务(day06)
秒传功能业务(day06)