前言

最近看到公司同事的《iOS内存那些事》系列文章,其中的一篇文章讲了他在研究WebKit中内存管理的时候,发现可以用phys_footprint来衡量内存,其结果和xcode debug显示的值基本一致。文章通读下来,收获颇丰~回味之余,突然脑洞了一下,为啥不直接逆向一下Xcode,学习一下xcode debug app时它是怎么实现内存监控的?刚好最近在自学逆向知识,顺便也来练练手~

动手实践
准备一个小项目
运行一下,我们可以在debug面板看到memory report信息

lldb和hopper的使用
通过如下操作,我们可以直接attach Xcode调试

➜  ~ lldb -n Xcode
(lldb) process attach --name "Xcode"
Process 969 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGSTOPframe #0: 0x00007fffe2bcb34a libsystem_kernel.dylib`mach_msg_trap + 10
libsystem_kernel.dylib`mach_msg_trap:
->  0x7fffe2bcb34a <+10>: retq0x7fffe2bcb34b <+11>: noplibsystem_kernel.dylib`mach_msg_overwrite_trap:0x7fffe2bcb34c <+0>:  movq   %rcx, %r100x7fffe2bcb34f <+3>:  movl   $0x1000020, %eax          ; imm = 0x1000020
Target 0: (Xcode) stopped.Executable module set to "/Applications/Xcode.app/Contents/MacOS/Xcode".
Architecture set to: x86_64h-apple-macosx.
(lldb) c
Process 969 resuming
(lldb)
复制代码
来到Xcode debug面板,可以直接看到app运行时的内存信息。先小试一下那个内存信息栏能否响应点击操作。加个断点,尝试点击一下那个内存栏,bingo,顺利跑到断点处~(lldb) b -[NSResponder mouseUp:]
Breakpoint 1: where = AppKit`-[NSResponder mouseUp:], address = 0x00007fffcb070177
Process 969 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1frame #0: 0x00007fffcb070177 AppKit`-[NSResponder mouseUp:]
AppKit`-[NSResponder mouseUp:]:
->  0x7fffcb070177 <+0>: pushq  %rbp0x7fffcb070178 <+1>: movq   %rsp, %rbp0x7fffcb07017b <+4>: popq   %rbp0x7fffcb07017c <+5>: jmp    0x7fffcaf94724            ; forwardMethod
Target 0: (Xcode) stopped.(lldb)

复制代码
因为Xcode肯定是x86_64架构编译的,所以通过po $rdi,可以看到点击方法的对象是<NSTextField: 0x7fb7aed38280>。第一直觉告诉我,NSTextField是不是类似于UITextField,有text属性可以被赋值?查看了一下apple文档,它的父类NSControl有个stringValue属性可以设置,设断点,发现面板上内存变化时,断点触发了,bt一下,可以看到如下信息(注意,要先确定触发断点的是展示内存的那个NSTextField)

作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS交流群:651612063 进群密码111,不管你是小白还是大牛欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!

(lldb) bt
* thread #1, queue = 'MainQueue: -[DBGLLDBSession processProfileDataString:]_block_invoke', stop reason = breakpoint 1.1* frame #0: 0x00007fffcaef1897 AppKit`-[NSControl setStringValue:]frame #1: 0x0000000125f5b305 DebuggerUI`__54-[DBGGaugeMemoryEditor _setupTopSectionComponentViews]_block_invoke + 955frame #2: 0x0000000106e49e36 DVTFoundation`-[DVTObservingBlockToken observeValueForKeyPath:ofObject:change:context:] + 610frame #3: 0x00007fffced5035d Foundation`NSKeyValueNotifyObserver + 350frame #4: 0x00007fffced4fbf4 Foundation`NSKeyValueDidChange + 486frame #5: 0x00007fffcee8e867 Foundation`-[NSObject(NSKeyValueObservingPrivate) _changeValueForKeys:count:maybeOldValuesDict:usingBlock:] + 944frame #6: 0x00007fffced1395d Foundation`-[NSObject(NSKeyValueObservingPrivate) _changeValueForKey:key:key:usingBlock:] + 60frame #7: 0x00007fffced7c23b Foundation`_NSSetObjectValueAndNotify + 261frame #8: 0x0000000106e8a742 DVTFoundation`__DVTDispatchAsync_block_invoke + 97frame #9: 0x00007fffe2a77524 libdispatch.dylib`_dispatch_call_block_and_release + 12frame #10: 0x00007fffe2a6e8fc libdispatch.dylib`_dispatch_client_callout + 8frame #11: 0x00007fffe2a849a0 libdispatch.dylib`_dispatch_queue_serial_drain + 896frame #12: 0x00007fffe2a77306 libdispatch.dylib`_dispatch_queue_invoke + 1046frame #13: 0x00007fffe2a7b908 libdispatch.dylib`_dispatch_main_queue_callback_4CF + 505frame #14: 0x00007fffcd35bbc9 CoreFoundation`__CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 9frame #15: 0x00007fffcd31cc0d CoreFoundation`__CFRunLoopRun + 2205frame #16: 0x00007fffcd31c114 CoreFoundation`CFRunLoopRunSpecific + 420frame #17: 0x00007fffcc87cebc HIToolbox`RunCurrentEventLoopInMode + 240frame #18: 0x00007fffcc87ccf1 HIToolbox`ReceiveNextEventCommon + 432frame #19: 0x00007fffcc87cb26 HIToolbox`_BlockUntilNextEventMatchingListInModeWithFilter + 71frame #20: 0x00007fffcae15a54 AppKit`_DPSNextEvent + 1120frame #21: 0x00007fffcb5917ee AppKit`-[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 2796frame #22: 0x000000010743d98e DVTKit`-[DVTApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 390frame #23: 0x00007fffcae0a3db AppKit`-[NSApplication run] + 926frame #24: 0x00007fffcadd4e0e AppKit`NSApplicationMain + 1237frame #25: 0x00007fffe2aa4235 libdyld.dylib`start + 1frame #26: 0x00007fffe2aa4235 libdyld.dylib`start + 1

从函数调用栈上,我们可以看出,NSTextField值的变化是通过kvo某个值实现的。image lookup -rn '[DBGGaugeMemoryEditor\,可以发现它位于/Applications/Xcode.app/Contents/PlugIns/DebuggerUI.ideplugin/Contents/MacOS/DebuggerUI, 把二进制文件拖到hooper里看一下-[DBGGaugeMemoryEditor _setupTopSectionComponentViews]_block_invoke的实现。

通过查看相应的实现,可以知道是它通过debugSession实例获取相关信息的,再结合调用栈信息,debugSession肯定就是DBGLLDBSession。同样的,通过lldb,我们可以找到DBGLLDBSession位于/Applications/Xcode.app/Contents/PlugIns/DebuggerLLDB.ideplugin/Contents/MacOS/DebuggerLLDB,企图通过hooper看看它的实现,然而并没看出啥有用信息。只能继续尝试lldb断点。po $rdx打印它的参数,似乎出了一串奇怪的字符串?!

(lldb) b -[DBGLLDBSession processProfileDataString:]
Breakpoint 3: where = DebuggerLLDB`-[DBGLLDBSession processProfileDataString:], address = 0x0000000115f99c52
(lldb) c
Process 4489 resuming
Process 4489 stopped
* thread #30, name = '<DBGLLDBSessionThread (pid=51274)>', stop reason = breakpoint 3.1frame #0: 0x0000000115f99c52 DebuggerLLDB`-[DBGLLDBSession processProfileDataString:]
DebuggerLLDB`-[DBGLLDBSession processProfileDataString:]:
->  0x115f99c52 <+0>: push   rbp0x115f99c53 <+1>: mov    rbp, rsp0x115f99c56 <+4>: push   r150x115f99c58 <+6>: push   r14
Target 0: (Xcode) stopped.
(lldb) po $rdi
<DBGLLDBSession: 0x7f9c998bec90>(lldb) po $rdx
num_cpu:8;host_user_ticks:3332988;host_sys_ticks:2148237;host_idle_ticks:23546214;elapsed_usec:1513647973058229;task_used_usec:43128;thread_used_id:1;thread_used_usec:841463;thread_used_name:;thread_used_id:4;thread_used_usec:595;thread_used_name:;thread_used_id:5;thread_used_usec:2130;thread_used_name:576562546872656164;thread_used_id:6;thread_used_usec:3012;thread_used_name:636f6d2e6170706c652e75696b69742e6576656e7466657463682d746872656164;thread_used_id:11;thread_used_usec:255;thread_used_name:;total:17179869184;used:14274596864;rprvt:0;purgeable:0;anonymous:57823232;energy:98435210380;

google大法,lldb源码查看
随便抽了一个关键字host_sys_ticks,google了一下,发现这串字符,竟然来自lldb项目里的debugserver!先查看了一下本机的lldb版本(lldb-900.0.45),在apple open source的官网上没找到这个版本的lldb。无奈下只能去lldb官网clone了一份最新的代码,虽然不知道apple是基于哪个lldb版本开发的,但是看最新的实现总不会错~

通过查看debugserver源码,可以发现前面那串字符串是在std::string MachTask::GetProfileData(DNBProfileDataScanType scanType)生成的,里面有各种profile信息,比如cpu,memory等。

大胆猜想一下,Xcode的内存监控正是定时通过获取debugserver的这个方法的信息来展示的!!!

另外,关于debugserver,可以看这里的介绍。简单来说,它是运行在ios上的一个可以接受lldb前端命令的『远程调试』服务器。在越狱设备上,可以通过它做很多trick,这里暂且不表。

验证
初步
扒出memory profile的代码实现如下:

static void GetPurgeableAndAnonymous(task_t task, uint64_t &purgeable,uint64_t &anonymous) {
#if defined(TASK_VM_INFO) && TASK_VM_INFO >= 22kern_return_t kr;mach_msg_type_number_t info_count;task_vm_info_data_t vm_info;info_count = TASK_VM_INFO_COUNT;kr = task_info(task, TASK_VM_INFO_PURGEABLE, (task_info_t)&vm_info,&info_count);if (kr == KERN_SUCCESS) {purgeable = vm_info.purgeable_volatile_resident;anonymous =vm_info.internal + vm_info.compressed - vm_info.purgeable_volatile_pmap;}#endif
}

再看看前面获取的anonymous的字节值,57823232对应的正是55.1445007MB,即debug内存面板展示的值!

这里再附上同事发现的WebKit内存计算公式,可以比较一下理解,具体参看这里,搜索一下phys_footprint便知。

phys_footprint = (internal - alternate_accounting) + (internal_compressed - alternate_accounting_compressed) + iokit_mapped + purgeable_nonvolatile + purgeable_nonvolatile_compressed + page_table

具体

本来按理说是应该直接把上述代码拷出来具体执行进一步确认一下。但是意外的找到了一个偷懒的方法。既然Xcode是通过debugserver获取到相关信息,那么有没有办法直接和debugserver交互来获取信息呢?

继续翻看了一下lldb代码,lldb前端确实就存在相应的命令来触发debugserver执行。

通过代码可以发现std::string MachTask::GetProfileData(DNBProfileDataScanType scanType)会在RNBRemote接受到消息包qGetProfileData时执行,而lldb原来可以直接通过process plugin packet send命令来给debugserver发送包命令。

换句话说,也就是直接在Xcode终端直接执行命令验证

结合lldb脚本的使用,目测验证起来并不难。

当然,最终可能还是要直接拷出一下那段代码验证一下,这个后面有空再试试。

总结

虽然咋看下来全文一路顺畅,但是作为一名逆向新手,中间还是遇到了不少问题,不过收获也是很大滴~

lldb和hopper确实很强大,深入学习一下lldb源码还是有必要的,其中还是有不少有趣的地方值得挖掘。

通过Xcode debug机制的原理探寻,我们可以学习它的profile实现并且自己撸一遍做一套性能监控.

推荐

点击进群交流 密码:111

在这里插入图片描述

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

相关文章

  1. 谁再问我如何写出没有Bug的代码,我上去就是一jio!

    本文的一些观点可能会有少部分人不赞同,我也只是简单表达一下自己的想法。1947 年 9 月 9 日,美国海军准将 Grace Hopper 在哈佛学院计算机实验室里使用 MarkII 和 MarkIII 计算机进行研究工作。她的团队跟踪到 MarkII 上的一个错误,操作人员发现是由于一只飞蛾钻到了 MarkI…...

    2024/4/24 8:44:13
  2. SpringCloud注册中心的服务治理

    源于蚂蚁课堂的学习,点击这里查看(老余很给力) 前言 所谓服务治理,就是管理服务之间相互依赖调用的混乱。没有注册中心前,服务之间调用其实是通过配置文件指定需要访问服务的ip、端口等访问信息的, 这样一旦被调用方地址信息发生变化,调用者需及时修改其配置,再重新发布…...

    2024/4/24 8:44:11
  3. Linux下MySQL定时自动完整备份(mysqldump+crontab)

    1、本文主要内容实现数据库全量备份实现定时执行备份实现定时清理7天之前的备份2、工具mysql,mysqldump,crontab1、备份目录准备#mysql专用目录mkdir /mysql#mysql备份目录mkdir /mysql/backup#mysql备份脚本mkdir /mysql/backup/scripts#mysql备份文件mkdir /mysql/backup/fil…...

    2024/5/8 14:35:15
  4. Python导入包时,包名下有红线

    选中当前文件夹,右键,选择 Mark Directory as,将当前文件夹选中为Sources Root与 Resource Root...

    2024/4/26 8:26:56
  5. 【Linux】 文件的归档(打包)与压缩处理

    一、文件的压缩与解压缩1、常见的压缩文件扩展名*.gzgzip程序压缩的文件*.bz2bzip2程序压缩的文件*.tartar程序打包的数据,并没有经过压缩*.tar.gztar程序打包的文件,其中经过gzip的压缩*.tar.bz2tar程序打包的文件,其中经过bzip2的压缩2、Linux上常见的压缩命令:gzip 与 b…...

    2024/5/8 20:09:35
  6. CentOS 6/7系统更改Mysql 5.7的默认字符集编码为utf8

    查看当前字符集编码 [root@localhost ~]# mysql -uroot -p123qqq...A ... mysql> show variables like %char%; +--------------------------------------+----------------------------+ | Variable_name | Value | +--------…...

    2024/4/24 8:44:05
  7. 英文单词排序(PTA-武理-C实验)

    本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出。如果长度相同,按照输入的顺序不变。 输入格式: 输入为若干英文单词,每行一个,以#作为输入结束标志。其中英文单词总数不超过20个,英文单词为长度小于10的仅由小写英文字母组成的字符串。 输出格…...

    2024/5/8 15:09:38
  8. 怎样在视频流媒体服务器里实现RTSP h265转RTMP?

    RTSP H.265到RTMP,首先需要扩展RTMP协议。目前,我国已有相应的推广标准,国内开发商基本上都是按照该协议进行推广的。协议层面的问题已经得到解决。剩下的关键问题是实现RTMP H.265推送模块。rtmp h265 server 支持,目前常用的nginx-rtmp 和 srs还不支持rtmp h265,需要做些…...

    2024/4/24 8:44:06
  9. redis5.0配置文件 超详细!!!

    # redis版本 5.0# 如果想要使用到配置文件,Redis服务必须以配置文件的路径作为第一个参数启动。如: ./redis-server /path/to/redis.conf# 单位说明:当需要指定内存大小时,可能会用到不同的单位,如1k、5GB、4M等,这里给出其单位含义: # 指定单位是大小写不敏感。如1GB、1…...

    2024/4/24 8:44:02
  10. 使用VisualStudio2017跑网传最多的张正友相机标定算法遇到的debug超级慢的问题

    最近在做一个相机标定的作业 使用了网传最多的博客代码,如下链接: 1 2 使用Visual Studio2017,下载Opencv3.4.10(opencv3最新版本) 在环境变量中部署完毕之后,在VS工程当中开始配置活动解决方案以及活动解决方案平台,如下图:再对解决方案属性进行配置,如下图:这样下来是可…...

    2024/4/24 8:44:02
  11. Hyperf 使用 Elasticsearch 增删改查基本方法

    <?phpdeclare (strict_types = 1);namespace App\Elasticsearch;use Hyperf\Elasticsearch\ClientBuilderFactory;use Hyperf\Utils\ApplicationContext;class Elasticsearch{/*** @var ContainerInterface*/protected $container;protected $es_client;/*** 实例化客户端对…...

    2024/4/24 8:44:01
  12. MySQL | MySQL 数据库系统(四)- 数据库的备份与恢复

    前言 大家在日常的工作中,备份数据其实是信息安全管理重要的工作之一。那么,我们在这篇文章中将介绍一下数据库的备份与恢复。MySQL 数据库的备份同时有多种方式。第一:直接打包数据库文件夹/etc/local/mysql/data,或者我们使用工具来进行备份。 1、备份数据库 通过mysqldum…...

    2024/4/24 8:43:59
  13. flutter自定义dialog 实现宽度自定义 界面自定义

    效果大致思路 1、弹框整体实现 和写界面是一样的 毕竟flutter中 一切皆组件 界面 弹框 按钮。。。。都是组件 2、样式和跳转要进行处理 背景色透明效果有两种实现方式 a、界面跳转中opaque: false可以设置下个界面背景透明 b、使用showDialog进行新界面跳转 3、布局中使用Mater…...

    2024/4/24 8:44:00
  14. 对象的创建过程

    类的生命周期Java中对象的创建就是在堆上分配内存空间的过程,此处说的对象创建仅限于new关键字创建的普通Java对象,不包括数组对象的创建。对象创建过程1.检测类是否被加载当虚拟机执行到new时,会先去常量池中查找这个类的符号引用。如果能找到符号引用,说明此类已经被加载…...

    2024/4/28 5:12:45
  15. 关于oracle 11g 循环多判断+continue 用法例子

    CREATE OR REPLACE PROCEDURE PRC_PUB_COMPANY_UP is /****** VERSION : 1.0 AUTHOR : Rebirth_zhujl CREATE_TIME : 20200513 PURPOSE : 部门组归属重新分配 ***/ V_ERRCODE VARCHAR(200); V_ERRMSG VARCHAR(300); V_COUNT VARCHAR2(…...

    2024/4/24 8:44:03
  16. java大数据学习路线

    目录: 一.大数据方向工作介绍 二.大数据工程师的技能要求 三.大数据学习路径 四.学习资源推荐(书籍、博客、网站)一.大数据方向工作介绍大数据方向的工作目前分为三个主要方向: 01.大数据工程师 02.数据分析师 03.大数据科学家 04.其他(数据挖掘本质算是机器学习,不过和数据…...

    2024/4/16 14:10:31
  17. 阅读笔记(2019)Deep Learning for Anomaly Detection: A Survey

    原文:https://www.researchgate.net/publication/330357393_Deep_Learning_for_Anomaly_Detection_A_Survey 论文首先对基于深度学习的异常检测的研究方法进行了系统全面的概述。此外,还回顾了这些方法在不同应用领域中的应用,并评估了它们的有效性。 根据基本的假设和采用的…...

    2024/4/16 14:10:21
  18. 五、树(下)9.Huffman Codes

    目录问题描述代码解题思路出现的问题 问题描述 In 1953, David A. Huffman published his paper “A Method for the Construction of Minimum-Redundancy Codes”, and hence printed his name in the history of computer science. As a professor who gives the final exam …...

    2024/4/16 14:10:21
  19. 4. 寻找两个正序数组的中位数---这题目没有解决,待研究

    题目来源 LEETCODE 题目解析 中位数: 如果某个有序数组长度是奇数,那么其中位数就是最中间那个,如果是偶数,那么就是最中间两个数字的平均值 合并取中先将两个数组合并,两个有序数组的合并也是归并排序中的一部分。然后根据奇数,还是偶数,返回中位数 时间复杂度:遍历全…...

    2024/5/7 0:25:11
  20. Docker中安装mysql

    镜像仓库:https://hub.docker.com/ 搜索mysql镜像这里有版本显示。 我们可以根据需要下载对应的镜像 docker pull mysql使用docker pull mysql 下载镜像 默认下载最新的也可以使用 docker pull mysql:5.7 下载指定版本 docker pull mysql:5.7 安装完成之后查看镜像 docker ima…...

    2024/4/24 8:43:55

最新文章

  1. 网盘应用:桌面端界面欣赏,这个赛道容不下小玩家。

    网盘&#xff08;Cloud Storage&#xff09;是一种云存储服务&#xff0c;允许用户在互联网上存储、管理和共享文件。它提供了一个在线的虚拟硬盘&#xff0c;用户可以通过网络将文件上传到云端&#xff0c;并随时随地访问和管理这些文件。 阿里云盘...

    2024/5/8 20:11:12
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/5/7 10:36:02
  3. 【C++】C++中的list

    一、介绍 官方给的 list的文档介绍 简单来说就是&#xff1a; list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。list的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点中…...

    2024/5/5 8:49:36
  4. 分享一个基于Multi-SLAM+3DGS的新一代三维内容生产技术

    基于智能空间计算&#xff0c;新一代超逼真三维内容生成技术。 可自动化生成超逼真的大场景三维模型&#xff0c;并在各类终端和空间计算设备中&#xff0c;实现前所未有的沉浸式体验。 更可接入专业三维软件和应用平台&#xff0c;进行深度的模型开发与场景落地。 支持超大复杂…...

    2024/5/7 9:53:16
  5. 【外汇早评】美通胀数据走低,美元调整

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

    2024/5/8 6:01:22
  6. 【原油贵金属周评】原油多头拥挤,价格调整

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

    2024/5/7 9:45:25
  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/7 14:25:14
  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/7 11:36:39
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

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

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

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

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

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

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

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

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

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

    2024/5/7 9:26:26
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

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

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

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

    2024/5/8 19:33:07
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

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

    2024/5/5 8:13:33
  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/6 21:42:42
  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