这节课难度比较高
Lec16 File system performance and fast crash recovery

文章目录

  • xv6 File system Log
  • ext3 File system Log
    • ext3如何提升性能

xv6 File system Log

  • 我们会有一些用户程序调用write/create系统调用来修改文件系统。在内核中存在block cache,最初write请求会被发到block cache。block cache就是磁盘中block在内存中的拷贝,所以最初对于文件block或者inode的更新走到了block cache。
  • 在write系统调用的最后,这些更新都被拷贝到了log中,之后我们会更新header block的计数来表明当前的transaction已经结束了。
  • 在拷贝完成之后,文件系统会将修改过的block数量,通过一个磁盘写操作写入到log的header block,这次写入被称为commit point。在commit point之前,如果发生了crash,在重启时,整个transaction的所有写磁盘操作最后都不会应用。在commit point之后,即使立即发生了crash,重启时恢复软件会发现在log header中记录的修改过的block数量不为0,接下来就会将log header中记录的所有block,从log区域写入到文件系统区域。

ext3和xv6主要的区别在于ext3可以同时跟踪多个在不同执行阶段的transaction

ext3 File system Log

  • ext3的数据结构与XV6是类似的。在内存中,存在block cache,这是一种write-back cache(注,区别于write-through cache,指的是cache稍后才会同步到真正的后端)。block cache中缓存了一些block,其中的一些是干净的数据,因为它们与磁盘上的数据是一致的;其他一些是脏数据,因为从磁盘读出来之后被修改过;有一些被固定在cache中,基于前面介绍的write-ahead rule和freeing rule,不被允许写回到磁盘中。
  • ext3还维护了一些transaction信息。它可以维护多个在不同阶段的transaction的信息。
    • 一个序列号
    • 一系列该transaction修改的block编号。这些block编号指向的是在cache中的block,因为任何修改最初都是在cache中完成。
    • 以及一系列的handle,handle对应了系统调用,并且这些系统调用是transaction的一部分,会读写cache中的block
  • 接下来我们详细看一下ext3的log中有什么。
    在log的最开始,是super block。这是log的super block,而不是文件系统的super block。
    log的super block包含了log中第一个有效的transaction的起始位置和序列号。起始位置就是磁盘上log分区的block编号,序列号就是前面提到的每个transaction都有的序列号。
    • log是磁盘上一段固定大小的连续的block。log中,除了super block以外的block存储了transaction。每个transaction在log中包含了:
      • 一个descriptor block,其中包含了log数据对应的实际block编号,这与XV6中的header block很像。
      • 之后是针对每一个block编号的更新数据
      • 最后当一个transaction完成并commit了,会有一个commit block
    • 这里有一些细节对于后面的内容很重要。在crash之后的恢复过程会扫描log,为了将descriptor block和commit block与data block区分开,descriptor block和commit block会以一个32bit的魔法数字作为起始。这个魔法数字不太可能出现在数据中,并且可以帮助恢复软件区分不同的block。

ext3如何提升性能

  • 首先,它提供了异步的(asynchronous)系统调用,也就是说系统调用在写入到磁盘之前就返回了,系统调用只会更新缓存在内存中的block,并不用等待写磁盘操作。不过它可能会等待读磁盘。
  • 第二,它提供了批量执行(batching)的能力,可以将多个系统调用打包成一个transaction。
  • 最后,它提供了并发(concurrency)。

首先是异步的系统调用。**这表示系统调用修改完位于缓存中的block之后就返回,并不会触发写磁盘。**所以这里明显的优势就是系统调用能够快速的返回。同时它也使得I/O可以并行的运行,也就是说应用程序可以调用一些文件系统的系统调用,但是应用程序可以很快从系统调用中返回并继续运算,与此同时文件系统在后台会并行的完成之前的系统调用所要求的写磁盘操作。这被称为I/O concurrency,如果没有异步系统调用,很难获得I/O concurrency,或者说很难同时进行磁盘操作和应用程序运算,因为同步系统调用中,应用程序总是要等待磁盘操作结束才能从系统调用中返回。

另一个异步系统调用带来的好处是,它使得大量的批量执行变得容易。

**异步系统调用的缺点是系统调用的返回并不能表示系统调用应该完成的工作实际完成了。**举个例子,如果你创建了一个文件并写了一些数据然后关闭文件并在console向用户输出done,最后你把电脑的电给断了。尽管所有的系统调用都完成了,程序也输出了done,但是在你重启之后,你的数据并不一定存在。这意味着,在异步系统调用的世界里,如果应用程序关心可能发生的crash,那么应用程序代码应该更加的小心。这在XV6并不是什么大事,因为如果XV6中的write返回了,那么数据就在磁盘上,crash之后也还在。而ext3中,如果write返回了,你完全不能确定crash之后数据还在不在。所以一些应用程序的代码应该仔细编写,例如对于数据库,对于文本编辑器,我如果写了一个文件,我不想在我写文件过程断电然后再重启之后看到的是垃圾文件或者不完整的文件,我想看到的要么是旧的文件,要么是新的文件。

**==所以文件系统对于这类应用程序也提供了一些工具以确保在crash之后可以有预期的结果。这里的工具是一个系统调用,叫做fsync,所有的UNIX都有这个系统调用。==这个系统调用接收一个文件描述符作为参数,它会告诉文件系统去完成所有的与该文件相关的写磁盘操作,在所有的数据都确认写入到磁盘之后,fsync才会返回。所以如果你查看数据库,文本编辑器或者一些非常关心文件数据的应用程序的源代码,你将会看到精心放置的对于fsync的调用。fsync可以帮助解决异步系统调用的问题。**对于大部分程序,例如编译器,如果crash了编译器的输出丢失了其实没什么,所以许多程序并不会调用fsync,并且乐于获得异步系统调用带来的高性能。

在任何时候,ext3只会有一个open transaction。ext3中的一个transaction可以包含多个不同的系统调用。所以ext3是这么工作的:它首先会宣告要开始一个新的transaction,接下来的几秒所有的系统调用都是这个大的transaction的一部分。我认为默认情况下,ext3每5秒钟都会创建一个新的transaction,所以每个transaction都会包含5秒钟内的系统调用,这些系统调用都打包在一个transaction中。在5秒钟结束的时候,ext3会commit这个包含了可能有数百个更新的大transaction。

为什么这是个好的方案呢?

  • **首先它在多个系统调用之间分摊了transaction带来的固有的损耗。**固有的损耗包括写transaction的descriptor block和commit block;在一个机械硬盘中需要查找log的位置并等待磁碟旋转,这些都是成本很高的操作,现在只需要对一批系统调用执行一次,而不用对每个系统调用执行一次这些操作,所以batching可以降低这些损耗带来的影响。
  • **另外,它可以更容易触发write absorption(写吸收)。**经常会有这样的情况,你有一堆系统调用最终在反复更新相同的一组磁盘block。举个例子,如果我创建了一些文件,我需要分配一些inode,inode或许都很小只有64个字节,一个block包含了很多个inode,所以同时创建一堆文件只会影响几个block的数据。类似的,如果我向一个文件写一堆数据,我需要申请大量的data block,我需要修改表示block空闲状态的bitmap block中的很多个bit位,如果我分配到的是相邻的data block,它们对应的bit会在同一个bitmap block中,所以我可能只是修改一个block的很多个bit位。所以一堆系统调用可能会反复更新一组相同的磁盘block。通过batching,多次更新同一组block会先快速的在内存的block cache中完成,之后在transaction结束时,一次性的写入磁盘的log中。这被称为write absorption,相比一个类似于XV6的同步文件系统,它可以极大的减少写磁盘的总时间。
  • **最后就是disk scheduling。**假设我们要向磁盘写1000个block,不论是在机械硬盘还是SSD(机械硬盘效果会更好),一次性的向磁盘的连续位置写入1000个block,要比分1000次每次写一个不同位置的磁盘block快得多。我们写log就是向磁盘的连续位置写block。**通过向磁盘提交大批量的写操作,可以更加的高效。这里我们不仅通过向log中连续位置写入大量block来获得更高的效率,甚至当我们向文件系统分区写入包含在一个大的transaction中的多个更新时,如果我们能将大量的写请求同时发送到驱动,即使它们位于磁盘的不同位置,我们也使得磁盘可以调度这些写请求,并以特定的顺序执行这些写请求,这也很有效。**在一个机械硬盘上,如果一次发送大量需要更新block的写请求,驱动可以对这些写请求根据轨道号排序。甚至在一个固态硬盘中,通过一次发送给硬盘大量的更新操作也可以稍微提升性能。所以,只有发送给驱动大量的写操作,才有可能获得disk scheduling。这是batching带来的另一个好处。

ext3使用的最后一个技术就是concurrency,相比XV6这里包含了两种concurrency。

  • **首先ext3允许多个系统调用同时执行,所以我们可以有并行执行的多个不同的系统调用。**在ext3决定关闭并commit当前的transaction之前,系统调用不必等待其他的系统调用完成,它可以直接修改作为transaction一部分的block。许多个系统调用都可以并行的执行,并向当前transaction增加block,这在一个多核计算机上尤其重要,因为我们不会想要其他的CPU核在等待锁。在XV6中,如果当前的transaction还没有完成,新的系统调用不能继续执行。而在ext3中,大多数时候多个系统调用都可以更改当前正在进行的transaction。
  • **另一种ext3提供的并发是,可以有多个不同状态的transaction同时存在。**所以尽管只有一个open transaction可以接收系统调用,但是其他之前的transaction可以并行的写磁盘。这里可以并行存在的不同transaction状态包括了:
    • 首先是一个open transaction
    • 若干个正在commit到log的transaction,我们并不需要等待这些transaction结束。当之前的transaction还没有commit并还在写log的过程中,新的系统调用仍然可以在当前的open transaction中进行。
    • 若干个正在从cache中向文件系统block写数据的transaction
    • 若干个正在被释放的transaction,这个并不占用太多的工作

通常来说会有位于不同阶段的多个transaction,新的系统调用不必等待旧的transaction提交到log或者写入到文件系统。对比之下,XV6中新的系统调用就需要等待前一个transaction完全完成。

concurrency之所以能帮助提升性能,是因为它可以帮助我们并行的运行系统调用,我们可以得到多核的并行能力。如果我们可以在运行应用程序和系统调用的同时,来写磁盘,我们可以得到I/O concurrency,也就是同时运行CPU和磁盘I/O。这些都能帮助我们更有效,更精细的使用硬件资源。

Linux中的文件系统调用,并介绍抽象上每个系统调用的结构。

在Linux的文件系统中,我们需要每个系统调用都声明一系列写操作的开始和结束。实际上在任何transaction系统中,都需要明确的表示开始和结束,这样之间的所有内容都是原子的。所以系统调用中会调用start函数。ext3需要知道当前正在进行的系统调用个数,所以每个系统调用在调用了start函数之后,==会得到一个handle,它某种程度上唯一识别了当前系统调用。==当前系统调用的所有写操作都是通过这个handle来识别跟踪的(注,handle是ext3 transaction中的一部分数据,详见16.3)。

之后系统调用需要读写block,它可以通过get获取block在buffer中的缓存,同时告诉handle这个block需要被读或者被写。如果你需要更改多个block,类似的操作可能会执行多次。之后是修改位于缓存中的block。

当这个系统调用结束时,它会调用stop函数,并将handle作为参数传入。

除非transaction中所有已经开始的系统调用都完成了,transaction是不能commit的。因为可能有多个transaction,所以文件系统需要有种方式能够记住系统调用属于哪个transaction,这样当系统调用结束时,文件系统就知道这是哪个transaction正在等待的系统调用,所以handle需要作为参数传递给stop函数。

因为每个transaction都有一堆block与之关联,修改这些block就是transaction的一部分内容,所以我们将handle作为参数传递给get函数是为了告诉logging系统,这个block是handle对应的transaction的一部分。

stop函数并不会导致transaction的commit,它只是告诉logging系统,当前的transaction少了一个正在进行的系统调用。transaction只能在所有已经开始了的系统调用都执行了stop之后才能commit。所以transaction需要记住所有已经开始了的handle,这样才能在系统调用结束的时候做好记录。

commit transaction步骤

  • 每隔5秒,文件系统都会commit当前的open transaction(一段时间只有一个,每个一段时间会更新),下面是commit transaction涉及到的步骤:

    1. **首先需要阻止新的系统调用 (新的系统调用被放在了新的open transaction) 。**当我们正在commit一个transaction时,我们不会想要有新增的系统调用,我们只会想要包含已经开始了的系统调用,所以我们需要阻止新的系统调用。这实际上会损害性能,因为在这段时间内系统调用需要等待并且不能执行。
    2. **第二,需要等待包含在transaction中的已经开始了的系统调用们结束。**所以我们需要等待transaction中未完成的系统调用完成,这样transaction能够反映所有的写操作。
    3. 一旦transaction中的所有系统调用都完成了,也就是完成了更新cache中的数据,那么就可以**开始一个新的transaction,并且让在第一步中等待的系统调用继续执行。**所以现在需要为后续的系统调用开始一个新的transaction。
    4. 还记得ext3中的log包含了descriptor,data和commit block吗?现在我们知道了transaction中包含的所有的系统调用所修改的block,因为系统调用在调用get函数时都将handle作为参数传入,表明了block对应哪个transaction。接下来我们可以更新descriptor block,其中包含了所有在transaction中被修改了的block编号。
    5. 我们还需要将被修改了的block,从缓存中写入到磁盘的log中。之前有同学问过,新的transaction可能会修改相同的block,所以在这个阶段,我们写入到磁盘log中的是transaction结束时,对于相关block cache的拷贝。所以这一阶段是将实际的block写入到log中。
    6. 接下来,我们需要等待前两步中的写log结束。
    7. 之后我们可以写入commit block。
    8. 接下来我们需要等待写commit block结束。结束之后,从技术上来说,当前transaction已经到达了commit point,也就是说transaction中的写操作可以保证在面对crash并重启时还是可见的。如果crash发生在写commit block之前,那么transaction中的写操作在crash并重启时会丢失。
    9. 接下来我们可以将transaction包含的block写入到文件系统中的实际位置。
    10. 在第9步中的所有写操作完成之后,我们才能重用transaction对应的那部分log空间。

总结

  • log是为了保证多个步骤的写磁盘操作具备原子性。在发生crash时,要么这些写操作都发生,要么都不发生。这是logging的主要作用。
  • **logging的正确性由write ahead rule来保证。**你们将会在故障恢复相关的业务中经常看到write ahead rule或者write ahead log(WAL)。write ahead rule的意思是,你必须在做任何实际修改之前,将所有的更新commit到log中。在稍后的恢复过程中完全依赖write ahead rule。**对于文件系统来说,logging的意义在于简单的快速恢复。**log中可能包含了数百个block,你可以在一秒中之内重新执行这数百个block,不管你的文件系统有多大,之后又能正常使用了。
  • 最后有关ext3的一个细节点是,它使用了批量执行和并发来获得可观的性能提升,不过同时也带来了可观的复杂性的提升。
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 阿里内部流传的JDK源码剖析手册,GitHub已获上千万的访问量

    相信现在已经有很多小伙伴知道了“微软”要对JDK下手了! JDK是什么? jdk是Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。jdk是整个java开发的核心,它包含了JAVA的运行环境和JAVA工具。相对而言&…...

    2024/4/19 8:41:21
  2. Javaweb中的监听器Listener

    servlet中的监听器 servlet中的监听器是用于监听web常见对象HttpServletRequest,HttpSession,ServletContext。主要有下面三个作用: 监听web对象创建与销毁。监听web对象的属性变化,添加、删除、修改。监听session绑定javaBean操作,活化&…...

    2024/4/20 15:20:23
  3. ViewPager+Fragmen 案例一

    myfragment.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent&qu…...

    2024/4/15 6:02:57
  4. 剑指 Offer 58 - II. 左旋转字符串(leetcode每日打卡)

    目录 题目描述 题解1&#xff1a; 题解2&#xff1a; 题解3&#xff1a; 总结 题目描述 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如&#xff0c;输入字符串"abcdefg"和数字2&#xff0…...

    2024/4/19 19:13:00
  5. 前端实现md5加密

    一、使用crypto npm install crypto var crypto require(crypto); var content 123456; var result crypto.createHash(md5).update(content).digest("hex") console.log(result); //e10adc3949ba59abbe56e057f20f883e二、使用md5-node npm install md5-node v…...

    2024/4/23 16:10:43
  6. 学习笔记 10.28

    今天在做项目时发现ROS2不能用catkin_make了&#xff0c;才发现自己缺了ROS2的知识&#xff0c;记录一下ROS2的学习 文章目录ROS2 学习11. Creating a workspace11.1 设置ROS2环境变量11.2 创建一个新的工作空间11.3 放置例程代码11.4 解决依赖问题11.5 编译工作空间11.6 设置环…...

    2024/4/23 18:17:19
  7. Java 多线程学习笔记(狂神)

    文章目录 1、线程简介2、线程实现2.1 继承 Thread 类&#xff0c;重写 run 方法2.2 继承 Runnable 接口&#xff0c;创建 Tread 对象2.3 实现 Callable 接口&#xff08;了解&#xff09;2.4 Lamda 表达式2.5 静态代理模式3、线程的 5 种状态 3.1 线程的一些常用方法 3.1.1 线程…...

    2024/4/18 16:02:22
  8. Keil相关部分界面“μVision”显示为“礦ision”的解决方法

    第一步&#xff0c;打开注册表编辑器&#xff0c;按下“WinR”&#xff0c;输入“regedit”&#xff0c;点击“确定”即可打开注册表编辑器&#xff1b; 第二步&#xff0c;在注册表编辑器中点开“HKEY_CLASSES_ROOT”&#xff1b; 第三步&#xff0c;下拉找到“UV2FILE”&…...

    2024/4/15 6:02:37
  9. 【笔记】PP-YOLO、PP-YOLOv2、PP-YOLO Tiny

    &Title PP-YOLO: An Effective and Efficient Implementation of Object Detector&#xff08;2020&#xff09;PP-YOLOv2: A Practical Object Detector&#xff08;2021&#xff09;代码 &Summary 目标检测算法的准确性和推理速度不可兼得&#xff0c;本文的工作旨…...

    2024/4/20 3:23:32
  10. Intel Edge Insights for Autonomous Mobile Robots

    主要是这个方案&#xff0c;他提供了什么样的功能&#xff1f;价格多少钱&#xff1f;性能如何&#xff1f;对此进行了解&#xff0c;然后可以给大家介绍一下 Research Goals 功能价格性能 文章目录EI for AMRHow it WorksModules and ServicesDriversMiddlewareAlgorithmsApp…...

    2024/4/24 7:59:41
  11. FCN网络结构解析

    daily&#xff1a;作为深度学习图片分割第一个学习的网络结构 Q1&#xff1a; 为什么要用FCN&#xff1f; A1&#xff1a;应为和以前网络R-CNN&#xff0c;SDS相比提升比较大 Q2&#xff1a;与CNN什么区别&#xff1f; A2:使用全卷积层代替全连接层 Q3&#xff1a;为什么要进行…...

    2024/4/18 4:40:35
  12. 还剩3个月过年,我能为产品经理求职做点什么?

    还剩3个月过年&#xff0c;我能为产品经理求职做点什么&#xff1f; 转载自&#xff1a;https://zhuanlan.zhihu.com/p/428777821 现在已经进入11月份了&#xff0c;明年过年是在2月1日&#xff0c;留给今年找工作的还有3个月的时间&#xff0c;在这个时间里&#xff0c;我想跟…...

    2024/4/15 6:02:42
  13. 小解:b、B

    b&#xff1a;全称为&#xff1a;bit&#xff0c;中文名“比特”&#xff0c;bit是计算机中的最小数据单位&#xff0c;人们常说的“8比特”&#xff0c;“比特位”中的“比特”&#xff0c;指的就是这个单位 → bit。在计算机中&#xff0c;数据都是由二进制数 0 /1 组成&a…...

    2024/4/18 23:04:28
  14. T31系统Day4-工程规约

    一.作业 二.应用分层 三.Maven Maven排除依赖 四.二方库依赖 什么是二方库 一方库&#xff1a;本工程中的各模块的相互依赖 二方库&#xff1a;公司内部的依赖库&#xff0c;一般指公司 内部的其他项目发布的jar包 三方库&#xff1a;公司之外的开源库 比如apache Goo…...

    2024/4/20 9:28:53
  15. Redis核心技术与实战笔记(1)

    对一个大型软件系统的更好的学习方式&#xff1a;先建立起系统观&#xff0c;再关注具体的细枝末节。 先考虑简单的键值数据库架构&#xff1a; 理解数据模型和操作接口&#xff0c;知道Redis可以做什么&#xff0c;不能做什么。 数据模型&#xff1a; key-value类型&#x…...

    2024/4/25 10:49:12
  16. 21天好习惯第一期--12

    今天我学习了递推法&#xff0c;学习了如何正确地使用for语句&#xff0c;do-while语句和while语句 for&#xff08;表达式1;表达式2;表达式3) ↑ ↑ ↖ 循环初始条件&#xff0c;循环控制条件&#xff0c;循环转化条件 表达式1;循环初始条…...

    2024/4/15 6:02:37
  17. 谈谈GIS三维渲染引擎

    minemap:是我们公司的产品&#xff0c;主要以earth的形态展示&#xff0c;支持矢量切片倾斜数据&#xff08;这一点我个人认为是它最大的优点&#xff0c;即兼容了矢量切片精美地图又兼容倾斜数据&#xff0c;目前倾斜数据采用的3dtile格式&#xff09;&#xff0c;目前正在重构…...

    2024/4/21 0:14:14
  18. 地图数据快速渲染------基于传统GIS平台多服务器切片

    传统的地理信息平台显示矢量数据的方式或栅格数据&#xff0c;是直接渲染在软件上进行展示&#xff0c;需要配以专业的地图软件、符号库、字体库等内容。随着BS端对于地图展示的要求&#xff0c;传统的渲染方式已经不能满足要求&#xff08;需要的前置条件太多&#xff0c;而且…...

    2024/4/25 16:23:51
  19. mysql中isnull,ifnull的用法及区别

    isnull(expr)的用法 如果expr为null&#xff0c;isnull()返回1&#xff0c;否则返回0 mysql> select isnull(11); -> 0 mysql> select isnull(1/0); -> 1 ifnull(expr1, expr2) 的用法 如果expr1为null,则返回expr2,否则返回expr1 mysql> SELECT IFNUL…...

    2024/4/20 7:44:34
  20. 手机号归属地数据库;根据手机号查找对应的归属地;

    我在网上找到了一份手机号对应归属地的数据库文档。 链接: https://pan.baidu.com/s/1MQtDkw3sowNmdSeoVJUbEA 密码: tp1o 链接: https://pan.baidu.com/s/1pzh_FqXOP_6Ta103K5Cmyw 密码: 9j5r 如有需要&#xff0c;先点赞、关注&#xff0c;再下载。...

    2024/4/15 6:03:28

最新文章

  1. 麒麟 Kylin V10 一键安装 Oracle 11GR2 单机 ASM(231017)

    前言 Oracle 一键安装脚本&#xff0c;演示麒麟 Kylin V10 一键安装 Oracle 11GR2 单机 ASM&#xff08;231017&#xff09;过程&#xff08;全程无需人工干预&#xff09;&#xff1a;&#xff08;脚本包括 ORALCE PSU/OJVM 等补丁自动安装&#xff09; ⭐️ 脚本下载地址&a…...

    2024/4/25 21:49:59
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 大数据行业英语单词巩固20240410

    20240410 Communication - 沟通 Example: Effective communication is essential for project success. 有效的沟通对于项目的成功至关重要。 Collaboration - 协作 Example: Team collaboration is crucial in achieving our goals. 团队协作对于实现我们的目标至关重要。 …...

    2024/4/20 7:07:50
  4. 数据结构--KMP算法

    数据结构–KMP算法 首先我在这里提出以下问题&#xff0c;一会一起进行探讨 1.什么是最长公共前后缀 2. KMP算法怎么实现对匹配原理 3. 最长公共前后缀怎么求解 KMP算法可以用来解决什么问题&#xff1f; 答&#xff1a;在字符串中匹配子串&#xff0c;也称为模式匹配 分析…...

    2024/4/23 6:16:26
  5. 磁盘管理与文件管理

    文章目录 一、磁盘结构二、MBR与磁盘分区分区的优势与缺点分区的方式文件系统分区工具挂载与解挂载 一、磁盘结构 1.硬盘结构 硬盘分类&#xff1a; 1.机械硬盘&#xff1a;靠磁头转动找数据 慢 便宜 2.固态硬盘&#xff1a;靠芯片去找数据 快 贵 硬盘的数据结构&#xff1a;…...

    2024/4/23 6:16:19
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/25 11:51:20
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/25 18:39:24
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/25 18:38:39
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/25 18:39:23
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/25 18:39:22
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/25 18:39:22
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/25 18:39:20
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/25 16:48:44
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/25 13:39:44
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/25 18:39:16
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/25 0:00:17
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/25 4:19:21
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/25 18:39:14
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/25 18:39:12
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/25 2:10:52
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/25 18:39:00
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/25 13:19:01
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/25 18:38:58
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/25 18:38:57
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57