【面试篇】Redis持久化面试题
文章目录
- Redis持久化
- 🙎♂️面试官:什么是Redis持久化?
- AOF日志
- AOF日志原理
- 🙎♂️面试官:AOF日志是怎么工作的/AOF写入磁盘的流程?
- 🙎♂️面试官: 刚刚说到了Redis先执行写入的命令,后写入AOF日志,你知道为什么要这样做吗?
- 写回机制
- 🙎♂️面试官:其实你上面说到的这些都与AOF写回机制有关,你了解AOF的写回机制吗?
- 重写机制
- 🙎♂️面试官:其实为了防止AOF日志越来越大,导致磁盘I/O缓慢,Redis也提供了AOF重写机制,可以简单说一说吗?
- 🙎♂️面试官:说一下重写机制的好处吧
- 🙎♂️面试官:你刚刚说到要用一个新的AOF文件,思考过为什么要用新AOF文件吗?
- AOF后台重写
- 🙎♂️面试官:重写过程为什么在后台子进程中?
- 🙎♂️面试官: 子进程的数据副本是怎么来的?
- AOF重写缓冲区
- 🙎♂️面试官:重写 AOF 日志过程中,如果主进程修改了已经存在 key-value,此时这个 key-value 数据在子进程的内存数据就跟主进程的内存数据不一致了,这时要怎么办呢?
- 🙎♂️面试官:重写AOF使用的是后台进程,永远都不会阻塞主进程吗?
- RDB快照
- 了解RDB
- 🙎♂️面试官:说一说什么是RDB快照?
- 🙎♂️面试官:如何使用RDB?
- 🙎♂️面试官:RDB快照的缺点?
- 🙎♂️面试官:执行bgsave时,Redis可以修改数据吗?
- 写时复制
- 🙎♂️面试官:写时复制技术的流程?
- 🙎♂️面试官:发生了写时复制,RDB如何保存数据?
- 混合持久化
- 🙎♂️面试官: 为什么提出混合持久化?
- 🙎♂️面试官: 混合持久化的流程?
- 大Key
- 🙎♂️面试官: 大Key对持久化的影响?
- 🙎♂️面试官:如何避免大Key的影响?
- 🙎♂️面试官:大Key的其他影响?

Redis持久化
🙎♂️面试官:什么是Redis持久化?
🙋♂答:
Redis的数据都是存储在内存中的,当Redis重启后,内存中的数据就会丢失,但是Redis实现了数据持久化的方式。主要通过AOF日志和RDB日志来实现。
AOF日志
AOF日志(Append Only File,追加写文件):将所有写操作命令记录到日志中。
AOF日志原理
🙎♂️面试官:AOF日志是怎么工作的/AOF写入磁盘的流程?
🙋♂答:
- 当Redis执行完写入的命令后,会将命令追加到server.aof_buf缓冲区中。
- 通过write() 系统调用,将 aof_buf 缓冲区的数据写入到 AOF 文件,当应用程序向文件中写入数据时,内核会先将数据复制在内核缓冲区Page Cache中,具体何时写回,主要由写回机制来决定。
🙎♂️面试官: 刚刚说到了Redis先执行写入的命令,后写入AOF日志,你知道为什么要这样做吗?
🙋♂答:
- 避免额外的检查开销,保证记录在 AOF 日志里的命令都是可执行并且正确的。
- 不会阻塞当前写操作命令的执行,因为当写操作命令执行成功后,才会将命令记录到 AOF 日志。
- 当然也存在风险,我的数据还没有写回磁盘,服务器挂掉了,数据就丢失了。同时因为要写回到磁盘,与磁盘进行I/O时,有可能会阻塞下一次的写操作。
写回机制
🙎♂️面试官:其实你上面说到的这些都与AOF写回机制有关,你了解AOF的写回机制吗?
🙋♂答:
AOF的写回机制定义了内核缓冲区的数据何时刷回到磁盘的问题。Redis提供了三种写回机制。
- Always,每次执行写操作命令后,都将AOF日志同步到硬盘。
- Always 策略可以最大程度保证数据不丢失,但是影响主进程的性能;
- Everysec,每次执行写操作命令后,先将命令写入到 AOF 文件的内核缓冲区,然后每隔一秒将缓冲区里的内容写回到硬盘;
- Everysec 策略,如果上一秒的写操作命令日志没有写回到硬盘,发生了宕机,这一秒内的数据自然也会丢失。
- No,意味着不由 Redis 控制写回硬盘的时机,转交给操作系统控制写回的时机。自身永远不会调用
fsync()
函数。- 如果想要应用程序向文件写入数据后,能立马将数据同步到硬盘,就可以调用
fsync()
函数,这样内核就会将内核缓冲区的数据直接写入到硬盘,等到硬盘写操作完成后,该函数才会返回。其实这三种写回机制就在控制fsync()
函数的调用时机。
- 如果想要应用程序向文件写入数据后,能立马将数据同步到硬盘,就可以调用
重写机制
🙎♂️面试官:其实为了防止AOF日志越来越大,导致磁盘I/O缓慢,Redis也提供了AOF重写机制,可以简单说一说吗?
🙋♂答:
“ 重写 ”其实存在一些歧义,重写机制并不是针对原有的AOF文件进行修改,而是针对数据库中键的当前值。
当 AOF 文件的大小超过所设定的阈值后,Redis 就会启用 AOF 重写机制。AOF 重写机制是在重写时,读取当前数据库中的所有键值对,然后将每一个键值对用一条命令记录到「新的 AOF 文件」,等到全部记录完后,就将新的 AOF 文件替换掉现有的 AOF 文件。
🙎♂️面试官:说一下重写机制的好处吧
🙋♂答:
重写机制记录的是当前键值对的状态,即使某个键值对被多条命令修改,最终都是一条命令,这样就减少了AOF文件中的命令数量。
🙎♂️面试官:你刚刚说到要用一个新的AOF文件,思考过为什么要用新AOF文件吗?
🙋♂答:
主要是为了防止重写失败的情况。
如果不使用新的AOF文件,重写失败,会对原文件造成污染。
如果使用新的AOF文件,重写失败,直接删除该文件即可。
AOF后台重写
🙎♂️面试官:重写过程为什么在后台子进程中?
🙋♂答:
Redis中AOF重写过程是由后台子进程bgrewriteaof(background rewrite of Append-Only File)来完成的。
好处有两点:
- 其一是使用后台子进程不阻塞主进程;
- 其二是子进程带有父进程的数据副本,当父子进程任意一方修改了该共享内存,就会发生「写时复制」,于是父子进程就有了独立的数据副本,就不用加锁来保证数据安全,并且不会降低效率。
🙎♂️面试官: 子进程的数据副本是怎么来的?
🙋♂答:
主进程在通过 fork()
系统调用生成 bgrewriteaof 子进程时,操作系统会把主进程的页表复制一份给子进程,这个页表记录着虚拟地址和物理地址映射关系,而不会复制物理内存,也就是说,两者的虚拟空间不同,但其对应的物理空间是同一个。
这样一来,子进程就共享了父进程的物理内存数据了,这样能够节约物理内存资源,页表对应的页表项的属性会标记该物理内存的权限为只读。
AOF重写缓冲区
🙎♂️面试官:重写 AOF 日志过程中,如果主进程修改了已经存在 key-value,此时这个 key-value 数据在子进程的内存数据就跟主进程的内存数据不一致了,这时要怎么办呢?
🙋♂答:
为了解决这种数据不一致问题,Redis 设置了一个 AOF 重写缓冲区,这个缓冲区在创建 bgrewriteaof 子进程之后开始使用。
在重写 AOF 期间,当 Redis 执行完一个写命令之后,它会同时将这个写命令写入到 「AOF 缓冲区」和 「AOF 重写缓冲区」。
当子进程完成 AOF 重写工作后,会向主进程发送一条信号【信号是进程间通讯的一种方式,且是异步的】
主进程收到该信号后,会调用一个信号处理函数,该函数主要做以下工作:
- 将 AOF 重写缓冲区中的所有内容追加到新的 AOF 的文件中,使得新旧两个 AOF 文件所保存的数据库状态一致;
- 新的 AOF 的文件进行改名,覆盖现有的 AOF 文件。
信号函数执行完后,主进程就可以继续像往常一样处理命令了。
🙎♂️面试官:重写AOF使用的是后台进程,永远都不会阻塞主进程吗?
🙋♂答:
重写AOF中有三个阶段会导致阻塞父进程:
- 后台重写阶段
- 创建子进程,由于要复制父进程的页表等数据结构,阻塞的时间跟页表的大小有关,页表越大,阻塞的时间也越长;
- 完成AOF重写后,会向主进程发送一条信号,主进程调用信号处理函数,该信号的信号处理函数阻塞主进程。
- 后台重写的写时复制阶段
- 创建完子进程后,如果子进程或者父进程修改了共享数据,就会发生写时复制,这期间会拷贝物理内存,如果内存越大,自然阻塞的时间也越长;
- 如果这个阶段修改的是一个 bigkey,也就是数据量比较大的 key-value 的时候,这时复制的物理内存数据的过程就会比较耗时,有阻塞主进程的风险。
- 创建完子进程后,如果子进程或者父进程修改了共享数据,就会发生写时复制,这期间会拷贝物理内存,如果内存越大,自然阻塞的时间也越长;
RDB快照
了解RDB
🙎♂️面试官:说一说什么是RDB快照?
🙋♂答:
RDB快照记录某一瞬间的内存数据,记录实际的数据。在恢复数据时,比AOF的效率更高。
🙎♂️面试官:如何使用RDB?
🙋♂答:
Redis 提供了两个命令来生成 RDB 文件,分别是 save
和 bgsave
,他们的区别就在于是否在「主线程」里执行:
- 执行了 save 命令,就会在主线程生成 RDB 文件,由于和执行操作命令在同一个线程,所以如果写入 RDB 文件的时间太长,会阻塞主线程;
- 执行了 bgsave (background save)命令,会创建一个子进程来生成 RDB 文件,这样可以避免主线程的阻塞;
🙎♂️面试官:RDB快照的缺点?
🙋♂答:
Redis 的快照是全量快照,也就是说每次执行快照,都是把内存中的「所有数据」都记录到磁盘中,所以执行快照是一个比较重的操作,意味着不能频繁保存,否则可能会对Redis性能产生影响。
不能频繁保存,意味着发生故障时,丢失的数据会比AOF持久化的方式更多。
🙎♂️面试官:执行bgsave时,Redis可以修改数据吗?
🙋♂答:
执行 bgsave 过程中,Redis 依然可以继续处理操作命令的,也就是数据是能被修改的。
关键的技术就在于写时复制技术(Copy-On-Write, COW)。
写时复制
🙎♂️面试官:写时复制技术的流程?
🙋♂答:
执行 bgsave 命令的时候,会通过 fork()
创建子进程,此时子进程和父进程是共享同一片内存数据的,因为创建子进程的时候,会复制父进程的页表,但是页表指向的物理内存还是一个。
如果主线程(父进程)要修改共享数据里的某一块数据(比如键值对 A
)时,就会发生写时复制,于是这块数据的物理内存就会被复制一份(键值对 A'
),然后主线程在这个数据副本(键值对 A'
)进行修改操作。与此同时,bgsave 子进程可以继续把原来的数据(键值对 A
)写入到 RDB 文件。
这样,因为只复制了页表,可以加快子进程的创建速度,避免阻塞主进程。
🙎♂️面试官:发生了写时复制,RDB如何保存数据?
🙋♂答:
bgsave 快照过程中,如果主线程修改了共享数据,发生了写时复制后,RDB 快照保存的是原本的内存数据,而主线程刚修改的数据,是没办法在这一时间写入 RDB 文件的,只能交由下一次的 bgsave 快照。
所以 Redis 在使用 bgsave 快照过程中,如果主线程修改了内存数据,不管是否是共享的内存数据,RDB 快照都无法写入主线程刚修改的数据,因为此时主线程(父进程)的内存数据和子进程的内存数据已经分离了,子进程写入到 RDB 文件的内存数据只能是原本的内存数据。
如果系统恰好在 RDB 快照文件创建完毕后崩溃了,那么 Redis 将会丢失主线程在快照期间修改的数据。
有一种极端情况,就是所有的共享内存都被修改,则此时的内存占用是原先的 2 倍。
所以,针对写操作多的场景,我们要留意下快照过程中内存的变化,防止内存被占满了。
混合持久化
🙎♂️面试官: 为什么提出混合持久化?
🙋♂答:
尽管 RDB 比 AOF 的数据恢复速度快,但是快照的频率不好把握:
- 如果频率太低,两次快照间一旦服务器发生宕机,就可能会比较多的数据丢失;
- 如果频率太高,频繁写入磁盘和创建子进程会带来额外的性能开销。
可以将 RDB 和 AOF 合体使用,这个方法是在 Redis 4.0 提出的,该方法叫混合使用 AOF 日志和内存快照,也叫混合持久化。
🙎♂️面试官: 混合持久化的流程?
🙋♂答:
混合持久化工作在 AOF 日志重写过程。
-
fork()
出来的重写子进程会先将与主线程共享的内存数据以 RDB 方式写入到 AOF 文件。 -
后台子进程重写AOF期间,主线程执行的写操作命令以AOF格式写入到AOF文件中。
-
写入完成后通知主进程将新的含有 RDB 格式和 AOF 格式的 AOF 文件替换旧的的 AOF 文件。
也就是说,使用了混合持久化,AOF 文件的前半部分是 RDB 格式的全量数据,后半部分是 AOF 格式的增量数据。
这样的好处在于,重启 Redis 加载数据的时候,由于前半部分是 RDB 内容,这样加载的时候速度会很快。【RDB快照的优点】
加载完 RDB 的内容后,才会加载后半部分的 AOF 内容,这里的内容是 Redis 后台子进程重写 AOF 期间,主线程处理的操作命令,可以使得数据更少的丢失。【AOF的优点】
大Key
🙎♂️面试官: 大Key对持久化的影响?
🙋♂答:
对于AOF写回策略的影响:
- 当使用 Always 策略的时候,如果写入是一个大 Key,主线程在执行 fsync() 函数的时候,阻塞的时间会比较久,因为当写入的数据量很大的时候,数据同步到硬盘这个过程是很耗时的。
对于AOF重写机制的影响:
- 当 AOF 日志写入了很多的大 Key,AOF 日志文件的大小会很大,那么很快就会触发 AOF 重写机制。
- AOF重写机制和RDB快照中,在通过
fork()
函数创建子进程的时候,虽然不会复制父进程的物理内存,但是内核会把父进程的页表复制一份给子进程,如果页表很大,那么这个复制过程是会很耗时的,那么在执行 fork 函数的时候就会发生阻塞现象。
对于写时复制机制的影响:
- 如果创建完子进程后,父进程对共享内存中的大 Key 进行了修改,那么内核就会发生写时复制,会把物理内存复制一份,由于大 Key 占用的物理内存是比较大的,那么在复制物理内存这一过程中,也是比较耗时的,于是父进程(主线程)就会发生阻塞。
🙎♂️面试官:如何避免大Key的影响?
🙋♂答:
最好在设计阶段,就把大 key 拆分成一个一个小 key。
或者,定时检查 Redis 是否存在大 key ,如果该大 key 是可以删除的,不要使用 DEL 命令删除,因为该命令删除过程会阻塞主线程,而是用 unlink 命令(Redis 4.0+)删除大 key,因为该命令的删除过程是异步的,不会阻塞主线程。
🙎♂️面试官:大Key的其他影响?
🙋♂答:
-
客户端超时阻塞。 由于 Redis 执行命令是单线程处理,然后在操作大 key 时会比较耗时,那么就会阻塞 Redis,从客户端这一视角看,就是很久很久都没有响应。
-
引发网络阻塞。 每次获取大 key 产生的网络流量较大,如果一个 key 的大小是 1 MB,每秒访问量为 1000,那么每秒会产生 1000MB 的流量,这对于普通千兆网卡的服务器来说是灾难性的。
-
阻塞工作线程。 如果使用 del 删除大 key 时,会阻塞工作线程,这样就没办法处理后续的命令。
-
内存分布不均。 集群模型在 slot 分片均匀情况下,会出现数据和查询倾斜情况,部分有大 key 的 Redis 节点占用内存多,QPS 也会比较大。
完。
参考来源:Redis设计与实现、小林Coding等博客。
相关文章:

【面试篇】Redis持久化面试题
文章目录 Redis持久化🙎♂️面试官:什么是Redis持久化? AOF日志AOF日志原理🙎♂️面试官:AOF日志是怎么工作的/AOF写入磁盘的流程?🙎♂️面试官: 刚刚说到了Redis先执行写入的…...

哈工大软件过程与工具作业2
云原生技术云原生技术 哈尔滨工业大学 计算机科学与技术学院/国家示范性软件学院 2022年秋季学期 《软件过程与工具》课程 作业报告 作业 2:需求分析UML建模 姓名 学号 联系方式 石卓凡 120L021011 944613709qq.com/18974330318 目 录 1 需求概述...........…...
SDN控制器三平面(软件定义网络、OOB)
目录 又名 三个独立的平面或层 SDN数据流 控制流量的带外(OOB) 优势 技术...
嘉兴桐乡会计考证实操-考初级会计真的有用吗?
一边说着:考初级会计门槛太低了,谁都能考;一边又争先恐后的去报考,考初级会计真的是有用的吗?为什么这么多人一边说考了没用却一直在努力备考呢? 关于这类的话题,其实一直都存在,但不…...

约翰霍普金斯大学诺奖得主涉嫌造假,撤回5篇PNAS论文
2019年,约翰霍普金斯大学的著名基因医学科学家Gregg L. Semenza博士因为“发现细胞如何感知和适应氧气供应”,和另外两名科学家( William Kaelin Jr. and Peter J. Ratcliffe)分享当年的生理医学诺贝尔奖。 近期,Gregg…...

React的表单数据绑定
当我们在页面中使用表单提交数据时,react是如何拿取表单数据的呢 这里通过两种方式来实现 非受控组件实现 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" conte…...

Dubbo——微服务框架(单体式->分布式->微服务)
是什么? Dubbo是阿里巴巴开源的基于Java的高性能RPC(一种远程调用)分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案,它提供了三大核心能力:面向接口的远程…...
【Spring Cloud】Feign传递HttpServletRequest
这里我的业务场景是:在请求头中获取服务端登录时传给客户端的token,并且客户端将token放在请求头中。以至于我需要在参数传递上传入HttpServletRequest。如果你非要向我一样传入HttpServletRequest对象那么就往下看,当然你如果可以改成其他参…...

烟火识别智能监测系统 yolov5
烟火识别智能监测系统基于pythonyolov5网络模型算法智能分析技术,烟火识别智能监测算法模型对现场画面进行实时分析,发现现场出现烟火立即抓拍实时告警。我们选择当下卷积神经网络YOLOv5来进行火焰识别检测。6月9日,Ultralytics公司开源了YOL…...

【Python入门】Python循环语句(while循环的基础语法)
前言 📕作者简介:热爱跑步的恒川,致力于C/C、Java、Python等多编程语言,热爱跑步,喜爱音乐的一位博主。 📗本文收录于Python零基础入门系列,本专栏主要内容为Python基础语法、判断、循环语句、函…...
JS中 Math 和 Number 内置对象常用的一些方法
JS中 Math 和 Number 内置对象常用的一些方法 Math.abs(num)Math.ceil(num)Math.floor(num)Math.max(num1, num2, ... , numN)Math.min(num1, num2, ... , numN)Math.pow(base, exponent)Math.random()Math.round(num)Math.sqrt(num)Number.toFixed(digits)Number.toString(rad…...

Docker的使用 (1.什么是docker)
前言 这个系列是我自己学习使用docker的记录和分享,作为一名开发人员,你需要了解这个东西并且学会它的简单使用,但是作为一名开发而不是运维,不要花过多的时间去深究它的原理,而是把它当作一个工具即可 docker Docke…...

ENVI无缝镶嵌Seamless Mosaic工具镶嵌、拼接栅格遥感影像(所有图像需要含有地理信息)
本文介绍基于ENVI软件,利用“Seamless Mosaic”工具实现栅格遥感影像无缝镶嵌的操作。 在ENVI软件中通过“Pixel Based Mosaicking”工具实现栅格遥感影像的镶嵌的方法。这一工具虽然可以对不含有地理参考信息的遥感影像进行镶嵌,但是其镶嵌的整体效果并…...

Java-API简析_java.lang.Integer类(基于JDK1.8)(浅析源码)
【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://blog.csdn.net/m0_69908381/article/details/130730986 出自【进步*于辰的博客】 其实我的【Java-API】专栏内的博文对大家来说意义是不大的。…...

WebSocket的那些事(3-STOMP实操篇)
目录 一、序言二、STOMP详解1、STOMP简单介绍2、STOMP协议内容3、使用STOMP的好处 三、代码示例1、Maven依赖2、开启WebSocket消息代理3、控制器4、前端页面greeting.html 四、测试1、连接服务端2、发送消息 五、STOMP消息传播流程六、结语 一、序言 上节中我们在 WebSocket的…...

《花雕学AI》WeTab+ChatGPT:让浏览器变成你的智能助手
引言: 浏览器是我们日常使用的最重要的工具之一,它可以帮助我们获取信息、娱乐、学习、工作等。但是,传统的浏览器往往不能满足我们的个性化需求,也不能给我们提供智能化的服务。那么,有没有一种浏览器可以让我们的体…...

MySQL 字段为 NULL 的5大坑,大部分人踩过
数据库字段允许空值(null)的问题,小伙伴你遇到过吗? 在验证问题之前,我们先建一张测试表及测试数据。 构建的测试数据,如下图所示: 有了上面的表及数据之后,我们就来看当列中存在 NULL 值时,究…...
Android SystemUI篇(二)
目录 一、简介 二、SystemUI的架构 三、SystemUI的主要组件 四、SystemUI的主要功能 五、SystemUI的自定义和定制 六、SystemUI的性能优化 一、简介 SystemUI是Android操作系统的一个关键组件,主要负责管理和提供用户界面的核心元素,如状态栏、导航…...

第六讲:“声音”写具体
爸爸又打呼了!“呼噜一呼噜一像一股巨浪腾空而起,以每秒八十米的速度向上冲刺,力图掀开天花板,掀翻整座住宅楼;“呼噜一一呼噜一-”,像一台轰鸣的坦克在穿行,床垫在抖动,吊灯在摇晃,墙灰在簌籁(…...

Unity 向量
向量的加减法本文就不再赘述了,本文侧重介绍脚本中的向量写法 一、向量的数乘 定义:k(x,y,z)(kx,ky,kz) 若向量长度为L,k取1/L,就恰好能让原向量长度变成1,变成了单位向量,这称为向量的标准化 。 由于长度…...

wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...

iview框架主题色的应用
1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题,无需引入,直接可…...

Python 实现 Web 静态服务器(HTTP 协议)
目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...
OD 算法题 B卷【正整数到Excel编号之间的转换】
文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的:a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...