依赖注入介绍

控制反转概念最早在2004年由Martin Fowler提出,是针对面向对象设计不断复杂化而提出的一种设计原则,是一种利用面向对象编程法则来降低应用程序耦合的设计模式。IoC强调的对代码引用的控制权由调用方法转移到外部容器,在运行时通过某种方式注入进来,实现控制的反转,这大大降低了服务类之间的耦合度。依赖注入是一种最常用的实现IoC的方式。
在依赖注入模式中,应用组件无需关注所依赖对象的创建和初始化过程,可以认为框架已初始化好了,开发者只管调用即可。依赖注入有利于应用程序中各模块之间的解耦,使得代码更容易维护。这种优势可能一开始体现不出来,但随着项目复杂度的增加,各模块、组件、第三方服务等相互调用更频繁时,依赖注入的优点就体现出来了。开发者可以专注于所依赖对象的消费,无需关注这些依赖对象的产生过程,这将大大提升开发效率。
接下来通过一个机器人的例子来加深理解依赖注入的好处

//不使用依赖注入的实例
export class Head{}
export class Arms{}
export class Robot{public head:Head;public arms:Arms;constructor(){this.head=new Head();this.arms=new Arms();}move(){}}

一个Robot类会包含Head、Arms、Feet等多各组件。此时,上面的代码存在哪些问题呢?

  • 扩展性差

Robot类通过Head和Arms创建了自己需要的组件,即头和胳膊。如果Head类的构造函数需要一个参数呢,此时只能通过this.haed=new Head(theNewParam)的方式修改Robot类


  • 难以测试

当需要测试Robot类时,需要考虑Robot类隐藏的其他依赖。比如Head组件本身是否依赖于其他组件,且它依赖的组件是否也依赖于另一个组件,另外Head组件的实例是否发送了异步请求到服务器。正是因为不能控制Robot的隐藏依赖,所以Robot很难被测试。

//使用依赖注入实例
export class Head{}
export class Arms{}
export class Robot{public head:Head;public arms:Arms;constructor(public head1:Head,public arms1:Arms){this.head=head1;this.arms=arms1;}move(){}}

这里把依赖的对象作为参数传给构造函数,Robot类中不再创建Head和Arms。当创建Robot类实例时,只需要把创建好的Head和Arms实例传给它的构造函数即可。

var robot=new Robot(new Head(),new Arms());

到此,就实现了Robot类与Head类及Arms类的解耦,开发者可以注入任何Head和Arms实例到Robot类的构造函数。
依赖注入通过注入服务方式替代了在组件里初始化所以来的对象,从而避免了组件之间的紧耦合。但是这还不够,在使用Robot类时需要手动创建Head和Arms类,为了减少重复操作,可以通过创建一个工厂类来解决。

import {Robot, Head, Arms} from "./Robot";export class RobotFactory{createRobot(){let robot=new Robot(this.createHead(),this.createArms());}createHead(){return new Head();}createArms(){return new Arms();}
}

上面代码只有三个方法,比较好维护,但是随着代码量的增加,维护这些代码就会变得很棘手。幸运的是,Angular的依赖注入框架替开发者解决了这个问题。有了它,开发者就不用去关心需要定义哪些依赖,以及把这个依赖注入给谁,因为依赖注入提供了注入器,它会帮开发者创建需要的类的实例。


Angular依赖注入

概述

首先介绍几个简单的概念。

  • 注入器(Inject):就像制造工厂,提供了一些列的接口用于创建依赖对象的实例
  • Provider:用于配置注入器,注入器通过它来创建被依赖对象的实例,Provider把标识映射到工厂方法中,被依赖的对象就是通过该方法创建的。
  • 依赖(Dependence):指定了被依赖对象的类型,注入器会根据此类型创建对应的对象。

在组件中注入服务

Angular在底层做了大量的初始化工作,这大大简化了创建依赖注入的过程,在组件中使用依赖注入需要完成以下三个步骤
- 通过import导入被依赖对象的服务
- 在组建中配置注入器。在启动组件时,Angular会读取@Component装饰器里的providers元数据,它是一个数组,配置了该组件需要使用到的所有依赖,Angular的依赖注入框架就会根据这个列表去创建对应对象的实例。
- 在组件构造函数中声明所注入的依赖。注入器就会根据构造函数上的声明,在组件初始化时通过第二步中的providers元数据配置依赖,为构造函数提供对应的依赖服务,最终完成注入过程。

import {Component, OnInit} from '@angular/core';
import {ContactService} from '../shared/contact.service';@Component({selector: 'call-record',templateUrl: './collection.component.html',styleUrls: ['./collection.component.css'],providers:[ContactService]
})
export class CollectionComponent implements OnInit {collections:any = [];contacts:any = {};constructor(private _constactService: ContactService) { }
}

在服务中注入服务

除了组件服务依赖,服务间的相互调用也很常见。

//logger.service.ts
import {Injectable} from "@angular/core";
@Injectable()
export class LoggerService{log(message:string){console.log(message);}
}//contact.service.ts
import {Injectable} from "@angular/core";
import {LoggerService} from "./logger.service";
@Injectable()//添加装饰器@Injectable()
export class ContactService{//构造函数中注入所依赖服务constructor(private _logger:LoggerService){}getCollections(){this._logger.log('获取联系人...')}
}//在组件的providers元数据中注册服务
providers:[LoggerService,ContactService]

在上述中,LoggerService和ContactService这两个服务都用了@Injectable()装饰器,实际上它并不是必须的,只有一个服务依赖其他服务时,才需要用@Injectable()显示装饰。上述的LoggerService服务并没有依赖其他服务,它可以不用@Injectable()装饰,而ContactService服务依赖了其他服务,则需要@Injectable()装饰。

Angular官方推荐无论是否有依赖其他服务,都应该使用@Injectable()来撞死服务。一方面,开发者在给某个组件注入其他服务时,无需再确认该服务是否添加了@Injectable();另一方面,这也是一种良好的团队协作方式,整个团队遵循相同的开发原则。

在模块中注入服务

在根组件中注入这个服务,所有子组件都能共享这个服务。
在模块中注入服务和之前的注入场景稍有不同。Angular在启动程序时会启动一个根模块,并加载它所依赖的其他模块,此时会生成一个全局的根注入器,由该注入器创建的依赖注入对象在整个应用程序级别可见,并共享一个实例。同时根模块会指定一个根组件并启动,由该根组件添加的依赖注入对象是组件树级别可见,在根组件以及子组件中共享一个实例。

import {NgModule} from '@angular/core'
import {RouterModule} from "@angular/router";
import {FormsModule} from "@angular/forms";
import {BrowserModule} from "@angular/platform-browser";
import {HttpModule} from "@angular/http";import {rootRouterConfig} from "./app.routes";
import {AppComponent} from "./app.component";import {ContactService, UtilService} from "./shared";@NgModule({declarations: [AppComponent],imports     : [BrowserModule, FormsModule, HttpModule, RouterModule.forRoot(rootRouterConfig)],providers   : [ContactService, UtilService],bootstrap   : [AppComponent]
})
export class AppModule {}

层级注入

Angular以组件为基础,项目开发中自然会有层级嵌套的情况,这种组织关系组成了组件树。根组件下面的各层级的子组件,可以出现在任何层级的任何组件中,每个组件可以拥有一个或多个依赖对象的注入,每个依赖对象对于注入器而言都是单例。

//生成唯一标识服务
import {Injectable} from "@angular/core";
@Injectable()
export class Random{public num;constructor(){this.num=Math.random();}
}
//子组件A
import {Component} from "@angular/core";
import {Random} from "./Random";
@Component({selector:'contact-a',providers:[Random],template:`<div>ContactA:{{random.num}}</div>`
})
export class contactAComponent{random:Random;constructor(r:Random){this.random=r;}
}
//子组件B
import {Component} from "@angular/core";
import {Random} from "./Random";
@Component({selector:'contact-b',providers:[Random],template:`<div>ContactB:{{random.num}}</div>`
})
export class contactBComponent{random:Random;constructor(r:Random){this.random=r;}
}
//父组件
import {Component} from "@angular/core";
@Component({selector:'contact-list',template:`<h1>Contact-List</h1><contact-a></contact-a><contact-b></contact-b>
`
})
export class ContactListComponent{constructor(){}
}

结果将输出:
Contact-List
ContactA:0.4500488165839276
ContactB:0.5389674473022938

上述的结果说明,每个子组件都创建了自己独立的注入器,也就是说通过依赖注入的Random服务都是独立的,如果把注入器提升到父组件中,则结果将会不一样。

import {Component} from "@angular/core";
import {Random} from "./Random";
@Component({selector:'contact-a',//providers:[Random],template:`<div>ContactA:{{random.num}}</div>`
})
export class contactAComponent{random:Random;constructor(r:Random){this.random=r;}
}
import {Component} from "@angular/core";
import {Random} from "./Random";
@Component({selector:'contact-b',//providers:[Random],template:`<div>ContactB:{{random.num}}</div>`
})
export class contactBComponent{random:Random;constructor(r:Random){this.random=r;}
}
import {Component} from "@angular/core";
import {Random} from "./Random";
@Component({selector:'contact-list',providers:[Random],template:`<h1>Contact-List</h1><contact-a></contact-a><contact-b></contact-b>
`
})
export class ContactListComponent{constructor(){}
}

此时,结果变为
Contact-List
ContactA:0.6257492668005642
ContactB:0.6257492668005642
上述的输出结果说明了子组件继承了父组件的注入器,所以子组件使用了相同的Random实例,输出了相同的结果。
那么,该如何选择在根组件还是在子组件中注入服务呢?
这取决于想让注入的依赖服务具有局限性还是全局性,由于每个注入器总是将它提供的服务维持单例,因此,如果不需要针对每个组件都提供独立的服务单例,就可以在根组件中注入,整个组件树共享根注入器提供的服务实例;如果需要针对每个组件提供不同的服务实例,就应该在格子组件中配置providers元数据来注入服务。
Angular如何查找到合适的服务实例呢?
在组件的构造函数视图注入某个服务的时候,Angular会先从当前组件的注入器中查找,找不到就继续往父组件的注入器查找,直到根组件注入器,最后到应用根注入器,此时找不到的话就会报错。

注入到派生组件

一个组件可以派生与另一个组件,对于有继承关系的组件,当父类组件和派生类组件有相同的依赖注入时,如果父类组件注入了这些依赖,派生组件也需要注入这些相同的依赖,并在派生类组件的构造函数中通过super()往上传递。

/*** Created by Administrator on 2017/4/26.*/
import {Component, OnInit} from "@angular/core";
import {ContactService} from "./contact.service";
@Component({selector:'contact-app',providers:[ContactService],templateUrl:'./app/contact-app.html'
})
export class ContactAppComponent implements OnInit{collections:any={};constructor(protected _contatcService:ContactService){}ngOnInit(): void {this._contatcService.getCollections().subscribe(data=>{this.collections=data;this.afterGetContacts();});}protected afterGetContacts(){}
}
/*** Created by Administrator on 2017/4/26.*/
import {Component, OnInit} from "@angular/core";
import {ContactService} from "./contact.service";
import {ContactAppComponent} from "./contactApp.component";
@Component({selector:'contact-app',providers:[ContactService],templateUrl:'./app/contact-app.html'
})
export class SortedContactComponent extends ContactAppComponent{protected afterGetContacts() {this.collections=this.collections.sort((h1,h2)=>{return h1.name<h2.name?-1:(h1.name>h2.name?1:0);})}constructor(protected _contatcService:ContactService){super(_contatcService);}}

限定方式的依赖注入

到目前为止,注入都是假定依赖对象存在的,然而实际情况往往并非如此,比如,上层提供的Provider被移除,导致之前注入的依赖可能已经不存在了,此时,再按照前面讲的依赖注入方式进行相关服务的调用,应用就会出错。Angular依赖注入框架提供了@Optional和@Host装饰器来解决上面提到的问题。Angular的限定注入方式使得开发者能够修改默认的额依赖查找规则,@Optional可以兼容依赖不存在的情况,提高系统的健壮性。@Host可以限定查找规则,明确实例初始化位置,避免一些莫名的共享对象问题。
在Angular中实现可选注入很简单,在宿主组件的构造函数中增加@Optional()装饰器即可

import {Injectable, Optional} from "@angular/core";
import {LoggerService} from "./logger.service";
@Injectable()
export class ContactService{constructor(@Optional()private _logger:LoggerService){if(this._logger){this._logger.log("ContactService")}}getCollections(){this._logger.log('获取联系人...')}
}

依赖查找的规则是按照注入器从当前组件向父组件查找,直到找到要注入的依赖为止。但有时候想限制默认的查找规则,@Host 装饰器将把往上搜索的行为截止在宿主组件。

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

相关文章

  1. Angular2学习心得

    学习记录&#xff1a; 看了近10小时的开发文档&#xff08;开发指南1-7&#xff09;, 因为没有连上后台 也没有用到express 所以数据都是静态的 主要是练习了组件间父子组件的通信和Angular2的基本开发 下面是对比同样页面用React和Angular2的不同感觉&#xff1a; 1.用知…...

    2024/4/21 2:03:30
  2. Angular2 脏检查过程

    Angular 强大之处在于能将数据变化自动应用到视图上面&#xff0c;这大大减少了开发工作量。 Angular 在脏检查的过程中到底做了哪些事呢&#xff1f; zone.js 想要将数据变化应用到页面上面&#xff0c;首先需要检测数据的变化&#xff0c;那么数据会在什么情况下发生变化呢…...

    2024/4/29 3:51:03
  3. Angular2 父子路由问题

    没有选择是痛苦的&#xff0c;有太多的选择也是痛苦的&#xff0c;目前前端框架层出不穷。选择一个框架需要去考虑很多问题。 angular作为一款优秀的前端框架目前很受欢迎。而angular团队也在去年9月份发布了angular2 angular2 与angular1 并不是简单的升级&#xff0c;而是对…...

    2024/4/20 2:55:20
  4. 【angular2】(2)angular2自定义组件示例

    &#xff08;1&#xff09;用angular-cli搭建项目 &#xff08;2&#xff09;新建AComponent.ts import {Component} from angular/core; Component({selector: app-a-component,template: <h2>测试A</h2> })export class AComponent {constructor() {console.lo…...

    2024/4/20 20:32:06
  5. angular2/4通过服务实现组件之间的通信EventEmitter ,emit(),subscribe()发射和接收.

    1、创建服务&#xff0c;new一个EventEmitter import {Injectable, EventEmitter, OnInit} from "angular/core"; Injectable() export class EmitService implements OnInit {public eventEmit: any;constructor() {// 定义发射事件this.eventEmit new EventEmitt…...

    2024/4/20 20:32:05
  6. Angular2 之 单元测试

    单元测试需要掌握的知识点 karma.conf.js的配置 具体了解到每一项的意义&#xff0c;这样才能真正的了解这个配置是如何配置的&#xff0c;甚至才可以做到自己的配置。组件的测试单独的service测试 Angular的测试工具 Angular的测试工具类包含了TestBed类和一些辅助函数方法&…...

    2024/4/21 2:03:29
  7. angular2系统学习 - 路由与导航(4)

    angular2系统学习 - 路由与导航(4) 1.路由守卫 路由守卫其实就是一种拦截机制&#xff0c;在进入离开视图等时的拦截行为。 路由守卫可以看作是挂在路由上连接视图组件的拦截器&#xff0c;在进入、离开视图等事件监听上触发拦截。 我们可以把每一个路由看成一个中间块&…...

    2024/4/21 2:03:29
  8. 也来说是 AngularJS、 Angular 2、Angular 4 的区别

    序言 随着Angular版本的频繁推出&#xff0c;有必要了解下AngularJS、 Angular 2、Angular 4 的区别。 字面上的区别 &#xff08;1&#xff09;我们常说的 Angular 1 是指 AngularJS&#xff1b; 从Angular 2 开始已经改名了。不再带有JS&#xff0c;只是单纯的 Angular&am…...

    2024/5/4 23:04:00
  9. Angular2 ngOnChanges用法

    当数据绑定输入属性的值发生变化的时候&#xff0c;Angular 将会主动调用 ngOnChanges 方法。它会获得一个 SimpleChanges 对象&#xff0c;包含绑定属性的新值和旧值&#xff0c;它主要用于监测组件输入属性的变化。具体示例如下&#xff1a; 这个例子是父组件引用一个子组件…...

    2024/5/4 13:43:00
  10. angular 2 文件上传

    最近有在试着学习angular 2的前端开发&#xff0c;angular 是一套前端模块化开发的前端体系&#xff0c;它脱离以前前端开发的固有的思维&#xff0c;而是采用模块对象的开发思想。所以在初学的时候会有些吃力&#xff0c;因为整体相比较一般框架会比较的庞大 首先 我们来了解…...

    2024/4/21 2:03:25
  11. angular2 *ngIf的用法

    <div *ngIf"show; then thenBlock; else elseBlock">this is ignored</div><ng-template #thenBlock>如果show的值是真,则显示这段</ng-template><ng-template #elseBlock>如果show的值是假,则显示这段</ng-template> 更多详细…...

    2024/4/21 2:03:24
  12. webpack2+angular2 按需加载,优化首屏速度

    1.Angular2的按需加载及延迟加载 1.1 根模块AppModule 假设按需加载的模块为LazyModule&#xff0c;首页模块为LoginModule&#xff0c;根模块为AppModule。首先在AppModule.ts中去掉LazyModule的引入。import { NgModule } from angular/core; import { BrowserModule } fr…...

    2024/4/21 2:03:24
  13. Angular2-生成二维码

    使用Angular2生成二维码是非常简单的&#xff0c;有两个库提供支持&#xff1a;angular2-qrcode(不支持中文)、ng2-qrcode 。 安装 在项目中打开“终端”&#xff0c;运行以下命令&#xff1a;安装angular2-qrcode npm install angular2-qrcode --save 安装ng2-qrcode npm in…...

    2024/5/4 23:08:41
  14. Angular2 自定义validators

    angular 当需要form表单需要验证时&#xff0c;angular自带了许多校验器&#xff0c;但是很多时候自带的无法满足业务需求&#xff0c;这时候就需要自定义的校验器 定义一个validator 定义validator 需要实现 ValidatorFn 接口 源码&#xff1a; export interface Validato…...

    2024/4/21 2:03:21
  15. AngularJS 升级到Angular2+

    总结一下几个月时间加班赶工升级的两个项目&#xff0c;一个项目使用的是UpgradeModule&#xff0c;另一个使用的是DowngradeModule&#xff0c;如下做个记录&#xff1a;&#xff08;ng1->AngularJS; ng2->Angular2&#xff09;&#xff0c;具体的可以看官方文档&#x…...

    2024/4/21 2:03:21
  16. Angular2入门项目显示loading的原因

    刚刚接触Angular 2.。按照官网的文档建好生成以后&#xff0c;发现浏览器显示的loading&#xff0c;而不是文档里的App Works。一开始还以为是index.html改了的而文档没及时更新的原因。后来当给组件加了css而无变化&#xff0c;才发现我是多么的想当然和无知。百度一下&#x…...

    2024/4/21 2:03:20
  17. Angular2 自定义表单验证器

    废话 最近由于项目上需要用到表单验证&#xff0c;前面直接通过 (input) 事件进行数据检查&#xff0c;但是不好和自带的验证器统一&#xff0c;而且也不正统。于是打算研究一下自定义验证器&#xff0c;网上类似的文章很多&#xff0c;但是自己在实现的过程中还是遇到了一些问…...

    2024/5/4 19:32:42
  18. angular入门框架

    目录 首先把项目地址贴出&#xff1a;笔者也只是刚入门而已&#xff0c;每一步都走的很困难&#xff0c;基本每一个知识点都是靠百度&#xff0c;刚开始感觉很吃力&#xff0c;慢慢发现吃力才有收获。 https://git.oschina.net/xxd0x00/angularjstest.git angular首先是一个…...

    2024/5/4 14:46:47
  19. angular2里的全屏设置

    有两种全屏&#xff0c;一种是使当前页面全屏&#xff0c;一种是使指定内容全屏 一、安装依赖 npm install screenfull --save二、模块内引入 ts文件 import * as screenfull from "screenfull";import { Screenfull } from "screenfull";三、html <…...

    2024/4/21 2:03:17
  20. Angular JS 缓存问题

    问题描述&#xff1a;.net mvc ng 项目&#xff0c;每个component&#xff0c;html页面第一次加载后都会产生本地缓存&#xff0c;存储下来&#xff0c;导致新的页面改动不能及时刷新出来。 解决方案&#xff0c;.net项目中自带一个版本文件&#xff0c;需要自己发布项目时自己…...

    2024/4/21 2:03:16

最新文章

  1. SpringBoot+Vue项目企业客户管理系统

    一、前言介绍 本文主要论述了如何使用JAVA语言开发一个企业客户管理系统&#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论述企业客户管理系统的当前背景以及系统开…...

    2024/5/4 23:58:27
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/3/20 10:50:27
  3. Java深度优先搜索DFS(含面试大厂题和源码)

    深度优先搜索&#xff08;Depth-First Search&#xff0c;简称DFS&#xff09;是一种用于遍历或搜索树或图的算法。DFS 通过沿着树的深度来遍历节点&#xff0c;尽可能深地搜索树的分支。当节点v的所在边都已被探寻过&#xff0c;搜索将回溯到发现节点v的那条边的起始节点。这个…...

    2024/5/3 10:02:23
  4. vue想要突破全局样式限制又不影响别的页面样式怎么办

    <!-- 用scope盖不住全局&#xff0c;随意来个class匹配私定&#xff0c;搜索关键词&#xff1a;不要随便改&#xff0c;乱打class名 --> <style> .lkajsdfjkalsfhkljashkflhaskl .el-input.el-input--default.el-input--suffix { width: 160px !important; } …...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    2024/5/4 2:59:34
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

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

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

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

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

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

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

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

    2024/5/4 23:54:56
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57