​​​​​​

非我在 2016-11-09 原文

上篇博客简要的介绍了下psql命令行客户端的前台代码。这一次,我们来看看后台的代码吧。

十分不好意思的是,上篇博客我们只说明了前台登陆的代码,没有介绍前台登陆过程中,后台是如何工作的。即:后台接到前台的连接请求后发生了什么?调用了哪些函数?启动了哪些进程?

那么,我们就先讲讲后台的工作流程吧。


1.postgresql后台工作流程

这里首先我们要知道postgresql是典型的“Server/Client”的模式。即服务器后台有一个主进程(postmaster),该进程根据客户端的连接请求,fork一个服务端进程(postgres)为之服务。

具体来说,postmaster监听着一个特定的 TCP/IP 端口等待进来的连接。每当检测到一个连接请求时,postmaster进程派生出一个新的叫postgres的服务器进程。服务器任务(postgres进程)相互之间使用信号量和共享内存进行通讯, 以确保在并行的数据访问过程中的数据完整性。

前台程序发出一个启动命令后到Postmaster后,Postmaster根据其提供的信息建立一个子进程,也就是后台进程,专门为前台服务。Postmaster负责维护后台进程的生命周期,但与后台进程相独立。这样在后台进程崩溃后可以重启动后台进程而不会和这些后台进程一起崩溃。

落实到代码里呢?

我们首先看看\src\backend\main下的main.c文件。我们说过每个程序都有个“main”函数,之前也说明了psql里的main函数。后台的main函数就定义在main.c文件里。

在这个main函数里主要做了什么?我写在下面:

 
  1. line99: 函数MemoryContextInit()启动必须的子系统error和memory管理系统;
  2. line110:函数set_pglocale_pgservice()获取并设置环境变量;
  3. line146~148: 函数init_locale初始化环境变量;
  4. line219~228:根据输入参数确定程序走向,这里进入了PostmasterMain(){跳转至postmaster.c文件中}

这里我们可以看到,main函数只是做了一些初始化的工作,它随后就把传进来的参数原封不动的传给了PostmasterMain(argc, argv)函数。那么继续进入PostmasterMain函数,他在src/backend/postmaster/postmaster.c中。

在函数postmaster中又做了哪些事?

 
  1. 根据命令行参数设定相应的环境值,初始化监听端口,检查其维护的数据库文件是否存在,设置signal handlers从操作系统上监听其感兴趣的消息;
  2. 调用StartupDataBase()启动后台子进程;
  3. 调用ServerLoop()监听新的建立连接消息。

ServerLoop()是一个死循环,当有一个新的建立连接消息到来的时候,查找自身维护的端口列表,看是否有空闭的端口,如果有调用static int BackendStartup(Port *port)来fork一个后台进程。然后,ServerLoop()判断下列几个后台支持进程的状态(linux上你可以用ps命令查看,Windows的话就任务管理器咯):

 
  1. system logger process
  2. autovacuum process
  3. background writer process
  4. the archiver process
  5. the stats collector process

当发现一个或多个进程发现崩溃后,重新启动它们,确保数据库整体的正常运行。Postmaster在循环中就这样一直不停的监听联系请求和维护后台支持进程。

以上的这些步骤都是在启动数据库服务器的时候完成的(postmaster命令、postgres命令或者pg_ctl命令),即在你运行psql之前。当服务器做好上面的准备后,才可以接受前台的连接请求。

在监听并接受了一个前台的连接请求后,postmaster调用BackendStartup(Port *port)来fork一个后台进程。在该函数里:

  • 调用函数BackendInitialize(port)完成Backend的初始化(主要包括读入postgre中的配置文件,根据配置文件进行端口的绑定和对客户进行验证);
  • 调用函数调用BackendRun(),它会为backend设置好启动参数,并传递给PostgresMain(ac, av, port->database_name, port->user_name)函数(其中ac为int型,代表参数个数;char **av是一个二维字符串数组,用于存储参数;后面依次为要连接的数据库名和连接词数据库的用户名).

最后在src/backend/tcop/postgres.c的PostgresMain()函数里,设置好环境变量和内存上下文,在3933行的for循环处循环检查前台的输入并利用函数ReadCommand(StringInfo inBuf)读取前台命令。

根据读取的命令字符串的首字符的不同,可分为以下几种命令:
 

至此,后台服务进程正式开始工作。


2.postgresql的Parser(查询分析模块)

当postgresql的后台服务进程postgres收到前台发来的查询语句后,首先将其传递到查询分析模块,进行词法分析,语法分析和语义分析。若是功能性命令(例如create table,create user和backup命令等)则将其分配到功能性命令处理模块;对于查询处理命令(SELECT/INSERT/DELETE/UPDATE)则为其构建查询语法树,交给查询重写模块。

总的来说流程如下:

SQL命令 --(词法和语法分析)--> 分析树 --(语义分析)--> 查询树

在代码里的调用路径如下(方框内为函数,数字显示了调用顺序):

因此,查询分析的处理过程如下:

  • exec_simple_query函数(在src/backend/tcop/postgres.c下)调用函数pg_parse_query进入词法分析和语法分析的主过程,函数pg_parse_query再调用词法分析和语法分析的入口函数raw_parser生成分析树;
  • 函数pg_parse_query返回分析树(raw_parsetree_list)给exec_simple_query;
  • exec_simple_query函数调用函数pg_analyze_and_rewrite进行语义分析(调用parse_analyze函数,返回查询树)和查询重写(调用pg_rewrite_query函数);
  • 返回查询树链表给exec_simple_query。

2.1 词法分析和语法分析

postgre命令的词法分析和语法分析是由Unix工具Yacc和Lex制作的。它们依赖的文件定义在src\backend\parser下的scan.l和gram.y。其中:

  • 词法器在文件 scan.l里定义。负责识别标识符,SQL 关键字等,对于发现的每个关键字或者标识符都会生成一个记号并且传递给分析器;
  • 分析器在文件 gram.y里定义。包含一套语法规则和触发规则时执行的动作.

在raw_parser函数(在src/backend/parser/parser.c下)中,主要通过调用Lex和Yacc配合生成的base_yyparse函数来实现词法分析和语法分析的工作。

其它重要的文件如下:

kwlookup.c:提供ScanKeywordLookup函数,该函数判断输入的字符串是否是关键字,若是则返回单词表中对应单词的指针;

scanup.c:提供几个词法分析时常用的函数。scanstr函数处理转义字符,downcase_truncate_identifier函数将大写英文字符转换为小写字符,truncate_identifier函数截断超过最大标识符长度的标识符,scanner_isspace函数判断输入字符是否为空白字符。

scan.l:定义词法结构,编译生成scan.c;

gram.y:定义语法结构,编译生成gram.c;

gram.h:定义关键字的数值编号。

值得一提的是,如果你想修改postgresql的语法,你要关注下两个文件“gram.y”和“kwlist.h”。简要地说就是将新添加的关键字添加到kwlist.h中,同时修改gram.y文件中的语法规则,然后重新编译即可。具体可以看下这篇博客如何修改Postgres的语法规则文件---gram.y

至于文件间的调用关系?我还是上个图吧:

至于词法分析和语法分析实现的细节,这应该是编译原理课程上学习的东西,这里先就不提了,以后有时间好好学习下Lex和Yacc的语法好了,到时候再写点东西与大家共享。

2.2 语义分析

语义分析阶段会检查命令中是否有不符合语义规则的成分。主要作用是为了检查命令是否可以正确的执行。

exec_simple_query函数在从词法和语法分析模块获取了parsetree_list之后,会对其中的每一颗子树调用pg_analyze_and_rewrite进行语义分析和查询重写。其中负责语义分析的模块是在src/backend/parser/analyze.c中的parse_analyze函数。该函数会根据得到的分析树生成一个对应的查询树。然后查询重写模块会对这颗查询树进行修正,这就是查询重写的任务了,而这并不是这篇博客的重点,放在下一篇博客里再说好了。

在parse_analyze函数里,会首先生成一个ParseState类型的变量记录语义分析的状态,然后调用transformTopLevelStmt函数处理语义分析。transformTopLevelStmt是处理语义分析的主过程,它本身只执行把'SELECT ... INTO'语句转换成'CREATE TABLE AS'的任务,剩下的语义分析和生成查询树的任务交给transformStmt函数去处理。

在transformStmt函数里,会先调用nodeTag函数获取传进来的语法树(praseTree)的NodeTag。有关NodeTag的定义在src/include/nodes/nodes.h中。postgresql使用NodeTag封装了大多数的数据结构,把它们封装成节点这一统一的形式,每种节点类型作为一个枚举类型。那么只要读取节点的NodeTag就可以知道节点的类型信息。

因此,随后在transformStmt函数中的switch语句里根据NodeTag区分不同的命令类型,从而进行不同的处理。在这里共有8种不同的命令类型:

 
  1. SELECT INSERT DELETE UPDATE //增 删 改 查
  2. DeclareCursor //定义游标
  3. Explain //显示查询的执行计划
  4. CreateTableAs //建表、视图等命令
  5. UTILITY //其它命令

对应这8种命令的NodeTag值和语义分析函数如下:

 
  1. NodeTag值 语义分析函数
  2. T_InsertStmt transformInsertStmt
  3. T_DeleteStmt transformDeleteStmt
  4. T_UpdateStmt transformUpdateStmt
  5. T_SelectStmt ( transformValuesClause
  6. 或者 transformSelectStmt
  7. 或者 transformSetOperationStmt )
  8. T_DeclareCursorStmt transformDeclareCursorStmt
  9. T_ExplainStmt transformExplainStmt
  10. T_CreateTableAsStmt transformCreateTableAsStmt
  11. default 作为Unility类型处理,直接在分析树上封装一个Query节点返回

程序就根据这8种不同的命令类型,指派不同的语义分析函数去执行语义分析,生成一个查询树。

那在这里就以SELECT语句的transformSelectStmt函数为例看看语义分析函数的流程吧:

  • 1)创建一个新的Query节点并设置其commandType字段值为CMD_SELECT;
  • 2)调用transformWithClause函数处理WITH子句;
  • 3)调用transformFromClause函数处理FROM子句;
  • 4)调用transformTargetList函数处理目标属性;
  • 5)调用transformWhereClause函数处理WHERE子句;
  • 6)调用transformSortClause函数处理ORDER BY子句;
  • 7)调用transformGroupClause函数处理GROUP BY子句;
  • 8)调用transformDistinctClause或者transformDistinctOnClause函数处理DISTINCT子句;
  • 9)调用transformLimitClause函数处理LIMIT和OFFSET;
  • 10)调用transformWindowDefinitions函数处理窗口函数;
  • 11)调用transformLockingClause函数处理FOR [KEY] UPDATE/SHARE子句;
  • 12)设置Query节点的其他标志;
  • 13)返回Query节点.

这样以后我们就得到了一个查询命令的查询树Query。

其实写到这里本来还想继续分析transformWithClause这些解析各种子句的函数,后来想想这样篇幅也太多了,而且未免也太细了,也留给各位朋友们一起讨论吧。

最后,我们再来看看生成的Query节点的结构(定义在src/include/nodes/parsenodes.h)吧。这里贴一下代码了,上次都因为贴的代码太多被博客园团队踢出首页了,这次求放过。

 
  1. typedef struct Query
  2. {
  3. NodeTag type;
  4. CmdType commandType; /* select|insert|update|delete|utility */
  5. QuerySource querySource; /* where did I come from? */
  6. uint32 queryId; /* query identifier (can be set by plugins) */
  7. bool canSetTag; /* do I set the command result tag? */
  8. Node *utilityStmt; /* non-null if this is DECLARE CURSOR or a non-optimizable statement */
  9. int resultRelation; /* rtable index of target relation for INSERT/UPDATE/DELETE; 0 for SELECT */
  10. bool hasAggs; /* has aggregates in tlist or havingQual */
  11. bool hasWindowFuncs; /* has window functions in tlist */
  12. bool hasSubLinks; /* has subquery SubLink */
  13. bool hasDistinctOn; /* distinctClause is from DISTINCT ON */
  14. bool hasRecursive; /* WITH RECURSIVE was specified */
  15. bool hasModifyingCTE; /* has INSERT/UPDATE/DELETE in WITH */
  16. bool hasForUpdate; /* FOR [KEY] UPDATE/SHARE was specified */
  17. bool hasRowSecurity; /* row security applied? */
  18. List *cteList; /* WITH list (of CommonTableExpr's) */
  19. List *rtable; /* list of range table entries */
  20. FromExpr *jointree; /* table join tree (FROM and WHERE clauses) */
  21. List *targetList; /* target list (of TargetEntry) */
  22. OnConflictExpr *onConflict; /* ON CONFLICT DO [NOTHING | UPDATE] */
  23. List *returningList; /* return-values list (of TargetEntry) */
  24. List *groupClause; /* a list of SortGroupClause's */
  25. List *groupingSets; /* a list of GroupingSet's if present */
  26. Node *havingQual; /* qualifications applied to groups */
  27. List *windowClause; /* a list of WindowClause's */
  28. List *distinctClause; /* a list of SortGroupClause's */
  29. List *sortClause; /* a list of SortGroupClause's */
  30. Node *limitOffset; /* # of result tuples to skip (int8 expr) */
  31. Node *limitCount; /* # of result tuples to return (int8 expr) */
  32. List *rowMarks; /* a list of RowMarkClause's */
  33. Node *setOperations; /* set-operation tree if this is top level of a UNION/INTERSECT/EXCEPT query */
  34. List *constraintDeps; /* a list of pg_constraint OIDs that the query depends on to be semantically valid */
  35. List *withCheckOptions; /* a list of WithCheckOption's, which are
  36. * only added during rewrite and therefore
  37. * are not written out as part of Query. */
  38. } Query;

值得关注的是commandType,rtable,resultRelation,jointree和targetList这几个变量,看懂这几个变量也就比较好懂这个数据结构了。大家看看英文也就懂了,我也不多说了。


3.写在最后

好吧,水了这么多,这篇算是告一段落了,自己对查询处理这一块也有个粗浅的认识了。这里要感谢《PostgreSQL数据库内核分析》这本书,虽然基于的是8.x的版本,但是对于我理解新版本也很有帮助。感谢图书的作者的无私奉献。
 

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

相关文章

  1. 数学建模 -- 岭回归和lasso回归

    来自清风的数学建模课程,主要是用于自己复习看,所以截图较多 标准化:减去均值)除以方差 古典回归模型要满足四个假定 线性假定 严格外生性 保证估计出来的回归系数无偏且一致 扰动项均值为0.并且和自变量不相关 无完全多重共…...

    2024/4/15 0:25:08
  2. Android开发10年,小公司报了薪资没下文,要个20K就这么难么

    0-2 年开发经验 Android 是一个非常复杂的框架,它拥有陡峭的学习曲线。有一些复杂的概念的确是 Native 的 Android 开发者需要学习的,但另一部分却是由于 Android 的原因,造成了它的复杂度。 当你向专业进军时,除了你的软件开发…...

    2024/4/13 20:20:36
  3. 数学建模 -- 聚类模型

    来自清风的数学建模课程,主要是用于自己复习看,所以截图较多 聚类和分类的区别:分类已知类别 聚类未知 K-means算法 评价该算法 优点 算法简单、快速对处理大数据集,该算法相对效率高 缺点 要求用户事先选定蔟的数目K对初值敏…...

    2024/4/7 19:33:33
  4. JAXB 深入显出 - JAXB 教程 利用 Trang 将XML转化为 schema 文件

    摘要: JAXB 作为JDK的一部分,能便捷地将Java对象与XML进行相互转换,本教程从实际案例出发来讲解JAXB 2 的那些事儿。完整版目录学前导读JAXB 支持两种方式的XML与Java Bean 相互转化,上一节介绍的是基于注解的方式,这节主要关于另一种方式 xjc。xjc需要使用到 schema 文件…...

    2024/4/13 20:20:11
  5. nmap“扫描基础”“端口扫描技术”“服务和版本探测”“操作系统探测”“时间和性能”“防火墙/IDS躲避和哄骗”相关参考指南

    端口扫描基础 Nmap所识别的6个端口状态分别是 open(开放的):应用程序正在该端口接收TCP 连接或者UDP报文。 closed(关闭的):对于关闭的端口Nmap也可访问(它接受Nmap的探测报文并作出响应), 但没有应用程序在其上监听。 filtered(被过滤的…...

    2024/4/20 0:50:07
  6. 力扣122 买卖股票的best时机(个人感想)

    这个说用贪心算法,那这个贪心是在哪里贪心呢? 我一开始纠结的是今天不可能知道以后股票的涨跌信息,那怎么判断什么时候卖,什么时候再等等,看评论区发现深红大佬已经给出了清晰明了的解释,顿觉明朗。 在这…...

    2024/4/7 19:33:30
  7. 吴恩达深度学习课程二分分类学习笔记

    遍历整个训练集并不需要for循环。 神经网络的计算过程中有正向传播和逆向传播两个过程。 logistic回归是一个用于二分分类的算法。 二分分类问题的目的: 训练一个分类器 二分分类问题描述: 输入:图片的特征向量x 输出:识别此…...

    2024/5/3 11:47:48
  8. Android应用Preference相关及源码浅析(Preference组件家族篇)

    | public void startWithFragment(……) | 启动一个新的fragment。 | | public void switchToHeader(……) | 在大屏multi-pane模式下切换到fragment显示给定参数的fragment。 | 2-4-2 PreferenceFragment相关属性方法使用基础 翻墙点我查看。PreferenceFragment继承自Fragm…...

    2024/4/13 20:20:21
  9. ubuntu20.04 + OpenLdap 实现企业运维账户管理系统 (下)

    增加ldapPublicKey 由于openLdap默认架构中没有ldapPublicKey, 所以用户无法基于sshkey进行认证,现在要增加ldapPublicKey相关套件 cat openssh-lpk.ldif #添加配置文件# LDAP SSH Public Key schema # Source: https://serverfault.com/questions/653792/ssh-ke…...

    2024/4/7 19:33:27
  10. unidbg第十三讲 unidbg实战

    主要内容 1:使用unidbg 调用函数sub_13558 2:使用unidbg 里的IHookZz进行hook函数sub_13558,读取入参和出参 3:使用unidbg 里的IHookZz进行替换函数sub_13558里的参数 4:使用unidbg 里的IHookZz进行替换函数sub_13…...

    2024/4/19 12:19:32
  11. OpenCV——图像的基础操作(Windows)

    1. 环境依赖和opencv包 opencv-python和opencv-contrib-python...

    2024/4/19 22:36:28
  12. Win10“桌面”移至D盘

    这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…...

    2024/4/13 20:21:22
  13. STM32 芯片系列 下载报错 Contents mismatch at: 08000000H (Flash=00H Required=B0H)

    芯片上锁了,直接下载一个STM32芯片解锁软件擦除flash即可。 STM32 ST-LINK Utility 解锁步骤: 1、连接上芯片 2、擦除 3、擦除完成...

    2024/4/7 19:33:23
  14. GO_包的使用

    包 go代码是以包的形式组织存放的,一个文件夹就是一个包。一个工程中必须有main包,当一个包中想要引入另个包的时候需要注意以下几点。 1.包中允许被其他包使用的函数变量首字母必须大写; 2.在main中必须以import导入包名(从sr…...

    2024/4/13 20:21:02
  15. 达梦数据库大小写敏感介绍

    一、对象名 1.大小写敏感 CREATE TABLE TEST.Abc(COL INT); ------对于创建表,在大小写敏感的情况下,表名Abc不加双引号,系统会自动转换成大写表名ABC 查询情况如下: SELECT * FROM TEST.Abc; ------执行成功SELECT * F…...

    2024/4/13 20:21:22
  16. JavaWeb课程笔记4 HTML中的表单标签

    如表单设计图所示,客户端首先向服务器发送http request,请求login.html网页,服务器接受到请求后经过处理,向客户端发送http response,其中附带了login.html页面。客户端接收到页面后,浏览器将页面解析出来。…...

    2024/4/20 0:56:03
  17. 数学建模 -- 灰色关联分析

    主要用于 系统分析 和 综合评价 非主流 主成分分析不可以综合评价 是用来降维的 案例一:进行系统分析 第一步:画统计图并且分析 第二步:确定分析数列 第三步:对变量进行预处理 去量纲缩小变量范围,简化计算 第四…...

    2024/4/13 20:21:37
  18. Delphi JSON字符串格式化的两个方法

    方法一:需要引用单元:System.JSON,REST.Json 可以格式化 TJSONObject 和 TJSONArray。入口参数,需要格式化的JSON字符串,出口为格式化后的JSON字符串。 function Format_JSON(FJSON: String): String; varJObjectDat…...

    2024/4/25 5:25:51
  19. mysql连接sqlyog连接Javaide

    mysql连接sqlyog连接Javaide MySQL连接图形化管理工具sqlyog Javaide 连接数据库 1、建数据库 2、导入数据库驱动 3、添加数据库 4、添加成功...

    2024/5/3 7:24:24
  20. [深度学习][原创]yolov5在GTX1660Ti上训练nan解决方法

    训练时候box ,obj,cls一直是nan安装任何版本pytorch无效,更换yolov5-6.0最新版本无效 Epoch gpu_mem box obj cls labels img_size 0/273 5.64G nan nan nan 113 640 解决方法&…...

    2024/4/13 20:21:32

最新文章

  1. YOLO自研模块:多尺度轻量化卷积模块

    目录 一、原理 二、代码 三、配置文件 一、原理 不同大小的卷积核,提取目标特征的特征尺度不同,所以通过使用不同大小卷积核的卷积来提取特征就可以保证获取到目标的多尺度特征。 借鉴YOLOv8中,将通道数进行划分的操作,在卷积的输入过程中为了减小参数量,将输入通道数…...

    2024/5/4 0:17:53
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/3/20 10:50:27
  3. 备战蓝桥杯Day37 - 真题 - 特殊日期

    一、题目描述 思路: 1、统计2000年到2000000年的日期,肯定是需要遍历 2、闰年的2月是29天,非闰年的2月是28天。我们需要判断这一年是否是闰年。 1、3、5、7、8、10、12月是31天,4、6、9、11月是30天。 3、年份yy是月份mm的倍数…...

    2024/5/2 2:42:10
  4. C#-实现软删除

    文章目录 前言1. 使用布尔字段标记删除状态2. 修改查询以忽略软删除的记录3. 实现软删除的方法4. 考虑使用全局查询过滤器5. 处理关联实体6. 考虑性能和存储软删除的好处:软删除的坏处: 总结 前言 后端中,经常使用软删除来标志删除一些数据。…...

    2024/4/30 1:36:16
  5. 【外汇早评】美通胀数据走低,美元调整

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

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

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

    2024/5/2 16:16:39
  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/5/3 23:10:03
  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/5/2 15:04:34
  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/5/2 9:07:46
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

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

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

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

    2022/11/19 21:17:18
  26. 错误使用 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
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 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系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...

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

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

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

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

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

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

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

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

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

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

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

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