你好呀,我是歪歪。

最近有个读者给我说,面试聊到线程池的时候,相谈甚欢,基本都回答上来了,但是其中有一个问题直接把他干懵逼了。

面试官问他:你说一下线程池里面的锁吧。

结果他关于线程池的知识点其实都是在各个博客或者面经里面看到的,没有自己去翻阅过源码,也就根本就没有注意过线程池里面还有锁的存在。

他还给我抱怨:

面试官:你给我说一下线程池里面的几个锁吧

他这么一说,我也觉得,好像大家聊到线程池的时候,都没有怎么聊到里面用到的锁。

确实是存在感非常低。

要不我就安排一下?

面试官:你给我说一下线程池里面的几个锁吧

mainLock

其实线程池里面用到锁的地方还是非常的多的。

比如我之前说过,线程池里面有个叫做 workers 的变量,它存放的东西,可以理解为线程池里面的线程。

而这个对象的数据结构是 HashSet。

HashSet 不是一个线程安全的集合类,这你知道吧?

所以,你去看它上面的注释是怎么说的:

面试官:你给我说一下线程池里面的几个锁吧

当持有 mainLock 这个玩意的时候,才能被访问。

就算我不介绍,你看名字也能感觉的到:如果没有猜测的话,那么 mainLock 应该是一把锁。

到底是不是呢,如果是的话,它又是个什么样子的锁呢?

面试官:你给我说一下线程池里面的几个锁吧

在源码中 mainLock 这个变量,就在 workers 的正上方:

面试官:你给我说一下线程池里面的几个锁吧

原来它的真身就是一个 ReentrantLock。

用一个 ReentrantLock 来保护一个 HashSet,完全没毛病。

那么 ReentrantLock 和 workers 到底是怎么打配合的呢?

我们还是拿最关键的 addWorker 方法来说:

面试官:你给我说一下线程池里面的几个锁吧

用到锁了,那么必然是有什么东西需要被被独占起来的。

你再看看,你加锁独占了某个共享资源,你是想干什么?

绝大部分情况下,肯定是想要改变它,往里面塞东西,对不对?

所以你就按照这个思路分析,addWorker 中被锁包裹起来的这段代码,它到底在独占什么东西?

其实都不用分析了,这里面的共享数据一共就两个。两个都需要进行写入操作,这两共享数据,一个是workers 对象,一个是 largestPoolSize 变量。

workers 我们前面说了,它的数据结构是线程不安全的 HashSet。

largestPoolSize 是个啥玩意,它为什么要被锁起来?

面试官:你给我说一下线程池里面的几个锁吧

这个字段是用来记录线程池中,曾经出现过的最大线程数。

包括读取这个值的时候也是加了 mianLock 锁的:

面试官:你给我说一下线程池里面的几个锁吧

其实我个人觉得这个地方用 volatile 修饰一下 largestPoolSize 变量,就可以省去 mainLock 的上锁操作。

同样也是线程安全的。

不知道你是不是也是这样觉得的?

如果你也是这样想的话,不好意思,你想错了。

在线程池里面其他的很多字段都用到了 volatile:

面试官:你给我说一下线程池里面的几个锁吧

为什么 largestPoolSize 不用呢?

你再看一下前面 getLargestPoolSize 方法获取值的地方。

如果修改为 volatile,不上锁,就少了一个 mainLock.lock() 的操作。

去掉这个操作,就有可能少了一个阻塞等待的操作。

假设 addWorkers 方法还没来得及修改 largestPoolSize 的值,就有线程调用了 getLargestPoolSize 方法。

由于没阻塞,直接获取到的值,只是那一瞬间的 largestPoolSize,不是一定是 addWorker 方法执行完成后的

加上阻塞,程序是能感知到 largestPoolSize 有可能正在发生变化,所以获取到的一定是 addWorker 方法执行完成后的 largestPoolSize。

所以我理解加锁,是为了最大程度上保证这个参数的准确性。

除了前面说的几个地方外,还是有很多 mainLock 使用的地方:

面试官:你给我说一下线程池里面的几个锁吧

我就不一一介绍了,你得自己去翻一翻,这玩意介绍起来也没啥意思,都是一眼就能瞟明白的代码。

说个有意思的。

你有没有想过这里 Doug Lea 老爷子为什么用了线程不安全的 HashSet,配合 ReentrantLock 来实现线程安全呢?

为什么不直接搞一个线程安全的 Set 集合,比如用这个玩意 Collections.synchronizedSet?

答案其实在前面已经出现过了,只是我没有特意说,大家没有注意到。

就在 mainLock 的注释上写着:

面试官:你给我说一下线程池里面的几个锁吧

我捡关键的地方给你说一下。

首先看这句:

While we could use a concurrent set of some sort, it turns out to be generally preferable to use a lock.

这句话是个倒装句,应该没啥生词,大家都认识。

其中有个 it turns out to be,可以介绍一下,这是个短语,经常出现在美剧里面的对白。

翻译过来就是四个字“事实证明”。

所以,上面这整句话就是这样的:虽然我们可以使用某种并发安全的 set 集合,但是事实证明,一般来说,使用锁还是比较好的。

接下来老爷子就要解释为什么用锁比较好了。

我翻译上这句话的意思就是我没有乱说,都是有根据的,因为这是老爷子亲自解释的为什么他不用线程安全的 Set 集合。

第一个原因是这样说的:

Among the reasons is that this serializes interruptIdleWorkers, which avoids unnecessary interrupt storms, especially during shutdown. Otherwise exiting threads would concurrently interrupt those that have not yet interrupted.

英文是的,我翻译成中文,加上自己的理解是这样的。

首先第一句里面有个 “serializes interruptIdleWorkers”,这两个单词组合在一起还是有一定的迷惑性的。

serializes 在这里,并不是指我们 Java 中的序列化操作,而是需要翻译为“串行化”。

interruptIdleWorkers,这玩意根本就不是一个单词,这是线程池里面的一个方法:

面试官:你给我说一下线程池里面的几个锁吧

在这个方法里面进来第一件事就是拿 mainLock 锁,然后尝试去做中断线程的操作。

由于有 mainLock.lock 的存在,所以多个线程调用这个方法,就被 serializes 串行化了起来。

串行化起来的好处是什么呢?

就是后面接着说的:避免了不必要的中断风暴(interrupt storms),尤其是调用 shutdown 方法的时候,避免退出的线程再次中断那些尚未中断的线程。

为什么这里特意提到了 shutdown 方法呢?

因为 shutdown 方法调用了 interruptIdleWorkers:

面试官:你给我说一下线程池里面的几个锁吧

所以上面啥意思呢?

这个地方就要用一个反证法了。

假设我们使用的是并发安全的 Set 集合,不用 mainLock。

这个时候有 5 个线程都来调用 shutdown 方法,由于没有用 mainLock ,所以没有阻塞,那么每一个线程都会运行 interruptIdleWorkers。

所以,就会出现第一个线程发起了中断,导致 worker ,即线程正在中断中。第二个线程又来发起中断了,于是再次对正在中断中的中断发起中断。

额,有点像是绕口令了。

所以我打算重复一遍:对正在中断中的中断,发起中断。

因此,这里用锁是为了避免中断风暴(interrupt storms)的风险。

并发的时候,只想要有一个线程能发起中断的操作,所以锁是必须要有的。有了锁这个大前提后,反正 Set 集合也会被锁起来,索性就不需要并发安全的 Set 了。

所以我理解,在这里用 mainLock 来实现串行化,同时保证了 Set 集合不会出现并发访问的情况。

只要保证这个这个 Set 操作的时候都是被锁包裹起来的就行,因此,不需要并发安全的 Set 集合。

即注释上写的:Accessed only under mainLock.

记住了,有可能会被考哦。

然后,老爷子说的第二个原因:

It also simplifies some of the associated statistics bookkeeping of largestPoolSize etc.

这句话就是说的关于加锁好维护 largestPoolSize 这个参数,不再贅述了。

哦,对了,这是有个 etc,表示“诸如此类”的意思。

这个 etc 指的就是这个 completedTaskCount 参数,道理是一样的:

面试官:你给我说一下线程池里面的几个锁吧

另一把锁

除了前面说的 mainLock 外,线程池里面其实还有一把经常被大家忽略的锁。

那就是 Worker 对象。

面试官:你给我说一下线程池里面的几个锁吧

可以看到 Worker 是继承自 AQS 对象的,它的很多方法也是和锁相关的。

面试官:你给我说一下线程池里面的几个锁吧

同时它也实现了 Runnable 方法,所以说到底它就是一个被封装起来的线程,用来运行提交到线程池里面的任务,当没有任务的时候就去队列里面 take 或者 poll 等着,命不好的就被回收了。

我们还是看一下它加锁的地方,就在很关键的 runWorker 方法里面:

java.util.concurrent.ThreadPoolExecutor#runWorker

面试官:你给我说一下线程池里面的几个锁吧

那么问题就来了:

这里是线程池里面的线程,正在执行提交的任务的逻辑的地方,为什么需要加锁呢?

这里为什么又自己搞了一个锁,而不用已有的 ReentrantLock ,即 mainLock 呢?

答案还是写在注释里面:

面试官:你给我说一下线程池里面的几个锁吧

我知道你看着这么大一段英文瞬间就没有了兴趣。

但是别慌,我带你细嚼慢咽。

第一句话就开门见山的说了:

Class Worker mainly maintains interrupt control state for threads running tasks.

worker 类存在的主要意义就是为了维护线程的中断状态。

维护的线程也不是一般的线程,是 running tasks 的线程,也就是正在运行的线程。

怎么理解这个“维护线程的中断状态”呢?

你去看 Worker 类的 lock 和 tryLock 方法,都各自只有一个地方调用。

lock 方法我们前面说了,在 runWorker 方法里面调用了。

在 tryLock 方法是在这里调用的:

面试官:你给我说一下线程池里面的几个锁吧

这个方法也是我们的老朋友了,前面刚刚才讲过,是用来中断线程的。

中断的是什么类型的线程呢?

面试官:你给我说一下线程池里面的几个锁吧

就是正在等待任务的线程,即在这里等着的线程:

java.util.concurrent.ThreadPoolExecutor#getTask

面试官:你给我说一下线程池里面的几个锁吧

换句话说:正在执行任务的线程是不应该被中断的。

那线程池怎么知道那哪任务是正在执行中的,不应该被中断呢?

我们看一下判断条件:

面试官:你给我说一下线程池里面的几个锁吧

关键的条件其实就是 w.tryLock() 方法。

所以看一下 tryLock 方法里面的核心逻辑是怎么样的:

面试官:你给我说一下线程池里面的几个锁吧

核心逻辑就是一个 CAS 操作,把某个状态从 0 更新为 1,如果成功了,就是 tryLock 成功。

“0”、“1” 分别是什么玩意呢?

注释,答案还是在注释里面:

面试官:你给我说一下线程池里面的几个锁吧

所以,tryLock 中的核心逻辑compareAndSetState(0, 1),就是一个上锁的操作。

如果 tryLock 失败了,会是什么原因呢?

肯定是此时的状态已经是 1 了。

那么状态什么时候变成 1 呢?

一个时机就是执行 lock 方法的时候,它也会调用 tryAcquire 方法。

那 lock 是在什么时候上锁的呢?

runWorker 方法里面,获取到 task,准备执行的时候。

也就是说状态为 1 的 worker 肯定就是正在执行任务的线程,不可以被中断。

另外,状态的初始值被设置为 -1。

面试官:你给我说一下线程池里面的几个锁吧

我们可以写个简单的代码,验证一下上面的三个状态:

面试官:你给我说一下线程池里面的几个锁吧

首先我们定义一个线程池,然后调用 prestartAllCoreThreads 方法把所有线程都预热起来,让它们处于等待接收任务的状态。

你说这个时候,三个 worker 的状态分别是什么?

面试官:你给我说一下线程池里面的几个锁吧

那必须得是 0 ,未上锁的状态。

当然了,你也有可能看到这样的局面:

面试官:你给我说一下线程池里面的几个锁吧

-1 是从哪里来的呢?

别慌,我等下给你讲,我们先看看 1 在哪呢?

按照之前的分析,我们只需要往线程池里面提交一个任务即可:

面试官:你给我说一下线程池里面的几个锁吧

这个时候,假如我们调用 shutdown 呢,会发什么?

当然是中断空闲的线程了。

那正在执行任务的这个线程怎么办呢?

因为是个 while 循环,等到任务执行完成后,会再次调用 getTask 方法:

面试官:你给我说一下线程池里面的几个锁吧

getTask 方法里面会先判断线程池状态,这个时候就能感知到线程池关闭了,返回 null,这个 worker 也就默默的退出了。

面试官:你给我说一下线程池里面的几个锁吧

好了,前面说了这么多,你只要记住一个大前提:自定义 worker 类的大前提是为了维护中断状态,因为正在执行任务的线程是不应该被中断的。

接着往下看注释:

We implement a simple non-reentrant mutual exclusion lock rather than use ReentrantLock because we do not want worker tasks to be able to reacquire the lock when they invoke pool control methods like setCorePoolSize.

这里解释了为什么老爷子不用 ReentrantLock 而是选择了自己搞一个 worker 类。

因为他想要的是一个不能重入的互斥锁,而 ReentrantLock 是可以重入的。

从前面分析的这个方法也能看出来,是一个非重入的方法:

面试官:你给我说一下线程池里面的几个锁吧

传进来的参数根本没有使用,代码里面也没有累加的逻辑。

如果你还没反应过来是怎么回事的话,我给你看一下 ReentrantLock 里面的重入逻辑:

面试官:你给我说一下线程池里面的几个锁吧

你看到了吗,有一个累加的过程。

释放锁的时候,又有一个与之对应的递减的过程,减到 0 就是当前线程释放锁成功:

面试官:你给我说一下线程池里面的几个锁吧

而上面的累加、递减的逻辑在 worker 类里面通通是没有的。

那么问题又来了:如果是可以重入的,会发生什么呢?

目的还是很前面一样:不想打断正在执行任务的线程。

同时注释里面提到了一个方法:setCorePoolSize。

你说巧不巧,这个方法我之前写线程池动态调整的时候重点讲过呀:

面试官:你给我说一下线程池里面的几个锁吧

可惜当时主要讲 delta>0 里面的的逻辑去了。

现在我们看一下我框起来的地方。

workerCountOf(ctl.get()) > corePoolSize 为 true 说明什么情况?

说明当前的 worker 的数量是多于我要重新设置的 corePoolSize,需要减少一点。

怎么减少呢?

调用 interruptIdleWorkers 方法。

这个方法我们前面刚刚分析了,我再拿出来一起看一下:

面试官:你给我说一下线程池里面的几个锁吧

里面有个 tryLock,如果是可以重入的,会发生什么情况?

是不是有可能把正在执行的 worker 给中断了。

这合适吗?

面试官:你给我说一下线程池里面的几个锁吧

好了,注释上的最后一句话:

Additionally, to suppress interrupts until the thread actually starts running tasks, we initialize lock state to a negative value, and clear it upon start (in runWorker).

这句话就是说为了在线程真正开始运行任务之前,抑制中断。所以把 worker 的状态初始化为负数(-1)。

大家要注意这个:and clear it upon start (in runWorker).

在启动的时候清除 it,这个 it 就是值为负数的状态。

老爷子很贴心,把方法都给你指明了:in runWorker.

所以你去看 runWorker,你就知道为什么这里上来先进行一个 unLock 操作,后面跟着一个 allow interrupts 的注释:

面试官:你给我说一下线程池里面的几个锁吧

因为在这个地方,worker 的状态可能还是 -1 呢,所以先 unLock,把状态刷到 0 去。

同时也就解释了前面我没有解释的 -1 是哪里来的:

面试官:你给我说一下线程池里面的几个锁吧

想明白了吗,-1 是哪里来的?

肯定是在启动过程中,执行了 workers.add 方法,但是还没有来得及执行 runWorker 方法的 worker 对象,它们的状态就是 -1。

面试官:你给我说一下线程池里面的几个锁吧

最后说一句

好了,看到了这里了,点赞安排一个吧。写文章很累的,需要一点正反馈。

给各位读者朋友们磕一个了:

面试官:你给我说一下线程池里面的几个锁吧

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 11. LeetCode 375. 猜数字大小 II

    LeetCode 375. 猜数字大小 II 天津科技大学第六届科技文化节算法设计大赛第11题 难度:中等 题目: 我们正在玩一个猜数游戏,游戏规则如下: 我从 1 到 n 之间选择一个数字,你来猜我选了哪个数字。 每次你猜错了&…...

    2024/4/28 22:18:16
  2. 【数据挖掘】数据样本的归一化处理方法

    1、为什么要进行数据样本归一化? 当我们对数据集进行处理和分析时,不同数据的比较需要进行包括量纲、量纲单位在内的各项内容进行数据统一标准化处理,以建立各类数据的可比性。量纲:物理量的基本属性。 2、数据归一化处理方法有哪…...

    2024/4/27 4:47:06
  3. 二进制反射格雷码和Tromino问题Python代码实现

    二进制反射格雷码和Tromino问题Python代码实现实现n位二进制反射格雷码(采用递归的减治法)算法设计思想具体步骤描述实现源码运行结果截图实现n位二进制反射格雷码(非递归算法实现)算法设计思想具体步骤描述实现源码运行结果截图分…...

    2024/4/28 22:28:37
  4. 计算整数加减和

    #计算整数的加减和 a0 for i in range(967):if i%21:aaielse:aa-i print(a)...

    2024/4/28 8:00:42
  5. 推荐四款可以在手机上用的epub阅读器

    2021年了,越来越多的人开始养成数字阅读的习惯,电子阅读由于专注阅读、舒适、适合深度阅读等特性,被越来越多的人所接受。但很多阅读软件制作粗糙,兼容性差,带给我们的阅读体验太差,所以拥有一款好用的电子…...

    2024/4/28 19:32:28
  6. 微信小程序添加新图标

    1.先去阿里矢量图标找到自己想要的图标然后添加到购物车 网站:iconfont-阿里巴巴矢量图标库 2.选择下载的样式 3,下载好之后,解压(第一次添加可以把文件放在桌面方便复制粘贴)记住要记住这个第一个解压文件。后面需要…...

    2024/4/15 8:49:13
  7. element ui 中级联选择器,点击完下拉框收回

    在el-cascader标签中添加ref属性,$refs中添加toggleDropDownVisible()方法...

    2024/4/15 8:49:33
  8. STM32复习笔记(二十二) —— SPI协议

    STM32复习笔记(二十二) —— SPI协议 1.引脚 1)从机选择 SS (低有效) 2)时钟线 SCK 3)主输出 MOSI 4)主输入 MISO 2.线路连接 主机从机SSSSMOSIMOSIMISOMISO 3.数据传输过程 主机提供时钟信号 -> 主从机数据交换 (高位先行 or 低位先行) 4.传输格式 时钟极性 CPOL&am…...

    2024/4/6 23:37:57
  9. Linux环境下,查看指定文件夹大小

    1、查看文件夹及其包含的各文件的大小 命令:du -h bak_product 结果: 2、查看该文件夹及各子文件夹的大小 命令:du -h --max-depth1 bak_product 结果: 3、查看该文件夹的总大小 命令:du -h --max-depth0 bak_pro…...

    2024/4/20 3:23:20
  10. jQuery下拉菜单

    下拉菜单 <!doctype html> <html> <head> <meta charset"utf-8"> <title>无标题文档</title> </head> <script src"jquery.js"></script> <style>* {margin:0;padding:0;}li {list-style:non…...

    2024/4/20 0:17:02
  11. 『剑指Offer』32 - I. 从上到下打印二叉树

    文章目录题目思路代码题目 思路 层级遍历嘛&#xff0c;要是用 C 好写。 Go 没有队列&#xff0c;只能用切片模拟一下了。 每次遍历切片的每个元素&#xff0c;并将他的两个子节点入切片&#xff0c;len(q)会自增长度&#xff0c;让循环继续下去。达到遍历每个元素的目的。 …...

    2024/4/15 8:49:13
  12. antd的按需引入+自定主题

    1.安装依赖&#xff1a;yarn add react-app-rewired customize-cra babel-plugin-import less less-loader 2.修改package.json .... "scripts": { "start": "react-app-rewired start", "build": "react-app-rewired build"…...

    2024/4/15 8:49:33
  13. #数据结构专升本学习,栈篇(链式栈)

    前言&#xff1a; 上一遍文章&#xff0c;博主讲了顺序栈&#xff0c;今天博主讲一下链式栈&#xff0c;链式栈专业术语&#xff1a;链式栈是一种数据存储结构&#xff0c;可以通过单链表的方式来实现&#xff0c;使用链式栈的优点在于它能够克服用数组实现的顺序栈空间利用率…...

    2024/4/15 8:49:38
  14. 线程(Thread)

    线程概念 那么线程是什么&#xff1f;我们知道&#xff0c;进程是运转的程序&#xff0c;是为了在CPU上实现多道编程而发明的一个概念。但是进程在一个时间只能干一件事情。 如果想同时干两件事,例如同时看两场电影&#xff0c;我们自然想到传说中的分身术,就像孙悟空那样同时…...

    2024/4/6 23:37:54
  15. AXI总线技术简介——ZYNQ PS和PL的互联技术

    AXI总线技术简介——ZYNQ PS和PL的互联技术1.AXI总线介绍2.AXI协议通道介绍3.ZYNQ芯片内部的AXI总线4.常用AXI接口IP介绍5. 多个AXI接口互联交互1.AXI总线介绍 AXI全称Advanced Extensible Interface&#xff0c;是Xilinx从6系列的FPGA开始引入的一个接口协议&#xff0c;主要…...

    2024/4/19 8:43:53
  16. C#基础知识学习(VS2019)2021-10-26

    C#学习 引言 0.0 C# 在visual studio 2019运行环境下代码结构的介绍 1.基本的数据类型 1.1创建C#控制台应用程序并运行 1.点击文件->新建->项目 2.选择控制台应用程序->点击下一步-> 3.可更改项目名称->项目解决方案->选择合适的架构->点击创建 4.…...

    2024/4/6 23:37:52
  17. 退款之后,你知道其他电商都做了什么?

    双11尾款你支付了吗&#xff1f; 10月31号是双11预售的最后一天&#xff0c;也是尾款支付的第一天。那么&#xff0c;尾款人在支付尾款时突然不想要自己所选的宝贝了&#xff0c;可是面对已付的定金还有机会退款吗&#xff1f;别慌&#xff0c;可以的&#xff0c;不信看环球时…...

    2024/4/25 16:37:35
  18. 第一章(9)计算机网络体系结构之接口

    目录 一、定义 二、生活中类比的例子 三、每个层次的数据单位组成 数据单位&#xff08;PDU&#xff09;组成 服务数据单元&#xff08;SDU&#xff09; 协议控制信息&#xff08;PCI&#xff09; 协议数据单元&#xff08;PDU&#xff09; 四、相邻层的数据关系 一、定…...

    2024/4/15 8:49:43
  19. python——通信原理,进程与线程

    一、网络编程 1.计算机网络 将地理位置不同的具有独立功能地多台计算机及其外部设备&#xff0c;通过通信线路连接起来&#xff0c;在协议的管理和协调下&#xff0c;实现资源共享和信息传递。 网络编程&#xff1a;用来实现网络互连的不同计算机运行程序可以进行数据交换 …...

    2024/4/15 8:49:18
  20. python——MySQL、mongodb、redis数据库

    一、MySQL数据库 MySQL数据库笔记 二、mongodb数据库 一、mongodb的介绍 非关系型数据库&#xff0c;是文档结构&#xff0c;json&#xff08;字典加列表&#xff09;&#xff0c;存储大型数据对sql注入语句攻击免疫。最简单的数据库。mongodb中有多个库&#xff0c;库中有…...

    2024/4/23 22:08:28

最新文章

  1. Leetcode—1672. 最富有客户的资产总量【简单】

    2024每日刷题&#xff08;120&#xff09; Leetcode—1672. 最富有客户的资产总量 实现代码 class Solution { public:int maximumWealth(vector<vector<int>>& accounts) {int ans 0;for(vector<vector<int>>::iterator it accounts.begin();…...

    2024/4/28 23:11:19
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/3/20 10:50:27
  3. Ubuntu磁盘扩容

    使用 df -h命令查看系统磁盘控件的使用情况&#xff1a; [samspobosrv:~]$ df -h Filesystem Size Used Avail Use% Mounted on udev 7.8G 0 7.8G 0% /dev tmpfs 1.6G 1.7M 1.…...

    2024/4/25 7:31:32
  4. vue3项目运行正常但vscode红色波浪线报错

    以下解决办法如不生效&#xff0c;可尝试 重启 vscode 一、Vetur插件检测问题 vetur 是一个 vscode 插件&#xff0c;用于为 .vue 单文件组件提供代码高亮以及语法支持。但 vue 以及 vetur 对于 ts 的支持&#xff0c;并不友好。 1、原因 如下图&#xff1a;鼠标放到红色波浪…...

    2024/4/26 17:21:41
  5. 【外汇早评】美通胀数据走低,美元调整

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

    2024/4/28 13:52:11
  6. 【原油贵金属周评】原油多头拥挤,价格调整

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

    2024/4/28 3:28:32
  7. 【外汇周评】靓丽非农不及疲软通胀影响

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

    2024/4/26 23:05:52
  8. 【原油贵金属早评】库存继续增加,油价收跌

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

    2024/4/28 13:51:37
  9. 【外汇早评】日本央行会议纪要不改日元强势

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

    2024/4/27 17:58:04
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

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

    2024/4/27 14:22:49
  11. 【外汇早评】美欲与伊朗重谈协议

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

    2024/4/28 1:28:33
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

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

    2024/4/28 15:57:13
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

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

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

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

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

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

    2024/4/28 1:34:08
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

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

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

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

    2024/4/28 1:22:35
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

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

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

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

    2024/4/26 23:04:58
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

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

    2024/4/27 23:24:42
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

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

    2024/4/28 5:48:52
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

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

    2024/4/26 19:46:12
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

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

    2024/4/27 11:43:08
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

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

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

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

    2022/11/19 21:17:18
  26. 错误使用 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
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

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

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

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

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

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

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

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

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

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

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

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

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,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
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    2022/11/19 21:16:58
  44. 如何在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