Java SPI机制实现插件化扩展功能

1.背景

我们有一个图数据库的服务,用户希望在不修改现有源代码的情况下扩展自定义的分词器,达到可插件式扩展功能的目标。

通过Java的SPI机制实现插件式的扩展功能还是比较简便的,下面分主程序部分和插件实现2部分来说明。

特别的,在实现过程中遇到一个比较怪异的问题:ServiceLoader.load()时抛出NoClassDefFoundError异常,经过Google及StackOverflow都没能找到原因,问题表现与这几个链接中描述的类似:serviceloader-issue-in-jetty、serviceloader-in-glassfish4-java-ee-app、serviceloader-next-causing-a-noclassdeffounderror。
文末会记录一下这个问题的解决过程及原因分析。

2.SPI插件实现要素

主程序部分主要包括:

  1. 定义插件接口
  2. 加载插件实现的Jar包
  3. 加载插件实现类对象

插件实现部分主要包括:

  1. 实现插件接口
  2. 配置SPI入口
  3. 打Jar包

3.实现插件化的流程

下面以扩展一个分词器实例来说明插件化的流程。

  1. 定义接口
    定义接口com.baidu.hugegraph.plugin.HugeGraphPlugin,内容如下:
    public interface HugeGraphPlugin {public String name();public void register();public String supportsMinVersion();public String supportsMaxVersion();
    }
    
  2. 加载插件实现的Jar包
    参考SPI官方文档,我们定义了一个目录plugins来存放插件的Jar包,在启动Java主程序服务时通过参数-Djava.ext.dirs=plugins指定插件Jar包的目录。当需要扩展新的插件时,只需要把插件Jar包拷贝到plugins目录下,重启主程序服务即可生效。完整的启动命令示例:
    java -Djava.ext.dirs=plugins -Dname="HugeGraphServer" ${JAVA_OPTIONS} -cp ${CP}:${CLASSPATH} com.baidu.hugegraph.dist.HugeGraphServer ${APP_ARGS}
    
  3. 加载插件实现类实例
    在主程序中,我们通过ServiceLoader来加载所有插件实例。
    private static void registerPlugins() {LOG.info("Loading plugins...");ServiceLoader<HugeGraphPlugin> plugins = ServiceLoader.load(HugeGraphPlugin.class);for (HugeGraphPlugin plugin : plugins) {LOG.info("Loading plugin {}({})",plugin.name(), plugin.getClass().getCanonicalName());try {plugin.register();LOG.info("Loaded plugin {}", plugin.name());} catch (Exception e) {throw new HugeException("Failed to load plugin '%s'",plugin.name(), e);}}
    }
    
  4. 实现插件接口,并注册自定义分词器
    新建一个project来实现自定义的分词器,命名为hugegraph-plugin-demo
    这里简单的实现一个以空格来切分词语的分词器。
    package com.baidu.hugegraph.plugin;
    import java.util.Arrays;
    import java.util.HashSet;
    import java.util.Set;
    import com.baidu.hugegraph.analyzer.Analyzer;
    public class SpaceAnalyzer implements Analyzer {@Overridepublic Set<String> segment(String text) {return new HashSet<>(Arrays.asList(text.split(" ")));}
    }
    
    实现插件接口HugeGraphPlugin.register(),并把自定义好的分词器注册到主程序中去。
    package com.baidu.hugegraph.plugin;
    public class DemoPlugin implements HugeGraphPlugin {@Overridepublic String name() {return "demo";}@Overridepublic void register() {HugeGraphPlugin.registerAnalyzer("demo", SpaceAnalyzer.class.getName());}
    }
    
  5. 配置SPI入口
    1. 确保services目录存在:hugegraph-plugin-demo/resources/META-INF/services
    2. 在services目录下建立文本文件:com.baidu.hugegraph.plugin.HugeGraphPlugin
    3. 文件内容如下:com.baidu.hugegraph.plugin.DemoPlugin
  6. 打Jar包
    通过IDE或maven等工具将实现的插件打成Jar包,并且拷贝到主程序的plugins目录,重启主程序即可生效。

4.异常NoClassDefFoundError分析

4.1 问题表现

在实现过程中,遇到一个NoClassDefFoundError问题,在ServiceLoader加载插件时提示找不到插件接口定义类HugeGraphPlugin,异常栈如下:

java.lang.NoClassDefFoundError: com/baidu/hugegraph/plugin/HugeGraphPluginat java.lang.ClassLoader.defineClass1(Native Method)at java.lang.ClassLoader.defineClass(ClassLoader.java:763)at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)at java.net.URLClassLoader.access$100(URLClassLoader.java:73)at java.net.URLClassLoader$1.run(URLClassLoader.java:368)at java.net.URLClassLoader$1.run(URLClassLoader.java:362)at java.security.AccessController.doPrivileged(Native Method)at java.net.URLClassLoader.findClass(URLClassLoader.java:361)at java.lang.ClassLoader.loadClass(ClassLoader.java:424)at java.lang.ClassLoader.loadClass(ClassLoader.java:411)at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)at java.lang.ClassLoader.loadClass(ClassLoader.java:357)at java.lang.Class.forName0(Native Method)at java.lang.Class.forName(Class.java:348)at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:370)at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)at java.util.ServiceLoader$1.next(ServiceLoader.java:480)at com.baidu.hugegraph.dist.HugeGraphServer.registerPlugins(HugeGraphServer.java:62)at com.baidu.hugegraph.dist.HugeGraphServer.main(HugeGraphServer.java:44)
Caused by: java.lang.ClassNotFoundException: com.baidu.hugegraph.plugin.HugeGraphPluginat java.net.URLClassLoader.findClass(URLClassLoader.java:381)at java.lang.ClassLoader.loadClass(ClassLoader.java:424)at java.lang.ClassLoader.loadClass(ClassLoader.java:357)... 20 more
4.2 问题分析

根据错误信息从网上搜索,并没有发现根本解决方法。初步分析觉得跟类加载器ClassLoader有关,因为本身HugeGraphPlugin类是明显定义了的。

注意ServiceLoader.load()有一点比较特殊的地方,它的类加载器是Thread Context ClassLoader,关于类加载器的介绍可参考Java Classloader详解。

  1. 判断类是否真的没有定义?
    分析发现,只是通过ServiceLoader加载DemoPlugin类时才报这个错误(DemoPlugin implements HugeGraphPlugin),如果将DemoPlugin与主程序放在同一个项目中是没问题的。也就是说代码本身是正确的,只是因为以插件方式加载才导致了问题。

  2. 判断ServiceLoader是否使用了Context ClassLoader
    经过调试发现ServiceLoader中使用的类加载器确实是通过Thread.currentThread().getContextClassLoader()方法获取的,并且和主程序中的AppClassLoader是同一个实例。

  3. 判断是否在加载DemoPlugin类时HugeGraphPlugin类的Jar包还没有被载入?
    这个假设是在遇到问题比较迷惑的时候才会提出来的(当时甚至怀疑SPI官方文档是不是写错了),事实上,通过Java参数-verbose:class打印类加载信息,在错误发生之前HugeGraphPlugin类就已经被加载进来了。

  4. 判断是否循环依赖导致?
    插件中DemoPlugin类依赖来自主程序的HugeGraphPlugin类,加载插件时主程序又依赖插件中的DemoPlugin类,难道是循环依赖导致的?于是将HugeGraphPlugin类拆分到单独Jar包中,主程序和插件分别依赖该独立Jar包,不过结果还是同样的错误。

  5. ClassLoader类加载机制导致?
    综合第2点和第3点结果分析,会更加发现问题的诡异之处,主程序和插件使用的是同一个ClassLoader来加载我们定义的类,而且HugeGraphPlugin类明明已经被加载了的,那为何加载DemoPlugin类时还报错找不到HugeGraphPlugin类?

    结合ClassLoader相关源码分析发现,AppClassLoader在加载DemoPlugin类时,需要委托给双亲ExtClassLoader来加载(因为插件的Jar包配置在java.ext.dirs路径下),而DemoPlugin类继承自HugeGraphPlugin类,ExtClassLoader又需要拿到或加载HugeGraphPlugin类,但是HugeGraphPlugin所属的Jar包不在ext路径下从而找不到HugeGraphPlugin(事实上它在AppClassLoader里面,ExtClassLoader只会加载lib/ext目录和java.ext.dirs目录)。

    总结一下,就是配置了DemoPlugin Jar包到ext,而插件Jar包所依赖的HugeGraphPlugin Jar包在classpath下,导致父加载器ExtClassLoader无法找到属于子加载器AppClassLoader所负责的类。

    下面是ClassLoader.loadClass()源码:

    // java.lang.ClassLoader.loadClass()
    protected Class<?> loadClass(String name, boolean resolve)throws ClassNotFoundException
    {synchronized (getClassLoadingLock(name)) {// First, check if the class has already been loadedClass<?> c = findLoadedClass(name);if (c == null) {long t0 = System.nanoTime();try {// 双亲委派机制,DemoPlugin就是在这里被AppClassLoader委派给ExtClassLoader的。if (parent != null) {c = parent.loadClass(name, false);} else {c = findBootstrapClassOrNull(name);}} catch (ClassNotFoundException e) {// ClassNotFoundException thrown if class not found// from the non-null parent class loader}if (c == null) {// If still not found, then invoke findClass in order// to find the class.long t1 = System.nanoTime();c = findClass(name);// this is the defining class loader; record the statssun.misc.PerfCounter.getParentDelegationTime().addTime(t1 - t0);sun.misc.PerfCounter.getFindClassTime().addElapsedTimeFrom(t1);sun.misc.PerfCounter.getFindClasses().increment();}}if (resolve) {resolveClass(c);}return c;}
    }
    
4.3 解决方法

问题根源找到了,解决方法就很简单了,归根到底有2种解决方法,选择其中一种即可:

  • 将DemoPlugin Jar包以及它依赖的所有Jar包都放在java.ext.dirs下。
  • 将DemoPlugin Jar包放在classpath下。

<–end–>

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

相关文章

  1. java利用springboot搭建restful风格的web service

    0、前言传统的web请求:一个操作一个url,难以维护。而什么是restful呢?RESTFUL是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。RESTFUL适用于移动互联网厂商作为业务使能接口的场景,实现第三方OTT调用移动网络资源的功能,动作类型…...

    2024/5/2 1:18:41
  2. 论文阅读:Pixels to Graphs by Associative Embedding

    Pixels2Graph(NIPS 2017) 文章insight:现在做关系检测往往都是分为物体检测和关系识别两个步骤,可是这样的话,在第二步的时候往往会损失很多信息,本文希望从原图的像素信息一步同时得到物体和关系。其实本文的关键是associative embedding,今年ECCV的一篇CornerNet也是利…...

    2024/5/1 3:58:13
  3. Web攻防之暴力破解(何足道版)

    原创文章 原文首发我实验室公众号 猎户安全实验室 然后发在先知平台备份了一份1 @序攻防之初,大多为绕过既有逻辑和认证,以Getshell为节点,不管是SQL注入获得管理员数据还是XSS 获得后台cookie,大多数是为了后台的登录权限,假若我们获得一枚口令,都是柳暗花明。不管口令复…...

    2024/4/25 23:10:09
  4. C#调用RESTful API

    现在很多的网络服务都用RESTful API来实现。比如百度的搜索推广API介绍使用Rest原因:REST+JSON风格的API相比SOAP+XML,好处是:调用更加灵活,也更容易扩展;JSON格式传输信息比XML减少约30%的数据量,效率更高。因此建议开发者使用REST风格的API。查找了很多调用Rest API网络…...

    2024/4/27 0:37:02
  5. IntelliJ IDEA 插件 阿里巴巴Java开发手册(Alibaba Java Coding Guidelines)

    以前看到过个:Java开发手册(阿里巴巴-公开版),这是个pdf文档,里面描述了一些Java开发的规约,里面确实有很多好用的规约,要是在学校就有机会看看的话,那么,在毕业之后,实际工作中就会少很多坑。现在,阿里巴巴又一次对这个文档进行了升级,直接变成了一个插件。你需要…...

    2024/4/17 2:05:57
  6. 黑客术语全面积累

    黑帽 为非法目的进行黑客攻击的人,通常是为了经济利益。他们进入安全网络以销毁、赎回、修改或窃取数据,或使网络无法 用于授权用户。这个名字来源于这样一个事实:老式的黑白西部电影中的恶棍很容易被电影观众识别到,因为他们穿着黑 色的斯泰森,而“好人”则戴着白帽子 后…...

    2024/4/24 1:21:23
  7. Graph Embedding在人力资本领域的应用

    一切皆可Embedding在NLP(自然语言处理)中,自然语言无法直接应用到数学模型的建立中,需要将其映射到欧式空间。Embedding就是解决如何将自然语言表示为向量的,Google推出了Word2Vec模型,可以将语义相近的词映射到向量空间中相近的位置,之后Google又提出了BERT,BERT可以考…...

    2024/4/17 2:05:39
  8. 热血格斗传说起名字的学问!

    2019独角兽企业重金招聘Python工程师标准>>> 貌似FC上的热血格斗传说,这个应该不需要我多解释和介绍了,今天我就谈谈里面起名字的学问,以前用卡带玩的时候研究的,暂时百度过没有发布这个的。 名字分5个字,第一位为速度码,第二位为HP码,第三位是防御力和脚击…...

    2024/4/28 1:04:29
  9. [Spring Boot]应用Restful风格进行Web请求

    Restful风格越来越流行,不研究都不好意思说自己是做Web开发的。存在即合理,那么多人用这种风格开发Web应用,就证明这种风格是能解决一些问题的。个人认为,应用Restful风格最大的好处就是能统一接口的写法。比如说,一般系统都有用户管理模块,通过发送Web请求,对数据库里的…...

    2024/4/23 5:44:31
  10. java调用大漠插件

    发现很多人在问java怎么调用大漠插件,自己研究了下,写篇博文分享下,大牛请忽略。这其实是一个java调用dll的问题,于是去查了下java如何调用dll,最先查到的是通过jni,发现非常麻烦,接着又发现一个jar包jna,实验了下发现不行,dm.dll属于com类型的插件,又查到一个jacob包…...

    2024/4/23 10:41:54
  11. Word Embedding 知识总结

    一 Word Embedding的基本概念1.1 什么是Word Embedding? 现有的机器学习方法往往无法直接处理文本数据,因此需要找到合适的方法,将文本数据转换为数值型数据,由此引出了Word Embedding的概念。如果将word看作文本的最小单元,可以将Word Embedding理解为一种映射,其过程是…...

    2024/4/17 2:06:15
  12. html5简单游戏编程从零开始

    本文基于lufylegend游戏引擎,所以以下内容全部和此有关,lufylegend引擎的下载地址: http://www.lufylegend.com/lufylegend既然是使用引擎,首先就要配置引擎的开发环境,lufylegend的使用极其方便,只需将lufylegend-x.x.x.min.js文件引入即可,默认将legend文件夹放入当前…...

    2024/4/20 8:35:07
  13. Android RESTful API 设计指南

    网络应用程序,分为前端和后端两个部分。当前的发展趋势,就是前端设备层出不穷(手机、平板、桌面电脑、其他专用设备……)。因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信。这导致API构架的流行,甚至出现“API First”的设计思想。RESTfulAPI是目前比较成…...

    2024/4/15 11:11:43
  14. tensorflow学习笔记--embedding_lookup()用法

    embedding_lookup( )的用法 关于tensorflow中embedding_lookup( )的用法,在Udacity的word2vec会涉及到,本文将通俗的进行解释。首先看一段网上的简单代码:#!/usr/bin/env/python # coding=utf-8 import tensorflow as tf import numpy as npinput_ids = tf.placeholder(dty…...

    2024/4/18 21:04:50
  15. 浅谈RESTful中的PUT,POST,PATCH

    RESTful中更推荐使用HTTP的请求谓词(动词)来作为动作标识。包括GET,PORT,PUT,PATCH,DELETE。在RESTful中文文档中有这么一句胡,“patch方法用来更新局部资源”,我们该如何理解?先来解释一下古老的POST和PUT。在HTTP原本的定义中[RFC2616],用于上传数据的方法只有POST…...

    2024/4/24 15:47:31
  16. PHP中的 empty() 函数和 isset() 函数

    在开发过程中,经常会遇到判断变量存不存在以及是否为空的情况,特别是数组,如果访问数组的一个不存在的元素的话,会有Notice级别的错误爆出来,也是一种逻辑不严谨的表现。 首先,看一下 empty() 函数: 判断一个函数是否为空。那么在PHP中,什么样的情况被看成是空呢?第一…...

    2024/4/21 4:19:18
  17. 游戏开发人员推荐书单

    如何开始学习游戏开发?开发游戏充满挑战性,需要开发人员具备大量的技能与积极的创新精神。希望这张书单能帮助朋友们实现自己的游戏梦想,尽快掌握游戏开发技术1、游戏机制:高级游戏设计技术}游戏设计权威专家力作,首次全面剖析游戏机制,全彩印刷! }本书将教你如何打造游…...

    2024/4/20 17:05:37
  18. 【论文笔记】Graph Embedding Techniques, Applications, and Performance: A Survey

    https://arxiv.org/pdf/1705.02801.pdf 这篇论文列举了目前graph embedding算法,将其分为“因式分解”、“随机游走”、“深度学习”三类,在不同的任务上评估其效果,最后提了点发展方向前言 定义 算法分类 研究现状 基于因式分解的方法 局部线性嵌入(LLE,Locally Linear Em…...

    2024/4/24 14:56:24
  19. RESTful还是JSON-RPC?

    RESTful还是JSON-RPC? 最近突然被问到:“现在用的都是RESTful的接口吗?”一下子被问得有点蒙, 我确实在很多开发文档里见过REST、RESTful等等字眼,但我自己在用的却好像并不是RESTful的API。那我在用的是什么?与RESTful孰好孰坏? 我们在说RESTful和JSON-RPC的时候在讨论…...

    2024/4/20 11:18:42
  20. FD_ISSET

    FD_ZERO,FD_ISSET这些都是套节字结合操作宏 看看MSDN上的select函数, 这是在select io 模型中的核心,用来管理套节字IO的,避免出现无辜锁定. int select( int nfds,fd_set FAR *readfds, fd_set FAR *writefds, fd_se…...

    2024/5/2 2:11:42

最新文章

  1. 分类规则挖掘(二)

    目录 三、决策树分类方法&#xff08;一&#xff09;决策树生成框架&#xff08;二&#xff09;ID3分类方法&#xff08;三&#xff09;决策树的剪枝&#xff08;四&#xff09;C4.5算法 三、决策树分类方法 决策树 (Decision Tree) 是从一组无次序、无规则&#xff0c;但有类别…...

    2024/5/2 6:22:13
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/3/20 10:50:27
  3. Oracle 正则表达式

    一、Oracle 正则表达式相关函数 (1) regexp_like &#xff1a;同 like 功能相似&#xff08;模糊 匹配&#xff09; (2) regexp_instr &#xff1a;同 instr 功能相似&#xff08;返回字符所在 下标&#xff09; (3) regexp_substr &#xff1a; 同 substr 功能相似&…...

    2024/5/1 13:21:14
  4. 大数据学习十三天(hadhoop基础2)

    一: MapReduce概述(了解) MapReduce是hadoop三大组件之一,是分布式计算组件 Map阶段 : 将数据拆分到不同的服务器后执行Maptask任务,得到一个中间结果 Reduce阶段 : 将Maptask执行的结果进行汇总,按照Reducetask的计算 规则获得一个唯一的结果 我们在MapReduce计算框架的使用过…...

    2024/5/1 13:32:23
  5. 【外汇早评】美通胀数据走低,美元调整

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

    2024/5/1 17:30:59
  6. 【原油贵金属周评】原油多头拥挤,价格调整

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

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

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

    2024/4/29 2:29:43
  8. 【原油贵金属早评】库存继续增加,油价收跌

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

    2024/4/30 18:21:48
  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/30 9:43:09
  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/29 20:46:55
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

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

    2024/4/30 22:21:04
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

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

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

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

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

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

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

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

    2024/4/30 9:42:22
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

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

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

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

    2024/4/30 9:42:49
  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