大型应用下的 AngularJS 性能
1 介绍
无论你是为一个拥有大量用户的旧应用编写一个Angalar前端,或已有的Angular应用正在迅速扩张,性能都是一个重要方面。理解什么会导致AngularJS应用程序响应变慢,并且知道在开发过程中对此做出一些权衡是非常重要的。本文将讲述一些AngularJS可能导致的常见性能问题,以及给出在未来如何修复和避免他们的建议。
1.1 需求,假设
本文假设对JavaScript编程语言和AngularJS比较熟悉。当使用特定于版本的特性,他们会被标注。如果你已经花了一些时间在玩Angular,但还没有认真地处理性能问题,那么你最能吸收这篇文章的要义。
2 行业工具
2.1 基准分析
最出色的代码基准测试工具就是jsPerf。为了增强可读性,我将在后面相关的部分链接到特定的test runs(测试例子)。
2.2 性能分析
Chrome开发工具有一个很棒的Javascript分析器。我强烈推荐阅读本系列文章。
2.3 Angular Batarang
由Angular核心团队维护的一个专用的Angular调试器, 在GitHub上可以获取。
3 软件性能
有两个导致软件性能差的根本原因。
第一个是算法的时间复杂度。解决这个问题很大程度上超出了本文的范围,一般可以这样说,时间复杂度是衡量一个程序需要做多少次的比较来实现一个结果。比较数量越多,程序越慢。一个简单的例子是线性查找与二分查找。线性查找对于同一组数据需要进行更多的比较,因此会慢。时间复杂度的详细讨论,请参考维基百科文章。
第二个原因是空间复杂度。这是一台电脑运行你的解决方案需要多少“空间”或内存的测量。需要的内存越多,解决方案就越慢。本文将讨论的大多数问题,围绕空间复杂度。详细讨论,请参阅这里.。
4 Javascript性能
有些要说的是关于Javascript性能,这里并不局限于Angular。
4.1 循环
避免在一个循环中调用外部函数。一旦任何调用可以在循环外部的完成,它将大大加速你的系统。例如:
1 2 3 4 5 | var sum = 0; for(var x = 0; x < 100; x++){ var keys = Object.keys(obj); sum = sum + keys[x]; } |
上面将大大慢于下面:
1 2 3 4 5 | var sum = 0; var keys = Object.keys(obj); for(var x = 0; x < 100; x++){ sum = sum + keys[x]; } |
http://jsperf.com/for-loop-perf-demo-basic
4.2 Dom访问
需要着重注意的是访问DOM是昂贵的。
1 | angular.element('div.elementClass') |
虽然这在AngularJS应该不是一个问题,意识到这一点仍然是有用的。这里说的第二件事是,DOM树应该保持尽可能小。
最后,如果可能的话,避免修改DOM,不设置内联样式。这是由于JavaScript重排。重排的深度的讨论超出了本文的范围,但是这里可以找到一个不错的参考。
4.3变量作用域和垃圾收集
所有变量作用域尽可能紧密,会让JavaScript垃圾收集器尽早地释放你的内存。这是通常JavaScript,特别是Angular缓慢,延迟,不响应的一个极其常见原因。请注意以下问题:
1 2 3 4 5 | function demo(){ var b = {childFunction: function(){console.log('hi this is the child function')}; b.childFunction(); return b; } |
函数终止时,将没有必要进一步引用b,垃圾收集器将释放内存。然而,如果在其他地方有这样一行代码:
1 | var cFunc = demo(); |
我们现在将对象绑定到一个变量同时保持引用,阻止垃圾收集器回收它。虽然这可能是必要的,重要的是你要知道对象引用有什么影响。
4.4数组和对象
有许多事情要谈。首先且最简单的是,数组总是比对象更快,数字访问好于非数字访问。
1 2 3 | for (var x=0; x<arr.length; x++) { i = arr[x].index; } |
上面快于下面
1 2 3 | (var x=0; x<100; x++) { i = obj[x].index; } |
还快于
1 2 3 4 | var keys = Object.keys(obj); for (var x = 0; x < keys.length; x++){ i = obj[keys[x]].index; } |
http://jsperf.com/array-vs-object-perf-demo
此外,请注意,基于V8的现代浏览器,有较少属性的对象会使用一种特殊的表现形式,来提高他们的访问速度,所以试着保持属性的数量最小化。也请注意,尽管JavaScript数组中可以使用混合类型,并不意味着这是一个好主意:
1 2 | var oneType=[1,2,3,4,5,6] var multiType=["string", 1,2,3, {a: 'x'}] |
http://jsperf.com/array-types-compare-perf
避免使用delete。例如,给定:
1 2 3 | var arr = [1,2,3,4,5,6]; var arrDelete = [1,2,3,4,5,6]; delete arrDelete[3]; |
任何对arrDelete的迭代将慢于对arr的相同迭代。
http://jsperf.com/delet-is-slow
这将会在数组中创建一个坑,大大降低操作的性能。
5 重要概念
既然我们已经讨论了JavaScript性能,它对理解一些Angular背后的关键概念很重要。
5.1Scopes(作用域)和Digest周期
AngularScopes本质上是JavaScript对象。他们遵循一个预定义的原型继承规则,深入讨论超出了本文的范围。与本文有关系的,如前所述,使用小Scopes比大Scopes更快。
另一个可以得出的结论是,任何时间,一个新的Scopes被创建,就会为垃圾收集器增加更多需要收集的值。
编写普通的且性能特别的AngularJS应用程序时,digest周期特别重要。实际上,每一个scope中都存储了一个$$watchers函数数组。
每次对scope中的值调用$watch函数,或者一个值被插入或绑定到DOM上,如使用ng-repeat,ng-switch,ng-if,或者其他的DOM属性或元素,都会在最里层的scope的$$watchers数组中添加一个函数。
当scope里的任何值发生变化时,$$watchers中的所有watcher将被触发
,如果其中任何一个修改了一个被检测的值, 他们将再次被触发。这将继续下去,直到$$watchers数组不在有任何变化,或AngularJS抛出一个异常。
另外,如果非Angular代码通过$scope.$apply()
运行。这将立即启动digest周期。
最后注意的是,$scope.evalAsync()将在一个异步循环中执行,它不会触发一个新的Digest周期, 它将运行在当前或下一个digest周期的末尾。
6 常见问题:用心设计Angular
6.1大型对象和服务器调用。
所以这一切教会了我们什么?首先,我们应该思考我们的数据模型,努力限制对象的复杂性。这对从服务器返回的对象特别重要。
简单地将整个数据库行强制.toJson()是非常诱人。这里必须要强调:请不要这样做。
使用一个自定义的序列化器,返回Angular应用程序必要的属性的子集。
6.2监视函数
另一个常见的问题是在watcher或绑定中使用函数。不要将任何指令(ng-show ng-repeat,等等)直接绑定函数。不要直接监测函数的结果。该函数将在每个digest周期运行,这极有可能降缓你的程序。
6.3监视对象
类似的,Angular能够通过将scope.$watch第三个可选的参数设置为true来监视
整个对象。说句不好听,这是一个非常糟糕的想法。一个更好的解决方案是依靠服务和对象引用,在scope之间传播对象的变化。
7列表问题
7.1大型列表
如果可能的话,避免大型列表。ng-repeat会做一些相当沉重的DOM操作(更不用说污染$$watchers
),所以无论是通过分页或无限滚动,试着保持任何列表的渲染使用小型数据。
7.2过滤器
如果可能的话,避免使用过滤器。他们每个digest循环运行两次,一次是当发生任何变化,另一次是收集进一步的改变,实际上,不从内存删除任何子集,而是简单地用css来过滤。
$index没有什么价值,因为它不再对应于实际的数组索引,而是排序后数组的索引。它还会阻止你释放所有列表的scope。
7.3 更新ng-repeat
同样重要的是避免使用ng-repeat时进行全局列表刷新。在内部,ng-repeat将产生一个$$ hashKey属性,用它来作为集合中的识别项。这意味着做一些像scope.listBoundToNgRepeat = serverFetch()
的操作将导致对整个列表进行一个完整的重新计算,导致对每个个体元素的transcludes运行以及watchers触发。这是一个非常昂贵的做法。
有两种方法可以解决这个问题。一是维护两个集合和在过滤后的集合上使用ng-repeat(更通用的,需要定制同步逻辑,因此算法更复杂和难以的维护),另一种是使用track by来指定自己的key(需要Angular 1.2+,通用性略低于前者,不需要自定义同步逻辑)。
简而言之
1 | scope.arr = mockServerFetch(); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | var a = mockServerFetch(); for(var i = scope.arr.length - 1; i >=0; i--){ var result = _.find(a, function(r){ return (r && r.trackingKey == scope.arr[i].trackingKey); }); if (!result){ scope.arr.splice(i, 1); } else { a.splice(a.indexOf(scope.arr[i]), 1); } } _.map(a, function(newItem){ scope.arr.push(newItem); }); |
将比简单添加慢:
1 | <div ng-repeat="a in arr track by a.trackingKey"> |
换成:
1 | <div ng-repeat="a in arr">; |
所有的三种方法的一个完整的功能的演示可以在这里找到.
点击这三种方法,可以很明显地重新演示这个问题。一方面要注意的,track方法只有在迭代对象的一个字段能在集合中保证唯一时才能被使用。对于服务器数据,id属性可以作为天生的tracker。如果没有这个条件,不幸的是,只有自定义同步逻辑是唯一的出路。
8. 渲染问题
Angular 应用缓慢的常见来源是在ng-if或ng-switch上不正确使用ng-hide和ng-show 。区别是重要的,重要性不能在性能的上下文中被夸大。
ng-hide和ng-show简单地切换CSS display属性。在实践中这意味着任何显示或隐藏仍将在页面上,尽管看不见。任何scope将存在,所有$$watchers将触发。
ng-if和ng-switch实际上完全删除或添加DOM。使用用ng-if删除的东西不在scope中。性能优势现在应该很明显,但也是有考究的。具体地说,切换show/hide相对便宜,但切换if/switch相对昂贵。不幸的是这就导致了需要根据不同情况判断使用不同的调用。做出这个决定需要回答的问题是:
- How frequently will this change? (the more frequent, the worse fit
ng-if
is). - 这经常会如何变化?(越频繁,使用ng-if越糟糕)。
- How heavy is the scope? (the heavyer, the better fit
ng-if
is). - scope有多大?(越大,越是使用ng-if)。
9. Digest周期问题
9.1 绑定
试着减少你的绑定。Angular1.3中,有一个新的只进行一次的绑定,语法形状为{ {::scopeValue } }。这将从scope中拿取一次,而不会添加一个watcher到watchers数组。
9.2$digest()and$apply()
scope.$apply是一个强大的工具,它允许你将值从Angular外部引入到你的应用程序。本质上它会Angular的所有事件(ng-click等)上被触发。问题出现在,scope.$apply始于$rootScope,同时贯穿整个scope链,将导致每个scope触发每个watcher。
另一方面scope.$digest只会在指定的scope内触发,只往下传递。性能优势应该相当不证自明的。折中的方案,当然是,任何父scope将不会收到这个更新,直到下一个循环周期。
9.3$watch()
scope.$watch()现在已经讨论了好几次。一般来说,scope.$watch()表明糟糕的体系结构。大部分情况下,较低开销的服务和引用的一些组合绑定就能达到相同的结果。如果您必须创建一个watcher,永远记住尽可能地早点解除绑定。你可以通过调用由$watch返回的解绑函数来解除一个watcher,。
1 2 | var unbinder = scope.$watch('scopeValueToBeWatcher', function(newVal, oldVal){}); unbinder(); //this line removes the watch from $$watchers. |
如果你不能过早地解除绑定,记得在$on(‘$destroy’)解除绑定
9.4$on,$broadcast, and$emit
像$watch,这些都是慢的,因为事件(可能)遍历你的整个scope的层次结构。除此之外,它们会像GOTO一样,让您的应用程序很难调试。幸运的是,像$watch,如果有必要他们可以通过返回函数解除绑定(记得在$on('$destroy')解除绑定,同时可以通过正确地使用服务和scope继承来完全避免)。
9.5$destroy
如前所述,你应该总是显式调用$on(‘$destroy’),解绑你所有的watchers和事件监听器,并取消任何$timeout实例,或其他正在进行的异步交互。这不仅是确保安全良好的实践,同时标记你的scope让垃圾收集更迅速。不这样做会让他们在后台运行,浪费CPU和RAM。
尤其重要的是要记住的在$destroy
调用中解绑任何在指令元素上定义的DOM事件监听器。不这样做,将会导致在旧浏览器发生内存泄漏和在现代浏览器发生垃圾收集缓慢。一个非常重要的结论是,你需要记住在你移除DOM前调用scope.$destroy。
9.6$evalAsync
scope.$evalAsync是一个强大的工具,它让你把要执行的操作在当前digest周期的末尾进行排队,不会导致在scope修改后的另一个digest周期。这需要基于具体案例思考,但预期的效果,evalAsync可以大大提高页面的性能。
10 指令问题
10.1 隔离的Scope和Transclusion
隔离Scope和Transclusion是Angular最令人兴奋的一些事情。他们允许构建可重用、封装的组件,它们在语法上和概念上优雅,让Angular出彩的一个核心部分。
然而,他们有一个权衡。默认情况下,指令不创建一个scope,而是拥有和他们的父元素相同的范围。通过创建一个新的隔离scope或Transclusion,来创建一个新的对象去跟踪和添加新的watch,因此会减慢我们的应用程序。总是在你使用它前停下来并思考有没有必要。
10.2 编译周期
指令编译功能在附加scope之前运行,这是运行任何DOM操作(例如绑定事件)的最佳的地方。从性能的角度来看,需要重要认识的,是元素和属性传递到编译函数使用了原始html模板,它在任何Angular变化前。在实践中这意味着,DOM操作完成,将运行一次,直接使用。另一个重要的点事prelink和postlink的区别。简而言之,prelinks运行由外而内,而postlinks运行由内而外。因此,prelinks提供轻微的性能提升,因为他们阻止内部指令运行第二次digest周期,当父节点在prelink修改scope。然而,子DOM可能不可用。
11 DOM事件问题
Angular提供了许多预先编译好的DOM事件指令. ng-click,ng-mouseenter,ng-mouseleave等等。每次这些事件触发时都会调用scope.$apply()。一个更有效的方法是直接使用addEventListener绑定,然后必要时使用scope.$digest。
12 总结
12.1 AngularJS:不好的部分
- ng-click和其他DOM事件
- scope.$watch
- scope.$on
- 指令postLink
- ng-repeat
- ng-show and ng-hide
12.2AngularJS:好的(性能)部分
- track by
- 使用::只绑定一次
- compile和preLink
- $evalAsync
- 服务,作用域继承,通过引用传递对象
- $destroy
- 解绑watches和事件监听器
- ng-if和ng-switch
了解更多,https://www.airpair.com/angularjs/posts/angularjs-performance-large-applications#WLXbzSUvg6aWzlUP.99
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 最近在做动画相关的项目,推荐 11 个好用的 JS 动画库
作者:Jonathan Saring 译者:前端小智 来源:medium . 为了保证的可读性,本文采用意译而非直译。 1.Three.js 超过46K的星星,这个流行的库提供了非常多的3D显示功能,以一种直观的方式使用 WebGL。这个库提供…...
2024/4/20 14:54:48 - 解决angularjs锚点跟路由冲突的问题
AngularJs中锚点的使用,及锚点偏移量设置 http://blog.csdn.net/M_killer/article/details/50394254 AngularJS中关于锚点的使用,及锚点偏移量设置 有很多人在使用ng-view时都用到了#号做route,所以如果在页面上需要用到锚点的时候就会比较…...
2024/4/20 14:54:47 - 11 个最好的 JavaScript 动态效果库
翻译:疯狂的技术宅 原文:blog.bitsrc.io/11-javascri… 当我想要在网上找一个简洁的 Javascript 动效库时,总是发现很多“推荐”的库都是缺乏持续维护的。 经过一番研究,我收集了 11 个最好的库,你可以用在自己的项目中…...
2024/4/20 14:54:46 - 深圳市割双眼皮28天还是很肿
...
2024/4/20 14:54:45 - 用局麻割格莱美割双眼皮多少钱
...
2024/4/20 14:54:49 - ROS机器人学习——ROS基础
ROS机器人学习——ROS基础 ROS系统结构 节点(Node) : 软件模块节点管理器(ROS Master) : 控制中心,提供参数管理话题(Topic) : 异步通信机制,传输消息Message,可有多个发布者和订阅者服务(Service) : 同步通信机制,传输请求/应答数据,只允许有一个节点提供指定命名的服务 RO…...
2024/4/21 15:32:47 - 爆肝前端大厂面试题,看完去面试过不了K我(值得收藏)
怎么去设计一个组件封装 组件封装的目的是为了重用,提高开发效率和代码质量 低耦合,单一职责,可复用性,可维护性 前端组件化设计思路 js 异步加载的方式 渲染引擎遇到 script 标签会停下来,等到执行完脚本&#x…...
2024/5/3 2:42:11 - vue响应式:变化侦测、相关实例方法、on/off发布订阅者模式、watch与computed
数据驱动视图 把数据理解为状态,而视图就是用户可直观看到页面。 UI render(state) 变化侦测就是追踪状态即数据的变化,变化侦测是响应式系统的核心 getter/setter 是设计对象对外暴露的计算属性用的,是对象本身有意而为之,让一…...
2024/4/21 15:32:45 - 为您的网站提供动力的100种Jamstack工具,API和服务
We’ve explained the Jamstack, a popular new way to build secure, scalable, high-performance sites. Now we’ll introduce you to the tools, services, and APIs that power Jamstack sites. 我们已经解释了Jamstack ,这是一种构建安全,可扩展的…...
2024/4/21 15:32:45 - 割双眼皮需要用全麻吗
...
2024/4/21 15:32:42 - 双眼皮签证
...
2024/4/21 15:32:41 - 长春中妍整形医院埋线双眼皮太窄了照片
...
2024/4/21 15:32:40 - 割双眼皮增生疼痒
...
2024/4/21 15:32:40 - 割双眼皮疤痕增生发痒
...
2024/4/21 15:32:38 - 双眼皮疤痕红肿痒
...
2024/4/21 15:32:37 - 双眼皮增生涂抹什么
...
2024/5/2 22:45:37 - 开刀双眼皮拆线十七天伤口增生图
...
2024/4/26 22:55:57 - AngularJs实现显示与隐藏
设置点击按钮,进行显示表格 <button ng-click"isshowtrue">新增的产品</button>设置显示与隐藏的控件 <table ng-show"isshow" style"margin-left: 120px;"><tr><td>产品编号:<input …...
2024/4/20 14:55:00 - 双眼皮愈合过程中痒
...
2024/4/20 14:54:59 - 隔割了双眼皮伤口长不好
...
2024/5/5 13:16:00
最新文章
- 2022——蓝桥杯十三届2022国赛大学B组真题
问题分析 看到这个问题的同学很容易想到用十层循环暴力计算,反正是道填空题,一直算总能算得出来的,还有些同学可能觉得十层循环太恐怖了,写成回溯更简洁一点。像下面这样 #include <bits/stdc.h> using namespace std; in…...
2024/5/7 7:04:01 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/5/6 9:38:23 - 大数据学习十三天(hadhoop基础2)
一: MapReduce概述(了解) MapReduce是hadoop三大组件之一,是分布式计算组件 Map阶段 : 将数据拆分到不同的服务器后执行Maptask任务,得到一个中间结果 Reduce阶段 : 将Maptask执行的结果进行汇总,按照Reducetask的计算 规则获得一个唯一的结果 我们在MapReduce计算框架的使用过…...
2024/5/2 21:17:01 - 流域生态系统水-碳-氮耦合过程模拟
流域是一个相对独立的自然地理单元,它是以水系为纽带,将系统内各自然地理要素连结成一个不可分割的整体。碳和氮是陆地生态系统中最重要的两种化学元素,而在流域系统内,水-碳-氮是相互联动、不可分割的耦合体。随着流域内人类活动…...
2024/5/5 8:45:42 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/7 5:50:09 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/4 23:54:56 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/5/4 23:54:56 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/6 9:21:00 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/5/4 23:54:56 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/5/4 23:55:05 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/5/4 23:54:56 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/5/4 23:55:16 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/5/4 23:54:56 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/6 1:40:42 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/5/4 23:54:56 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/5/4 23:55:17 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/5/4 23:55:06 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/5/4 23:54:56 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/4 23:55:06 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/5 8:13:33 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/5/4 23:55:16 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/5/4 23:54:58 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/6 21:42:42 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/5/4 23:54:56 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下: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