2021SC@SDUSC

** 提示

源码展示中笔者会将重载的方法省略,只展示关键方法

探索SolrClient

sdudoc的检索功能主要是通过solr实现的,本人确实很好奇solr框架的源码是如何实现的。

首先我们需要在 application.properties 中配置solr的服务器主机地址。

我们使用 solr 主要是通过SolrClient 类进行操作的,solr 的源码大致如下:

public abstract class SolrClient implements Serializable, Closeable {// 可以用来将Object转为Document对象private DocumentObjectBinder binder;public UpdataResponse add(...) {UpdateRequest req = new UpdateRequest();...req.setCommitWithin(...);return req.process(this, ...);}public UpdateResponse addBeans(String collection, Collection<?> beans, int commitWithinMs) throws SolrServerException, IOException {DocumentObjectBinder binder = this.getBinder();ArrayList<SolrInputDocument> docs =  new ArrayList<>(beans.size());for (Object bean : beans) {docs.add(binder.toSolrInputDocument(bean));}return add(collection, docs, commitWithinMs);}public UpdateResponse commit(String collection, boolean waitFlush, boolean waitSearcher, boolean softCommit)throws SolrServerException, IOException {return new UpdateRequest().setAction(UpdateRequest.ACTION.COMMIT, waitFlush, waitSearcher, softCommit).process(this, collection);}// 其他的都是通过 UpdateRequest 操作的,这里不多赘述...
}

可见,SolrClient 是一个用来包装更新请求 UpdateRequest 的类,便于使用者进行相关的操作。

下面我们来看一下 UpdateRequest 类

可以发现,UpdateRequest有很多成员:

private Map<SolrInputDocument,Map<String,Object>> documents = null;
private Iterator<SolrInputDocument> docIterator = null;
private Map<String,Map<String,Object>> deleteById = null;
private List<String> deleteQuery = null;private boolean isLastDocInBatch = false;

并且构造器内容为:

public UpdateRequest() {super(METHOD.POST, "/update");
}public UpdateRequest(String url) {super(METHOD.POST, url);
}

UpdateRequest 的基本操作如下:

// 无参数add
public UpdateRequest add(final SolrInputDocument doc) {Objects.requireNonNull(doc, "Cannot add a null SolrInputDocument");if (documents == null) {documents = new LinkedHashMap<>();}documents.put(doc, null);return this;
}// 有参数add
public UpdateRequest add(final SolrInputDocument doc, Integer commitWithin, Boolean overwrite) {Objects.requireNonNull(doc, "Cannot add a null SolrInputDocument");if (documents == null) {documents = new LinkedHashMap<>();}Map<String,Object> params = new HashMap<>(2);if (commitWithin != null) params.put(COMMIT_WITHIN, commitWithin);if (overwrite != null) params.put(OVERWRITE, overwrite);documents.put(doc, params);return this;
}// 多个对象add
public UpdateRequest add(final Collection<SolrInputDocument> docs) {if (documents == null) {documents = new LinkedHashMap<>();}for (SolrInputDocument doc : docs) {Objects.requireNonNull(doc, "Cannot add a null SolrInputDocument");documents.put(doc, null);}return this;
}// 按id删除
public UpdateRequest deleteById(String id) {if (deleteById == null) {deleteById = new LinkedHashMap<>();}deleteById.put(id, null);return this;
}// 有参按id删除
public UpdateRequest deleteById(String id, String route, Long version) {if (deleteById == null) {deleteById = new LinkedHashMap<>();}Map<String, Object> params = (route == null && version == null) ? null : new HashMap<>(1);if (version != null)params.put(VER, version);if (route != null)params.put(_ROUTE_, route);deleteById.put(id, params);return this;
}// 多重按id删除
public UpdateRequest deleteById(List<String> ids) {if (deleteById == null) {deleteById = new LinkedHashMap<>();}for (String id : ids) {deleteById.put(id, null);}return this;
}// 将查询的结果删除
public UpdateRequest deleteByQuery(String q) {if (deleteQuery == null) {deleteQuery = new ArrayList<>();}deleteQuery.add(q);return this;
}// ...// 提交
public UpdateResponse commit(SolrClient client, String collection) throws IOException, SolrServerException {if (params == null)params = new ModifiableSolrParams();params.set(UpdateParams.COMMIT, "true");return process(client, collection);
}// ...
// 剩下的是一些额外操作,比如生成路由,转换为XML格式

观察 UpdateRequest 对象的操作,我们可以发现

上面的成员是用来记录操作的键值对和参数

存储的对象是 SolrInputDocument

UpdateRequest类中并没有提到 process() 或 addAction() 等方法,说明在方法的定义在他的父类中。

观察 AbstractUpdateRequest,其构造器:

public abstract class AbstractUpdateRequest extends SolrRequest<UpdateResponse> implements IsUpdateRequest {protected ModifiableSolrParams params;protected int commitWithin = -1;public enum ACTION {COMMIT,OPTIMIZE}public AbstractUpdateRequest(METHOD m, String path) {super(m, path);}
}

发现参数继续向上传递。

这里我们可以发现 setAction 方法:

public AbstractUpdateRequest setAction(ACTION action, boolean waitFlush, boolean waitSearcher, boolean softCommit, int maxSegments ) {if (params == null)params = new ModifiableSolrParams();if( action == ACTION.OPTIMIZE ) {params.set( UpdateParams.OPTIMIZE, "true" );params.set(UpdateParams.MAX_OPTIMIZE_SEGMENTS, maxSegments);}else if( action == ACTION.COMMIT ) {params.set( UpdateParams.COMMIT, "true" );params.set( UpdateParams.SOFT_COMMIT, String.valueOf(softCommit));}params.set( UpdateParams.WAIT_SEARCHER, String.valueOf(waitSearcher));return this;
}

首先,通过观察源码可知 ModifiableSolrParams 是一个封装好的Map对象,键值是<String, String[]>

这个方法主要就是确定我这一次 request 的请求类型是 COMMIT (提交)还是OPTIMIZE (优化) ,并将相关参数加入到 params 中

此外,还有两个方法:

public AbstractUpdateRequest rollback() {if (params == null)params = new ModifiableSolrParams();params.set( UpdateParams.ROLLBACK, "true" );return this;
}public void setParam(String param, String value) {if (params == null)params = new ModifiableSolrParams();params.set(param, value);
}

一个是指出我这次 request 是一次回滚,另外一个是对于提供参数的操作的封装。

看来 process 方法在 SolrRequest 中

观察 SolrRequest :

public abstract class SolrRequest<T extends SolrResponse> implements Serializable {public final T process(SolrClient client, String collection) throws SolrServerException, IOException {long startNanos = System.nanoTime();T res = createResponse(client);res.setResponse(client.request(this, collection));long endNanos = System.nanoTime();res.setElapsedTime(TimeUnit.NANOSECONDS.toMillis(endNanos - startNanos));return res;}}

其中 createResponse 由其子类实现,返回一个UpdateResponse,是一个存放结果的数据结构,并且 request 方法也是由 SolrClient 的实现类实现。

寻找 SolrClient 的实现类,我们注意到:

public class DelegationTokenHttpSolrClient extends HttpSolrClient {public final static String DELEGATION_TOKEN_PARAM = "delegation";...@Overrideprotected HttpRequestBase createMethod(final SolrRequest request, String collection) throws IOException, SolrServerException {SolrParams params = request.getParams();if (params != null && params.getParams(DELEGATION_TOKEN_PARAM) != null) {throw new IllegalArgumentException(DELEGATION_TOKEN_PARAM + " parameter not supported");}return super.createMethod(request, collection);}@Overridepublic void setQueryParams(Set<String> queryParams) {queryParams = queryParams == null ?Collections.unmodifiableSet(new HashSet<String>(Arrays.asList(DELEGATION_TOKEN_PARAM))): queryParams;if (!queryParams.contains(DELEGATION_TOKEN_PARAM)) {queryParams = new HashSet<String>(queryParams);queryParams.add(DELEGATION_TOKEN_PARAM);queryParams = Collections.unmodifiableSet(queryParams);}super.setQueryParams(queryParams);}}

实现类中实现了 createMethod 和 setQueryParams

而他的父类中 HttpSolrClient 实现了 request 方法:

public class HttpSolrClient extends BaseHttpSolrClient {public NamedList<Object> request(final SolrRequest request, final ResponseParser processor, String collection)throws SolrServerException, IOException {HttpRequestBase method = createMethod(request, collection);setBasicAuthHeader(request, method);if (request.getHeaders() != null) {Map<String, String> headers = request.getHeaders();for (Map.Entry<String, String> entry : headers.entrySet()) {method.setHeader(entry.getKey(), entry.getValue());}}return executeMethod(method, request.getUserPrincipal(), processor, isV2ApiRequest(request));}// ...protected NamedList<Object> executeMethod(HttpRequestBase method, Principal userPrincipal, final ResponseParser processor, final boolean isV2Api) throws SolrServerException {method.addHeader("User-Agent", AGENT);org.apache.http.client.config.RequestConfig.Builder requestConfigBuilder = HttpClientUtil.createDefaultRequestConfigBuilder();if (soTimeout != null) {requestConfigBuilder.setSocketTimeout(soTimeout);}if (connectionTimeout != null) {requestConfigBuilder.setConnectTimeout(connectionTimeout);}if (followRedirects != null) {requestConfigBuilder.setRedirectsEnabled(followRedirects);}method.setConfig(requestConfigBuilder.build());HttpEntity entity = null;InputStream respBody = null;boolean shouldClose = true;try {// Execute the method.HttpClientContext httpClientRequestContext = HttpClientUtil.createNewHttpClientRequestContext();if (userPrincipal != null) {// Normally the context contains a static userToken to enable reuse resources.// However, if a personal Principal object exists, we use that instead, also as a means// to transfer authentication information to Auth plugins that wish to intercept the request laterhttpClientRequestContext.setUserToken(userPrincipal);}final HttpResponse response = httpClient.execute(method, httpClientRequestContext);int httpStatus = response.getStatusLine().getStatusCode();// Read the contentsentity = response.getEntity();respBody = entity.getContent();Header ctHeader = response.getLastHeader("content-type");String contentType;if (ctHeader != null) {contentType = ctHeader.getValue();} else {contentType = "";}// handle some http level checks before trying to parse the responseswitch (httpStatus) {case HttpStatus.SC_OK:case HttpStatus.SC_BAD_REQUEST:case HttpStatus.SC_CONFLICT:  // 409break;case HttpStatus.SC_MOVED_PERMANENTLY:case HttpStatus.SC_MOVED_TEMPORARILY:if (!followRedirects) {throw new SolrServerException("Server at " + getBaseURL()+ " sent back a redirect (" + httpStatus + ").");}break;default:if (processor == null || "".equals(contentType)) {throw new RemoteSolrException(baseUrl, httpStatus, "non ok status: " + httpStatus+ ", message:" + response.getStatusLine().getReasonPhrase(),null);}}if (processor == null || processor instanceof InputStreamResponseParser) {// no processor specified, return raw streamNamedList<Object> rsp = new NamedList<>();rsp.add("stream", respBody);rsp.add("closeableResponse", response);// Only case where stream should not be closedshouldClose = false;return rsp;}String procCt = processor.getContentType();if (procCt != null) {String procMimeType = ContentType.parse(procCt).getMimeType().trim().toLowerCase(Locale.ROOT);String mimeType = ContentType.parse(contentType).getMimeType().trim().toLowerCase(Locale.ROOT);if (!procMimeType.equals(mimeType)) {// unexpected mime typeString msg = "Expected mime type " + procMimeType + " but got " + mimeType + ".";Header encodingHeader = response.getEntity().getContentEncoding();String encoding;if (encodingHeader != null) {encoding = encodingHeader.getValue();} else {encoding = "UTF-8"; // try UTF-8}try {msg = msg + " " + IOUtils.toString(respBody, encoding);} catch (IOException e) {throw new RemoteSolrException(baseUrl, httpStatus, "Could not parse response with encoding " + encoding, e);}throw new RemoteSolrException(baseUrl, httpStatus, msg, null);}}NamedList<Object> rsp = null;String charset = EntityUtils.getContentCharSet(response.getEntity());try {rsp = processor.processResponse(respBody, charset);} catch (Exception e) {throw new RemoteSolrException(baseUrl, httpStatus, e.getMessage(), e);}Object error = rsp == null ? null : rsp.get("error");if (error != null && (isV2Api || String.valueOf(getObjectByPath(error, true, errPath)).endsWith("ExceptionWithErrObject"))) {throw RemoteExecutionException.create(baseUrl, rsp);}if (httpStatus != HttpStatus.SC_OK && !isV2Api) {NamedList<String> metadata = null;String reason = null;try {NamedList err = (NamedList) rsp.get("error");if (err != null) {reason = (String) err.get("msg");if(reason == null) {reason = (String) err.get("trace");}metadata = (NamedList<String>)err.get("metadata");}} catch (Exception ex) {}if (reason == null) {StringBuilder msg = new StringBuilder();msg.append(response.getStatusLine().getReasonPhrase()).append("\n\n").append("request: ").append(method.getURI());reason = java.net.URLDecoder.decode(msg.toString(), UTF_8);}RemoteSolrException rss = new RemoteSolrException(baseUrl, httpStatus, reason, null);if (metadata != null) rss.setMetadata(metadata);throw rss;}return rsp;} catch (ConnectException e) {throw new SolrServerException("Server refused connection at: "+ getBaseURL(), e);} catch (SocketTimeoutException e) {throw new SolrServerException("Timeout occurred while waiting response from server at: "+ getBaseURL(), e);} catch (IOException e) {throw new SolrServerException("IOException occurred when talking to server at: " + getBaseURL(), e);} finally {if (shouldClose) {Utils.consumeFully(entity);}}}
}

封装了网络请求

所以使用 Solr 需要在服务器端部署 Solr 的服务器,然后在客户端需要指出服务器的URL,Solr 会通过访问服务器的方式获取持久化数据。

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

相关文章

  1. sql*loader

    简介 SQL*Loader&#xff08;SQLLDR&#xff09;是Oracle的高速批量数据加载工具。这是一个非常有用的工具&#xff0c;可用于多种平面文件格式向Oralce数据库中加载数据。SQLLDR可以在极短的时间内加载数量庞大的数据。它有两种操作模式。 传统路径&#xff1a;&#xff08;c…...

    2024/4/27 22:03:45
  2. 单臂路由出现的问题及排错过程

    要求&#xff0c;在R1上划分子接口并配相应网关&#xff0c;实现PC间互通 过程&#xff0c; 路由器间配置接口配置trunk口并允许相应vlan通过&#xff0c;链接终端使用接口使用access&#xff0c;并划分到对应vlan&#xff0c;在R1上配置对应子接口及网关 遇到问题&#xff0…...

    2024/4/15 19:28:02
  3. 第五章 数据的清洗与检验

    一、完全去重 1、打开kettle工具&#xff0c;新建转换 2、配置“csv文件输入”控件 3、配置“唯一行&#xff08;哈希值&#xff09;”控件 4、运行 二、填充缺失值 1、打开kettle工具&#xff0c;创建转换 2、配置“文本文件输入”控件 3、配置“过滤记录”控件 4、配置“替…...

    2024/4/18 17:40:27
  4. 普歌+IDEA中Tomcat的工件配置错误

    IDEA中Tomcat工件部署错误&#xff1a; java.lang.ClassNotFoundException 对于错误的认识查找Tomcat中工件的部署错误解决如何放到正确的位置以上的解决方法就可以帮助你解决所存的问题了。如果还没有解决&#xff0c;那么就需要继续寻找属于你错误的答案了。对于错误的认识 …...

    2024/4/5 7:38:44
  5. 2021/10/30CTF爆破小结ctfshow

    burp suite设置 Authorization: Basic YWRtaW46MTIz解密的admin:123 设置为散弹模式 改为解密后的 payload set1 suffix意思是后缀 payload set2 开始爆破 子域名爆破 子域名查询网站https://phpinfo.me/domain 伪随机数爆破 程序下载地址https://www.openwall.com/ph…...

    2024/4/18 17:38:44
  6. Semtech公司lora芯片官方驱动下载链接

    semtech各个Lora产品官方驱动仓库链接如下&#xff1a; SX1272/73, SX1276/77/78/79, SX1261/2 and LR1110 radio drivers. 注&#xff1a;sx1268的驱动也可以用sx1261/2的改改&#xff0c;这两个芯片差不多 另外一个官方驱动代码链接如下&#xff1a; Semtech官方代码 注&a…...

    2024/4/20 11:01:04
  7. 等保2.0

    http://www.rising.com.cn/2019/db2/#_Toc12535289...

    2024/4/17 6:36:44
  8. Semtech公司lora芯片官方驱动

    semtech各个Lora产品官方驱动仓库链接如下&#xff1a; SX1272/73, SX1276/77/78/79, SX1261/2 and LR1110 radio drivers. 注&#xff1a;sx1268的驱动也可以用sx1261/2的改改&#xff0c;这两个芯片差不多 另外一个官方驱动代码链接如下&#xff1a; Semtech官方代码 注&a…...

    2024/4/18 17:39:20
  9. 未来人工智能,有什么新的发展趋势?

    AI芯片包含三大类市场&#xff0c;分别是数据中心&#xff08;云端&#xff09;、通信终端产品&#xff08;手机&#xff09;、特定应用产品&#xff08;自驾车、头戴式AR/VR、无人机、机器人……&#xff09;。目前来看&#xff0c;未来AI发展有八大新趋势。 趋势一&#xff1…...

    2024/4/6 10:27:39
  10. SpringCloud-Config学习笔记

    1.创建git仓库&#xff0c;上传一个配置文件{application}-{profile}.yml 2.创建config-server项目工程&#xff0c;作为配置中心 <dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-…...

    2024/4/20 15:14:04
  11. python socket

    python socket 服务端 import sockets socket.socket(socket.AF_INET,socket.SOCK_STREAM)# 套接字类型AF_INET, socket.SOCK_STREAM tcp协议&#xff0c;基于流式的协议 s.bind((127.0.0.1, 8080)) s.listen(1) # 最多可以连接多少个客户端 output 我是服务端 while 1:pr…...

    2024/4/18 14:59:49
  12. vue组件数据传递

    1、父传子 参考官网 &#xff08;1&#xff09;使用props传递 &#xff08;2&#xff09;prop说明(参考props )&#xff0c;类型&#xff1a;&#xff1a;①数组&#xff0c;数组里面是变量名字符串 ②对象&#xff0c;对象的key是变量名&#xff0c;value是变量的约束条件 &a…...

    2024/4/15 19:25:11
  13. Semtech公司lora芯片官方代码

    semtech各个Lora产品官方驱动仓库链接如下&#xff1a; SX1272/73, SX1276/77/78/79, SX1261/2 and LR1110 radio drivers. 注&#xff1a;sx1268的驱动也可以用sx1261/2的改改&#xff0c;这两个芯片差不多 另外一个官方驱动代码链接如下&#xff1a; Semtech官方代码 注&a…...

    2024/4/15 20:50:57
  14. MSP430 5xx/6xx系列 低频振荡器VLO编程实例(源码+电路)

    MSP430 5xx/6xx系列内部VLO提供10 kHz的典型频率(参数见芯片的特定数据表),无需晶体。VLO为不需要精确时基的应用提供了一个低成本的超低功耗时钟源。 本实例示范如何使用VLO,并将其作为ACLK SMLK MCLK时钟来使用,通过将此三个时钟输出到特定的管脚,便于示波器测量验证。…...

    2024/4/6 10:27:34
  15. spring的注解使用

    Spring的注解可以替代.xml文件。 1.Component生成类对象 &#xff08;1&#xff09;项目架构 定义一个Student类&#xff1a; 配置文件&#xff1a; 注意&#xff1a; 测试运行&#xff1a; 注意&#xff1a;Component还可以写为"Component(“myStudent”)“或者”Co…...

    2024/4/6 10:27:33
  16. 记录一下 homebrew 安装PHP7.4 报错

    记录一下 homebrew 安装PHP7.4 报错&#xff1a; 问题描述&#xff1a; 提示&#xff1a;mac 自带的 php7.3 已经不能满足我的日常开发环境&#xff0c;需要更新到PHP7.4。但是在安装的时候报错了。查了半天才发现问题&#xff0c;所以就记录一下。 //报错信息 > Pouring…...

    2024/4/18 17:38:44
  17. javabean的标准

    ...

    2024/4/15 20:35:44
  18. 3n+1问题(C++)

    题目&#xff1a; 猜想&#xff1a;对于任意大于1的自然数n&#xff0c;若n为奇数&#xff0c;则将n变为3n1&#xff0c;否则变为n的一般一半。 经过若干次这样的变换。 例如&#xff1a;3->10->5->16->8->4->2->1 输入n&#xff0c;输出变换次数。n&…...

    2024/4/18 13:06:54
  19. JS-集合、字典和散列表

    集合 集合是一组无须且唯一不能重复的项组成的&#xff0c;可以看成没有顺序概念、重复元素的数组 class Set {constructor() {this.items {}}has(element){return element in this.items}has_2(element){//hasOwnProperty该方法返回一个表明对象是否具有该属性的方法return…...

    2024/4/20 12:44:50
  20. Java 手写一个可重入锁(带注释)

    手写一个可重入锁 package com.example.test.juc;import java.util.*; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util…...

    2024/4/15 19:25:11

最新文章

  1. 用坐标与碰撞检测效果

    用pygame碰撞检测子弹 与 子弹 格子检查是否在墙内 结果差不了多少 输出的是碰撞点坐标 在计算角色与强的距离是 你用了几条射线 2024/4/26 13:20:48 在代码中&#xff0c;用于计算角色与墙之间距离的部分是通过投射多条射线来实现的。具体来说&#xff0c;在循环中&#xf…...

    2024/4/28 1:16:27
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/3/20 10:50:27
  3. 【实战解析】YOLOv9全流程训练至优化终极指南

    【实战解析】YOLOv9全流程训练至优化终极指南 0.引言1.环境准备2.数据预处理&#xff08;1&#xff09;数据准备&#xff08;2&#xff09;按比例划分数据集&#xff08;3&#xff09;xml转txt脚本&#xff08;4&#xff09;配置文件 3.模型训练&#xff08;1&#xff09;单GPU…...

    2024/4/21 20:37:00
  4. 17、Lua 文件 I-O

    Lua 文件 I/O Lua 文件 I/O简单模式完全模式 Lua 文件 I/O LuaI/O 库用于读取和处理文件。分为简单模式&#xff08;和C一样&#xff09;、完全模式。 简单模式&#xff08;simple model&#xff09;拥有一个当前输入文件和一个当前输出文件&#xff0c;并且提供针对这些文件…...

    2024/4/27 11:09:56
  5. MATLAB绘制堆叠填充图--巧用句柄

    MATLAB绘制堆叠填充图–巧用句柄 目录 MATLAB绘制堆叠填充图--巧用句柄1. 主要原理讲解1.1 主要函数1.2 句柄原理 2. 绘图示例2.1 准备数据2.2 绘制堆叠填充图-使用句柄控制图形属性2.3 设置填充颜色和样式2.4 添加标题和标签2.5 绘图效果 3. 结语 堆叠填充图是一种常见的数据可…...

    2024/4/25 6:57:41
  6. 【外汇早评】美通胀数据走低,美元调整

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

    2024/4/26 18:09:39
  7. 【原油贵金属周评】原油多头拥挤,价格调整

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

    2024/4/26 20:12:18
  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/27 4:00:35
  10. 【外汇早评】日本央行会议纪要不改日元强势

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

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

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

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

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

    2024/4/26 21:56:58
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

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

    2024/4/27 9:01:45
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

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

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

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

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

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

    2024/4/25 18:39:16
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

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

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

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

    2024/4/26 22:01:59
  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/25 18:39:00
  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