![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
校招八股文
沉香营
在婚礼上多喝几杯,祝我年少有为。
展开
-
浏览器对同一Host建立的TCP连接到的数量有没有限制?
肯定不能只开一个TCP连接顺序下载,那样用户肯定等的很难受,但是如果每个图片都开一个TCP连接发送一个HTTP请求,那么电脑或者服务器都可能受不了,要是有1000张图片的话总不能开1000个TCP连接吧,你电脑同意NAT也不一定会同意。或者用不了HTTPS(现实中的HTTP2都是在HTTPS上实现的,所以只能使用HTTP/1.1)那浏览器就会在一个HOST上建立多个TCP连接,连接的数量的最大限制取决于浏览器设置,这些连接在空闲的时候被浏览器用来发送新的请求,如果所有的连接都正在发送请求呢?原创 2023-09-20 09:23:27 · 258 阅读 · 1 评论 -
一个TCP连接中HTTP请求发送可以一起发送吗(比如一起发三个请求,再三个响应一起接收)?
HTTP/1.1中存在一个问题,单个TCP连接在同一时刻只能处理一个请求,意思是说:两个请求的生命周期不能重叠,任意两个HTTP请求从开始到结束的时间在同一个TCP连接里不能重叠。在最开始的时候,可以让附近的用户前往同一个地点,由快递小哥同时处理换新问题,但是因为这样怕影响用户的使用体验,所以公司禁止了这种行为。(两个请求的生命周期不能重叠,任意两个HTTP请求从开始到结束的时间在同一个TCP连接里不能重叠)在某个快递运输公司上班的快递小哥,每一次上门换新的时候只能在一个时间点处理一个用户换新的问题。原创 2023-09-20 08:47:55 · 346 阅读 · 1 评论 -
为什么服务器会缓存这一项功能?是如何实现的?
这让我想到了某东APP它的仓储分散在全国各地,有大型仓储,也有小型仓储。这样就不会出现一个仓储因货物居多而造成物流运输困难的情况(缓解服务器压力),用户在某东上面下单的物品都会根据用户下单的地址从距离用户最近的仓储发出(缓存通常位于内存中,读取缓存的速度更快。并且缓存服务器在地里位置上也有可能比源服务器来的近),这样讲加快客户收到物品的速度(降低客户端获取资源的延迟)缓存通常位于内存中,读取缓存的速度更快。并且缓存服务器在地理位置上也有可能比源服务器来的近,例如浏览器缓存。让客户端浏览器进行缓存。原创 2023-09-20 07:55:19 · 68 阅读 · 1 评论 -
C++三大特性封装,继承,多态简要概括
我们发现在 定义这些类时,下级别的成员除了拥有上一级的共性,还拥有自己的特性。类在设计时,可以把属性和行为放在不同的权限下,加以控制。静态多态:函数重载和运算符重载属于静态多态,复用函数名。在设计类的时候将属性和行为写在一起,表现事物。猫 狗。动态多态的函数地址晚绑定 运行时确定函数地址。将属性和行为作为一个整体,表示生活中的事物。静态多态的地址早绑定 编译阶段确定函数地址。动态多态:派生类和虚函数实现运行时多态。小猫 大猫 小狗 大狗。静态多态和动态多态的区别。原创 2023-09-20 07:38:19 · 46 阅读 · 1 评论 -
生动讲解C++中define宏定义和const的区别
const在程序运行中只有一个备份,且可以进行常量折叠,能将复杂的表达式计算出的结果放入常量表。(define只做替换,不做类型检查和计算,也不求解,容易产生错误,一般最好加上一个大括号包含全部的内容,要不然很容易出错)define只做替换,不做类型检查和计算,也不求解,容易产生错误,一般最好加上一个大括号包含住全部的内容不然很容易出错。define是在编译的预处理阶段起作用,而const是在编译,运行的时候起作用。(而const是在编译,运行的时候起作用)//哈哈哈,我没体验过只是听说。原创 2023-09-19 20:56:41 · 160 阅读 · 0 评论 -
生动讲解C++中struct和class的区别
C语言中:struct是用户自定义数据类型,C++中的struct是抽象数据类型,支持成员函数的定义,C++中的struct能继承,能实现多态。C中struct是没有权限设置的,且struct中只能是一些变量的集合体,可以封装数据却不可以隐藏数据,而且成员不可以是函数。(两者中如果不对成员不指定公私有,struct默认是公有的,class默认是私有的)两者中如果不对成员不指定公私有,struct默认是公有的,class则默认是私有的。class 和 struct都是两位有子女,有妻子,有财富的中年人。原创 2023-09-19 20:20:18 · 41 阅读 · 0 评论 -
C++中值传递,指针传递,引用传递的区别和效率
1.值传递:有一个形参向函数所属的栈拷贝数据的过程,如果值传递的对象是类对象或是大的结构体对象,将耗费一定的时间和空间(耗时)2.指针传递:同样有一个形参向函数所属的栈拷贝数据的过程,但拷贝的数据是一个固定为4字节的地址。3.引用传递:同样有上述的数据拷贝过程,但其是针对地址的,相当于为该数据所在的地址起了一个别名。//地址传递 a = 20 b = 10。重点记忆这句话:有一个形参向所属的栈拷贝数据的过程。这三个的区别大概是知道的,就是不知道具体细节。值传递,指针传递,引用传递的区别和效率。原创 2023-09-19 19:45:40 · 257 阅读 · 0 评论 -
生动讲解MYSQL中MySAM和InnoDB实现B树索引方式的区别是什么?
InnoDB,其数据文件本身就是索引文件,相比MyISAM,索引文件和数据文件是分离的,其表数据文件本身就是按B+Tree组织的一个索引结构,树的节点data域保存了完整的数据记录,这个索引的key是数据表的主键,因此InnoDB表本身就是主索引,这被称为聚簇索引或者聚集索引,而其余的索引都作为辅助索引,辅助索引的data域存储相应主键的值而不是地址,这也是和MyISAM不同的地方。因此,在设计表的时候,不建议使用过长的字段为主键,也不建议使用非单调的字段作为主键,这样会造成主索引频繁分裂。原创 2023-09-19 10:18:00 · 58 阅读 · 0 评论 -
生动讲解Innodb为什么要用自增id作为主键
如果使用非自增主键(如身份证号或者学号等),由于每次插入主键的值近似于随机,因此每次插入新纪录都要被插到现有索引页的中间某个位置,频繁的移动,分页操作造成了大量的碎片,得到了不紧凑的索引结构,后续不得不通过OPTIMIZE TABLE来重建表并优化填充页面。前几年的时候新冠疫情还在国内传播,因此需要经常的做核酸,在学校里做核酸最麻烦的就是要排队,每当一个学生要去做核酸的时候,就会自动的排到当前队列的末尾,当一个队伍排队排满的时候就会自动的又排一个新的队伍出来。但是,如果在排队的过程中频繁有老师跑过来插队。原创 2023-09-19 09:19:58 · 97 阅读 · 0 评论 -
生动讲解数据库中为什么使用索引
在没有号码牌之前阿姨在麻辣烫好了之后通常会喊一句,麻辣烫好啦,同学们过来拿自己的哈别弄错了哈,有了号码牌之后在麻辣烫好了之后阿姨会按照麻辣烫上的号码牌一个一个喊号码。阿姨手里的号码牌一定都是有一个成双成对的,例如1号号码牌有且两个,2号号码牌有且只有两个,绝对不能出现1号号码牌有四个的情况,要是这样的话,就会把麻辣烫给弄混了。同学们在食堂排队买麻辣烫,自己选完自己想吃的东西之后付完钱,把东西讲给阿姨,阿姨会拿两个号码牌,一个挂在对应同学的碗的外面,一个交给同学。(将随机IO变为顺序IO)原创 2023-09-19 08:14:38 · 44 阅读 · 0 评论 -
什么是非关系型数据库?
在数据结构中哈希表也是采用键值对的形式进行存储的,并且哈希表对于存储于其中的数据的读和写的时间复杂度均为O(1),并且哈希表哈希表可以定义成各种各样的类型。在国内广袤(数据量巨大)的大地上需要有一台很猛(高可用)的服务器实时(日志系统)的记录着环境(地理位置存储)的变化。(它的读写性能高易于拓展,可分为内存型数据库和文档型数据库,比如Redis,Mongodb,HBase)哈希表对于存储于其中的数据的读和写的时间复杂度均为O(1),并且哈希表可以定义成各种各样的类型。八股文&栗子一一对应。原创 2023-09-19 07:47:16 · 250 阅读 · 0 评论 -
关系型数据库和非关系型数据库的区别
举个栗子:突然发现这个问题我背了很多遍了但是还是忘了。。。真是脑子不好用将关系型数据库理解为数据结构中的 二叉树二叉树嘛,和现实中的大树还是很相似的,一层一层的叶子,一个根such as 下面是一个很草率的二叉树 12 23 4 4 3乍一看还是很像现实中的大树的因为看数据结构中的二叉树很像现实中的大树,根节点就是现实中大树的最顶层,下面的每一层就像是现实生活中大树的一层层叶子,而且在二叉树中每个节点间都是有对应关系的,那个节点是那个节点的父节点,那个节点是那个节点的子节点(容易理解,因为其采用了关系模型来原创 2023-09-13 22:07:05 · 38 阅读 · 2 评论 -
三.OSI的七层模型分别是?各自的功能是什么?
举个栗子md等我有钱了,豆浆买一杯喝一杯应用层:就是各种各样的手机软件呀,电脑软件之类的,还有各种各样的web应用(各种应用程序,包括web应用)表示层:使用qq或者微信发送一个文件的时候,qq或者微信会对文件的格式进行标识,如果是图片的话就标明.jpg如果是视频的话就标明mp4.同时为了减少服务器的压力,会对用户发送的程序进行压缩功能,也为了防止用户信息泄露,对用户信息进行加密会话层: 比如正在玩王者荣耀,正在进行紧张激烈的对局,和对手喷了起来。对面说脏话了,你肯定是要反击回去也问候一下对面。这叫礼尚往来原创 2023-09-13 22:05:26 · 80 阅读 · 2 评论 -
生动讲解C++中结构体指针对齐问题
举个栗子:背景:快递员为了运输方便于是将很多个小的快递盒子放入一个大的盒子中为了在寻找大盒子中的快递更加方便,快递员把小盒子按照自己配送的顺序有规律的放在大盒子中去,第一个放进去的小快递和大快递的位置是一样的(结构体内成员按声明顺序进行存储,第一个成员地址和整个结构体地址相同)其中的小快递中也会有相对来说比较大的,因此为了可以多摆进去一些小快递,其它的小快递都要配合那个相对较大的小快递进行拜访(未特殊声明时,按结构体中size最大的成员对齐(若有double成员,按8字节对齐。))为了防止快递员对大盒子的空原创 2023-09-13 22:02:17 · 106 阅读 · 2 评论 -
C++中在main执行之前和之后的代码可能是什么?
举个栗子:一个小青年准备去开车车子未启动之前呢,司机需要去开启车上的一些设备,例如开启行车记录仪呀,检查车子的油箱中是不是还有汽油呀,检查安全带有没有坏呀,检查车子上的设备是不是好的呀,开启导航等一系列与车子相关的部件(main函数执行之前主要就是初始化系统相关资源)1.司机给车子加满了汽油(设置栈指针)2.司机戴上安全带并且开启行车记录仪(初始化静态static变量和global全局变量,即.data段的内容)3.坐在车上的司机感觉夏天太热了,外加上感觉一会的驾驶途中太枯燥乏味了,于是打开了空调,并且播放原创 2023-09-13 21:59:22 · 148 阅读 · 2 评论 -
什么是TCP粘包/拆包?发生的原因是什么?
而MSS值太大,则会增加分片和重组的可能性,增加接收方处理分片包的资源和时间开销。MSS的值一般为MTU值减去IP数据包包头的大小和TCP数据段的包头大小。例如,在以太网上,MSS的值通常是1460字节。可以把MSS看作是一个箱子,TCP数据包看作是一个打工人,箱子的容量有限定,因此每次打工人在把东西装到箱子里的时候,都要注意东西是否超出箱子的容量,如果超出来了,超出的部分就要重新再拿一个箱子装起来。总结来说,MSS是TCP数据包每次传输的最大数据分段大小,它的值应该合理选择,以保证传输效率和避免分片。原创 2023-09-06 21:37:16 · 105 阅读 · 1 评论 -
说一下一次完整的HTTP请求过程包括哪些内容
一天,班长和排长所在的连队需要去执行一项任务,班长和排长在任务中需要紧密联系,于是乎班长和连长用呼叫机建立了紧密的联系(建立起客户机和服务器的连接)。连长在收到班长发出汇报之后,想了一会,使用密语将事情的解决方案发送给了班长。客户端浏览器---将返回的内容解析并呈现给用户--->用户。客户机<---收到请求给予响应信息---服务器。建立连接后,客户机发送一个请求给服务器。客户机---发送一个请求--->服务器。客户机<---发起连接--->服务器。客户机<---断开连接--->服务器。原创 2023-09-06 19:57:43 · 228 阅读 · 3 评论