目录

一、虚拟DOM和Diff算法

    1、为什么需要虚拟DOM

    2、什么是虚拟DOM

    3、用JS对象模拟DOM树

    4、Diff算法比较两棵虚拟DOM树的差异

    5、将差异应用到真正的DOM树

    6、总结

React起源于Facebook的内部项目,用来架设Instagram(照片交友)网站。在2013年5月开源。React的设计思想极其独特,属于革命性创新,性能出众,代码逻辑却非常简单,它可能是将来Web开发的主流工具。

前端三大主流框架(https://2018.stateofjs.com/front-end-frameworks/overview/):
Angular.js:较早。学习曲线比较陡,Ng1学起来比较麻烦,Ng2~5进行了一系列的改革(1和2像是两套框架),提供了组件化开发的概念,支持使用TypeScript。
Vue.js:最火(关注的人多)。中国人开发。
React.js:最流行(用的多)。设计很优秀。

React与Vue:
组件化:Vue通过.vue文件创建对应的组件,template、script、style;React没有组件模板文件,一切都是以JS来表现。
开发团队:Vue以尤雨溪为主导的开源小团队;React是由FaceBook前端官方团队,技术实力比较雄厚。
社区方面:Vue是近两年才火起来的;React诞生较早,社区强大,常见的问题、最优解决方案、文档、博客较全面。
移动APP开发:Weex目前只是一个小玩具,并没有很成功的大案例;ReactNative提供了无缝迁移到移动App的开发体验,用的最多。

模块化:从代码的角度,把一些可复用的代码抽离为单个的模块,便于项目的维护和开发。
组件化:从UI界面的角度,把一些可复用的UI元素抽离为单独的组件,便于项目的维护和开发。

一、虚拟DOM和Diff算法

Why Virtual DOM

如何理解虚拟DOM?-EMayej Bee的回答-知乎

深度剖析:如何实现一个Virtual DOM算法

深入浅出React(四):虚拟DOM Diff算法解析

虚拟DOM介绍

1、为什么需要虚拟DOM

浏览器的工作流程几乎是相似的。How Browsers Work

(1)创建DOM树:浏览器收到HTML文件后,渲染引擎就会对其进行解析并创建一个DOM树节点,这些节点与HTML元素具有一对一的关系。

(2)创建渲染(Render)树:解析来自外部CSS文件和内联的样式,样式信息和DOM树中的节点用于创建渲染树。在WebKit中,DOM树中的所有节点都有attach方法,它接收计算出的样式信息并返回一个渲染对象。

(3)布局(也称回流):渲染树中的每个节点都有屏幕坐标,使其出现在屏幕上的确切位置。

(4)绘画:绘制渲染对象。遍历渲染树并调用每个节点的paint()方法,在屏幕上显示内容。

虚拟Dom快,有两个前提:(1)Javascript很快。Julia Micro-Benchmarks可看到Javascript跟Java基本是一个量级,是C语言的几倍。(2)DOM很慢。用document.createElement()创建一个空元素时,有以下东西要实现HTMLElement的属性和方法 Element的属性和方法 GlobalEventHandlers的属性和方法,还有不少嵌套引用,DOM设计得太复杂。原生及很多框架在调用DOM的API的时候做得不好,导致整个过程更加慢。每次更改DOM时,所有创建DOM树至渲染对象都将重做,假设一个接一个地修改了30个节点,可能30次重新计算布局、重新渲染等。

目的是为了实现页面元素的高效更新。

2、什么是虚拟DOM

虚拟DOM是对DOM的“双缓冲”应用,可以在脱机DOM树中执行每个更改,之后将所有更改存储为真正的DOM,布局渲染到页面上(类似硬盘和缓存),只执行一次,减少了计算的数量。虚拟DOM自动化和抽象DOM片段的管理,不必手动执行,不必手动跟踪哪部分已改变需要刷新。通过放弃对自身的DOM操作,允许代码的不同组件或部分请求DOM修改而不必相互交互,避免在修改DOM的所有部分之间进行同步。

React虚拟DOM的运作是透明的,根本没有DOM这个概念。只需提供component和数据,无需担心性能问题,由虚拟DOM来确保只对界面上真正变化的部分进行实际的DOM操作。

虚拟DOM并没有完全实现DOM,只保留了Element之间的层次关系和一些基本属性。创建新的虚拟DOM时速度很快,每个component的render函数就是给新的虚拟dom提供input。(1)用JavaScript对象表示DOM树的结构,构建一个真正的DOM树,插到文档当中;(2)当状态变更时,重新构造一棵新的JS对象树,将新旧树进行比较,记录差异;(3)将差异应用到步骤1所构建的真正的DOM树上,实现视图更新。

例子如下:通常是先把0, 1, 2元素删除,再加3, 4, 5, 6新元素,有3次删除元素和4次添加元素。而React会把这两个虚拟DOM树做Diff,只修改innerHTML和添加一个元素6。

<ul><li>0</li><li>1</li><li>2</li>
</ul>
<!-- 更改后 -->
<ul><li>3</li><li>4</li><li>5</li><li>6</li>
</ul>

JS对象只需要记录DOM树的节点类型、属性和子节点。DOM树和JavaScript对象可以互相转换。

<!-- HTML写法 -->
<ul id='list'><li class='item'>Item 1</li><li class='item'>Item 2</li><li class='item'>Item 3</li>
</ul>
// DOM树的结构、属性信息用JavaScript对象表示
var element={tagName:'ul', // 节点标签名props:{ // DOM的属性,用一个对象存储键值对id:'list'},children:[ // 该节点的子节点{tagName:'li',props:{class:'item'},children:["Item 1"]},{tagName:'li',props:{class:'item'},children:["Item 2"]},{tagName:'li',props:{class:'item'},children:["Item 3"]},]
}

3、用JS对象模拟DOM树

(1)构建JS对象

// element.js
function Element(tagName, props, children) {if (!(this instanceof Element)) {return new Element(tagName, props, children);}this.tagName = tagName;this.props = props || {};this.children = children || [];this.key = props ? props.key : undefined;let count = 0;this.children.forEach((child) => {if (child instanceof Element) {count += child.count;}count++;});this.count = count;
}module.exports = function (tagName, props, children) {return new Element(tagName, props, children)
}
var el = require('./element')
// 目前ul只是一个JavaScript对象表示的DOM结构
var ul = el('ul', {id: 'list'}, [el('li', {class: 'item'}, ['Item 1']),el('li', {class: 'item'}, ['Item 2']),el('li', {class: 'item'}, ['Item 3'])
])

(2)根据JS对象构建真正的DOM树 

render方法根据tagName构建一个真正的DOM节点,设置这个节点的属性,递归地把子节点也构建起来。

// 根据JS对象构建真正的DOM树
Element.prototype.render = function () {var el = document.createElement(this.tagName) // 根据tagName构建var props = this.propsfor (var propName in props) { // 设置节点的DOM属性var propValue = props[propName]el.setAttribute(propName, propValue)}var children = this.children || []children.forEach(function (child) {var childEl = (child instanceof Element)? child.render() // 如果子节点也是虚拟DOM,递归构建DOM节点: document.createTextNode(child) // 如果字符串,只构建文本节点el.appendChild(childEl)})return el
}

(3)将真正的DOM树渲染至页面中

var ulRoot = ul.render()
document.body.appendChild(ulRoot)

4、Diff算法比较两棵虚拟DOM树的差异

新旧虚拟DOM树需要进行Diff算法分析,找到差异。 标准的Diff算法复杂度需要O(n^3),Facebook工程师结合Web界面的特点做出两个简单的假设,使得Diff算法复杂度直接降低到O(n)。算法上的优化是React整个界面Render的基础。(1)两个相同组件产生类似的DOM结构,不同的组件产生不同的DOM结构;(2)对于同一层次的一组子节点,可以通过唯一的id进行区分。

(1)逐层进行节点比较

tree diff:逐层对比;
component diff:进行Tree Diff时,每一层中,组件级别的对比;
element diff:进行组件对比时,如果两个组件类型相同,则需要进行元素级别的对比。

在React中比较两个虚拟DOM节点,分为两种情况:
节点类型不同 。当在树中的同一位置前后输出了不同类型的节点,直接删除之前的节点,创建并插入新的节点。注意,该删除的节点的子节点也会被完全删除,它们也不会用于后面的比较。同样的逻辑也被用在React组件的比较,这正是应用了第一个假设。
节点类型相同,但是属性不同。对属性进行重设从而实现节点的转换。虚拟DOM的style属性稍有不同,其值并不是一个简单字符串而必须为一个对象。

在React中,树的算法非常简单,两棵树只会对同一层次的节点进行比较,即同一个父节点下的所有子节点。当发现节点已经不存在,则该节点及其子节点会被完全删除掉,不会用于进一步的比较。这样只需要对树进行一次遍历,便能完成整个DOM树的比较。

这一假设至今为止没有导致严重的性能问题。在实现自己的组件时,保持稳定的DOM结构有助于性能的提升,例如可以通过CSS隐藏或显示某些节点,而不是真的移除或添加DOM节点。

例如下面的DOM结构转换:A节点被整个移动到D节点下,DOM Diff操作如下。

深度优先遍历,记录差异,每个节点都会有一个唯一的标记。patches是一个对象,用来记录每个节点的差异。

// diff 函数,对比两棵树
function diff (oldTree, newTree) {var index = 0 // 当前节点的标志var patches = {} // 用来记录每个节点差异的对象dfsWalk(oldTree, newTree, index, patches)return patches
}// 对两棵树进行深度优先遍历
function dfsWalk (oldNode, newNode, index, patches) {// 对比oldNode和newNode的不同,记录下来patches[index] = [...]diffChildren(oldNode.children, newNode.children, index, patches)
}// 遍历子节点
function diffChildren (oldChildren, newChildren, index, patches) {var leftNode = nullvar currentNodeIndex = indexoldChildren.forEach(function (child, i) {var newChild = newChildren[i]currentNodeIndex = (leftNode && leftNode.count) // 计算节点的标识? currentNodeIndex + leftNode.count + 1: currentNodeIndex + 1dfsWalk(child, newChild, currentNodeIndex, patches) // 深度遍历子节点leftNode = child})
}

差异类型如下。

var REPLACE = 0 // 替换掉原来的节点
var REORDER = 1 // 移动、删除、新增子节点
var PROPS = 2 // 修改了节点的属性
var TEXT = 3 // 对于文本节点,文本内容改变
{0: [{ type: REPALCE, node: newNode }, { type: PROPS,  props: { id: "container" }}],2: [{ type: TEXT, content: "Virtual DOM2" }]
}

(2)列表节点的比较

React在遇到列表时却又找不到key时提示警告,通常意味着潜在的性能问题。对于列表节点提供唯一的key属性可以帮助React定位到正确的节点进行比较,从而大幅减少DOM操作次数,提高了性能。

列表节点的操作通常包括添加、删除和排序。(列表节点不只由v-for生成,指的是同一级的节点)

假设用英文字母唯一地标识每一个子节点,旧的节点顺序a b c d e f g h i,新增j节点,删除e节点,移动h节点,新的节点顺序a b c h d f g i j,求最小的插入、删除操作。

抽象为字符串的最小编辑距离问题(Edition Distance),最常见的解决算法是Levenshtein Distance,通过动态规划求解,时间复杂度为O(M*N)。但是我们并不需要真的达到最小的操作,我们只需要优化一些比较常见的移动情况,牺牲一定DOM操作,让算法时间复杂度达到线性的O(max(M,N)。

patches[0] = [{ type: REORDER, moves: [{remove or insert}, {remove or insert}, ...] }]

5、将差异应用到真正的DOM树

对真正DOM树进行深度优先的遍历,从patches对象中找出当前遍历的节点差异,进行DOM操作。

function patch (node, patches) {var walker = {index: 0}dfsWalk(node, walker, patches)
}function dfsWalk (node, walker, patches) {var currentPatches = patches[walker.index] // 从patches拿出当前节点的差异var len = node.childNodes? node.childNodes.length: 0for (var i = 0; i < len; i++) { // 深度遍历子节点var child = node.childNodes[i]walker.index++dfsWalk(child, walker, patches)}if (currentPatches) {applyPatches(node, currentPatches) // 对当前节点进行DOM操作}
}

applyPatches,根据不同类型的差异对当前节点进行DOM操作。

function applyPatches (node, currentPatches) {currentPatches.forEach(function (currentPatch) {switch (currentPatch.type) {case REPLACE:node.parentNode.replaceChild(currentPatch.node.render(), node)breakcase REORDER:reorderChildren(node, currentPatch.moves)breakcase PROPS:setProps(node, currentPatch.props)breakcase TEXT:node.textContent = currentPatch.contentbreakdefault:throw new Error('Unknown patch type ' + currentPatch.type)}})
}

6、总结

Virtual DOM算法主要实现三个函数:element, diff, patch,之后就可以进行使用。

下面是最简单的实践,实际中还需要处理事件监听、加入JSX语法等,完整代码见simple-virtual-dom。

// 1. 构建虚拟DOM
var tree = el('div', {'id': 'container'}, [el('h1', {style: 'color: blue'}, ['simple virtal dom']),el('p', ['Hello, virtual-dom']),el('ul', [el('li')])
])// 2. 通过虚拟DOM构建真正的DOM
var root = tree.render()
document.body.appendChild(root)// 3. 生成新的虚拟DOM
var newTree = el('div', {'id': 'container'}, [el('h1', {style: 'color: red'}, ['simple virtal dom']),el('p', ['Hello, virtual-dom']),el('ul', [el('li'), el('li')])
])// 4. 比较两棵虚拟DOM树的不同
var patches = diff(tree, newTree)// 5. 在真正的DOM元素上应用变更
patch(root, patches)

 

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

相关文章

  1. Vue-双向绑定以及虚拟dom原理

    VueJs Vue的核心是双向绑定和虚拟DOM 虚拟Dom&#xff08;vdom&#xff09; 参考&#xff1a;Vue原理解析之Virtual Dom&#xff0c; ppt Dom操作是比较浪费时间和性能的&#xff0c;当数据量很大时&#xff0c;更新DOM是非常耗费性能的操作。 当我们使用Javascript来修改我们…...

    2024/5/6 7:41:12
  2. 别再说虚拟 DOM 快了,要被打脸的

    如果你觉得虚拟 DOM 很快&#xff0c;那么这篇文章可能就是你所缺少的我经常听到有人在群里&#xff0c;或者在社区里说的一个很严重的错误&#xff0c;那就是说 React 的 Virtual Dom 是以快出名的&#xff0c;比原生 DOM 快多了&#xff0c;啥啥啥的&#xff0c;每次都一两句…...

    2024/4/21 4:36:12
  3. 深刻理解 React (一) ——JSX和虚拟DOM

    版权声明&#xff1a;本文由左明原创文章&#xff0c;转载请注明出处: 文章原文链接&#xff1a;https://www.qcloud.com/community/article/155 来源&#xff1a;腾云阁 https://www.qcloud.com/community 首先&#xff0c;我们来看看 React 在世界范围的热度趋势&#xff0c…...

    2024/4/21 4:36:11
  4. 深入浅出Vue.js:第5章 (第②篇 虚拟DOM)虚拟DOM介绍

    开篇 Vue.js2.0引入了虚拟DOM&#xff0c;比Vue.js1.0的初始渲染速度提升了2~4倍&#xff0c;并大大降低了内存消耗。 什么是虚拟DOM&#xff1f; 在Web早期&#xff0c;页面的交互效果简单的多&#xff0c;没有复杂的状态需要管理&#xff0c;使用JQuery来操作DOM完全满足需…...

    2024/4/21 4:36:10
  5. 深入浅出Vue.js阅读——虚拟DOM——虚拟DOM简介

    虚拟DOM简介 1. 什么是虚拟DOM 命令式操作DOM的问题&#xff1a;   状态越来越多&#xff0c;DOM操作越来越频繁&#xff0c;使用命令式操作DOM就会发现&#xff1a;我们的代码中有很大一部分代码是用来操作DOM&#xff0c;程序中的状态很难管理&#xff0c;代码中的逻辑也…...

    2024/4/25 4:49:44
  6. 使用基于JSON的虚拟DOM的好处

    json domMany former colleagues and friends have reached out to me and asked: “How did you get this efficient and fast when working inside the UI area?”许多以前的同事和朋友与我联系并问:“在UI区域内工作时&#xff0c;您是如何高效而快速地获得这种信息的&…...

    2024/4/21 4:36:09
  7. VUE、React中虚拟DOM(virtual DOM)技术 VNode及diff算法介绍

    作者简介&#xff1a; 李晓伟 9年前端工作经验&#xff0c; 主要分享&#xff1a;Javascript、HTML5、CSS3、Vue、React、Angular、小程序、hybird、前后端开发协作、互联网、人工智能、用户体验等多方面知识 公众号&#xff1a;前端之阶 前言 前端主流框架 vue 和 react 中…...

    2024/4/21 4:36:07
  8. 增量 DOM 与虚拟 DOM 的对比使用

    关于本文 译者&#xff1a;前端zenblo 译文&#xff1a;https://github.com/xitu/gold-miner/blob/master/article/2020/incremental-vs-virtual-dom.md 作者&#xff1a;Chameera Dulanga 原文&#xff1a;https://blog.bitsrc.io/incremental-vs-virtual-dom-eb7157e43dca如果…...

    2024/4/21 4:36:06
  9. 浅谈React的最大亮点——虚拟DOM

    在Web开发中&#xff0c;需要将数据的变化实时反映到UI上&#xff0c;这时就需要对DOM进行操作&#xff0c;但是复杂或频繁的DOM操作通常是性能瓶颈产生的原因&#xff0c;为此&#xff0c;React引入了虚拟DOM&#xff08;Virtual DOM&#xff09;的机制。 一、什么是虚拟DOM&…...

    2024/5/6 10:12:47
  10. React —— 简介,虚拟DOM,JSX语法规则

    React —— 简介&#xff0c;虚拟DOM&#xff0c;JSX语法规则React —— 简介&#xff0c;虚拟DOM&#xff0c;JSX语法规则简介特点React 案例虚拟 DOM虚拟 DOM 的两种创建方式1. 使用js创建虚拟DOM2. 使用jsx创建虚拟DOM虚拟 DOM 和 真实 DOM关于虚拟DOMJSX语法规则jsx语法规则…...

    2024/4/21 4:36:05
  11. 什么是虚拟DOM

    虚拟 dom (virtual DOM) 这篇文档用于书写我对虚拟 dom 的一些自己的见解。 什么是虚拟 dom 虚拟 dom 是相对于浏览器所渲染出来的真实 dom 的&#xff0c;在react&#xff0c;vue等技术出现之前&#xff0c;我们要改变页面展示的内容只能通过遍历查询 dom 树的方式找到需要修改…...

    2024/4/21 4:36:03
  12. React虚拟DOM浅析

    React虚拟DOM浅析 在Web开发中&#xff0c;需要将数据的变化实时反映到UI上&#xff0c;这时就需要对DOM进行操作&#xff0c;但是复杂或频繁的DOM操作通常是性能瓶颈产生的原因&#xff0c;为此&#xff0c;React引入了虚拟DOM&#xff08;Virtual DOM&#xff09;的机制。 什…...

    2024/4/20 19:46:24
  13. AngularJS学习笔记--使用angular.extend()实现工厂模式

    AngularJS学习笔记–使用angular.extend()实现工厂模式 angular提供了extend()这个非常实用的方法&#xff0c;它的作用是将第一个参数以后的参数&#xff08;可以传入多个参数&#xff09;合并到第一个参数&#xff0c;即将其属性复制给第一个参数&#xff0c;如果有同名属性…...

    2024/5/4 3:47:14
  14. Angular系列一 scss小录

    scss小录VariableIF ELSEForWhileEach浏览器别称属性盒子阴影盒子圆角继承ExtendsVariable $danger: hsl(0,50%,50%); #main{#left-aside{.btn-danger {background-color: $danger;}} }IF ELSE // 场景式文本mixin text-effect($val) {if $val danger {color: red;}else if $…...

    2024/4/30 14:38:41
  15. 九秒社团创始人李明:移动互联网时代开源社区发展之道

    欢迎来到A5访谈室,本期我们采访的是9秒社团的创始人李明。9秒社团是国内最大的开源游戏社区和领先的开源开发者社区,主要以原创的开源内容为核心推动力。目前社区内有十余个自研开源项目,如:小说阅读器App、跨平台移动App开发引擎CrossApp、手机网游,游戏服务器端框架Fire…...

    2024/4/24 9:49:32
  16. angular.extend相关知识

    angular.extend 复制src对象中的属性去dst对象中. 支持多个src对象. 如果你不想改变一个对象&#xff0c;你可以把dst设为空对象{}: var object angular.extend({}, object1, object2). 注意: angular.extend不支持递归复制. 使用方法: angular.extend(dst, src); 参数:Param …...

    2024/4/21 4:36:02
  17. angular合并对象,并不修改原对象

    var object1 {APPORT_ID:"1",EMP_NAME:"2",OP_APPLY_NO:"" } var Object2 {APPORT_ID_2:"1-2",EMP_NAME:"2-2",OP_APPLY_NO:"3-2" }; // Object2会覆盖Bin1 var Bin1 angular.copy(object1); //要先拷贝一下&…...

    2024/5/4 21:38:50
  18. Angular Chart.js第三方库ng-chartjs基础使用

    Angular Chart.js第三方库ng-chartjs基础使用 项目github地址 这个项目支持基本的Chart.js图表,并且支持内联插件和全局插件的使用。 Demo地址 支持图表类型 linebarradarpiepolarArea安装 npm install ng-chartjs --save npm install chart.js --save导入 正常导入模块i…...

    2024/5/4 15:14:57
  19. angular.js多个控制器提示错误Error: [ng:areq]的解决方法

    今天玩angular.js&#xff0c;在一个module下写了多个控制器&#xff0c;遇到这样一个问题&#xff0c;如图&#xff1a; 刚开始我以为是angular.js版本问题&#xff0c;换了低版本的1.2后还是会报这样的错误&#xff0c;所以我就改写了angular控制器的写法&#xff0c;如下&am…...

    2024/5/4 13:19:41
  20. 用时间选择器时,获取当前时间,并把当前时间作为参数放在url里,进行请求

    我用的是angular cil,组件库是NG-ZORRO 引用Zorro里的时间选择器&#xff1a;链接 我感觉我的很low&#xff0c;以后还会改进 在新建组件a里&#xff08;我这里用组件是为了方便演示&#xff09;&#xff0c; 注意&#xff1a;引用NG-ZORRO的时间选择器组件时&#xff0c;有引…...

    2024/4/25 0:32:09

最新文章

  1. linux不同引号的含义(随手记)

    单引号&#xff1a; 所见即所得,单引号里面的内容会原封不动输出. echo test--hostname--$(hostname)--{1..5} test--hostname--$(hostname)--{1..5}双引号&#xff1a; 和单引号类似,对双引号里面的特殊符号会进行解析,对于{}花括号(通配符)没有解析. echo "test--host…...

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

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

    2024/5/6 9:38:23
  3. Mybatis-Plus05(分页插件)

    分页插件 MyBatis Plus自带分页插件&#xff0c;只要简单的配置即可实现分页功能 1. 添加配置类 Configuration MapperScan("com.atguigu.mybatisplus.mapper") //可以将主类中的注解移到此处 public class MybatisPlusConfig {Bean public MybatisPlusIntercepto…...

    2024/5/1 12:32:42
  4. Java深度优先搜索DFS(含面试大厂题和源码)

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

    2024/5/5 8:52:24
  5. 【物联网项目】基于ESP8266的家庭灯光与火情智能监测系统——文末完整工程资料源码

    目录 系统介绍 硬件配置 硬件连接图 系统分析与总体设计 系统硬件设计 ESP8266 WIFI开发板 人体红外传感器模块 光敏电阻传感器模块 火焰传感器模块 可燃气体传感器模块 温湿度传感器模块 OLED显示屏模块 系统软件设计 温湿度检测模块 报警模块 OLED显示模块 …...

    2024/5/5 18:59:44
  6. 【外汇早评】美通胀数据走低,美元调整

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

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

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

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

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

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

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

    2024/5/6 9:21:00
  10. 【外汇早评】日本央行会议纪要不改日元强势

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

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

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

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

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

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

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

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

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

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

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

    2024/5/6 1:40:42
  16. 【外汇早评】美伊僵持,风险情绪继续升温

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

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

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

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

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

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

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

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

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

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

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

    2024/5/5 8:13:33
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

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

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

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

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

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

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

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

    2024/5/4 23:54:56
  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