注:以下内容全部是梳理, 所以未免会有不准确的地方, 仅仅作为自我检测之用
1、文件操作:
FILE*: fopen、feof、fwrite、fread、fprintf、fclose、fseek、ftell,FILE* p==NULL表示文件打开失败
fstream:ifstream(输入到内存、同cin)、ofstream(输出到文件,同cout)、open、>>、<<、eof、close、infile.is_open()判断文件打开成功,中文路径要额外处理、否则容易打开失败
API:CreateFile、WriteFile、ReadFile、CloseHandle、GetFileSize、SetFilePoiter、GetFileTime、GetStatus、GetFleAttributes、SetFileAttribute
CFile:Open、Read、Write、Close、GetLength、可结合CArchive使用,使得操作更简单
CreateFileMaping:文件映射,处理大文件
2、字符串:
1、strcpy、trcmp、strcat、sprintf、strstr、strlen;wstrcpy、wstrcmp、wstrcat、wsprintf、wcsstr、wcslen
2、string:find\rfind、substr、+=、length\size;wstring:。。。
3、CString(CStringA、CStringW):isempty、reversefind、format、getlength、makelower、makeupper
4、宽窄转换:CA2W\CW2A、WideCharToMultiByte和MultiByteToWideChar
5、数字字符串互转:itoa\atoi、 stringstream、sscanf\sprintf
6、宽窄常量字符串表示法:“abc”\_T(“abc”)
3、多线程:__beginthreadex\CloseHandle:据说这个是线程安全的,即在使用C运行时库的时候能保证安全性
4、线程通信:消息、全局变量(volatile)、文件映射(CreateFileMapping、MapViewOfFile)
进程间通信 :消息(VirtualAllocEx、WriteProcessMemory)、文件映射、管道(匿名、有名管道)、socket、剪切板、mailslot
5、同步:临界区(非内核对象,不能跨进程)、事件、信号量、互斥
6、stl:容器:list、vector、map、hash_map、queue、stack
算法:find、find_if、sort、remove、remove_if、 for_each
set是一种自动排序容器, 只需要重写一下比较函数,新插入的元素将会自动排序
7、网络io模型:select、事件选择、异步选择、重叠io、IOCP
iocp原理:基于异步io操作和系统线程池组合
8、声明数组清空里面的内容:char arr[128] = {0}, 带定义的结构体声明:struct sInfo{int i; char* pcon; bool f;}; sInfo s = {1, "hello", true}; 编写一个函数的一般性原则:谁申请、谁释放。对于经常成对出现的语句可以放在类的构造函数和析构函数中,C和C++的malloc与new的区别:malloc只分配内存不调用构造含糊。printf使用的是变参处理多种参数输入而不是用重载, 如果要使用流运算符支持我自己的类型只能用全局函数的方式来重载流运算符,因为流运算符的第一个参数是流对象的引用而不是我自己的类对象。 对于重载运算符:哪些运算符的重载必须返回引用类型,答案:只需要作为右值存在的时候可以不能返回引用(加减乘除)
9、HOOK:(1)、通过修改IAT表实现APIhOOK;(2)使用远程代码注入方式替换dll
10、NAT打洞原理,UDT文件传输,p2p下载
穿透http代理(普通代理和加密代理)
11、http下载:使用wininet实现多线程断点续传, 简单下载可以使用UrlDownLoadToFile
12、手写windows对话框,纯C++手写COM
13、数据库编程需要引入msado15.dll