spring三级缓存解决循环依赖问题详解

前言

这段时间阅读了spring IOC部分的源码。在学习过程中,自己有遇到过很多很问题,在上网查阅资料的时候,发现很难找到一份比较全面的解答。现在自己刚学习完,一方面出于对自己这段学习的一个总结,检验自己所学;另一方面也希望能把自己对Spring IOC这部分知识的理解分享出来,希望能对后面想要学习的spring 源码的人提供一点经验。
第一次写博客,感觉真的挺辛苦的!不仅是弄明白知识点,把自己的理解合适的表达出来也真的挺困难的!本文如有不足之处,还请大家多多指正!

一、循环依赖的种类

在spring中,循环依赖可以被划分为3类:

  1. 原型Bean产生的循环依赖;
  2. 单例bean产生的循环依赖:
    • 构造器注入循环依赖;
    • setter注入循环依赖;

首先,分为原型Bean产生的循环依赖和单例Bean产生的循环依赖。而单例Bean产生的循环依赖又可以细分为构造器注入的循环依赖和setter注入的循环依赖。在这三类中,只有setter注入的循环依赖可以被spring解决,其他的循环依赖都不会被解决,发生其他情况的循环依赖时,spring会直接抛出异常。
注意:其实这里还有一种依赖,在我们采用xml的形式配置bean时,可以设置depentsOn属性,通过这个属性设置的依赖,如果发生了循环依赖也是不能被解决的。

二、依赖注入

经过上面的分析,我们已经知道:spring能解决的循环依赖实际是基于单例Bean的setter注入循环依赖。那么为什么spring可以解决单例Bean的setter注入的循环依赖呢?在此之前我们首先需要明白什么叫依赖注入。
这里并不会推究依赖注入的理论,而为了方便大家理解解决循环依赖的原理,在这里简单说一下依赖注入究竟干了啥?

class A {B b;// 通过构造函数注入public A(B b) {this.b = b;}// 通过setter注入public B setB(B b) {this.b = b;return this.b;}
}class B {C c;
}

如上图,定义了两个类A和B。在A中定义了一个B类型的变量,可以理解为A依赖B。如果没有Spring的容器,那么我需要自己手动去把B类的对象通过构造方法或者setter方法配置到A的对象中。但是,现在spring容器可以帮我们完成这件事,不再需要我们手动去配置对象之间的依赖了。我们直接从容器中取出的A类型的实例就是已经包含有B类型对象的实例了。那么,spring怎么去做的呢?实际上也是基于我们手动实现的方式一样。要么在调用类的构造器的时候把获取到的依赖(B类型的实例对象)赋值给对应的属性,要么就是在之后调用setter方法对对应的属性进行赋值。以上就是依赖注入大概做的事情。
了解依赖注入大概是干啥的了。那么我们也能大致猜测循环依赖会在哪里发生了?不错,就是在执行构造方法或者调用setter方法进行属性填充的时候。准确来说,是在这前面一点点。因为,在执行构造函数或者setter方法的时候,spring必须先确保对应方法的参数的值已经获取到。也就是说,在spring执行

	public A(B b) {this.b = b;}

或者执行

    public B setB(B b) {this.b = b;return this.b;}

方法前,spring必须先从容器中获取到B类型的对象实例。而如果容器中没有对应的实例,那么容器就会创建对应的实例。之后,同样是在B的实例对象进行依赖注入时,B的实例对象发现它需要先获取到A类型的实例对象。然而,现在A和B都处于创建之中,是获取不到被完整创建实例对象的。也就是,A和B永远也不会被创建完成。这就是循环依赖。如下图:

class A {B b;// 通过构造函数注入public A(B b) {this.b = b;}// 通过setter注入public B setB(B b) {this.b = b;return this.b;}
}class B {A a;// 通过构造函数注入public B(A a) {this.a = a;}// 通过setter注入public A setA(A a) {this.a = a;return this.a;}}

三、Bean的生命周期与对象的生命周期

通过上面的分析,我们了解了依赖注入究竟干了什么,也通过依赖注入推理出了循环依赖是怎么发生的。但是,这对于我们了解怎么去解决循环依赖还是不够。想要知道spring是如何解决循环依赖的,需要我们对Bean的生命周期有一定的了解。
在这里,需要强调一下“bean的生命周期”和“对象的生命周期”两个概念。很多时候,我们可能会直接把两个概念等同起来。虽然这并不会在工作中给我们带来很大的影响。但是,如果我们能把这两个概念理清楚,能更好地帮助我们去理解spring。

对象的生命周期

对象是由Java虚拟机根据对应的类(Class)创建并在在Java虚拟机中的堆上为其分配空间。对象的生命周期如下:
java对象的生命周期
字节码:Java编写的程序.Java文件被编译后得到字节码文件,Java虚拟机通过解释执行字节码文件来执行程序。对应Java程序中的.java文件,可以理解为类。
Class:这个单词的首字母是大写,代表着一个类型(Type)。加载到虚拟机中的字节码文件始终还是文本类型的数据,为了在内存中方便使用它,把这些数据抽象为Class类型的对象。比如,我们要把一个人的信息存进Java虚拟机,那么我们就建一个Person类型的对象来保存这些数据。
在这里插入图片描述
如上如,就是字节码与Class之间的区别。如果采用文本的形式,每次获取数据,我们都需要从头开始读取,但是,我们将对应的数据抽象为某种结构的数据之后,就能实现让我们方便地获取数据。对于字节码文件地具体格式,感兴趣地小伙伴可以自己去查阅相关的资料进行深入的学习。不在此处过多涉及。
实例化:为创建的对象在Java虚拟机中的对空间上分配空间,并设置对象的属性值为对应类型的默认值,如,属性为int类型,则其默认值为0;为对象则为null。
初始化:初始化属性字段,如果在属性字段有对应的赋值语句,会执行对应的赋值语句对对象进行初始化。如下图代码,初始化前,所有的属性字段都是对应类型的默认值,如年龄为0。执行实例化之后,所有属性字段都被赋值了。年龄变为了18。
在这里插入图片描述
使用 :初始化之后的对象就可以被正常使用了。
垃圾回收:Java对象的销毁是通过垃圾回收机制来实现的。具体原理就是,如果当前程序中不在有引用指向该对象,则该对象就会在下次垃圾回收的时候被回收掉。所以,由此,我们也可推理出spring是怎么销毁以及创建单例的对象的。实际就是管理对象的引用,只要保证指向单例对象的引用的数量始终大于等于1,那么这个对象就永远不会被销毁。如果要销毁该单例对象,则销毁掉指向它的引用,它在下次垃圾回收的时候救护被销毁。

Bean的生命周期

结合我们之前对依赖注入的分析,我们可以发现Java虚拟机为我们创建对象的时候并不会帮助我们完成依赖的注入。因此,依赖注入的行为应该是被封装在Bean生命周期中的。
在这里插入图片描述
如上图,上面的是Java对象对应的生命周期,下面的则是Bean对应的生命周期。
BeanDefinition:可以简单理解为Bean之间的依赖关系配置加上Class对象(对应.class文件)。不管spring怎么管理Bean,它最终还是通过Java虚拟机来生成创建对象。因此,在创建对象前,还是需要确保对应类的.class文件已经被加载进入虚拟机并生成了对应的Class对象。同时,从上面的图中,我们可以看见,相比于普通对象的生命周期,Bean的生命周期多出来了属性填充和初始化两个阶段。而这多出来的两个阶段实际就是为了处理Bean之间的依赖注入的问题,所以,BeanDefinition需要提供关于Bean之间依赖关系的配置信息。
实例化:这个过程对应在Java虚拟机创建对象过程中的实例化和初始化过程,不再详细赘述。但是要把Java虚拟机创建对象过程中的初始化概念与Bean创建过程中的初始化概念区分出来。但是这里是一个分界点,也是我们后面解决setter注入发生循环依赖的关键。
属性填充:这阶段主要是依据BeanDefinition中配置好的依赖关系,通过setter方法的方式注入属性对应的依赖。换句话,这里的注入的依赖式静态的,你在启动程序之前,是怎么配置的依赖关系,这就怎么去配置依赖关系
初始化:在完成属性填充以后,在使用对象之前,我们还可以有机会检查依赖整体的导入情况或者可以自定义配置来修改属性的值。这些功能的实现就是通过这一阶段来实现的。
使用:不同于Java虚拟机创建对象的流程,Bean的创建必须在初始化之后才能完全使用。
销毁:spring对于单例的销毁实际上就是销毁Spring容器中保存的对该单例对象的引用。但是,虽然在容器中已经没有对该对象的引用了,但是在程序可能还存在由对该单例对象的引用。因此,虽然容器销毁了它,但是,它却不一定被“销毁”了。只有等到程序中也不存在对该对象的引用时,可标识该对象确实“已经被销毁了”,但是,它实际上还没有被立即销毁。只有在下次垃圾回收之后,它才算时真正被销毁。

Spring解决循环依赖

在这里插入图片描述
spring解决循环依赖时充分利用了Bean的生命周期。在经过实例化以后,Java虚拟机就已经为创建的对象在堆上分配了空间。换句话说,这个时候对象就已经是存在了的。只是由于还没有经过属性填充和初始化,对象中对应属性字段的数据还不是我们需要的。因此,如果这个时候把这个对象暴露出去给其他对象使用的话,就可能因为数据不符合预期的问题而报错。因此,所有对象必须是在完全创建之后才能被其他对象使用。但是,反过来思考。在创建bean,进行属性填充的时候,我们只是为了先持有依赖的对象,以此来顺利完成当前对象的创建过程。也就是说,在创建Bean的过程中,正在创建的Bean并不会使用它的依赖bean。由此,我们就可以放心地把它依赖bean地引用提前暴露给他,这样就能打破依赖地循环,从而顺利地完成Bean创建。具体例子如下图:
在这里插入图片描述
如上图对象A和对象B两者之间循环依赖。在对象A实例化之后,就将对象A地引用暴露出来。之后在属性填充阶段,发现依赖对象B,于是,开始创建B对象,在B进行属性填充的时候,发现需要依赖A对象。于是,尝试从容器中获取A对象的引用。由于对象A提前暴露了自己的引用,所以,对象B可以从容器中获取到对象A的引用,并顺利完成创建。之后,对象A也可以获取到完整创建之后的对象B,并顺利完成自己的创建。

为什么要使用三级缓存

我们了解了spring解决基于单例bean的setter注入依赖的原理,现在看看为什么spring要使用到三级缓存。我们先了解一下三级缓存各自的作用。

	/** Cache of singleton objects: bean name --> bean instance *//** 一级缓存,存放完整的bean */private final Map<String, Object> singletonObjects = new ConcurrentHashMap<>(256);/** Cache of early singleton objects: bean name --> bean instance *//** 二级缓存,存放提前暴露的bean,bean是不完整的,没有完成属性注入和执行初始化 */private final Map<String, Object> earlySingletonObjects = new HashMap<>(16);/** Cache of singleton factories: bean name --> ObjectFactory *//** 三级缓存,存放的是bean工厂,主要是生产bean,存放到二级缓存中 */private final Map<String, ObjectFactory<?>> singletonFactories = new HashMap<>(16);

如上面的代码所示:
一级缓存:用于存储被完整创建了的bean。也就是完成了初始化之后,可以直接被其他对象使用的bean。
二级缓存:用于存储提前暴露的Bean。也就是刚实例化但是还没有进行初始化的Bean。这些Bean只能用于解决循环依赖的问题。因为还没有被初始化,对象里面的数据还不完整,无法被正常使用。所以,只能用于那些需要先持有这个Bean但不会使用这个Bean的对象,也就是正在创建过程中的对象了。
三级缓存:三级缓存存储的是工厂对象。工厂对象可以产生对象提前暴露的引用。在spring中,抽象工厂设计模式用到的地方有很多。我们不妨大胆假设一下它的作用:只有我们真正调用工厂对象的getObject()方法时,才会真正去执行创建对象的逻辑。讲到这里,有的小伙伴可能有点晕了。因为二级缓存就可以直接存储对象提前暴露的引用了。为什么还要一个储存工厂方法的三级缓存。那是因为三级缓存不是针对不同的循环依赖,而是针对有动态代理的循环依赖,同样是在填充属性阶段,如果依赖的是动态代理的对象,那么,我们需要提前暴露的就不是原来刚实例化的对象,而是这个对象的动态代理对象。但是,创建动态代理的成本是很高的,因此,我们使用工厂方法,在真正要获取动态代理对象的时候才去创建对象,将这种开销比较大的任务尽量延迟做,能尽量保证我们的性能。

总结

至此,从依赖出入到循环依赖的解决整个过程都已经被我们梳理清楚。现在还剩下一些问题可以供大家思考,帮助大家巩固知识?

  1. 单例对象分为构造器注入依赖和setter注入依赖,为什么构造器依赖不能被解决?
  2. 原型对象的循环依赖为什么不能解决?
  3. 三级缓存一定需要吗?不用三级缓存会有什么影响?
  4. 二级缓存用来干什么?不用二级缓存会有什么影响?
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 1.20号

    ...

    2024/4/28 12:57:02
  2. 5_4_Chess(四)普通落子

    文章目录1、效果2、chess.cpp3、chess.h1、效果 2、chess.cpp #include "chess.h"Chess::Chess(QWidget *parent): QWidget(parent) {Init(); }Chess::~Chess() {}//-----------events------------- //画背景 绘图事件里 void Chess::paintEvent(QPaintEvent *){QPa…...

    2024/4/28 5:30:35
  3. JVM之执行引擎

    文章目录1、执行引擎概述2、Java 代码编译和执行过程2.1、解释执行和即时编译2.2、解释器和编译器3、机器码 指令 汇编语言3.1、机器码3.2、指令和指令集3.3、汇编语言3.4、高级语言3.5、程序编译流程3.6、字节码4、解释器5、JIT 编译器5.1、为什么还需要解释器5.2、即时编译器…...

    2024/4/28 14:57:14
  4. 腾讯云搭建Socks5一系列及相关内容

    腾讯云搭建Socks5多IP代理服务器实现游戏单窗口单IP 腾讯云多IP Socks5搭建教程 配合代理工具实现 单窗口单IP1.多IP服务器选择2.服务器购买3.创建弹性网卡&#xff0c;绑定弹性公网IP 实现多IP4.如何更换IP5.服务器网卡绑定内网IP6.使用CCProxy 搭建socks5服务器7.socks5IP如何…...

    2024/4/28 4:33:24
  5. Redis核心技术与实战-学习笔记(二)

    一.redis数据类型和底层数据结构的对应关系 二.Redis 使用哈希表实现从键到值的快速访问 哈希表的O(1)复杂度和快速查找特性 一个哈希表&#xff0c;其实就是一个数组&#xff0c;数组的每个元素称为一个哈希桶。 一个哈希表是由多个哈希桶组成的&#xff0c;每个哈希桶中保…...

    2024/4/14 11:31:30
  6. Vue 学习总结笔记 (二)

    文章目录1. Vue的 事件修饰符1.1 Vue 的六种事件修饰符1.2 Vue的 prevent事件修饰符1.3 Vue的 stop事件修饰符1.4 Vue的 once事件修饰符1.5 Vue的 capture事件修饰符1.6 Vue的 self事件修饰符1.7 Vue的 passive 事件修饰符2. js的事件对象 event3. Vue 键盘事件4. 差值语法中调…...

    2024/4/18 11:10:02
  7. 设计模式之模板方法模式

    设计模式之模板方法模式 1. 模板方法模式在书中定义&#xff1a; 定义一个操作中算法的骨架&#xff0c;而将一些步骤延迟到子类中&#xff0c;模板方法使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤。 通俗点的理解就是 &#xff1a;完成一件事情&#xff0…...

    2024/4/15 15:54:25
  8. 1.20日学习总结

    今天我又来做题解了。今天想说的是一个 通过程序判断二叉树深度的问题。 具体题目如下。 我当初做这个题的方法。 是直接用结构体建了一个二叉树 。在用前序遍历的方式来找到深度。 用了一个max函数。 还用了一个deep变量来记录一下现在的深度。 max函数就是为了取出每次的最大…...

    2024/4/19 16:59:22
  9. 第三章 模型建立及评估

    目标&#xff1a;根据泰坦尼克号的数据集完成泰坦尼克号存活预测。 import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns from IPython.display import Image plt.rcParams[font.sans-serif] [SimHei] # 用来正常显示中文标签 …...

    2024/4/17 21:37:19
  10. 【ceph相关】bucket动态分片

    【ceph相关】bucket动态分片 1、背景说明 参考说明&#xff1a; https://access.redhat.com/documentation/en-us/red_hat_ceph_storage/2/html/object_gateway_guide_for_ubuntu/administration_cli#configuring-bucket-index-sharding https://ceph.com/community/new-lumin…...

    2024/4/18 20:39:52
  11. Tomcat中文乱码完全解决【保姆教学】

    修改Tomcat的conf目录下的logging.properties文件 将所有encoding修改为UTF-8 修改IDE中的idea64.exe.vmoptions文件&#xff0c;添加一句-Dfile.encodingUTF-8 3. 重启IDE&#xff08;非常重要&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff09; …...

    2024/4/14 11:32:20
  12. day8 AI面试刷题

    day8 AI面试刷题1. 随机森林和GBDT的区别&#xff1f;2. 在训练每颗子树时&#xff0c;该如何决定最优的随机特征个数&#xff1f;3. 随机森林算法跟深度学习算法相比有哪些优势&#xff1f;4. 如果让你在GDBT算法和随机森林算法中选择一个来解决实际问题&#xff0c;你通常…...

    2024/4/15 5:53:36
  13. 浏览器copy as curl用法

    不多说&#xff0c;上图 在network中随便找一个请求&#xff0c;点击右键&#xff0c;复制为curl格式 将复制下来的内容直接粘贴到命令行工具&#xff08;我这里使用的是mac 终端&#xff09;中 回车&#xff0c;就能看到请求后的结果啦...

    2024/4/15 5:32:21
  14. 最新最全《2022Android中高级大厂面试题汇总》【1932页】面试宝典

    前言 Android 市场已今非昔比。在过去&#xff0c;迫于招人的压力&#xff0c;应试者只需了解四大组件、视图、网络请求&#xff0c;即可谋得一份满意的工作。明年我相信将会是面试求职的高峰时期&#xff0c;如果此时手里有份高质量的面试宝典&#xff0c;那么你将得心应手面…...

    2024/4/16 1:37:26
  15. JVM垃圾回收机制

    JVM垃圾回收机制一&#xff1a;回收堆内存1.如何判定对象已死&#xff08;可达性分析算法&#xff09;2.对象的引用级别3.对象的死亡过程二&#xff1a;垃圾回收算法1.标记清除算法2.标记复制算法3.标记整理算法三&#xff1a;垃圾收集器1.G1&#xff08;Garbage First&#xf…...

    2024/4/7 5:38:34
  16. 迟到的 Android 个人年度面经总结……

    前言 21年让我感觉经历了不少东西&#xff0c;不仅是生活还是工作方便。工作方面主要体现在面试吧&#xff0c;初步的算了一下我这一年面试了不下三十家公司&#xff0c;有大厂也有中小型公司&#xff0c;大厂偏多一些&#xff0c;应该每开发者和我一样都有想去大厂的想法&…...

    2024/4/14 11:32:25
  17. 智能技术带来的可能的技术代价是人们需要警惕的

    新技术与社会的融合能够给社会带来利益&#xff0c;同时也会带来伤害。新技术带给社会的伤害可以看作是社会要付出的“技术代价”&#xff0c;这样的代价是社会整体为技术发展而所要付出的总体成本。在信息技术发展的短暂时间里&#xff0c;许多人尤其是青少年沉湎于电子游戏甚…...

    2024/4/19 21:15:37
  18. Java基础语法(变量)

    学习自B站&#xff1a;【狂神说Java】Java零基础学习视频通俗易懂 Java基础语法&#xff08;变量&#xff09; 变量 变量是什么&#xff1a;就是可以变化的量&#xff01; Java是一种强类型语言&#xff0c;每个变量都必须声明其类型 Java变量是程序中最基本的存储单元&#…...

    2024/4/20 0:20:49
  19. 让 Android 面试官百问不厌不过时的知识点(已整理)

    开头 为了准备面试复习了Android的一些原理知识&#xff0c;并陆陆续续的总结了一些面试相关的东西&#xff0c;因为太久没写面试之类的博客了&#xff0c;今天就想做一个Android面试知识的分享。 但是无奈本人太蔡了(灬ꈍ ꈍ灬)&#xff0c;在北京、深圳&#xff08;远程视频…...

    2024/4/7 5:38:31
  20. SpringBoot 中yml配置文件:定义list集合、数组及注意事项

    点击“终码一生”&#xff0c;关注&#xff0c;置顶公众号 每日技术干货&#xff0c;第一时间送达&#xff01; 1.在平时的yml配置文件中&#xff0c;我们经常使用到配置基本数据类型的字符串&#xff0c;比如配置日志文件的写法如下&#xff1a; # 配置日志输出级别 logging…...

    2024/4/14 11:32:15

最新文章

  1. http响应,结合springboot

    目录 ResponseBody 统一响应结果封装类 总结 ResponseBody 统一响应结果 ResponseBody 类型&#xff1a;方法注解&#xff0c;类注解 位置&#xff1a;Controller方法上/类上 作用&#xff1a;将方法返回值直接响应&#xff0c;如果返回值类型是【实体类型】/【集合】&a…...

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

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

    2024/3/20 10:50:27
  3. golang的引用和非引用总结

    目录 概述 一、基本概念 指针类型&#xff08;Pointer type&#xff09; 非引用类型&#xff08;值类型&#xff09; 引用类型&#xff08;Reference Types&#xff09; 解引用&#xff08;dereference&#xff09; 二、引用类型和非引用类型的区别 三、golang数据类型…...

    2024/4/26 23:10:32
  4. promise.all方式使用

    romise.all( ).then( ) 处理多个异步任务&#xff0c;且所有的异步任务都得到结果时的情况。 比如&#xff1a;用户点击按钮&#xff0c;会弹出一个弹出对话框&#xff0c;对话框中有两部分数据呈现&#xff0c;这两部分数据分别是不同的后端接口获取的数据。 弹框弹出后的初…...

    2024/4/27 7:08:50
  5. [实战经验]Mybatis的mapper.xml参数#{para}与#{para, jdbcType=BIGINT}有什么区别?

    在MyBatis框架中&#xff0c;传入参数使用#{para}和#{para, jdbcTypeBIGINT}的有什么区别呢&#xff1f; #{para}&#xff1a;这种写法表示使用MyBatis自动推断参数类型&#xff0c;并根据参数的Java类型自动匹配数据库对应的类型。例如&#xff0c;如果参数para的Java类型是Lo…...

    2024/4/26 8:43:28
  6. 【外汇早评】美通胀数据走低,美元调整

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    2024/4/27 8:32:30
  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