摘要: 7. TCP怎么连接的 三次握手: Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,等待Server确认。 Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置1,ack=J+1,随机产生一个值se 阅读全文
posted @ 2021-08-09 15:10 holmes_now 阅读(45) 评论(0) 推荐(0)
摘要: 在浏览器中输入URL后,执行的全部过程。会用到哪些协议?(一次完整的HTTP请求过程) 输入域名到获取页面的过程 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;浏览器发出读取文件(URL 中 阅读全文
posted @ 2021-08-09 15:02 holmes_now 阅读(541) 评论(0) 推荐(0)
摘要: 1、获取IP。浏览器地址栏中输入"http://www.xxx.edu.cn/"并提交之后,首先它会在DNS本地缓存表中查找,如果有则直接告诉IP地址。如果没有则要求网关DNS进行查找,如此下去,当找到对应的ip后,则返回给浏览器。 2、建立TCP连接。当获取到IP之后,就开始与所请求的服务器建立T 阅读全文
posted @ 2021-08-09 14:57 holmes_now 阅读(1031) 评论(0) 推荐(0)
摘要: 1. 虚拟内存有什么用?为什么要有虚拟内存? 虚拟内存:操作系统为每一个进程分配一个独立的地址空间,就是虚拟内存。虚拟内存与物理内存存在映射关系,通过页表寻址完成虚拟地址和物理地址的转换。 为什么要用虚拟内存:因为早期的内存分配方法存在以下问题: (1)进程地址空间不隔离。会导致数据被随意修改。 ( 阅读全文
posted @ 2021-08-09 12:25 holmes_now 阅读(1181) 评论(0) 推荐(1)
摘要: 分页和分段有什么区别(内存管理)? 段式存储管理是一种符合用户视角的内存分配管理方案。在段式存储管理中,将程序的地址空间划分为若干段(segment),如代码段,数据段,堆栈段;这样每个进程有一个二维地址空间,相互独立,互不干扰。段式管理的优点是:没有内碎片(因为段大小可变,改变段大小来消除内碎片) 阅读全文
posted @ 2021-08-09 12:12 holmes_now 阅读(2843) 评论(0) 推荐(0)
摘要: 1). 死锁的概念 通俗的讲,就是两个或多个进程无限期的阻塞、相互等待的一种状态。 2). 死锁产生的四个必要条件 互斥:至少有一个资源必须属于非共享模式,即一次只能被一个进程使用;若其他申请使用该资源,那么申请进程必须等到该资源被释放为止; 占有并等待:一个进程必须占有至少一个资源,并等待另一个资 阅读全文
posted @ 2021-08-09 12:11 holmes_now 阅读(757) 评论(0) 推荐(0)
摘要: 封装:也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是面向对象的特征之一,是对象和类概念的主要特性。 继承(inheritance):C++通过类派生机制来支持继承。被继承的类型称为基类或超类,新产生的类为派生类或子类。保持已有类的 阅读全文
posted @ 2021-08-09 11:53 holmes_now 阅读(643) 评论(0) 推荐(0)
摘要: C++中的虚函数的作用主要是实现多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。 虚函数表 C++ 虚函数(Virtua 阅读全文
posted @ 2021-08-09 11:45 holmes_now 阅读(36) 评论(0) 推荐(0)
摘要: 单例模式 单例模式顾名思义,保证一个类仅可以有一个实例化对象,并且提供一个可以访问它的全局接口。实现单例模式必须注意一下几点: 单例类只能由一个实例化对象。 单例类必须自己提供一个实例化对象。 单例类必须提供一个可以访问唯一实例化对象的接口。 单例模式分为懒汉和饿汉两种实现方式。 懒汉单例模式 懒汉 阅读全文
posted @ 2021-08-09 11:42 holmes_now 阅读(49) 评论(0) 推荐(0)
摘要: 1.STL六大组件? 容器,迭代器,算法,仿函数,空间配置器,容器配接器。 容器:各种数据结构,如vector、list、deque、set、map等,用来存放数据,从实现角度来看,STL容器是一种class template。 算法:各种常用的算法,如sort、find、copy、for_each 阅读全文
posted @ 2021-08-09 11:13 holmes_now 阅读(60) 评论(0) 推荐(0)
摘要: auto_ptr、unique_ptr策略:建立所有权概念,对于特定的对象,只有一个智能指针可以拥有它,这样只有拥有对象的智能指针的构造函数才能删除该对象。然后,让赋值操作转让所有权。unique_ptr的策略更严格。 shared_ptr:采用引用计数。类中有一个计数器,赋值时加1,过期时减1,当 阅读全文
posted @ 2021-08-09 11:09 holmes_now 阅读(67) 评论(0) 推荐(0)
摘要: 五种IO模型1:阻塞IO:再内核将数据准备好之前,系统调用会一直等待;(所有的套接字默认都是阻塞方式) 2:非阻塞IO:如果内核未将数据准备好,系统调用仍然会直接返回,并且返回EWOULDBLOCK错误码。(非阻塞IO往往需要程序员循环的方式反复尝试读写文件描述符,这个过程成为轮回。对cpu来说是很 阅读全文
posted @ 2021-08-09 10:47 holmes_now 阅读(343) 评论(0) 推荐(0)
摘要: 粘包、拆包发生原因发生TCP粘包或拆包有很多原因,现列出常见的几点,可能不全面,欢迎补充,1、要发送的数据大于TCP发送缓冲区剩余空间大小,将会发生拆包。2、待发送数据大于MSS(最大报文长度),TCP在传输前将进行拆包。3、要发送的数据小于TCP发送缓冲区的大小,TCP将多次写入缓冲区的数据一次发 阅读全文
posted @ 2021-08-09 10:34 holmes_now 阅读(330) 评论(0) 推荐(1)
摘要: C++内存管理中内存泄露(memory leak)一般指的是程序在申请内存后,无法释放已经申请的内存空间,内存泄露的积累往往会导致内存溢出。 一、内存分配方式 通常内存分配方式有以下三种: (1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量, 阅读全文
posted @ 2021-08-09 10:32 holmes_now 阅读(67) 评论(0) 推荐(0)
摘要: 关键问题点:const 属于修饰符 ,关键是看const 修饰的位置在哪里 1、const int *a 这里const 修饰的是int,而int定义的是一个整值 因此*a 所指向的对象 值 不能通过 *a 来修改,但是 可以重新给 a 来赋值,使其指向不同的对象 eg: const int *a 阅读全文
posted @ 2021-08-09 10:18 holmes_now 阅读(163) 评论(0) 推荐(0)
摘要: C++的hash表中有一个负载因子loadFactor,当loadFactor<=1时,hash表查找的期望复杂度为O(1).因此,每次往hash表中添加元素时,我们必须保证是在loadFactor <1的情况下,才能够添加。 因此,当Hash表中loadFactor==1时,Hash就需要进行re 阅读全文
posted @ 2021-08-09 09:45 holmes_now 阅读(152) 评论(0) 推荐(0)
摘要: 红黑树是一种自平衡的二叉查找树。 1.每个结点是红色或者黑色的。 2、根结点是黑色的。 3、每个空结点(NULL/NIL)是黑色的。(这里将空结点作为一个特殊的结点对待,设定他们必须是黑色的。) 4、如果一个结点是红色的,则它的左右子结点都必须是黑色的。(但黑色结点的子结点可以是黑色的。) 5、对任 阅读全文
posted @ 2021-08-09 09:08 holmes_now 阅读(286) 评论(0) 推荐(0)
摘要: 1.C++ this 指针介绍一下 通常在class定义时要用到类型变量自身时,因为这时候还不知道变量名(为了通用也不可能固定实际的变量名),就用this这样的指针来使用变量自身。一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。 阅读全文
posted @ 2021-08-09 09:07 holmes_now 阅读(22) 评论(0) 推荐(0)
摘要: 原因如下 B+树能显著减少IO次数,提高效率 B+树的查询效率更加稳定,因为数据放在叶子节点 B+树能提高范围查询的效率,因为叶子节点指向下一个叶子节点 索引如何优化: 慢查询日志、查磁盘的I/O读写的数据量、show status MySQL可以设置慢查询日志,当SQL执行的时间超过我们设定的时间 阅读全文
posted @ 2021-08-09 08:58 holmes_now 阅读(205) 评论(0) 推荐(0)
摘要: 输入域名到获取页面的过程 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址; 解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接; 浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报 阅读全文
posted @ 2021-08-09 08:56 holmes_now 阅读(59) 评论(0) 推荐(0)