文源网络,仅供学习之用,如有侵权请联系删除。

由于AQS的源码太过凝练,而且有很多分支比如取消排队、等待条件等,如果把所有的分支在一篇文章的写完可能会看懵,所以这篇文章主要是从正常流程先走一遍,重点不在取消排队等分支,之后会专门写一篇取消排队和等待条件的分支逻辑。

读源码千万别在每个代码分支中来回游走,先按一个正常的分支把流程看明白,之后再去重点关注其他分支,各个击破。我相信看完正常流程,你再去分析其他分支会更加得心应手。

本篇将主要方法名都做了目录索引,查看时可通过目录快速跳到指定方法的逻辑。

执行流程

AQS的执行流程大体为当线程获取锁失败时,会加入到等待队列中,在等待队列中的线程会按照从头至尾的顺序依次再去尝试获取锁执行。

当线程获取锁后如果还需要等待特定的条件才能执行,那么线程就加入到条件队列排队,当等待的条件到来时再从条件队列中按照从头至尾的顺序加入到等待队列中,然后再按照等待队列的执行流程去获取锁。

所以AQS最核心的数据结构其实就两个队列,等待队列和条件队列,然后再加上一个获取锁的同步状态。

AQS数据结构

AQS最核心的数据结构就三个

等待队列

源码中head和tail为等待队列的头尾节点,在通过前后指向则构成了等待队列,为双向链表,学名为CLH队列。

file

条件队列

ConditionObject中的firstWaiter和lastWaiter为等待队列的头尾节点,然后通过next指向构成了条件队列,是个单向链表。

file

同步状态

state为同步状态,通过CAS操作来实现获取锁的操作。

public abstract class AbstractQueuedSynchronizer{/*** 等待队列的头节点*/private transient volatile Node head;/*** 等待队列的尾节点*/private transient volatile Node tail;/*** 同步状态*/private volatile int state;public class ConditionObject implements Condition, java.io.Serializable {/** 条件队列的头节点 */private transient Node firstWaiter;/** 条件队列的尾节点 */private transient Node lastWaiter;}
}

Node节点

两个队列中的节点都是通过AQS中内部类Node来实现的。主要字段:

  • waitStatus当前节点的状态,具体看源码列出的注释。很重要,之后会在源码中讲解。
  • Node prev等待队列节点指向的前置节点
  • Node next待队列节点指向的后置节点
  • Node nextWaiter条件队列中节点指向的后置节点
  • Thread thread当前节点持有的线程
static final class Node {/**  */static final Node SHARED = new Node();/**  */static final Node EXCLUSIVE = null;/** 标明当前节点线程取消排队 */static final int CANCELLED =  1;/** 标明该节点的后置节点需要自己去唤醒 */static final int SIGNAL    = -1;/** 标明当前节点在等待某个条件,此时节点在条件队列中 */static final int CONDITION = -2;/*** waitStatus value to indicate the next acquireShared should* unconditionally propagate*/static final int PROPAGATE = -3;/*** 等待状态,值对于上面的四个常量*/volatile int waitStatus;/*** 等待队列节点指向的前置节点*/volatile Node prev;/*** 等待队列节点指向的后置节点*/volatile Node next;/*** 当前节点持有的线程*/volatile Thread thread;/*** 条件队列中节点指向的后置节点*/Node nextWaiter;

加锁

上面说明的数据结构我们先大致有个印象,现在通过加锁来一步步说明下具体的流程,我们知道了AQS加锁代码执行的是acquire方法,那么我们从这个方法说起,从源码中看出执行流程为:tryAcquire——>addWaiter——>acquireQueued

tryAcquire为自己实现的具体加锁逻辑,当加锁失败时返回false,则会执行addWaiter,将线程加入到等待队列中,Node.EXCLUSIVE为独占锁的模式,即同时只能有一个线程获取锁去执行。

例子说明

file

首先假设有四个线程t0-t4调用tryAcquire获取锁,t0线程为天选之子获取到了锁,则t1-t4线程接着去执行addWaiter。

acquire

public final void acquire(int arg) {if (!tryAcquire(arg) &&acquireQueued(addWaiter(Node.EXCLUSIVE), arg))selfInterrupt();
}

addWaiter分支1

addWaiter方法,首先会初始化一个node节点,将当前线程设置到node节点中。然后判断head和tail节点是否为空,head和tail节点是懒加载的,当AQS初始化时为null,则第一次进来时if (pred != null) 条件不成立,执行enq方法。

例子说明

假如t1和t2线程同时执行到该方法,head节点未初始化则执行enq。

private Node addWaiter(Node mode) {Node node = new Node(Thread.currentThread(), mode);// Try the fast path of enq; backup to full enq on failureNode pred = tail;if (pred != null) {node.prev = pred;if (compareAndSetTail(pred, node)) {pred.next = node;return node;}}enq(node);return node;
}

enq

此时可能多个线程会同时调用enq方法,所以该方法中也使用CAS操作。for (;;)是个死循环,首先会CAS操作初始化head节点,且head节点是个空节点,没有设置线程。

然后第二次循环时通过CAS操作将该节点设置我尾部节点,并将前置节点指向head,之后会跳出循环,返回生成的Node节点到addWaiter,从源码可以看到addWaiter方法后面没有逻辑,之后会调用acquireQueued。

例子说明

t1和t2线程同时执行,t1线程上天眷顾CAS成功,则流程为

初始化head

file

t1线程的node节点加入等待队列

file

t2线程执行,node节点加入等待队列

file

private Node enq(final Node node) {for (;;) {Node t = tail;if (t == null) { // Must initializeif (compareAndSetHead(new Node()))tail = head;} else {node.prev = t;if (compareAndSetTail(t, node)) {t.next = node;return t;}}}
}

addWaiter分支2

现在在来说t3和t4,t3和t4线程这时终于获取到了cpu的执行权,此时head节点已经初始化,则进入条件中的代码,其实也是通过CAS操作将节点加入到等待队列尾部,之后会调用acquireQueued。

例子说明

假如t3线程先CAS成功,之后t4成功,此时的数据结构为

file

private Node addWaiter(Node mode) {Node node = new Node(Thread.currentThread(), mode);// Try the fast path of enq; backup to full enq on failureNode pred = tail;if (pred != null) {node.prev = pred;if (compareAndSetTail(pred, node)) {pred.next = node;return node;}}enq(node);return node;
}

acquireQueued

这个方法有两个逻辑,首先如果该节点的前置节点是head会走第一个if,再次去尝试获取锁???

获取锁成功,则将头节点设置为自己,并返回到acquire方法,此时acquire方法执行完,代表获取锁成功,线程可以执行自己的逻辑了。这里有下面几个注意点

  • p.next = null; // help GC 设置旧的head节点的后置节点为null
  • setHead方法 将t1节点设置为头节点,因为头节点是个空节点,所以设置t1线程节点线程为null,设置t1前置节点为null,此时旧的head节点已经没有任何指向和关联,可以被gc回收,所以上面那一步会写个help GC 的注释。

例子说明

现在t1线程的前置节点为头结点,如果t1执行tryAcquire成功则结果为

file

当获取锁失败或者前置节点不是头节点都会走第二个if逻辑,首先会判断当前线程是否需要挂起,如果需要则执行线程挂起。

final boolean acquireQueued(final Node node, int arg) {boolean failed = true;try {boolean interrupted = false;for (;;) {final Node p = node.predecessor();if (p == head && tryAcquire(arg)) {setHead(node);p.next = null; // help GCfailed = false;return interrupted;}if (shouldParkAfterFailedAcquire(p, node) &&parkAndCheckInterrupt())interrupted = true;}} finally {if (failed)cancelAcquire(node);}
}private void setHead(Node node) {head = node;node.thread = null;node.prev = null;}

shouldParkAfterFailedAcquire

判断线程是否需要挂起,首先需要注意的是这个方法的参数是当前节点的前置节点。当线程需要挂起的时候,它需要把身后事安排明白,挂起后让谁来把我唤醒。这个方法就主要做这个操作。

我们再来看Node节点中的waitStatus状态,这个状态有一个Node.SIGNAL=-1,代表了当前节点需要将后置节点唤醒。这个理解可能有点绕。

首先我们要理解一点,如果我需要被唤醒,那么我就要设置我们的前置节点的状态为Node.SIGNAL,这样当我的前置节点发现waitStatus=Node.SIGNAL时,它才知道,我执行完后需要去唤醒后置节点让后置节点去执行。所以这个方法是当前节点去设置自己的前置节点的状态为Node.SIGNAL。

waitStatus初始化后是0,

第一次进入该方法,发现自己的前置节点不是Node.SIGNAL,需要先设置为Node.SIGNAL状态

第二次进入时发现前置节点已经是Node.SIGNAL状态,那么我就可以安心的挂起了,有人会唤醒我的。

所以这个方法其实是两个逻辑,先设置前置节点状态,再判断是否可以挂起。因为前面acquireQueued方法中for (; 也是个循环,所以会重复进入。

private static boolean shouldParkAfterFailedAcquire(Node pred, Node node) {int ws = pred.waitStatus;if (ws == Node.SIGNAL)/** This node has already set status asking a release* to signal it, so it can safely park.*/return true;if (ws > 0) {/** Predecessor was cancelled. Skip over predecessors and* indicate retry.*/do {node.prev = pred = pred.prev;} while (pred.waitStatus > 0);pred.next = node;} else {/** waitStatus must be 0 or PROPAGATE.  Indicate that we* need a signal, but don't park yet.  Caller will need to* retry to make sure it cannot acquire before parking.*/compareAndSetWaitStatus(pred, ws, Node.SIGNAL);}return false;
}

parkAndCheckInterrupt

将自己的前置节点设置为可唤醒的状态后进入该方法,线程挂起。

例子说明

此时t2-t4线程都执行到了此方法,则t2-t4线程都已经挂起不再执行,并且head-t3节点的waitStatus都为Node.SIGNAL,因为t4没有后置节点。

file

private final boolean parkAndCheckInterrupt() {LockSupport.park(this);return Thread.interrupted();
}

解锁

release

解锁方法的入口是AQS的release方法,首先会调用tryRelease方法,这个是AQS实现类自己实现的方法,去CAS改变state状态,如果解锁成功,则会进入if里的代码,获取head节点,判断waitStatus!=0,如果等于0代表没有后置节点需要去唤醒。之后调用unparkSuccessor方法。

public final boolean release(int arg) {if (tryRelease(arg)) {Node h = head;if (h != null && h.waitStatus != 0)unparkSuccessor(h);return true;}return false;
}

waitStatus>0时,代表为CANCELLED = 1状态,即线程取消排队,这个以后会细讲。先将头结点的waitStatus状态设为初始值0,之后查看后置节点的状态,如果>0代表后置节点取消了排队,不需要唤醒。

但是当前节点需要去唤醒后续的节点让后续节点再去执行,所以会从尾结点开始寻找找到离当前线程最近的一个且waitStatus<0 的去唤醒。之后会调用LockSupport.unpark(s.thread);取消后续节点的挂起,让后续节点继续执行。

unparkSuccessor

private void unparkSuccessor(Node node) {int ws = node.waitStatus;if (ws < 0)compareAndSetWaitStatus(node, ws, 0);Node s = node.next;if (s == null || s.waitStatus > 0) {s = null;for (Node t = tail; t != null && t != node; t = t.prev)if (t.waitStatus <= 0)s = t;}if (s != null)LockSupport.unpark(s.thread);
}

例子说明

此时等待队列的数据,当t0线程执行完成后执行解锁操作,此时所有等待的线程都没有取消等待。

file

则t0线程会唤醒t1线程

file

如果t1和t3线程取消的排队时,t0线程会唤醒t2,从后往前找离head最近的一个没有取消派对的节点。

file

线程执行到parkAndCheckInterrupt方法时被挂起,当被头节点唤醒后会继续执行,设置interrupted=true,表示被中断,会继续执行for循环逻辑,到现在一个正常的获取锁失败——>加入等待队列——>挂起——>被唤醒继续执行的流程已经整体走了一遍。

我将面试题和答案都整理成了PDF文档,还有一套学习资料,涵盖Java虚拟机、spring框架、Java线程、数据结构、设计模式等等,但不仅限于此。

关注公众号【java圈子】获取资料,还有优质文章每日送达。

file

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

相关文章

  1. python学习积累

    1.爬虫遇到IP访问频率限制的解决方案: https://www.cnblogs.com/beiyi888/p/11280116.html 2.对字典分别按键(key)和值(value)进行排序: https://www.cnblogs.com/ltb6w/p/10923589.html 3.采用sorted方法对字典的键、值进行排序: https://blog.csdn.net/geerniya/article…...

    2024/4/24 7:16:29
  2. 如何判断单链表是否有环

    算法:定义p,q两个指针,p一次走一步,q一次走两步,如果q能一直走到尾说明没有环,如果前进过程中p与q相遇了则说明有环。具体代码:Node *IsLoop(List plist)//检测单链表是否有环 {assert(plist!=NULL);if(plist==NULL || plist->next==NULL){return NULL;}Node *p=plis…...

    2024/4/25 7:53:16
  3. 第十篇:服务网关Zuul高级篇

    上一篇我们主要聊到了Zuul的使用方式,以及自动转发机制,其实Zuul还有更多的使用姿势,比如:鉴权、流量转发、请求统计等。Zuul的核心 Zuul的核心是Filter,用来实现对外服务的控制。分别是“PRE”、“ROUTING”、“POST”、“ERROR”,整个生命周期可以用下图来表示。Zuul大…...

    2024/4/24 7:16:28
  4. 实战:移动端适配的最佳实践

    移动端适配我们需要做哪些事情? 一个最佳实践除了设置 viewport 和 rem 基准值,随着iPhone手机的不断升级,我们不得不正视以下2个问题:安全区域适配识别刘海屏 关于viewpoint-fit在切入正题之前,我们先展开介绍一下viewpoint-fit,它的作用是用于设置可视区域的尺寸,属性…...

    2024/4/24 7:16:26
  5. 设计模式 - 工厂模式(Factory Method)

    动机在软件系统中,经常面临着创建对象的工作;由于需求的变化,需要创建的对象的具体类型经常变化。如何应对这种变化?如何绕过常规的对象创建方法(new),提供一种“封装机制”来避免客户程序和这种“具体对象创建工作”的紧耦合? 模式定义定义一个用于创建对象的接口,让子…...

    2024/4/24 7:16:25
  6. 2nd SCPC - L 破坏守序序列(数学证明+三分)

    首先如果序列为奇数,那么可以考虑枚举中位数,但是如果序列为偶数呢,这个如果枚举的话一定超时,但是又没什么好的办法,那么就证明一下答案序列一定为奇数 图片来自Visors(懒得手敲了好麻烦):有了上述证明,那么我们枚举每个数作为中位数,在能取到的情况下,每次同时取k…...

    2024/4/24 7:16:25
  7. 聚合命令

    目录1 聚合命令2 聚合方法 进入MongoDB中文手册(4.2版本)专栏注意 有关特定运算符的详细信息,包括语法和示例,请单击特定运算符并转到其参考页。1 聚合命令名称 描述aggregate 使用聚合框架执行聚合任务,例如分组。count 计算集合或视图中的文档数。distinct 显示在集合或…...

    2024/4/24 7:16:31
  8. 【笔记】卷积神经网络_1(CNN)

    Outline1.卷积的基本概念1.1 卷积1.2 卷积的应用2.Hubel-Weisel实验/神经认知机2.1 感受野2.2 Hubel-Weisel实验2.3 神经认知机3.卷积神经网络的基本原理3.1 卷积层3.1.1 二维卷积3.1.2 卷积神经网络中的“卷积”3.1.3 数据填充3.1.4 卷积的模式3.1.5 卷积神经网络的感受野3.1.…...

    2024/4/24 7:16:22
  9. git merge 时,把内容不同的文件排除在merge对象外

    在git repository中,做成下面的文件.gitattributes文件的内容如下:ignore_target_file merge=ours.git/config 下面配置如下[merge "ours"]name = "Keep ours merge"driver = true上边的配置git/config可以通过命令进行设置git config merge.ours.name \…...

    2024/5/4 17:05:11
  10. 认识frida 结果java部分完全看不懂留待等我能看懂的说好再来搞他

    frida hook过程第一步1.我这里用的python3.7环境的,直接用pip就可以安装frida2.在已经root的手机上安装frida-severfrida-sever下载查看cpu型号或者版本查看真实手机的版本查看模拟器的cpu版本3.新开一个cmd后面java部分实在是看不懂了 所以不写了 留坑 等以后自学或者认识新的…...

    2024/4/24 7:16:24
  11. 周期计划任务

    周期计划任务 用途:按照一定的时间间隔为用户执行反复执行的固定系统任务 软件包:cronie 、crontabs 系统服务:crond 日志文件:/var/log/crond 了解cron执行消息 [root@server1 home]# tail /var/log/cron May 25 06:01:01 server1 run-parts[16742]: (/etc/cron.hourly) f…...

    2024/4/24 7:16:22
  12. Android Q(10) 文件存储适配

    Android Q文件存储机制修改成了沙盒模式,和IOS神似应用只能访问自己沙盒下的文件和公共媒体文件对于Android Q以下,还是使用老的文件存储方式 权限Android Q不再需要申请文件读写权限,默认可以读写自己沙盒文件和公共媒体文件。所以,Q以上不需要再动态申请文件读写权限。沙…...

    2024/4/27 5:17:33
  13. c++:数组,指针以及字符串的知识要点

    数组数组的定义:数组是具有一定顺序关系的若干对象的集合体,组成数组的对象为该数组的元素。 每个元素有n个下标的数组称为n维数组数组的声明和使用数组的声明:a.确定数组的名称 b.确定数组元素的类型 c. 确定数组的结构(包括数组维数,每一维数的大小) 数组的使用:注意点…...

    2024/4/18 13:53:55
  14. js鼠标事件大全

    js鼠标事件大全 一般事件 事件 浏览器支持 描述 onClick HTML: 2 | 3 | 3.2 | 4 Browser: IE3 | N2 | O3 鼠标点击事件,多用在某个对象控制的范围内的鼠标点击 onDblClick HTML: 2 | 3 | 3.2 | 4 Browser: IE4 | N4 | O 鼠标双击事件 onMouseDown HTML: 2 | 3 | 3.2 | 4 Br…...

    2024/4/15 7:20:40
  15. UI界面色彩搭配

    学习:色彩搭配速成!3个实用方法帮你全面搞定配色 参考:网页设计常用色彩搭配表《配色表》 大数据网页模板下载 工具:Color Scheme Designer 3 RGB颜色值与十六进制颜色码转换工具...

    2024/5/4 19:52:19
  16. IE11_兼容_IE10

    F12–仿真-选择兼容的版本...

    2024/5/5 0:35:57
  17. xxe靶机漏洞复现

    0x00 XML介绍可扩展标记语言,标准通用标记语言的子集,简称XML。 是一种用于标记电子文件使其具有结构性的标记语言。 在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等。 它可以用来标记数据、定义数据类型,是一…...

    2024/5/4 18:30:58
  18. Spring 连接数据库的报错

    The server time zone value ‘’ is unrec 第一种方法:修改数据库连接url String url = "jdbc:mysql://localhost:3306/spring";在url后加 “?serverTimezone=GMT%2B8”,修改为一下语句。 String url = "jdbc:mysql://localhost:3306/spring?serverTimezon…...

    2024/4/16 21:03:50
  19. TexLive+TexWorks安装

    经历了很多失败TexLive下载安装配置TexWorks下载安装 TexLive (也可以先安装TexWorks, 没有TexLive是不行的,编译环境都没有,打开TexWorks会发现**tex是灰色的无法选择) 下载这里选择镜像下载(3+GB): https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/Images/ 选…...

    2024/5/5 2:24:14
  20. Java基础(25)IO流概述、字节流

    1. IO流 1. IO流的概述 (1)IO流是用来处理设备之间的数据传输 (2)Java对数据操作是通过流的方式传输的 (3)Java中用于操作流的对象都位于java.io包下 2. IO流的分类 (1)按照数据的流向(站在内存的角度)输入流:读取数据 输出流:写入数据(2)按照数据类型字节流:可…...

    2024/5/4 13:49:41

最新文章

  1. Vue中引入ElementUI

    Vue中引入ElementUI 目录 Vue中引入ElementUI安装 全库导入main.py使用 仅引入样式文件main.py使用 安装 官方文档 npm i element-ui -S全库导入 main.py import ElementUI from element-ui;Vue.use(ElementUI)使用 <template> <div class"main">&l…...

    2024/5/5 18:25:12
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/3/20 10:50:27
  3. OpenCV单通道图像按像素成倍比例放大(无高斯平滑处理)

    OpenCV中的resize函数可以对图像做任意比例的放大(/缩小)处理&#xff0c;该处理过程会对图像做高斯模糊化以保证图像在进行放大&#xff08;/缩小&#xff09;后尽可能保留源图像所展现的具体内容&#xff08;消除固定频率插值/采样带来的香农采样信息损失&#xff09;&#x…...

    2024/5/5 8:49:58
  4. c++类的继承方式

    在 C 中&#xff0c;类的继承方式有三种&#xff1a;公有继承&#xff08;public inheritance&#xff09;、保护继承&#xff08;protected inheritance&#xff09;和私有继承&#xff08;private inheritance&#xff09;。这些继承方式决定了派生类对基类成员的访问权限。 …...

    2024/5/3 14:42:38
  5. 【外汇早评】美通胀数据走低,美元调整

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

    2024/5/4 23:54:56
  6. 【原油贵金属周评】原油多头拥挤,价格调整

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

    2024/5/4 23:54:56
  7. 【外汇周评】靓丽非农不及疲软通胀影响

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

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

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

    2024/5/4 23:55:17
  9. 【外汇早评】日本央行会议纪要不改日元强势

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

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

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

    2024/5/4 23:55:05
  11. 【外汇早评】美欲与伊朗重谈协议

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

    2024/5/4 23:54:56
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

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

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

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

    2024/5/4 23:54:56
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

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

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

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

    2024/5/4 23:54:56
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

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

    2024/5/4 23:55:17
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

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

    2024/5/4 23:55:06
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

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

    2024/5/4 23:54:56
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

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

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

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

    2024/5/5 8:13:33
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

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

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

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

    2024/5/4 23:54:58
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

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

    2024/5/4 23:55:01
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

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

    2024/5/4 23:54:56
  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