自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【面试八股总结】单例模式实现详解

单例设计模式是⼀种确保⼀个类只有⼀个实例,并提供⼀个全局访问点来访问该实例的创建模式。

2024-07-12 21:31:16 963

原创 【面试八股总结】C++内存管理:内存分区、内存泄漏、new和delete、malloc和free

C++内存管理:内存分区、内存泄漏、new和delete、malloc和free

2024-07-10 17:18:06 801

原创 【面试八股总结】面向对象三大特性、虚函数、纯虚函数、虚继承

面向对象三大特性、虚函数、纯虚函数、虚继承

2024-07-09 16:06:09 995

原创 【面试八股总结】线程基本概念,线程、进程和协程区别,线程实现

线程基本概念,线程、进程和协程区别,线程实现

2024-07-08 21:57:30 937

原创 【面试八股总结】Redis数据结构及底层实现

Redis 提供了丰富的数据类型,常见的有五种数据类型:String(字符串),Hash(哈希),List(列表),Set(集合)、Zset(有序集合)

2024-06-18 16:56:14 1241

原创 【面试八股总结】死锁:产生条件、预防死锁、处理死锁、避免死锁

进程 P1 和 P2 所请求的资源都得不到满足,只有进程 P3 可以,让 P3 执⾏,之后释放 P3 拥有的资源,此时 A = (2 2 2 0)。一个小城镇的银行家,他向⼀群客户分别承诺了一定的贷款额度,算法要做的是判断对请求的满足是否会进入不安全状态,如果是,就拒绝请求;来实现,从⼀个节点出发进行深度优先搜索,对访问过的节点进行标记,如果访问了已经标记的节点,就表示有向图存在环,也就是检测到死锁发生。Has 表示已拥有的资源数,Max 表示总共需要的资源数,Free 表示还有可以使⽤的资源数。

2024-06-06 10:54:45 1031

原创 【面试八股总结】锁:互斥锁、自旋锁、读写锁、乐观锁、悲观锁

读优先锁期望的是,读锁能被更多的线程持有,以便提高读线程的并发性,它的工作方式是:当读线程 A 先持有了读锁,写线程 B 在获取写锁的时候,会被阻塞,并且在阻塞过程中,后续来的读线程 C 仍然可以成功获取读锁,最后直到读线程 A 和 C 释放读锁后,写线程 B 才可以成功获取写锁。,表示该数据的版本号,每当数据被修改,版本号+1。当「写锁」没有被线程持有时,多个线程能够并发地持有读锁,这大大提高了共享资源的访问效率,因为「读锁」是用于读取共享资源的场景,所以多个线程同时持有读锁也不会破坏共享资源的数据。

2024-06-05 14:54:52 874

原创 【面试八股总结】内存页面置换算法

并且LFU 算法只考虑了频率问题,没考虑时间的问题,比如有些页面在过去时间里访问的频率很高,但是现在已经没有访问了,而当前频繁访问的页面由于没有这些页面访问的次数高,在发生缺页中断时,就会可能会误伤当前刚开始频繁访问,但访问次数还不高的页面。为了完全实现 LRU,需要在内存中维护一个所有页面的链表,最近最多使用的页面在表头,最近最少使用的页面在表尾。」选择一个物理页,如果该物理页有被修改过(脏页),则把它换出到磁盘,然后把该被置换出去的页表项的状态改成「无效的」,最后把正在访问的页面装入到这个物理页中。

2024-06-04 19:53:40 643

原创 【面试八股总结】MySQL事务:事务特性、事务并行、事务的隔离级别

一、事务的特性ACID参考资料:小林coding一、事务的特性ACID一个事务是一个不可分割的工作单位,事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。原子性是通过来保证的。事务操作前和操作后,数据满足,数据库保持一致性状态。数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以。多个事务并发执行时,每个事务都看不到其他事务的中间状态。每个事务都应该感觉就像它是唯⼀在数据库上运行的事务⼀样。隔离性是通过或来保证的。

2024-05-30 11:49:20 994

原创 【面试八股总结】MySQL索引(二):B+树数据结构、索引使用场景、索引优化、索引失效

B 树是一个,每一个节点最多可以包括 M 个子节点,M 称为 B 树的阶,所以 B 树就是一个多叉树。叶子节点(最底部的节点)才会存放实际数据(索引+记录),非叶子节点只会存放索引;所有索引都会在叶子节点出现,叶子节点之间构成一个有序链表;非叶子节点的索引也会同时存在在子节点中,并且是在子节点中所有索引的最大(或最小)。非叶子节点中有多少个子节点,就有多少个索引;

2024-05-28 20:23:42 861

原创 【面试八股总结】MySQL索引(一):索引分类

索引就是帮助存储引擎快速获取数据的一种数据结构,形象的说就是索引是数据的目录。

2024-05-28 15:44:39 854

原创 【面试八股总结】C++11新特性:智能指针

如果你拷贝⼀个unique_ptr,那么拷贝结束后,这两个unique_ptr都会指向相同的资源,造成在结束时对同⼀内存指针多次释放而导致程序崩溃。如果⼀块 内存被shared_ptr和weak_ptr同时引⽤,当所有shared_ptr析构了之后,不管还有没有weak_ptr引⽤该内存,内存也会被释放。,每当多⼀个指针指向该对象时,指向该对象的所有智能指针内部的引用计数加1,每当减少⼀个智能指针指向对象时,引用计数会减1,当。,⼀个非空的unique_ptr总是拥有它所指向的资源。

2024-05-09 22:24:09 1127

原创 【面试八股总结】Linux系统下的I/O多路复用

这在并发程序中会引起一个问题,假设一个线程在读取完某个socket上的数据后开始处理该数据,而在数据处理过程中该socket又有新的数据可读(EPOLLIN再次被触发),此时另一个线程被唤醒来读取这些新的数据,于是就出现了两个线程同时操作一个socket的局面。epoll使用一组函数完成任务,而不是一个函数,并且epoll把用户关心的文件描述符上的事件放在内核里的一个事件表中,不需要像select和poll一样每次调用都需要重复传入文件描述符集合。但对于大量的文件描述符,poll的性能也可能变得不够⾼效。

2024-04-22 21:59:25 1219

原创 【面试八股总结】排序算法(二):堆排、计数、桶排、基数

这样就把最大值放到了数组最后边。把数组长度n-1,再进行构造堆把剩余的第二大值放到堆顶,输出堆顶(放到剩余未排序数组最后面)。依次类推,直至数组排序完成。

2024-04-16 19:22:00 1183

原创 【面试八股总结】排序算法(一):冒泡、选择、插入、快排、希尔、归并

冒泡排序就是把小的元素往前交换或者把大的元素往后交换,比较相邻的两个元素,交换也发生在这两个元素之间。

2024-04-11 23:06:36 947 1

原创 【面试八股总结】进程(二):进程调度与进程同步

参考资料 :小林Coding、阿秀、代码随想录当⼀个进程的状态发⽣改变时,操作系统需要考虑是否要换⼀个进程执行,这就需要⽤到“进程调度算法”。不同的调度算法具有不同的特性,因为使用以下标准比较处理机调度算法的性能: 每次从就绪队列选择最先进入队列的进程,然后一直运行,直到进程退出或被阻塞,才会继续从队列中选择第一个进程接着运行。 非抢占式的调度算法,按照请求的顺序进行调度。 有利于长作业,但不利于短作业,因为短作业必须一直等待前面的长作业执行完毕才能执行,而长作业又

2024-04-11 21:07:30 1437

原创 【牛客SQL快速入门】常用函数

第二层嵌套相当于是取出’180,78kg'的。

2024-04-11 19:45:46 989

原创 【牛客SQL快速入门】高级查询

AVG()为平均值函数,通过对表中行数计数并计算其,求得该列的平均值。AVG() 可用来,也可以用来返回特定列或行的平均值。COUNT()函数为计数函数,可利用 COUNT()。MAX()返回指定列中的最大值。MAX在使用时,MIN()的功能正好与 MAX()功能相反,它返回。与 MAX() 一样,MIN()要求指定列名SUM()用来返回指定列值的和(总计)。在一些聚集运算中,容易出现结果为非整数的情况,这时候如果想要,语法格式为,其中value代表想要限制小数位数的字段,n代表想要限制的小数位数。

2024-04-09 16:13:34 990

原创 【牛客SQL快速入门】基础查询

查询所需的列名写在 SELECT 关键字之后,FROM 关键字指出从哪个表中查询数据。

2024-04-08 19:30:55 640

原创 【C++从0到1-黑马程序员】STL常用算法

algorithm>是所有STL头文件中最大的一个,范围涉及到比较、 交换、查找、遍历操作、复制、修改等等。merge 容器元素合并,并存储到另一容器中。查找指定元素,找到返回指定元素的迭代器,找不到返回结束迭代器end()二分查找法查找效率很高,值得注意的是查找的容器中元素必须是。将区间内满足条件的元素,替换成指定元素。两个容器元素合并,并存储到另一容器中。容器内指定范围的元素拷贝到另一容器中。将容器内指定范围的旧元素修改为新元素。

2024-04-06 21:58:40 806

原创 【面试八股总结】进程(一):基本概念、进程状态、进程控制与通信方式

一、什么是进程?参考资料 :小林Coding、阿秀、代码随想录一、什么是进程?1. 基本概念进程是具有独立功能的程序在一个数据集合上运行的过程,是。2. 进程控制块系统通过进程控制块PCB描述进程的进本情况和运行状态,进而控制和管理进程进程,,包括以下信息:进程描述信息:进程标识符、用户标识符;进程控制和管理信息:进程当前状态、进程优先级;进程资源分配清单:有关内存地址空间或虚拟地址空间的信息,所打开文件的列表和所使用的I/O设备信息;

2024-04-04 18:53:12 1308 2

原创 【C++从0到1-黑马程序员】STL函数对象

​​​​​​C++从0到1 - 黑马程序员 课程学习笔记。

2024-04-04 14:45:07 837 1

原创 【面试八股总结】传输控制协议TCP(三):拥塞控制、可靠传输与重传机制

慢启动是指TCP连接刚建立,一点一点地提速,试探一下网络的承受能力,以免直接扰乱了网络通道的秩序。

2024-04-02 15:27:21 1556 2

原创 【面试八股总结】传输控制协议TCP(二):报文段与流量控制

若此时接收方的应用进程以交互方式每次只读取一个字节,于是接收方又发送窗口大小为一个字节的更新报文,发送方应邀发送一个字节的数据(发送的 IP 数据报是 41 字节长),于是接收窗口又满了,如此循环往复。若发送应用进程把要发送的数据逐个字节地送到 TCP 的发送缓存,则发送方就把第一个数据字节先发送出去,把后面到达的数据字节都缓存起来。发送方 TCP 每次接收到一字节的数据后就发送。当发送方收到对第一个数据字符的确认后,再把发送缓存中的所有数据组装成一个报文段发送出去,同时继续对随后到达的数据进行缓存。

2024-04-02 11:12:18 1192 1

原创 【面试八股总结】传输控制协议TCP(一):基本概念、连接的建立与释放(三次握手、四次挥手)

TCP是传输控制协议Transmission Control ProtocolTCP 是面向连接的、可靠的、基于字节流的传输层通信协议。

2024-04-01 15:12:43 1407 1

原创 【C++从0到1-黑马程序员】STL容器(三)

插入操作和删除操作都不会导致原有list迭代器的失效,在vector中是不成立的。由于链表的存储方式并不是连续的内存空间,因此链表中的迭代器支持前移和后移,属。结点的组成:一个存储数据元素的数据域,另一个是存储下一个结点地址的指针域。set不允许容器中有重复的元素;list不支持使用[]和at方式访问容器中的元素,原因是。,不适用连续线性空间存储数据,迭代器也是不支持随机访问的。不支持随机访问迭代器的容器,内部会提供对应的一些算法。将容器中的元素反转,以及将容器中的数据进行排序。

2024-03-31 21:30:00 914 1

原创 【C++从0到1-黑马程序员】STL容器(二)

3. Deque容器3. Deque容器3.1 deque基本概念功能:,可以对头端进行插入删除操作deque与vector区别:vector对于头部的插入删除效率极低,数据量越大,效率越低deque相对而言,对于头部的插入删除速度会比vector快vector访问元素时的速度会比deque快deque内部工作原理:deque内部有个中控器,维护每段缓冲区中的内容,缓冲区中存放真实的数据中控器维护的是每个缓冲区的地址,使得使用deque时像一片连续的内存空间。

2024-03-31 16:57:11 270 1

原创 【面试八股总结】超文本传输协议HTTP(二):缓存技术、版本更新、请求/响应过程

将资源(如⽹⻚、图像、脚本等)的副本存储在客户端或中间代理服务器上,以便将来的请求可以直接从缓存中获取,⽽不必重新从服务器下载资源。这有助于减少⽹络延迟,提高页面加载速度,并减轻服务器的负担。HTTP 缓存有两种实现方式,分别是。

2024-03-29 17:41:31 1390 1

原创 【面试八股总结】超文本传输协议HTTP(一):基本概念、报文、请求方法、状态码与常见字段

一、 什么是HTTP协议?一、 什么是HTTP协议?HTTP是超文本传输协议 HyperText Transfer Protocal简单、灵活、易于扩展无状态:服务器不会记忆HTTP状态二、 HTTP报文1. HTTP请求报文URL HTTP协议版本号Request Headers 请求头:包含请求的附加信息,由key:value组成空 行:分隔请求头和请求体Request Body 请求体:承载多个请求参数的数据(可选)2. HTTP响应报文空 行。

2024-03-29 16:11:08 979 1

原创 【C++从0到1-黑马程序员】STL容器(一)

2. Vector容器​​​​​​C++从0到1 - 黑马程序员 课程学习笔记1. String 容器1.1 string基本概念string是C++风格的字符串,而string本质上是一个char*是一个指针string是一个类,类内部封装了char*,管理这个字符串,是一个char*类型的容器string类内部封装了很多成员方法string管理char* 所分配的内存,不需要担心赋值越界和取值越界等,由类内部进行负责1.2 string构造函数1.3 string赋值操作。

2024-03-27 15:54:47 752 1

原创 【C++从0到1-黑马程序员】STL初识

非质变算法:是指运算过程中不会更改区间内的元素的内容,例如:查找、计数、遍历、寻找极值等。提供一种方法,使之能够依序寻访某个容器所含的各个元素,而又无需暴露该容器的内部表示方式。STL六大组件:容器、算法、迭代器、仿函数、适配器(配接器)、空间配置器。质变算法:是指运算过程中会更改区间内的元素的内容,例如:拷贝、替换、删除。序列式容器:强调值的排序,序列式容器中的每个元素均有固定的位置。关联式容器:二叉树结构,各元素之间没有严格的物理上的顺序关系。常用的数据结构:数组、链表、树、栈、队列、集合、映射表等。

2024-03-25 18:05:15 715

原创 【C++从0到1-黑马程序员】模板

建立一个通用函数,函数返回值类型和形参类型可以不具体定制,用一个虚拟的类型来代表。类模板作用: 建立一个通用类,类中的成员数据类型可以不具体定制,用一个虚拟的类型来表示。将声明和实现写到一个文件中,并更改后缀名为.hpp,hpp是约定的名称,并不是强制。全局函数类外实现 - 需要提前让编译器知道函数的存在:需要提前声明类模板以及函数。❗模板的通用性并不是万能的,有些特定数据类型,需要用具体化方式做特殊实现。当子类继承的父类是一个类模板时,子类在继承前必须指定父类中T的数据类型。

2024-03-25 15:28:11 225

原创 【C++从0到1-黑马程序员】文件操作

1. 文本文件C++从0到1 - 黑马程序员 课程学习笔记程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放可以通过文件C++中对文件操作需要包含头文件文件类型分为两种:文本文件 - 文件以文本的ASCII码形式存储在计算机中操作文件的三大类:ofstream:写操作ifstream: 写操作fstream:读写操作1. 文本文件1.1 写文件写文件步骤:包含头文件 #include。

2024-03-24 19:15:00 836 1

原创 【C++从0到1-黑马程序员】类和对象(三)

C++从0到1 - 黑马程序员 课程学习笔记。

2024-03-24 14:52:49 635 1

原创 【C++从0到1-黑马程序员】类和对象(二)

C++从0到1 - 黑马程序员 课程学习笔记。

2024-03-22 19:53:27 711 1

原创 【C++从0到1-黑马程序员】类和对象(一)

C++认为万事万物皆为对象,对象有其属性和行为。

2024-03-22 15:57:12 1192 1

原创 【C++从0到1-黑马程序员】函数

作用:函数名可以相同,提高复用性同一个作用域下函数名称相同函数参数 类型不同 或 个数不同 或 顺序不同❗函数的返回值不能作为函数重载的条件。

2024-03-22 15:28:06 267 1

原创 【刷题笔记】回溯算法 - ⭐去重问题

只是在刷题过程中记录一下自己的想法,因为总是记不住去重逻辑。

2024-03-21 19:45:36 504

原创 【C++从0到1-黑马程序员】引用

C++从0到1-黑马程序员 课程学习笔记课程链接: 06 C++中的引用-引用的基本语法_哔哩哔哩_bilibili作用:给变量起别名语法:数据类型 &别名 = 原名作用:函数传参数时,可以利用引用的技术让形参修饰实参优点:简化指针修改实参❗引用传递也可以使形参修饰实参4. 引用做函数返回值5. 引用的本质引用的本质在C++内部是一个指针常量6. 常量引用作用: 常量引用主要用来修饰形参,防止误操作

2024-03-21 18:01:21 345

原创 【C++从0到1-黑马程序员】程序的内存模型

C++ 程序执行时,将内存划分为四个区域:代码区:存放函数体的二进制代码,由操作系统进行管理全局区:存放全局变量和静态变量以及常量栈区:由编译器自动分配释放,存放函数的参数值、局部变量等堆区:程序员分配和释放,若程序员不释放,程序结束时由操作系统回收

2024-03-21 16:35:33 703

空空如也

空空如也

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

TA关注的人

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