自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

原创 力扣13.罗马数字转整数

20.如果第一个字符的值小于下一个字符的值,比如IV那么值就是V-I。19.设置value存第一个字符的值。4.定义一个哈希存字符和对应的数字。16.定义ans存最终数字。17.定义n存字符串长度。

2024-09-13 12:10:10 228

原创 力扣14.最长公共前缀

19.如果两个for循环终止后一直没有return,说明他们的最长公共前缀都是第一个字符串,那么直接return返回。(2)如果第j个字符串的第i位跟第一个字符串的第i位不相等,说明公共前缀结束。14.(1)如果i等于当前第j个字符串的长度,说明到头了,不会再有公共前缀了。8.将他的长度作为范围,因为超范围了之后就不会再有公共前缀了。9.将字符串数组的长度也作为范围,意思是便利字符串数组中的字符串。11.开始第一层循环,依次遍历第一个字符串的每一位。12.将第一个字符串的每i位存储。

2024-09-13 12:09:33 358

原创 死锁以及如何避免死锁

要避免死锁问题,一般方法是打破循环等待条件,让两个线程之间获取资源的顺序不要穿插在一起,可以让一个线程先获得两个资源,使用完毕后释放,另一个线程再获取这两个资源,就可以保证两个线程都能正常执行。:对于一些可以复制的资源,可以为每个需要该资源的进程创建一个副本,这样每个进程都有自己独立的资源,就不需要竞争同一个资源,从而避免了互斥条件。在一个进程中,每一个线程所占有的资源同时被另一个线程申请,这些线程获取资源的顺序构成了环形链,也就是前一个线程占有后一个线程所申请的资源。请说一下,死锁是怎么产生的?

2024-09-13 12:08:55 276

原创 生产者与消费者模型

当多个生产者和消费者同时访问缓冲区时,可能会出现数据竞争问题,导致数据不一致。例如,两个消费者同时从缓冲区读取同一个数据项,或者生产者在写入数据时被消费者干扰。,当生产者生产速度快于消费者时,数据可以暂存在缓冲区中,避免生产者阻塞或数据丢失。例如,当缓冲区为空时,消费者线程等待;当有新的数据放入缓冲区或有数据被取出时,通过条件变量通知相应的线程。同样,消费者也不需要关心数据是如何生产的,只从缓冲区中获取数据进行消费。使用互斥锁:对缓冲区的访问进行加锁,确保同一时间只有一个线程可以访问缓冲区。

2024-09-13 12:08:15 306

原创 TCP与HTTP的关系

确保网页、图片、文件等资源能够准确无误地从服务器传输到客户端。应用层的协议通常需要借助传输层的协议来实现网络通信从而访问网页等资源。流量控制可以确保发送方不会发送过多的数据导致接收方无法处理;这是我面试遇到的问题,整理下来了,希望对大家有帮助!提供了可靠连接,当我们在请求网页的时候,需要先通过。拥塞控制则可以避免网络拥塞,保证数据的稳定传输。TCP 具有流量控制和拥塞控制机制,是传输控制协议,他在传输层。是超文本传输协议,在应用层。三次握手建立连接,这样就能。

2024-09-13 12:07:13 502

原创 为什么HTTPS会引入SSL/TLS协议

它通过结合哈希函数和密钥,对数据进行计算,生成一个固定长度的认证码。协议,这个协议里面有强大的加密算法,对数据进行加密,即使被窃取,也无法读取其中的内容;在网络通信中,数据可能会经过多个中间节点,如路由器、交换机、代理服务器等。实现消息认证码(MAC)来验证数据的完整性,确保数据在传输过程中没有被篡改。这时我面试遇到过的问题,整理了一下,希望对大家有帮助!送的认证码进行比较,以确定数据是否在传输过程中被篡改。如果不对,就会提示用户存在安全隐患,不要访问。网站时,浏览器会验证服务器的数字证书,

2024-09-13 12:03:45 422

原创 HTTP与HTTPS的区别

HTTPS 需要进行加密和解密操作,以及额外的证书验证等步骤,所以它的传输效率相对 HTTP 会低一些。这可能会导致页面加载速度稍慢,比如在加载一个内容丰富的网页时,使用 HTTP 可能会比使用 HTTPS 更快一些。运行 HTTPS 的服务器需要更多的计算资源来进行加密和解密操作,以及处理证书相关的任务。客户端会验证证书的有效性,如果证书无效或存在问题,客户端会发出警告,提醒用户可能存在安全风险。例如,一些大型的新闻媒体网站现在也都使用了 HTTPS,以保护用户的隐私和数据安全。三次握手之后便可进行。

2024-09-13 12:02:40 1726

原创 MySQL语句的执行流程/内部构造

(2)优化器:对SQL语句进行优化,选择索引。(3)执行器:调用存储引擎接口,返回结果。分支2:(1)分析器:对SQL语句进行分析,判断是否合法。分支1:查询缓存:在缓存中查询是否查询过这条语句。连接器:与客户端建立连接。

2024-09-11 16:15:58 403

原创 数据库三范式

要求每一条记录都必须可以被唯一的区分;选取一个能区分每个实体的属性或属性组,作为实体的唯一标识;也就是实体的属性必须完全依赖于关键字;(比如好多人都叫张伟,但是每个张伟的身份证号不同,可以根据不同身份证号来区别张伟)一个数据库表中不包含已在其他表中已包含的非主键信息;(比如学生表里有教师名,教师表里有教师名和教师编号,学生表里就不能有教师编号,不能有冗余的信息)强调列的原子性,数据库表的每一列我们都要把他分割到不能再分割的的原子数据项;(比如黑龙江省,哈尔滨市,道外区,

2024-09-11 16:14:08 92

原创 MySQL事务

例如,在可重复读隔离级别下,一个事务在执行过程中多次读取同一数据时,结果是一致的,避免了不可重复读的问题。如果在转账过程中出现任何问题,如系统故障或网络中断,事务可以回滚到转账前的状态,避免出现数据不一致的情况。例如,在一个商品库存管理系统中,如果一个事务减少了商品的库存数量,那么必须确保库存数量不能小于零,否则事务就会失败回滚。例如,在一个银行转账的事务中,从账户 A 转出一定金额并转入账户 B,这个过程中如果出现任何问题,整个转账操作都会被撤销,确保数据的一致性。

2024-09-11 16:13:27 426

原创 聚簇与普通(非聚簇)/覆盖

3.插入或修改时可能会造成页分裂,因为一个节点是一个磁盘块中的一页,有时可能这页刚好满了,而后在插一个就会造成页分裂。非聚簇索引:将非主键的数据设置为索引,非叶子结点存索引,叶子结点存作为索引的数据和主键;聚簇索引:将主键设置为索引,叶子结点存主键,非叶子结点存主键和完整数据;没有主键时用唯一非空索引;覆盖索引:当在非聚簇索引中查询作为非聚簇索引的数据时,就不需要回表;1.必须按顺序存储数据,如果不是,那么每次插入数据后的调整成本将特别高,所以应设置自增主键。2.更新聚簇索引的代价很高,所以主键不能修改。

2024-09-09 14:49:21 164

原创 MySQL的索引

全文索引,哈希索引,二叉搜索树,平衡二叉树,B树和B+树

2024-09-09 14:48:36 879

原创 Mysql的查询指令

整理了一些Mysql的查询语句,希望对大家有帮助,祝大家心想事成万事如意!

2024-08-27 17:59:55 799 1

原创 Mysql函数

expr是时间间隔。● substr(str, n, len):截取子字符串,字符串 str 从 n 的位置截取长度为 len 的字符串,如果n为负数,则子字符串的位置起始于字符串结尾的n个字符。● replace(str, from_str, to_str):替换函数,字符串 str 中所有的字符串 from_str 均被 to_str 替换,然后返回这个字符串。● concat_ws(x, s1, s2, ...):指定分隔符的字符连接函数,x是连接分隔符,如果分隔符为 null,则结果为 null。

2024-08-27 17:58:03 843

原创 Mysql的常考表操作指令

DDL主要操作的是表的对象和结构,比如添加删除修改字段,重命名表,添加删除表。Create table [if not exists] 表名(但是在这里为了方便,小编把他们放在一起了,注意区分哦。DML操作数据,插入更新删除数据。啥也不写就相当于删除了。

2024-08-26 16:52:57 1141

原创 创建链表-头插法

【代码】创建链表-头插法。

2024-04-20 12:56:10 227

原创 创建链表-尾插法

【代码】创建链表-尾插法。

2024-04-20 12:38:03 200

原创 C++11新特性之final关键字

final修饰函数只能修饰虚函数,防止父类的函数被子类重写。

2024-04-18 13:15:18 190

原创 lambda捕获列表

lambda是C++11新特性之一,优点是:1.可以直接匿名定义目标函数或函数对象,不需要额外写一个函数2.lambda是一个匿名的内联函数。

2024-04-18 13:03:08 186

原创 c++模板

这里放代码给大家参考。

2024-04-17 20:02:40 191

原创 内联函数面试总结

面试时内联函数被问到的几率不大,但是还是要了解一下,以防万一。

2024-04-17 19:34:58 168

原创 白话版--数据库三范式

要求每一条记录都必须可以被唯一的区分;选取一个能区分每个实体饿的属性或属性组,作为实体的唯一标识;也就是实体的属性必须完全依赖于关键字;(比如身份证,个人信息完全依赖于身份证号)一个数据库表中不包含已在其他表中已包含的非主键信息;(比如学生表里有教师名,教师表里有教师名和教师编号,学生表里就不能有教师编号,不能有冗余的信息)强调列的原子性,数据库表的每一列我们都要把他分割到不能再分割的的原子数据项;(比如黑龙江省,哈尔滨市,道外区,xxx街道,xxx小区)

2024-04-16 16:44:58 640

原创 HTTP/1.1特性总结

因为当顺序发送的请求序列中的一个请求因为某种原因被阻塞时,在后面排队的所有请求也一同被阻塞了,会招致客户端一直请求不到数据,这也就是【队头阻塞】相当于,在客户端第一次请求后,服务器会下发一个装有客户信息的【小纸条】,后续客户端请求服务器时,再带上这个【小纸条】,服务器就能认得了。即在同一个TCP连接中,客户端可以发起多个请求,只要第一个请求发出去了,不必等其回来,就可以发第二个请求出去,可以减少整体的响应时间;总之,HTTP/1.1的性能一般般,后续的HTTP/2和HTTP/3就是在优化HTTP的性能。

2024-04-16 16:42:49 2481

原创 HTTP缓存

如果在第一次请求资源时,服务端返回的HTTP响应头同时有Etag和Last-Modified字段,那么客户端再下一次请求的时候,如果带上了ETag和Last-Modified字段信息给服务器,这时Etag优先级更高,也就是服务器会先判断ETag是否变化了,如果ETag有变化就不用再判断Last-Modified了,如果Etag没有变化,然后再看Last-Modified;服务器收到请求后发现有If-Modified-Since则与被请求资源的最后修改时间进行对比,如果最后修改时间较新,说明资源被修改过;

2024-04-15 19:26:46 367

原创 拥塞控制相关总结

网络拥塞:当某个阶段,网络中涌入大量数据包时,可能会导致路由器的转发不及时,大量数据包会陆续填满路由器的缓冲区,缓冲区满了,再涌入数据时就会造成数据的丢失,这时网络发生了拥塞。发送网络拥塞时,如果继续发送大量数据包,可能会导致数据包丢失,这时TCP就会触发重传机制,这样会使网络负担更重,于是会导致更大的延迟以及更多的丢包,这个情况就会进入恶性循环。触发条件:当经过慢启动和拥塞避免算法,cwnd慢慢增长,网络就会进入拥塞状态,于是会出现丢包现象,这时就需要对丢包进行重传,于是触发【拥塞发生算法】

2024-04-11 16:11:06 1085

原创 TCP重传机制总结

SACK选择性确认这种方式需要在TCP头部【选择】字段里添加SACK方法,他可以将已收到的数据的信息发送给发送方,这样发送方就可以知道哪些数据收到了,哪些没收到,这样就可以只重传丢失的数据;Duplicate Sack又称D-SACK,其主要是使用SACK来告诉发送方有哪些数据被重复接收了。

2024-04-09 14:40:09 532

原创 十分钟搞定TCP三次握手面试

因为TCP协议是全双工通信,就是两端都可以发送数据;三次握手的目的是确认自己和对方的发送接收功能都是正常的而如果只有两次握手,首先:因为TCP协议是全双工通信,就是两端都可以发送数据;而此时客户端能知道服务器可以接受自己发送的数据,而服务器不知道客户端能否收到自己发送的数据;这就违背了全双工通信的定义;其次:因为网络往往是非理想状态,客户端第一次发送给服务器的连接请求,有时由于网络拥塞,迟迟没有得到响应;触发超时重传而后第二次发送请求,服务器回应,连接建立;

2024-04-07 13:33:36 1626

原创 面试必问流量控制

如果发送方一直保持很快的速度发送数据,容易导致接收方处理不过来,触发重传机制,导致流量浪费;

2024-03-28 17:57:07 260

原创 面试必问-TCP三次握手

如果是两次的话,客户端第一次发的SYN包失效,又发了SYN2包。SYN1包突然恢复,发送给了服务器,服务器会认为是客户端又发起了新链接;2.服务器处于LISTEN状态,收到客户端发来的请求后回复SYN,服务器的初始序列号,ACK和确认应答序号为客户端初始序列号+1,服务器变为SYN_REVD状态。3.客户端收到服务器后,恢复ACK和确认应答号为服务器初始序列号+1,客户端变为ESTABLISHED状态,本次握手可以携带数据。4.服务器收到客户端的确认应答后,变为ESTABLISHED状态。

2024-03-27 16:38:25 459

原创 十分钟搞定TCP与UDP

TCP连接的两端都设有发送缓存和接受缓存,用来临时存放双方通信的数据。4.每条TCP链接只能是点对点(一对一),而UDP是一对多,多对一,多对多和一对一的交互通信。4.流量控制:当接收方来不及处理发送来的数据,能滑动窗口提示对方降低发送速录,防止包丢失。4.UDP没有拥塞控制,因此网络出拥塞不会使源主机的发送速率降低。5.TCP的逻辑通信信道是全双工的可靠信道,而UDP是不可靠信道。3.UDP没有拥塞控制,不会因为网络拥塞降低源主机的发送速率。5.UDP支持一对一,一对多,多对一和多对多的交互通信。

2024-03-24 19:46:53 374 1

原创 两道题帮你搞定单调栈~

(1)439.每日温度思路:利用栈存首元素后进入循环,若数组[i]比栈顶大,则将他们的差存入新定义的数组,若不大则存入栈等待后面的数据与他进行比较;代码:(2)下一个更大元素思路:此题将nums1存入哈希表代码:

2024-03-21 21:37:45 263 1

原创 十分钟搞定多态知识点

1.使用原因:当多态使用时,继承时编译器会把子类父类的析构处理成同名的,所以会调用父类析构,造成内存泄漏。2.解决方法:父类析构写成虚析构/纯虚析构,这样子类能释放,在子类析构的最后一行还会调用父类的析构。1.编译器在类中添加了续表指针vptr,指向虚表,类的对象被创建出来时自动拥有续表指针vptr,5.当子类继承抽象类时,必须重写父类的纯虚函数,否则子类也是抽象类。2.每个包含虚函数的类都有虚表,虚表是存放虚函数指针的数组。2.有纯虚函数的类是抽象类,虚函数是成员函数。1.虚表在编译时创建,不占内存。

2024-03-21 12:49:22 473 1

原创 搞定优先级队列?看我就够啦!

class Solution {public: vectorsmallestK(vector& vec,int k){ priority_queuemap; for(int i=0;i

2024-03-20 21:25:33 798 1

原创 c++面试必问17题

当父类的指针或引用指向子类对象时,编译器会通过父类的指针或引用找到子类对象中的虚表指针,然后通过虚表指针找到虚表,然后找到虚函数的地址进行调用。const修饰指针的时候,const在星号的左边修饰的是*a ,const在*的右边修饰的是a。他是用来初始化的,构造函数是给成员变量赋值的,并且初始化的顺序和成员变量声明的顺序一致。动态多态在运行阶段就能确定的多态:父类的指针或引用指向子类对象,在调用重写函数。this指针作为成员函数的隐含参数,在函数被调用的时候被赋值为对象的地址,

2024-03-17 16:41:14 603 1

原创 c++面试必问20题

首先常函数中的this 和非常函数的this不同,常函数的this *左 和 *右都被const修饰了(但是有的编译器不同,面试官问的话就说在vs上自己看的),所以常函数不能修改成员变量,常函数不能调用非常函数,因为非常函数的this 只有*的右边被const修饰了类型不匹配。类中的函数存放在代码区,所有对象访问的成员函数都是同一份代码,当不同对象调用同一个成员函数时,通过this区分在成员函数内修改的是哪个对象的成员变量。不可以,如果修改了this就无法在函数内区分修改的是哪个对象的成员变量了。

2024-03-14 19:25:28 704

原创 力扣023相交链表

a走1步,b走1步;其中谁走到头了,谁就从另一条链表的头节点继续走,如果他们最后相等,说明他们会相交;

2024-03-07 15:02:11 177

原创 力扣206反转链表

因为如果只有两个的话,cur往回指的话,链表就断了。next负责移动,cur负责反转,pre负责存储反转的链表;2.pre=cur,pre方向与cur一致,往回指☞。以此类推,最后pre,cur的指向都是往回指☞。3.cur=next,cur往后移动。1.cur反转方向,往回指☞。6.pre=cur,往回☞。4.next往后移动。5.cur再往回指☞。

2024-03-07 14:44:49 307

原创 搞定c++面试?看我就够了----每日精选五道题

(1)左值:有地址有数据;右值:没地址只有数据,表达式结束后就不存在的临时对象(2)左值引用可以用来接收函数返回值,右值引用不能。

2024-03-05 19:42:22 403 1

原创 期末复习or面试?看这一篇就够了--构造析构函数

构造函数的定义:没用返回值,没用(){},函数名与类名相同,可以有参数,可以重载·

2024-03-03 17:12:59 786

原创 期末复习or面试?看这一篇就够了---静态成员/函数

3.没用this指针所以不能访问普通成员变量和函数,只能访问静态成员变量和静态函数个类外部函数。1.不属于对象,属于类,可以直接用类名访问A::a或通过对象名访问。7.可以创造其他类作为数据类型的静态对象,但是注意传值方式。3.类的所有对象共享一个静态成员,访问时不用+this。1.属于类,通过类名调用或对象名调用。6.继承时子类与父类共享静态成员。4.类的对象共享一个静态成员函数。4.单独存放在静态区,不占内存。2.类内声明类外初始化。5.在编译过程中初始化。8.可以设置访问权限。5.可以设置访问权限。

2024-03-03 17:11:29 335

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除