首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在两个不同的时间之间运行作业调度程序

是指在预定的时间点之间自动执行特定的作业调度任务。作业调度程序是一种用于管理和控制计算机系统中作业执行的软件工具。它可以根据预定的时间表自动启动、停止和监控作业,以确保系统资源的高效利用和任务的顺利完成。

作业调度程序的主要功能包括:

  1. 作业调度:根据预定的时间表,将作业分配给可用的计算资源,并确保作业按照优先级和依赖关系进行顺序执行。
  2. 作业监控:实时监控作业的执行状态和资源利用情况,及时发现和处理异常情况,如作业执行失败、资源不足等。
  3. 作业优化:根据系统资源的利用率和作业的执行时间要求,对作业进行优化调度,以提高系统的整体性能和效率。
  4. 作业日志和报告:记录作业的执行情况、资源消耗和错误日志,生成作业执行报告,用于后续的分析和优化。

作业调度程序在各种场景下都有广泛的应用,例如:

  1. 批处理作业调度:用于定期执行批量处理任务,如数据备份、数据清洗、数据转换等。
  2. 定时任务调度:用于定时执行特定的任务,如定时生成报表、定时发送邮件、定时更新数据等。
  3. 实时任务调度:用于实时处理和响应事件,如实时数据分析、实时监控报警、实时数据同步等。
  4. 分布式任务调度:用于分布式计算环境下的任务调度和资源管理,如大规模数据处理、分布式机器学习等。

腾讯云提供了一系列与作业调度相关的产品和服务,包括:

  1. 云批量计算(BatchCompute):提供高性能、高可靠的批量计算服务,支持作业调度和资源管理,适用于大规模计算任务的处理。
  2. 云函数(Cloud Function):无服务器计算服务,可根据事件触发自动执行特定的函数,适用于定时任务和实时任务的调度。
  3. 定时触发器(Timer Trigger):云函数的一种触发器类型,可按照预定的时间表触发函数执行,适用于定时任务的调度。
  4. 弹性容器实例(Elastic Container Instance):提供轻量级、弹性的容器实例服务,可根据作业调度需求快速启动和停止容器实例。

以上是腾讯云提供的一些与作业调度相关的产品和服务,更多详细信息和产品介绍可以参考腾讯云官方网站:https://cloud.tencent.com/product

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

在Linux上,使用time优雅的统计程序运行时间

time 在 Linux 下是比较常用的命令,可以帮助我们方便的计算程序的运行时间,对比采用不同方案时程序的运行性能。看似简单的命令,其实蕴藏着很多细节和技巧,来跟着肖邦一起学习吧。...这里我来解释一下: real:表示的是墙上时间,说白了,其实就是从程序运行开始到结束所经历的时间; user:表示程序运行期间,cpu 在用户态所花费的时间; sys:表示程序运行期间,cpu 在内核态所花费的时间...其实上边解释的 user 和 sys,是 cpu 执行指令所消耗的时间,并不包含:进程阻塞 IO、调度排队,这些非 cpu 运行时间。...,sleep 命令基本上没有消耗 cpu,程序真实的运行时间就是 2 秒 那我们是不是可以得出如下结论了呢: real >= user + sys 其实这个结论在单个 cpu 情况下,是正确的。...如果服务器是多个 cpu,你的程序正好可以将多个 cpu 充分利用起来,程序运行期间是多核心并行的,那么 user + sys 统计的 cpu 时间可能就会大于 real 时间啦 所以这 3 个时间之间的关系并不是恒定的

10.8K52

在 C++的跨平台开发中,如何处理不同操作系统和编译器之间的细微差异,以确保程序能够稳定且高效地运行?

在 C++ 的跨平台开发中,处理不同操作系统和编译器之间的细微差异是非常重要的。以下是一些处理差异的技巧: 使用条件编译:使用预处理指令,根据不同的操作系统和编译器来编写不同的代码。...__) // Linux 特定代码 #elif defined(__APPLE__) // macOS 特定代码 #endif 使用标准库和跨平台框架:尽可能使用标准库和跨平台框架来处理不同平台之间的差异...提前了解平台差异:在开始跨平台开发之前,深入了解目标平台的特性和限制。这样可以避免在后期重构代码。 测试和调试:在每个目标平台上进行充分的测试和调试,以确保程序的稳定性和高效性。...避免使用非标准特性:尽量避免使用不同操作系统和编译器之间的非标准特性,以避免出现不可预测的结果。 分离平台特定代码:将平台特定的代码分离到独立的文件或模块中,这样可以更容易维护和管理。...总而言之,处理不同操作系统和编译器之间的细微差异需要深入了解每个平台的特性,并采取适当的措施来确保程序在不同平台上的稳定性和高效性。

11210
  • 在多个可执行程序(exe)之间共享同一个私有部署的 .NET 运行时

    然而,如果你的项目会生成多个 exe 程序,那么他们每个独立发布时,互相之间的运行时根本不互通。即便编译时使用完全相同的 .NET 框架(例如都设为 net6.0),最终也无法共用运行时文件。...那么,还有没有方法能在多个 exe 之间共享运行时而又不受制于系统安装的版本呢?有!...如果是“依赖框架”,那么发布完后,需要目标系统先安装有 .NET 运行时,而这个系统全局的 .NET 运行时会被各个不同的应用影响,谁知道会不会被精简或被魔改呢!...如果是“独立”,那么这几个 exe 之间的运行时不会共享,每个都占用了大量的存储空间,用来放一模一样的 .NET 运行时和库文件,而且如果放一起的话还跑不起来——就算后续修复了跑不起来的 bug,上面那个多级文件夹之间共享这些...肯定不行,因为不同文件夹下的 exe 如果希望共享同一个独立部署的运行时,那么相对路径肯定不同。 如果每个 exe 设自己的 DOTNET_ROOT 环境变量呢?那谁来设呢?

    51420

    批量ETL任务调度运维平台 TASKCTL 作业互斥与强制依赖

    互斥表示两个不同作业不能同时运行。作业互斥通过作业 ostr 属性实现。...例如: ​在上图中,两个作业 GetData1 与 GetData3 按串并关系,本来是可以同时运行的作业,但由于通过 ostr 属性设置相同互斥资源,从而使它们实现互斥并不能同时运行。...关于互斥资源的设置,主要通过一个自定义字符串来表示,只要名称相同, 就表示相关作业互斥。 作业之间的互斥不仅在相同模块中实现,也可以在不同模块甚至不同流程之间体现,只要资源名称相同即可。...实际上,在具体应用中,同一流程中距离相近的作业一般不会设置互斥,因为完全可以通过简单串并进行避免两个作业的同时运行,互斥更多的实际应用场景是在不同流程的作业之间实现互斥,这种距离遥远的作业,采用互斥属性更有实际意义...另外,互斥只能对部署在同一调度服务器的流程生效,互斥资源名称的异同也是相对同一调度服务器而言。对于不同调度服务器之间的流程不会产生任何关系。

    47730

    计算机操作系统进程管理总结报告_进程的管理和控制实验报告

    三、调度算法 这里我们根据不同的运行环境来讨论调度算法 3.1、批处理系统 那什么是批处理系统呢? 在批处理系统中用户所提交的作业先放到外存上。并且排成一个队列,称之为“后备队列”。...由于同时在内存中装有若干道程勋,这样便可以在运行A的时候,利用其I/O操作而暂定执行CPU的空闲时间,在调度另一个程序B运行,同样可以利用程序B在I/O操作时的CPU空闲时间,在调度程序C运行,使多道程序交替运行...如果一直有短作业到来,那么长作业永远也得不到调度。 三、最短剩余时间优先shortest remaining time next(SRTN) 调度程序总是悬着剩余运行时间最少的进程运行。...它时短作业优先的抢占式版本。 程序的运行时间必须提前知道,当一个新作业到达时,整个运行时间和当前运行进程的剩余时间相比较,如果新作业的总时间小于当前运行程序的剩余运行时间少,则选择运行新程序。...例如:一个任务在200ms时必须完成,而它本省所需的运行时间为100ms,因此调度程序必须在100ms之前调度执行,该任务的紧急程度(松弛程度)为100ms。

    1.1K20

    python3--进程

    多个不同的进程可以包含相同的程序:一个程序在不同的数据集里就构成不同的进程,能得到不同的结果;但是执行过程中,程序不能发生改变。...程序是永久的,进程是暂时的 注意:同一个程序执行两次,就会在操作系统中出现两个进程,所以我们可以同时运行一个软件,分别做不同的事情也不会混乱 进程调度 要想多个进程交替运行,操作系统必须对这些进程进行调度...,再依次将它放入第三队列,……,如此下去,当一个长作业(进程)从第一队列依次降到第n队列后,在第n 队列便采取按时间片轮转的方式运行。...在了解其他概念之前,我们首先要了解进程的几个状态。在程序运行的过程中,由于被操作系统的调度算法控制,程序会进入几个状态:就绪,运行和阻塞。   ...想象一下你一边打着电话一边还需要抬头看到底队伍排到你了没有,如果把打电话和观察排队的位置看成是程序的两个操作的话,这个程序需要在这两种不同的行为之间来回的切换,效率可想而知是低下的。

    85920

    看完这篇操作系统,和面试官扯皮就没问题了。

    消息队列:消息队列是内核中存储消息的链表,它由消息队列标识符进行标识,这种方式能够在不同的进程之间提供全双工的通信连接。...最短作业优先 批处理中,第二种调度算法是 最短作业优先(Shortest Job First),我们假设运行时间已知。...例如,一家保险公司,因为每天要做类似的工作,所以人们可以相当精确地预测处理 1000 个索赔的一批作业需要多长时间。当输入队列中有若干个同等重要的作业被启动时,调度程序应使用最短优先作业算法 ?...考虑有 4 个作业的情况,其运行时间分别为 a、b、c、d。第一个作业在时间 a 结束,第二个在时间 a + b 结束,以此类推。平均周转时间为 (4a + 3b + 2c + d) / 4 。...最短剩余时间优先 最短作业优先的抢占式版本被称作为 最短剩余时间优先(Shortest Remaining Time Next) 算法。使用这个算法,调度程序总是选择剩余运行时间最短的那个进程运行。

    61410

    一篇文章带你「重新认识」线程上下文切换怎么玩儿

    这是Java建设者第68篇原创文章 调度 当一个计算机是多道程序设计系统时,会频繁的有很多进程或者线程来同时竞争 CPU 时间片。当两个或两个以上的进程/线程处于就绪状态时,就会发生这种情况。...调度介绍 让我们回到早期以磁带上的卡片作为输入的批处理系统的时代,那时候的调度算法非常简单:依次运行磁带上的每一个作业。对于多道程序设计系统,会复杂一些,因为通常会有多个用户在等待服务。...进行抢占式调度需要在时间间隔结束时发生时钟中断,以将 CPU 的控制权交还给调度程序。如果没有可用的时钟,那么非抢占式就是唯一的选择。 调度算法的分类 毫无疑问,不同的环境下需要不同的调度算法。...之所以出现这种情况,是因为不同的应用程序和不同的操作系统有不同的目标。也就是说,在不同的系统中,调度程序的优化也是不同的。...例如,在批处理系统中,调度程序控制哪个作业调入内存运行。

    46510

    一篇文章带你「重新认识」线程上下文切换怎么玩儿

    这是Java建设者第68篇原创文章 调度 当一个计算机是多道程序设计系统时,会频繁的有很多进程或者线程来同时竞争 CPU 时间片。当两个或两个以上的进程/线程处于就绪状态时,就会发生这种情况。...调度介绍 让我们回到早期以磁带上的卡片作为输入的批处理系统的时代,那时候的调度算法非常简单:依次运行磁带上的每一个作业。对于多道程序设计系统,会复杂一些,因为通常会有多个用户在等待服务。...进行抢占式调度需要在时间间隔结束时发生时钟中断,以将 CPU 的控制权交还给调度程序。如果没有可用的时钟,那么非抢占式就是唯一的选择。 调度算法的分类 毫无疑问,不同的环境下需要不同的调度算法。...之所以出现这种情况,是因为不同的应用程序和不同的操作系统有不同的目标。也就是说,在不同的系统中,调度程序的优化也是不同的。...例如,在批处理系统中,调度程序控制哪个作业调入内存运行。

    63010

    线程上下文切换,你应该重新认识一下!

    调度 当一个计算机是多道程序设计系统时,会频繁的有很多进程或者线程来同时竞争 CPU 时间片。当两个或两个以上的进程/线程处于就绪状态时,就会发生这种情况。...调度介绍 让我们回到早期以磁带上的卡片作为输入的批处理系统的时代,那时候的调度算法非常简单:依次运行磁带上的每一个作业。对于多道程序设计系统,会复杂一些,因为通常会有多个用户在等待服务。...进行抢占式调度需要在时间间隔结束时发生时钟中断,以将 CPU 的控制权交还给调度程序。如果没有可用的时钟,那么非抢占式就是唯一的选择。 调度算法的分类 毫无疑问,不同的环境下需要不同的调度算法。...之所以出现这种情况,是因为不同的应用程序和不同的操作系统有不同的目标。也就是说,在不同的系统中,调度程序的优化也是不同的。...例如,在批处理系统中,调度程序控制哪个作业调入内存运行。

    1.3K20

    进程、线程与协程傻傻分不清?一文带你吃透!

    当进程只有一个线程时,可以认为进程等于线程,线程上下文的切换分两种情况 不同进程的线程,切换的过程就跟进程上下文切换一样 两个线程是属于同一个进程,因为虚拟内存是共享的,所以在切换时,虚拟内存这些资源就保持不动...所以,对于交互式比较强的应用,响应时间也是调度程序需要考虑的原则( 用户提交请求到系统第一次产生响应所花费的时间,在交互式系统中,响应时间是衡量调度算法好坏的主要标准)。 总之就是 要快!...比如,一个 长作业 在就绪队列等待运行,而这个就绪队列有非常多的短作业,最终使得 长作业 不断的往后推,周转时间变长,致使长作业长期不会被运行(适用于 I/O 繁忙型作业的系统)。 ?...从上面的公式,可以发现: 如果两个进程的「等待时间」相同时,「要求的服务时间」越短,「优先权」就越高,这样短作业的进程容易被选中运行(如果等待时间较短,进程的运行时间越短,优先权就会越高 => 等待时间较短的短作业进程...但是,对于多用户计算机系统就有不同的看法了,它们希望调度是有优先级的,希望调度程序能从就绪队列中选择最高优先级的进程运行,这就是最高优先级(Highest Priority First,HPF)算法。

    88920

    以下30张进程和线程基础知识图片全家桶,让你一次全部掌握

    在某个时间,只能运行一个程序。...进程的上下文切换 各个进程之间是共享 CPU 资源的,在不同的时候进程之间需要切换,让不同的进程可以在 CPU 执行,那么这个一个进程切换到另一个进程运行,称为进程的上下文切换。...所以,要提高系统的吞吐率,调度程序要权衡长任务和短任务进程的运行完成数量。 原则三:从进程开始到结束的过程中,实际上是包含两个时间,分别是进程运行时间和进程等待时间,这两个时间总和就称为周转时间。...说白了,这么多调度原则,目的就是要使得进程要「快」。 调度算法 不同的调度算法适用的场景也是不同的。 接下来,说说在单核 CPU 系统中常见的调度算法。...响应比」就越高,这样短作业的进程容易被选中运行; 如果两个进程「要求的服务时间」相同时,「等待时间」越长,「响应比」就越高,这就兼顾到了长作业进程,因为进程的响应比可以随时间等待的增加而提高,当其等待时间足够长时

    84973

    群晖NAS上安装虚拟机教程在同一设备上运行多个不同的操作系统和应用程序

    前言 想要在同一设备上运行多个不同的操作系统和应用程序,实现更高效的资源利用吗?...在VMM中,单击左侧导航栏中的“网络”选项卡,然后单击“创建”。在弹出窗口中,输入名称和描述,选择适当的IP地址和子网掩码,然后单击“应用”。 步骤4:创建虚拟机 在VMM中创建虚拟机非常简单。...这可能需要一段时间,具体取决于您选择的操作系统的大小和类型。 步骤5:配置虚拟机网络 在安装完成后,您需要配置虚拟机的网络设置,以便它可以与外部网络通信。...单击左侧导航栏中的“虚拟机”选项卡,在列表中选择您刚才创建的虚拟机,然后单击右键并选择“编辑”。 在弹出窗口中,单击“网络”选项卡,并选择您刚才创建的虚拟交换机。...总结 通过以上步骤,您可以在群晖NAS上成功安装和运行虚拟机,使您的资源利用更加高效。当然,由于每个人的需求都不同,所以具体的虚拟机配置和设置可能会有所不同。

    12.2K60

    操作系统简介,中断,通道,调度算法

    (可以理解为不同的cpu主存可以通过不同的通道,执行不同的通道指令,控制控制器执行不同操作) 通道是一种通过执行通道程序管理I/O操作的控制器,它使主机(CPU和内存)与I/O操作之间达到更高的并行程度...宏观上是并行,因为它们像是在同时运行,分配时间片; 微观上来说是串行,因为在一台处理上,同一时刻只能处理同一条指令 就是将cpu利用率增加到最大,我们有很多调度算法(根据系统的资源分配策略所规定的资源分配算法...对于不同的的系统和系统目标,通常采用不同的调度算法 例如,在批处理系统中,为了照顾为数众多的段作业,应采用短作业优先的调度算法; 又如在分时系统中,为了保证系统具有合理的响应时间,应当采用轮转法进行调度...如果他能在一个时间片中完成,便可撤离;如果未完成,就转入第二队列的末尾,在同样等待调度…… 如此下去,当一个长作业(进程)从第一队列依次将到第n队列(最后队列)后,便按第n队列时间片轮转运行。...3) 仅当第一队列空闲时,调度程序才调度第二队列中的进程运行;仅当第1到第(i-1)队列空时, 才会调度第i队列中的进程运行,并执行相应的时间片轮转。

    14110

    .NET面试题系列 - 多线程概念(1)

    CPU的,一个作业在等待I/O处理时,CPU调度另外一个作业运行,因此CPU的利用率显著地提高了。...所谓多道程序设计指的是允许多个程序同时进入一个计算机系统的主存储器并启动进行计算的方法。也就是说,计算机内存中可以同时存放多道(两个以上相互独立的)程序,它们都处于开始和结束之间。...(2)进程切换:进程运行实际上是指进程在CPU上执行,那么如何将CPU在多个进程之间进行切换也是一个问题。OS通过进程调度来解决这个问题。...在中断处理中,其他程序的行为打断了当前正在运行的程序。当CPU接收到中断请求时,会在正在运行的程序和发起中断请求的程序之间进行一次上下文切换。...在多任务处理中,CPU会在不同程序之间来回切换,每个程序都有相应的处理时间片,CPU在两个时间片的间隔中进行上下文切换。用户态切换则是用户自己的行为,例如从游戏中切出来,看一会网站的行为。

    87320

    进程和线程基础知识全家桶,30 张图一套带走

    在某个时间,只能运行一个程序。...进程的上下文切换 各个进程之间是共享 CPU 资源的,在不同的时候进程之间需要切换,让不同的进程可以在 CPU 执行,那么这个一个进程切换到另一个进程运行,称为进程的上下文切换。...所以,要提高系统的吞吐率,调度程序要权衡长任务和短任务进程的运行完成数量。 原则三:从进程开始到结束的过程中,实际上是包含两个时间,分别是进程运行时间和进程等待时间,这两个时间总和就称为周转时间。...说白了,这么多调度原则,目的就是要使得进程要「快」。 调度算法 不同的调度算法适用的场景也是不同的。 接下来,说说在单核 CPU 系统中常见的调度算法。...从上面的公式,可以发现: 如果两个进程的「等待时间」相同时,「要求的服务时间」越短,「响应比」就越高,这样短作业的进程容易被选中运行; 如果两个进程「要求的服务时间」相同时,「等待时间」越长,「响应比」

    49110

    xv6(16) 进程二:调度算法

    进程二:调度算法 调度是操作系统里面一个很重要的概念,进程中有调度,页面置换有调度,磁盘访问也有调度,本文讲述的是进程之间的调度,以及多处理器之间的调度策略。...抢占式:处理器分配给队列中某优先级最高的进程后,在执行的过程中如果来了一个优先级更高的进程,调度程序则停止当前进程的执行转去调度新来的那个优先级更高的进程。...特点: 综合时间片轮转法和优先级两种调度算法 兼顾长作业和短作业,短作业可以在第一个就绪队列很快的执行完成,长作业在第一个就绪队列中没有执行完,移到下一个就绪队列等待执行,等待时间边长但执行时间也变长了...可抢占 多处理器调度 单队列 这种形式不需要在单处理器的框架下做太多改动,同样的是维护一个进程的全局就绪队列,为所有 CPU 共享。运行在 CPU 上的调度程序从这个队列中挑选合适的进程执行。...每个 CPU 只在自己本地的队列中挑选合适的进程,速度很快。 队列之间的调度相互独立,可不再使用锁机制,可扩展性增强,比如每个队列可使用不同的调度算法。

    44210

    面试整理学习专题2:操作系统

    1、并发和并行的理解? 并行指两个或者多个事件同一时刻发生,并发是两个或者多个事件在同一时间间隔发生; 并行是在不同实体上的多个事件,并发是在同一实体上的多个事件(如单核CPU轮转时间片)。...当前正在运行的进程停止之后,选择在就绪队列中存在时间最长的进程进行运行,既可以用于作业调度,又可以用于进程调度。 2、时间片轮转法。...主要用于分时系统,将所有就绪进程按照到达时间的先后次序排成一个队列,进程调度程序总是选择第一个进行执行。即先来先服务的原则,但是只能运行一个时间片。 3、短作业优先调度法。...从后备队列中选择一个或者若干个估计运行时间最短的作业,将他们调入内存运行。是一个非抢占策略。 4、最短剩余时间优先调度算法。...对先来先服务和短作业优先调度算法的一种综合平衡。 同时考虑每个作业的等待时间和估计运行时间,进行作业调度时,计算后备作业队列中每个作业的响应比,选出响应比最高的 6、优先级调度算法。

    7110

    大学课程 | 计算机操作系统

    I/O与CPU之间的速差造成的CPU空闲 1.2.3 多道批处理系统 多道批处理系统的概念:在系统中,用户所提交的作业先存放在外存上,并排列成一个队列,称为“后备队列”,然后由作业调度程序按一定的算法,...并发性:两个或多个时间在同一时间间隔内发生 引入进程 进程:在系统中能独立运行并作为资源分配的基本单位 引入线程是现代操作系统的重要标志 1.3.2 共享 OS环境下的资源共享或称资源复用,是指系统中的资源可供内存中多个并发执行的进程共同使用...并发性:一个进程中的多个线程之间亦可以并发执行,甚至还允许在一个进程中所有线程都能并发执行 拥有资源:仅有一点必不可少的,能保证独立运行的资源,如:TCB等 独立性:同一进程中的不同线程之间的独立性要比不同进程之间的独立性低...将那些暂时不能运行的进程,调至外存等待,此时进程的状态称为挂起 其中进程调度的运行频率最高 作业调度周期最长 中级调度的运行频率介于两者之间 3.1.2 处理机调度算法的目标 处理机调度算法的共同目标...并启动新的时间片 (2)在一个时间片用完时,计时器中断处理程序被激活,如果进程尚未运行完,调度程序把它送入就绪队列末尾 时间片大小的确定 小:频繁地执行进程调度和进程上下文切换,增加系统开销 大:每个进程都能在一个时间片内完成

    89830

    Volcano火山:容器与批量计算的碰撞

    比较著名的例子应该就属MapReduce了,它的两个阶段都属于这种类型:mapper任务在执行时并不会彼此通信同步运行状态;另一个常见的例子是蒙特·卡罗方法 ,各个子任务在计算随机数时也无需彼此通信、同步...同时,由于子任务之间无需信息和同步,当其中某几个计算节点(workers)被驱逐后,虽然作业的执行时间可能会变长,但整个作业仍可以顺利完成;而当计算节点增加时,作业的执行时间一般都会缩短。...但是在面对复杂并行的作业时,二次调度就显得有也吃力;复杂并行作业一般并没有太多的子任务,子任务之间还经常需要同时启动,子任务之间的通信拓扑也可能不同 (e.g. ps/worker, mpi),而且作业与作业之间对资源的需求差异较大...队列的主要目的是: 在不同的“租户”或资源池之间共享资源 为不同的“租户”或资源池支持不同的调度策略或算法 这些功能可以通过层次队列进一步扩展,在层次队列中,项目被赋予额外的优先级,这将允许它们比队列中的其他项目...基于时间的公平调度 (Fairness over time) 对于批处理工作负载,通常不要求在某个时间点公平地分配资源,而是要求在长期内公平地分配资源。

    1.9K20
    领券