(二)Spring关键接口之ApplicationContext上下文相关
目录
1.ServletContextListener接口
2.ApplicationContextInitializer接口
2.1 Springboot的集成方式
2.2 SpringMVC的集成方式
3.ApplicationListener接口及配套类
3.1 ApplicationListener接口和配套类ApplicationEvent
3.2 ApplicationEventMulticaster接口
1.ServletContextListener接口
接口源码如下:
public interface ServletContextListener extends EventListener {public default void contextInitialized(ServletContextEvent sce) {}public default void contextDestroyed(ServletContextEvent sce) {}
}
接口说明:该接口属于JDK源码中Servlet包中的类,当程序使用Web服务器的方式启动Tomcat容器,初始化ServletContext后将会调用contextInitialized()方法,以前老式常规的Spring入口便是在这里进入的。
contextDestroyed()方法则是在ServletContext被销毁时调用。
2.ApplicationContextInitializer接口
接口源码如下:
public interface ApplicationContextInitializer<C extends ConfigurableApplicationContext> {void initialize(C applicationContext);
}
接口说明:接口的作用便是在Spring容器调用refresh()方法刷新上下文前对ApplicationContext进行一些自定义的操作,如手动加入自定义配置文件或者手动加入某个自定义实现类等,该接口能够使用泛型来确定某一个具体ApplicationContext实现类。接下来看看该接口在Springboot和SpringMVC框架下是如何集成进去的。
2.1 Springboot的集成方式
Springboot有两种集成方式,一种是在Springboot文件spring.factories配置,另一种是在application.yml文件中配置。
如现在定义了一个CustomInitializer自定义的ApplicationContextInitializer实现类,代码如下:
@Slf4j
public class CustomInitializer implements ApplicationContextInitializer {@Overridepublic void initialize(ConfigurableApplicationContext applicationContext) {log.info("invoke CustomInitializer initialize method.");}
}
第一种:采用在spring.factories中添加ApplicationContextInitializer配置。首先需要在resources目录下添加/META-INF/spring.factories文件,此文件为springboot的配置文件,只要路径正确就能被springboot读取加载,在其中配置如下:
org.springframework.context.ApplicationContextInitializer=\com.iboxpay.initializer.CustomInitializer
其配置读相关源码如下(建议先看过springboot源码,展示源码将会忽略没必要的流程):
public class SpringApplication {private List<ApplicationContextInitializer<?>> initializers;public SpringApplication(ResourceLoader resourceLoader, Class<?>... primarySources) {...setInitializers((Collection) getSpringFactoriesInstances(ApplicationContextInitializer.class));...}private <T> Collection<T> getSpringFactoriesInstances(Class<T> type) {return getSpringFactoriesInstances(type, new Class<?>[] {});}private <T> Collection<T> getSpringFactoriesInstances(Class<T> type, Class<?>[] parameterTypes, Object... args) {ClassLoader classLoader = getClassLoader();Set<String> names = new LinkedHashSet<>(SpringFactoriesLoader.loadFactoryNames(type, classLoader));List<T> instances = createSpringFactoriesInstances(type, parameterTypes, classLoader, args, names);AnnotationAwareOrderComparator.sort(instances);return instances;}public ConfigurableApplicationContext run(String... args) {...prepareContext(context, environment, listeners, applicationArguments, printedBanner);...}private void prepareContext(ConfigurableApplicationContext context, ConfigurableEnvironment environment,SpringApplicationRunListeners listeners, ApplicationArguments applicationArguments, Banner printedBanner) {...applyInitializers(context);...}protected void applyInitializers(ConfigurableApplicationContext context) {for (ApplicationContextInitializer initializer : getInitializers()){Class<?> requiredType = GenericTypeResolver.resolveTypeArgument(initializer.getClass(),ApplicationContextInitializer.class);Assert.isInstanceOf(requiredType, context, "Unable to call initializer.");initializer.initialize(context);}}
}
大致流程如下:
- springboot的启动main函数调用SpringApplication.run()方法;
- 初始化SpringApplication类,在其构造函数中会调用getSpringFactoriesInstances方法来获取在spring.factories文件中配置的所有ApplicationContextInitializer类,其具体读取流程略;
- 初始化SpringApplication类之后调用run()方法,在该方法中会依次调用到applyInitializers()方法中;
- 方法applyInitializers()会依次调用从spring.factories文件中读取ApplicationContextInitializer类的initialize方法。
第二种:采用在application.yml文件配置:
context:initializer:classes: com.iboxpay.initializer.CustomInitializer
这个配置方法的原理和在spring.factoreis文件中配置ApplicationContextInitializer类是差不多的,前面会读取文件中配置的DelegatingApplicationContextInitializer类,该类会在会调用到applyInitializers()中,进而调用DelegatingApplicationContextInitializer类的initialize()方法,在该方法流程中会读取配置在application.yml配置中的initializer类。其源码如下:
public class DelegatingApplicationContextInitializerimplements ApplicationContextInitializer<ConfigurableApplicationContext>, Ordered {private static final String PROPERTY_NAME = "context.initializer.classes";@Overridepublic void initialize(ConfigurableApplicationContext context) {ConfigurableEnvironment environment = context.getEnvironment();List<Class<?>> initializerClasses = getInitializerClasses(environment);if (!initializerClasses.isEmpty()) {applyInitializerClasses(context, initializerClasses);}}private List<Class<?>> getInitializerClasses(ConfigurableEnvironment env) {String classNames = env.getProperty(PROPERTY_NAME);List<Class<?>> classes = new ArrayList<>();if (StringUtils.hasLength(classNames)) {for (String className : StringUtils.tokenizeToStringArray(classNames, ",")) {classes.add(getInitializerClass(className));}}return classes;}
}
可以看到方法流程十分简洁,直接在initialize方法中获取environment对象,再将对象传入getInitializerClasses方法,在该方法中读取environment对象的context.initializer.classes属性,而该属性便是我们在application.yml文件中配置的自定义initializer类CustomInitializer。读取到自定义的类之后便可以在该类中进行调用,完成自定义initializer类的嵌入集成。
2.2 SpringMVC的集成方式
SpringMVC由于其是依赖于web.xml文件的配置来启动的,因此想要在ApplicationContext刷新前将initializer类配置进程序上下文中猜想也只能通过web.xml文件配置来实现。现在实例Demo类还是上一节的CustomInitializer类。
而实际上SpringMVC确实是通过web.xml文件来实现配置的,也有两种方式,一种是将initializer类配成globalInitializerClasses属性,而另一种则是在SpringMVC的核心类DispatcherServlet配置初始化参数contextInitializerClasses。接下来说一下这两种配置方式(前提看过SpringMVC启动源码):
第一种:使用globalInitializerClasses属性来配置,在web.xml文件中的配置如下:
<context-param><param-name>globalInitializerClasses</param-name><param-value>com.iboxpay.initializer.CustomInitializer</param-value>
</context-param>
其启动时加载源码如下:
public abstract class FrameworkServlet extends HttpServletBean implements ApplicationContextAware {private String contextInitializerClasses;public static final String GLOBAL_INITIALIZER_CLASSES_PARAM = "globalInitializerClasses";public void setContextInitializerClasses(String contextInitializerClasses) {this.contextInitializerClasses = contextInitializerClasses;}@Overrideprotected final void initServletBean() throws ServletException {...this.webApplicationContext = initWebApplicationContext();...}protected WebApplicationContext initWebApplicationContext() {...if (wac == null) {wac = createWebApplicationContext(rootContext);}...}protected WebApplicationContext createWebApplicationContext(WebApplicationContext parent) {return createWebApplicationContext((ApplicationContext) parent);}protected WebApplicationContext createWebApplicationContext(ApplicationContext parent) {...configureAndRefreshWebApplicationContext(wac);...}protected void configureAndRefreshWebApplicationContext(ConfigurableWebApplicationContext wac) {...applyInitializers(wac);wac.refresh();}protected void applyInitializers(ConfigurableApplicationContext wac) {// 获取web.xml文件中globalInitializerClasses配置String globalClassNames = getServletContext().getInitParameter(ContextLoader.GLOBAL_INITIALIZER_CLASSES_PARAM);if (globalClassNames != null) {for (String className : StringUtils.tokenizeToStringArray(globalClassNames, INIT_PARAM_DELIMITERS)) {this.contextInitializers.add(loadInitializer(className, wac));}}// 这是个成员变量,代表着这个变量是在初始化的时候set进去的if (this.contextInitializerClasses != null) {for (String className : StringUtils.tokenizeToStringArray(this.contextInitializerClasses, INIT_PARAM_DELIMITERS)) {this.contextInitializers.add(loadInitializer(className, wac));}}AnnotationAwareOrderComparator.sort(this.contextInitializers);for (ApplicationContextInitializer<ConfigurableApplicationContext> initializer : this.contextInitializers) {initializer.initialize(wac);}}
}
对于如何进入到FrameworkServlet类的initServletBean便不做过多的讲解,可以看到根据其通用的调用链一路下去最终还是到了熟悉的方法名称来:applyInitializers(),该方法是进行调用initializer类的最终方法。都知道在web.xml文件中的配置全都会保存在ServletContext中,因此获取initializer类直接调用getServletContext().getInitParameter()便能够获得,接着将获取到的类配置实例化添加到contextInitializers成员变量即可。
第二种:配置在DispatcherServlet的初始变量中:
<servlet><servlet-name>dispatcher</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath*:spring-mvc.xml</param-value></init-param><!-- 配置初始化变量,将会调用set方法set进去 --><init-param><param-name>contextInitializerClasses</param-name><param-value>com.iboxpay.initializer.CustomInitializer</param-value></init-param>
</servlet>
第二种的方法调用链和一种一样,只是在初始化DispatcherSerlvet的时候便会将contextInitializerClasses配置调用setContextInitializerClasses方法set进去,为其成员变量contextInitializerClasses直接赋值,和成员变量contextConfigLocation的赋值方式一样,如果有多个可支持“,; \t\n”这些符号分割开来。接着再将String路径实例化成具体的类,添加进contextInitializers变量,最终排序逐个调用方法initialize(),完成initializer类的集成。
3.ApplicationListener接口及配套类
3.1 ApplicationListener接口和配套类ApplicationEvent
其组合源码如下:
public interface ApplicationListener<E extends ApplicationEvent> extends EventListener {void onApplicationEvent(E event);
}
public abstract class ApplicationEvent extends EventObject {private static final long serialVersionUID = 7099057708183571937L;private final long timestamp;public ApplicationEvent(Object source) {super(source);this.timestamp = System.currentTimeMillis();}public final long getTimestamp() {return this.timestamp;}
}
接口说明:这套组合是Spring容器为开发者提供的事件驱动监听功能,看过Springboot启动源码对于这个应该不算陌生,Springboot中application.yml文件的读取解析便是使用事件监听来完成的。
示例关键代码如下:
public class ConfigFileApplicationListener implements EnvironmentPostProcessor, SmartApplicationListener, Ordered {@Overridepublic void onApplicationEvent(ApplicationEvent event) {if (event instanceof ApplicationEnvironmentPreparedEvent) {onApplicationEnvironmentPreparedEvent((ApplicationEnvironmentPreparedEvent) event);}if (event instanceof ApplicationPreparedEvent) {onApplicationPreparedEvent(event);}}
}
public class ApplicationEnvironmentPreparedEvent extends SpringApplicationEvent {private final ConfigurableEnvironment environment;public ApplicationEnvironmentPreparedEvent(SpringApplication application,String[] args, ConfigurableEnvironment environment) {super(application, args);this.environment = environment;}public ConfigurableEnvironment getEnvironment() {return this.environment;}
}
示例说明:ConfigFileApplicationListener和ApplicationEnvironmentPreparedEvent则是一套监听驱动事件功能组合,声明一个ConfigFileApplicationListener监听器,再将相应的Event声明传入进去即可根据事件来进行相应的操作。onApplicationEnvironmentPreparedEvent()方法则是读取解析application.yml文件的方法。
3.2 ApplicationEventMulticaster接口
当然这上述的只是一个监听器,如果需要一组监听器组来组合完成某一个功能,也可以使用到Spring的另外一个接口:ApplicationEventMulticaster。
ApplicationEventMulticaster接口源码如下:
public interface ApplicationEventMulticaster {void addApplicationListener(ApplicationListener<?> listener);void addApplicationListenerBean(String listenerBeanName);void removeApplicationListener(ApplicationListener<?> listener);void removeApplicationListenerBean(String listenerBeanName);void removeAllListeners();void multicastEvent(ApplicationEvent event);void multicastEvent(ApplicationEvent event, @Nullable ResolvableType eventType);
}
接口说明:该接口大体提供了三种功能:新增监听器、删除监听器及传入监听事件调用监听器。这相当于可以将所有的监听器都放入这个实现类中,当需要根据某个事件来进行相应的操作时只需要传入事件,开发者可以在监听器组实现类中自定义来根据事件协调各个监听器之间的搭配以完成某个具体的功能。
使用示例可以参照Springboot的启动运行监听器EventPublishingRunListener,该类的类信息及方法大致源码如下:
public class EventPublishingRunListener implements SpringApplicationRunListener, Ordered {private final SimpleApplicationEventMulticaster initialMulticaster;@Overridepublic void starting() {this.initialMulticaster.multicastEvent(new ApplicationStartingEvent(this.application, this.args));}@Overridepublic void environmentPrepared(ConfigurableEnvironment environment) {this.initialMulticaster.multicastEvent(new ApplicationEnvironmentPreparedEvent(this.application, this.args, environment));}@Overridepublic void contextPrepared(ConfigurableApplicationContext context) {this.initialMulticaster.multicastEvent(new ApplicationContextInitializedEvent(this.application, this.args, context));}@Overridepublic void contextLoaded(ConfigurableApplicationContext context) {...this.initialMulticaster.multicastEvent(new ApplicationPreparedEvent(this.application, this.args, context));}@Overridepublic void failed(ConfigurableApplicationContext context, Throwable exception) {ApplicationFailedEvent event = new ApplicationFailedEvent(this.application, this.args, context, exception);if (context != null && context.isActive()) {context.publishEvent(event);}else {...this.initialMulticaster.multicastEvent(event);}}
}
示例说明:可以看到,当调用EventPublishingRunListener类的几种不同方法时,在方法中直接声明某一事件,直接传入SimpleApplicationEventMulticaster监听器组即可,而无需关心到底应该由哪个监听器来监听处理这个事件,具体的处理逻辑都在initialMulticaster的multicastEvent被封装,增加了使用的便捷性。
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 哈工大/哈工程被禁用 MATLAB,网友:被卡脖子的领域还不少
5 月 23 日,哈工大/哈工程等 33 个中国机构和个人被美国商务部拉入出口管控的「实体名单」。近日,此一波被“拉黑”的效应已经在高校中产生了!哈工大学生发现无法正常使用 MathWorks最近有哈工大学生表示 MathWorks 正版软件无法正常使用。与 MathWorks 客服交涉,对方告知“…...
2024/3/24 15:51:42 - Java和Python二选一到底该学啥?
这篇文 章是面向一些初入IT行业的朋友进行一些相对中肯一点的分析和建议,虽然带有浓厚的个人色彩,但 是我还是尽量以事实说话,以代码说话。另外,由于文中以自己所在的教学机构学致私教所做的一些事情来举例,因为这段时间有很多人在问java和python到底该选择哪个,所以我整…...
2024/4/15 13:43:21 - Javase基础(一)——概述
Javase基础(一)——概述Javase基础(一)——概述A:Java语言发展史B:Java语言版本C:Java语言平台Java语言特点Java语言跨平台原理JRE和JDK的概述JDK的下载和安装JDK安装路径下的目录解释path环境变量的作用及配置方式1方式2classpath环境变量的作用Java开发工具HelloWorldHel…...
2024/4/15 13:43:26 - MySQL添加用户、为用户分配权限
登录MySQL 登录本地用户 mysql -u root -p登录外网用户(需要注意服务器可能只允许本地登录,需要修改响应的配置文件) mysql -u root -h 123.456.789.852 -p添加用户 允许本地访问的用户(127.0.0.1) create user root@localhost identified by 123456; 允许外网IP访问的用户…...
2024/4/15 13:43:41 - Javase基础(二)——数据类型
Javase基础(二)——数据类型Javase基础(二)——数据类型和运算常量进制概述和二,八,十六进制进制转换源码、反码、补码原码反码补码变量的概述及格式变量相加和常量相加的区别数据类型基本数据类型分类(4类8种)字符和字符串char数据类型占用空间转义字符自动类型转换字符串…...
2024/4/15 13:43:51 - 循环神经网络系列RNN、LSTM及变种
摘要 循环神经网络(Recurrent Neural Network, RNN)是一类以序列(sequence)数据为输入,在序列的演进方向进行递归(recursion)且所有节点(循环单元)按链式连接的递归神经网络(recursive neural network)。 人脑记忆原理:对信息的预测和记忆功能语言模型对当前输入信…...
2024/4/15 13:43:51 - 如果你不知道应该学C还是python,那就看看这个吧
学Python第一天:哇做一个a+b程序看上去挺简单的,编程看上去没那么难。 学C第一天:我的天include是啥?main是啥?return是啥?……int, float, double, char都是啥? (不正经地)学Python一个月后:能写爬虫、能写游戏外挂脚本、能做小游戏、能做各种功效神奇的小软件、能用…...
2024/4/15 13:43:46 - python regex 返回index
import reprint([(m.start(0), m.end(0)) for m in re.finditer("天安门", "北京天安门上太阳升")])print结果: [(2, 5)]...
2024/3/14 14:01:06 - 软妹音程序员鼓励师24小时在线,只需一个VSCode插件,还能帮忙吐槽产品经理
一个神奇的 VSCode 插件最近在 GitHub 发现了一个有趣的 VSCode 插件程序员彩虹屁插件,名叫 VSCode Rainbow Fart。在你写代码的时候,可根据关键字播放接近代码含义的小萝莉语音。有了它,你们公司连“程序员鼓励师”的预算都省了。(Rainbow Fart)彩虹屁,真香!传送门:ht…...
2024/4/17 4:16:18 - C# 学习(六)—— 委托、 泛型委托与Lambda表达式
1 委托的含义 当需要将一个方法当作另一个方法的参数时,对于某些语言例如C/C++等,需要用函数指针来处理。而对于C#来说,则使用委托机制。 例如,当我们需要对一个泛型集合ICollection进行排序时,我们定义一个Sort方法,那么这个方法需要哪些参数才能进行排序呢?首先,肯定…...
2024/4/15 13:44:11 - jmeter监控服务器资源的jpgc相关插件安装
一、准备安装包 地址:https://jmeter-plugins.org/install/Install/ 【jmeter-plugins-manager-1.3.jar】 二、安装 1、将下载的安装包,放到jmeter安装目录的lib/ext文件夹下2、重启jmeter,在选项中找到【Plugins mManager(has update)】3、在【available plugins】下,勾选…...
2024/4/15 13:44:11 - 跑马灯组件---基于angular6+
跑马灯,非常常用的功能,用于消息通知之类的。百度一搜都是使用<marquee>来完成。结果发现W3C上根本没有这个标签。原来是这个标签即将被删除。在前端不断革新的今天,怎么能用将废弃的标签呢。指不定哪天就没了,程序出了莫名的bug都不知道。所以我决定自己写一个跑马灯…...
2024/4/15 13:44:21 - 深入理解volatile关键字的底层工作原理
前言 在并发编程中,我们常常会用到volatile关键字修饰共享变量,来保证这个共享变量在线程之间的可见性。我们来深入了解一下volatile的底层工作原理。 volatile常见面试题: 1、volatile的三大特性? 2、为什么volatile可以保证可见性? 3、为什么volatile不可以保证原子性?…...
2024/4/15 13:44:16 - 如何删除linux文件夹中的海量文件
今日份问题: 思维进度:需要清空一个文件夹里的内容,文件夹中内容数量预估上亿条,324G考虑:第一反应就是rm -rf *担心:思考了一下,324G的话,数据量这么大,rm -rf *会不会出问题结论:肯定是会出问题的,很慢,进程会挂起,消耗很长时间解决办法: 咨询了公司运维同学,…...
2024/4/15 13:44:41 - 深度学习与神经网络(十四)—— VAE变分自编码器
VAEVariational Autoencoder 变分自编码器通常我们会拿 VAE 跟 GAN 比较,的确,它们两个的目标基本是一致的——希望构建一个从隐变量 Z 生成目标数据 X 的模型,但是实现上有所不同引入从神经网络的角度来理解VAE变分自编码器中间神经元的连接方式也是不太一样的VAE vs GANGA…...
2024/4/15 3:07:27 - url路径中文参数乱码问题
问题 http://localhost:8080/test?name=管理这样参数存在中文情况,spring boot代码 public RoleResponse selectById(@RequestParam(value = "name", required = false) String name){return roleService.selectByName(name); }可能存在接收到的name是%E7%AE%A1%E7…...
2024/4/15 3:07:25 - 【MAC】Adobe全家桶全面更新,看看有哪些新变化!
在设计软件中,最常接触的恐怕就是Adobe的全家桶了。近日Adobe全家桶也进行了全面更新,尤其是在软件的图标上做了较大的变化,所有的软件图标都取消了原先的正方形样式,更改为平面化的半圆角设计,并且取消边框,乍一看和苹果的iOS系统中的APP应用很相似。值得一提的是,Ligh…...
2024/4/15 3:07:26 - 2020_6_22 箭头函数&语法糖&obj插入数据&Cookie
箭头函数 1.普通写法let fuc = (参数一, 参数二...) => {// 执行的js语句}2.简写(当js语句只有一句的时候) let fuc = (参数一, 参数二...) => // 执行的js语句3.简写(当js和形参都只有一个的时候) let fuc = 参数一 => // 执行的js语句语法糖 a = a || 默认值 /…...
2024/4/15 3:07:22 - JAVA成员变量和局部变量的区别
...
2024/4/15 13:44:31 - Unity 制作图集
一、制作图集的好处: 众所周知CPU是用来处理游戏的逻辑运算的,而GPU是用来处理游戏中图像的。在GPU中,我们要绘制一个图像需要提交图片(纹理)到显存,然后再进行绘制(在这个过程中会产生一次DrawCall),也就是说我们要绘制100张图片就要产生100次DrawCall.显然这是非常消…...
2024/4/15 13:44:16
最新文章
- 推荐系统综述
推荐系统研究综述 - 中国知网 传统推荐方法主要分类: 1)基于内容推荐方法 主要依据用户与项目之间的特征信息,用户之间的联系不会影响推荐结果,所以不存在冷启动和稀疏问题,但是基于内容推荐的结果新颖程度低并且面临特征提取的问题。 基于内容的推荐方法的思想非…...
2024/4/18 4:37:03 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - 方案分享 | 嵌入式指纹方案
随着智能设备的持续发展,指纹识别技术成为了现在智能终端市场和移动支付市场中占有率最高的生物识别技术。凭借高识别率、短耗时等优势,被广泛地运用在智能门锁、智能手机、智能家居等设备上。 我们推荐的品牌早已在2015年进入指纹识别应用领域ÿ…...
2024/4/16 10:23:30 - ASP.NET Core 标识(Identity)框架系列(一):如何使用 ASP.NET Core 标识(Identity)框架创建用户和角色?
前言 ASP.NET Core 内置的标识(identity)框架,采用的是 RBAC(role-based access control,基于角色的访问控制)策略,是一个用于管理用户身份验证、授权和安全性的框架。 它提供了一套工具和库&…...
2024/4/17 21:43:41 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/4/18 0:33:31 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/4/17 20:29:59 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/18 3:56:15 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/4/17 2:33:17 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/17 7:50:46 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/18 3:56:01 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/18 3:56:04 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/18 3:55:30 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/18 3:55:54 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/4/18 3:55:45 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/17 21:50:30 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/15 13:53:08 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/15 9:16:52 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/18 3:56:13 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/4/18 3:56:18 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/18 3:55:57 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/18 3:55:50 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/15 23:28:22 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/4/18 3:56:20 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/18 3:56:11 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) 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 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在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