学习目标:
C/C++篇:
多态如何实现?
const和static的区别?const char*p和char* const p的区别?
为什么会产生内存泄露?如何预防内存泄露?
网络编程篇:
TCP、UDP的区别?
TCP的三次对话,三/四次握手的实现过程?
TCP、UDP的优缺点?TCP UDP适用场景?
学习内容:
多态如何实现?
1.首先多态有两种情况:静态多态,动态多态。
静态多态就是进行函数重载。
动态多态就是通过继承重写基类的虚函数。
const和static的区别?const char*p和char* const p的区别?
static 类成员变量,表示这个成员为全类所拥有。
static 类成员函数,表示这个函数为全类所共有,而且只能访问静态成员变量
cont 修饰类成员函数:该函数对成员变量只能进行只读操作
对于类的成员函数,若指定其为const类型,则表明其是一个常函数,不可以修改类的成员变量。
const char*p 修饰的是指针,所以指针的指向可以修改,但是指向的值不可修改。
char* const p,修饰的是常量,指针的指向不可改变,但是指针指向的值可以更改。
为什么会产生内存泄露?如何预防内存泄露?
用户向系统申请发分配内存进行使用(malloc) (new),在使用完后不归还,导致内存空间孤立,导致不能再次访问,系统也无法再次将它分配给需要的程序。
一般造成泄漏的三种情况
1.指针重新赋值
char*p = (char *)malloc(10);
char *np = (char *)malloc(10);
p = np ;
int*p = new int;
p = new int..
这样会导致p指针申请的内存空间孤立起来,无法释放,会导致内存泄漏。
2.错误的内存释放
对于结构化的元素,释放内存前先遍历子内存地址,并从这里开始释放,再遍历父节点。
free(p->np);
free(p);
3.返回值的不正确处理
char *func()
{
return malloc(20);
}
void callingFunc()
{
func();
}
calingFunc()函数中对func函数的调用未处理该内存位置的返回值,结果会导致func()函数所分配的20个字节的块就丢失了,并且导致了内存泄漏。
总结:
避免内存泄漏需要注意的几个方面:
1.确保没有访问空指针;
2.每个内存分配的函数都应该有一个free函数与之对应,alloca函数除外。
3.每当向指针写入值时,都要确保对可用字节数和所写入的字节数进行交叉核对。
4.对指针进行赋值之前,要确保没有内存位置孤立的情况。
5.释放结构化元素时候,(包括指向动态内存分配的内存位置的指针时),先遍历子节点的内存位置,并从那里开始释放,然后再遍历回父节点。
6.正确处理返回动态内存引用的函数返回值。
网络编程篇:
TCP、UDP的区别?
tcp因为是面向连接的协议,所以它需要通过建立三次握手进行连接,四次挥手解除连接。udp因为是一种无连接的通信协议,所以它的传输效率会比tcp要高,但是不一定能确保数据的传输成功率。
tcp之间的连接是点对点,udp可以一对一,一对多,多对多,多对一的交互通信,通俗的来说就是可以同时接受多个人的包。
tcp是全双工的可靠信道,udp是不可靠信道。
TCP的三次对话,三/四次握手的实现过程?
服务端A先向服务端B发送连接请求,服务端B在收到服务端A发来的请求后,向服务端A发送连接请求,服务端A确认连接请求后,两者正式开始连接。
服务端A先向服务端B发送一个关闭的请求,服务端B在接受到请求后,也向A发送一个知道A要关闭的信息,然后服务端A此时收到服务端B发送的确认信息,然后再给服务端B发送一个包,表明自己已经关闭。
TCP、UDP的优缺点?TCP UDP适用场景?
- TCP的优点:
可靠,稳定。tcp的可靠体现在tcp在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认,窗口,重传,拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。
- TCP的缺点:
速度慢,效率低,占用系统资源高,易被攻击。TCP在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制,重传机制,拥塞机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的CPU,内存等硬件资源。而且,因为TCP有确认机制,三次握手机制,这些也导致TCP容易被人利用,实现DOS,DDOS,CC等攻击。
- UDP的优点:
速度快,比TCP稍安全。UDP没有TCP的握手,确认,窗口,重传,拥塞控制等机制。UDP是一个无状态的传输协议,所以它在传递数据时非常快。没有TCP的这些机制,UDP较TCP被攻击者利用的漏洞就要少一些。但UDP也是无法避免攻击的。比如:UDP Flood攻击。
- UDP的缺点:
不可靠,不稳定。因为UDP没有TCP那些可靠的机制,在数据传递时,如果网络质量不好,就会容易丢包。
- 什么时候应该使用TCP:
当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传送给对方,这往往用于一些可靠的应用,比如HTTP,HTTPS,FTP等传输文件的协议,POP,SMTP等邮件传输的协议。
- 什么时候使用UDP:
当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用UDP。常见使用UDP协议的应用如下:QQ语音,QQ视频,TFTP等。
学习时间:
- 周一至周六晚上 10 点—晚上1点
- 周日上午 8 点-中午 12 点
学习产出:
提示:这里统计学习计划的总量
例如:
- 面试笔记笔记 1 篇