初识Android进程间通信Binder机制
先大概描述下Android中S/C架构的基本面貌
由于采用linux内核,所以用户空间中得进程地址空间都是独立的,如果用户空间进程AB之间想进行通信,可以先将用户空间进程A要发送信息发送到内核,由于内核中得地址空间对于每个进程都是一样的,所以用户空间进程B可以读取内核收到的信息。
Android中得binder机制就是将这种调用进行了封装,将用户空间的进程分为三类,client,service,ManagerService
其中的ManagerService作用是记录所有的service信息,client访问service前先到ManagerService处去查询有无此服务
常用有如下情形1:添加service服务
过程
第一步:获取ManagerService服务代理BpBinder(0)和BpManagerService
第二步:通过BpManagerService中得addService方法将服务的一些信息打包,然后通过BpBinder(0)将信息发送到内核,等待ManagerService进程来读取,因为ManagerService进程中有一个Loop一直读取内核信息,所以很快就获取了service发给内核的信息,ManagerService进程就将service服务的一些信息添加到维护的列表中,将添加的结果发送给内核,然后service等到内核有回复后返回,将返回的信息解码分析。
第三步:执行一个Loop来从内核读取client的请求
代码
如下是添加一个service的代码
第一步:
sp<ProcessState> proc(ProcessState::self());
sp<IServiceManager> sm = defaultServiceManager();
第二步:
defaultServiceManager()->addService(String16("media.player"),new MediaPlayerService());
第三步:
ProcessState::self()->startThreadPool();
IPCThreadState::self()->joinThreadPool();
代码分析
sp<ProcessState> proc(ProcessState::self());
创建一个ProcessState实例
ProcessState::mDriverFD=open_driver()
ProcessState::mVMstart = mmap(…,mDriverFD,…);
mmap(0,…,mDriverFD,0);//只是让通信更快,可以当作没有,直接用read/write(mDriverFD);
sp<IServiceManager> sm = defaultServiceManager();
主要执行如下代码
sp<IServiceManager> gDefaultServiceManager =interface_cast<IServiceManager>(PorcessState::self()->getContextObject(NULL));
其中PorcessState::self()->getContextObject(NULL)就是执行PorcessState::getStrongProxyForHandle(0);其主要是根据给定的参数(此处为0)创建对应的sp<IBinder> b = new BpBinder(0);
这边先说明interface_case这个模版类,这个模版类作用是将服务xxxService对应的BpBinder(x)转化为对应的BpxxxService如下:
sp<IxxxService> BpxxxService= interface_cast<IxxxService>(newBpBinder(x));
其本质是调用给定类型参数的asInterface方法,也就是IxxxService::asInterface(new BpBinder(x)),IxxxService继承publicIInterface
IxxxService用宏DECLARE_META_INTERFACE(xxxService)和IMPLEMENT_META_INTERFACE(xxxService,”android.os.IxxxService”)来实现asInterface方法,展开后如 new BpxxxService(new BpBinder(x)),这样就从BpBinder(x)得到了BpxxxService
如本例中给定的类型参数是IServiceManager,所以上述等价于
sp<IServiceManager> gDefaultServiceManager =IServiceManager::asInterface(new BpBinder(0)); IServiceManager继承publicIInterface
其中用宏DECLARE_META_INTERFACE(ServiceManager) 和IMPLEMENT_META_INTERFACE(ServiceManager,”android.os.IServiceManager”)来实现asInterface方法,这个asInterface方法最终执行new BpServiceManager(new BpBinder(0));
也就是sp<IServiceManager> sm = newBpServiceManager(new BpBinder(0));
由此得到BpBinder(0)和BpServiceManager
从这里可以得出,如果自己创建服务xxxService,按如下步骤
创建类 class IxxxService:publice IInterface
{
DECLARE_META_INTERFACE(xxxService);//声明asInterface方法
virtual function();//虚函数,由BpxxxService实现
…
}
IMPLEMENT_META_INTERFACE(xxxService,”android.os.IxxxService”);//定义asInterface
展开相当于sp<IxxxService>IxxxService::asInterface(BpBinder){
return new BpxxxService
}
当有这个服务的Bpbinder(x)后可通过如下获取BpxxxService
sp<IxxxService>sm = new BpxxxService (new BpBinder(x));
注意:
1:BpxxxService类型为sp<IxxxService>
2:BpBinder(x)相当于xxxService对应binder实体的代理
3:客户端为什么要通过BpBinder(X)再创建一个BpxxxService呢?因为BpxxxService对象的基类中的一个mRemote变量就是Bpbinder(x),那为什么不直接用BpBinder(x)呢?因为BpxxxService对象中还实现了一些BpBinder(x)没有的业务逻辑(实现基类IxxxService中的方法)如BpServiceManager中提供了addService方法,这些方法在服务端有对应的服务,如addService方法将请求的命令”addService”和数据打包成Parcel类型,然后通过BpBinder(x)发送给xxxService,其实先发给驱动中binder设备,xxxService服务中会有Loop循环一直读取binder设备的消息,读取消息后解析成命令+数据,然后根据命令如”addService”会调取对应的服务,然后将结果反馈给binder设备,客户端接收到binder设备的反馈后将返回的数据也解析成命令+数据,然后根据命令和数据执行相应的逻辑
客户端 通过BpxxxService中方法将数据打包 -->Bpbinder(x)--> binder设备 --> 服务端Loop 获取数据解析成命令+数据-->调取命令指定的服务其中会涉及BBinder和BnxxxService,返回数据
客户端 解析返回的数据并执行相应逻辑 <--Bpbinder(x)<-- binder设备 <-- 服务端返回数据
由上可知,创建的服务还需创建BnxxxService和BpxxxService
class BpxxxService : public BpInterface<IxxxService>
{
…
vitural function(){
Parcel data,reply;
data.writeInterfaceToken(IxxxService::getInterfaceDescriptor());
data.writeInt32(pid);
remote()->transact(命令码,data,&reply);
}
}
class BnxxxService: public BnInterface<IxxxService>
{
public:
vitrual status_t onTransact(uint32_tcode,const Parcel& data,Parcel* reply,uint32_t flags = 0);
}
IMPLEMENT_META_INTERFACE(xxxService,”android.xxxService.IxxxService”);
status_t BnxxxService::onTransact(uint32_tcode,const Parcel& data,Parcel* reply,uint32_t flags)
{
switch(code){
case 命令码:
CHECK_INTERFACE(IxxxService,data,reply);
function()//自己实现的逻辑
break;
…
}
defaultServiceManager()->addService(String16("media.player"),new MediaPlayerService());
通过BpServiceManager(类型为sp<IServiceManager>)将数据打包成含”addService”命令,类型为parcel data的数据,调用BpBinder(0)这个对象的transact(),最终调到IPCThreadState::self()->transact(),
下面分析IPCThreadState,你暂时只需要知道每个线程有一个IPCThreadState实例,实例有属性mIn,mOut,其中mIn用来接受来自binder设备的parcel类型数据,mOut用来存储发往binder设备的parcel类型数据,IPCThreadState::self()->transact()最终完成与binder设备的交互,这个接口中先调用writeTransactionData把parcel类型的数据和int32_t类型的命令码封装成binder_transaction_data类型数据放到IPCThreadState实例的mOut中去,接下来IPCThreadState::self()->transact()会调用IPCThreadState::self()->waitForResponse接口,其中会调用talkWithDriver()与binder设备交换数据(talkwithDriver主要是实现是ioctl(mProcess->mDriverFD,BINDER_WRITE_READ,&bwr)),将返回来的数据存于IPCThreadState实例的mIn,然后调用executeCommand()根据mIn中得命令码和数据来解析,来调用各种业务逻辑
ServiceManager这个服务的Loop循环实现代码见下面:
struct binder_state *bs;
void *svcmgr = BINDER_SERVICE_MANAGER;
bs = binder_open(128*1024);//应该是打开binder设备吧
binder_become_context_manager(bs) //成为manager
svcmgr_handle = svcmgr;
binder_loop(bs, svcmgr_handler);//Loop
new MediaPlayerService(),MediaPlayerService继承BnMediaPlayService,BnMediaPlayService继承BnInterface, BnInterface继承BBinder ,BBinder继承 IBinder,所以MediaPlayerService继承了IBinder,addService第二个参数类型是IBinder 实例一个MediaPlayService也就是实例一个BnMediaPlaySerivce
ProcessState::self()->startThreadPool();
IPCThreadState::self()->joinThreadPool();
创建一个MediaPlayerService服务后(也就是创建一个BnMediaPlaySerivce)后,将其加入serviceManage维护的一个列表中,接下来,BnMediaPlaySerivce也该起到服务的作用,创建一个Loop等待客户端client的请求,所以应该也有一个循环,也就是如下两段代码的作用
ProcessState::self()->startThreadPool();
IPCThreadState::self()->joinThreadPool();
先分析ProcessState::self()->startThreadPool();
其调用
sp<Thread> t = new PoolThread(isMain);isMain是TRUE
t->run(buf);//这句话会导致t->threadLoop调用,这里面执行了IPCThreadState::self()->joinThreadPool(mIsMain);
所以归根结底最后都调用IPCThreadState::self()->joinThreadPool(mIsMain);
这里面主要是执行一个循环,
do {
int32_tcmd;
result =talkWithDriver();
result =executeCommand(cmd);
}
} while (result != -ECONNREFUSED && result !=-EBADF);
总结:调用talkWithDriver()与binder设备交换数据(talkwithDriver主要是实现是ioctl(mProcess->mDriverFD,BINDER_WRITE_READ, &bwr)),将返回来的数据存于IPCThreadState实例的mIn,然后调用executeCommand()根据mIn中得命令码和数据来解析,来调用自己(此处是BnMediaPlaySerivce)的各种业务逻辑,例如如果受到的命令是BR_TRANSACTION则会调用reinterpret_cast<BBinder*>(tr.cookie)->transact(tr.code,buffer,&reply, tr.flags);结果调用BnMediaPlaySerivce的oNTransact方法
这里面会根据获取的mIn中得命令码和数据来调用不同的业务逻辑,然后派发到派生类MediaService(自己创建的)的函数,由他们完成实际的工作
常用有如下情形2:client访问某个服务service
过程
第一步:获取ManagerService服务代理BpBinder(0)和BpManagerService
第二步:通过BpManagerService中得getService方法将服务的一些信息打包,然后通过BpBinder(0)将信息发送到内核,等待ManagerService进程来读取,因为ManagerService进程中有一个Loop一直读取内核信息,所以很快就获取了client发给内核的信息,ManagerService进程将client想知道的东西发送给内核,client等到内核有回复后返回,将返回的信息解码分析已得知有无某个service服务,如果有这个service则返回的信息中有这个service的Bpbinder(x),client可以通过sp<Iservice>Bpservice= interface_cast<Iservice>( Bpbinder(x));来获取BpService,BpService中有与service对应的服务
第三步:访问服务
client访问这些服务前先调BpService中对应特定服务其将数据及命令打包,通过Bpbinder(x)将信息发送到内核,应为service也有一个Loop一直在读取内核信息,所以service很快就获取了client发来的信息,解析后根据信息中得命令码将数据发送到Bnservice对象包含的方法中进行解析,然后将处理后的数据发送给内核,client等到内核的受到的消息后返回,将返回的消息解码然后处理
代码
如下是client获取service的的代码
第一步:
sp<ProcessState> proc(ProcessState::self());
sp<IServiceManager> sm=defaultServiceManager();
见上
第二步:
sp<IBinder> binder = sm->getServices(String16(“media.player”));
sp<IMediaPlayService> sMediaPlayService =interface_cast<IMediaPlayService>(binder);
见上
第三步:
略
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 高效能人士的7个习惯读书笔记
第一章 认识自己 针对我们是怎么样的一种人而认清自己.有人总是以为能够日天日地无所不能,有人总是觉得自己一无是处悲天悯人,有人觉得自己资质平庸平凡一生,这些人的根源就是在于不能够认清自己;我自己一开始在没有读这本书之前我觉得我能知晓很多道理,可是偏偏做不到,其实我相…...
2024/4/20 2:51:09 - 2019最新零基础21天搞定Python分布式爬虫(分布式网络爬虫入门进阶项目实战)
课程简介:适用人群1、有Python基础,想学习爬虫的。2、想系统学习网络爬虫的。3、想学习分布式爬虫的。课程概述本课程完全从零基础出发,只要你有一点Python基础就可以听懂本课程!课程从基础到高级,让你21天破茧成蝶成为高级爬虫工程师!下载地址:百度网盘课程目录:第一部…...
2024/5/7 2:47:06 - 听说你Binder机制学的不错,来面试下这几个问题(一)
https://www.jianshu.com/p/adaa1a39a274 有图有真相...
2024/4/17 4:03:55 - 关于爬虫本地JS Hook的研究
0x00 背景介绍最早的爬虫,只需要能够从服务端获取到HTML代码,进行分析即可,随着Web2.0的普及,越来越多的网站都必须JavaScript解析之后才能正常显示。因此这也对爬虫提出了新的要求,当前前人们已经在爬虫中集成Webkit等框架来满足这样的需求。 本文将从实际漏洞扫描器项目…...
2024/4/19 1:10:07 - Android进程间通信Binder机制
以下皆为个人理解,如有不妥之处请谅解。首先是一些基础知识,IBinder 是一个接口 , Binder 是实现 IBinder的一个类; 写一个Binder类可以通过AIBL 或者自己手动,这里以AIDL为例 ; 以下是经过AIDL得到的Binder类代码结构(只写出重点部分,并不完整):</pre><pre …...
2024/4/22 13:19:24 - Matlab 使用squeeze函数提取多维矩阵的某一维
在图像处理领域,经常需要对每个像素提取特征,保存为一个三维矩阵。例如对大小为100*150的图像提取SIFT特征,就会得到100*150*128的三维矩阵(A)。如果想要索引任意一个像素(如坐标(2,3)的对应像素)的特征向量,直接对A索引A(2,3:)得到的是一个1*1*128的三维矩阵b,而不…...
2024/4/17 4:03:19 - 《高效能人士的七个习惯》--行动比知识更重要
Normal07.8 磅02falsefalsefalseMicrosoftInternetExplorer4这本书就放在我的枕边 , 它是一本激励我不断思考、不断反思的好书。之所以称为好书,是因为我与书中的许多价值观是相同的,与书中看问题的出发点是一致的,但我却不能像作者那样准确而清晰的表达出来。阅读这本书的时…...
2024/4/17 4:03:43 - ActivityGroup基本菜单
ActivityGroup可以让多个Activity同时运行在一个屏幕上准备图片,它们的名字分别为:picture、menu_exit、menu_main、menu_more、 menu_news、menu_selected、menu_sms、pic_m。在main.xml中:<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/androi…...
2024/4/26 14:46:23 - 《高效能人士的七个习惯》开篇
开篇就击中了我的两大软肋,一是看书经常是看过后就想不大起来了,二是有点过于在意别人对我的看法,导致我的生活都受到了影响。BY《高效能人士的七个习惯》...
2024/4/18 12:36:01 - java实现微信公众号授权登录获取用户信息流程
参考地址微信公众号开发文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432前提:需要申请认证的微信公众号;获取对应的APPID和APPSECRET;并且还需要获取到用户信息权限(点击“修改“添加服务器的域名地址),前期工作安装测试账号为例给大家展…...
2024/4/18 17:47:58 - Activity与ActivityGroup生命周期问题
为了查看Activity切换经历的生命周期,首先看下面代码:布局文件main.xml文件<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vert…...
2024/5/7 0:42:00 - 最基本的网页爬虫(数据采集)
经常看到一些交流网页爬虫的初学者来问有没有教程,什么是爬虫呢?(ps:不是爬虫类,记得最搞笑的是一个交流这个主题的群,有人进来发广告,广告的内容则是卖蜥蜴、变色龙之类的爬虫)。ok,言归正传,什么是网络爬虫呢?网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间…...
2024/4/19 18:40:35 - Binder机制分析(1)——Binder结构简介
本文是对《Android技术内幕-系统卷》第三章的摘抄和整理。一。Binder 介绍 Binder机制实际上就是一个类似于C/S的构架:客户端进程要想与服务端进程通信就必须在客户端建立一个服务端进程代理对象,然后将请求发送到代理对象上;代理对象通过Binder驱动将请求转发给服务端进程处…...
2024/5/6 19:49:12 - ASP.NET微信公众号开发实记之一 接入配置
第一步:填写服务器配置 登录微信公众平台官网后,在公众平台后台管理页面 - 开发者中心页,点击“修改配置”按钮,填写服务器地址(URL)、Token和EncodingAESKey,其中URL是开发者用来接收微信消息和事件的接口URL。Token可由开发者可以任意填写,用作生成签名(该Token会和…...
2024/4/17 4:05:01 - 高效能人士七个好习惯
只有事业,是成功吗? “我曾为自己定下许多目标,也都一一达成。我的事业十分成功,却牺牲了个人与家庭幸福,这值得吗?”“我要做的事太多了,时间却不够用,每天都觉得好紧张,匆匆忙忙。我无法过着理想中既充实又自在的生活,而且别无选择”“我拥有财富和成就感,可失去内…...
2024/5/6 18:51:32 - matlab中调用cplex 以及使用 Yalmip 工具箱
一、首先需要在IBM的官网上下载cplex的安装包下载地址:http://www-01.ibm.com/software/websphere/products/optimization/cplex-studio-community-edition/.其中community-edition可以免费试用,但最多只能计算1000个变量或1000个约束条件的优化问题。而扩展版则需 要购买,价…...
2024/5/7 4:02:41 - Python 进行数据的爬取(网络爬虫)
随着大数据时代的来临,数据的价值也越来越大,因此如何获取网络上的数据也是许多程序员的必备知识之一。本人作为某上市公司爬虫组的一员,有过一定的爬虫经验,将简单介绍一下爬虫以及爬虫常用到的一些相关技术,希望对大家有所帮助。本 Chat 的主要包括以下几个方面:什么是…...
2024/4/19 6:07:46 - Android系统篇之----Binder机制和远程服务调用
编码美丽 2016-09-10 09:09一、前景概要 最近要实现Android中免注册Activity就可以运行的问题,那么结果是搞定了,就是可以不用在AndroidManifest.xml中声明这个Activity即可运行,主要是通过骗取系统,偷龙转凤技术的,这个知识点后面会详细讲解的,因为在研究了这个问题过程…...
2024/4/25 7:24:32 - MATLAB 显示输出数据的三种方式
1.改变数据格式当数据重复再命令行窗口时,整数以整形形式显示,其他值将以默认格式显示。MATLAB的默认格式是精确到小数点后4位。如果一个数太大或太小,那么将会以科学记数法的形式显示。比如:>> x=100.11x =100.1100>> y=1001.1y =1.0011e+03>> z=0.0001…...
2024/5/2 7:18:30 - 网络爬虫设计中需要注意的几个问题
做网络爬虫是件很有意义的事情。首先,它可以是一个专门的职业。从公司层面讲,业务和战略可能都需要很多数据进行多维度分析,所以现在很多公司都有专门的爬虫工程师负责设计数据采集系统;其次,很多公司以爬虫为生,爬虫就是他们用来赚取利润的最主要手段,比如说各大搜索引…...
2024/4/20 13:14:59
最新文章
- 机器学习之基于Jupyter中国环境治理投资数据分析及可视化
欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 机器学习之基于Jupyter中国环境治理投资数据分析及可视化项目是一个结合了机器学习和数据可视化技术的项目…...
2024/5/7 12:11:37 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/5/7 10:36:02 - 方案分享 | 嵌入式指纹方案
随着智能设备的持续发展,指纹识别技术成为了现在智能终端市场和移动支付市场中占有率最高的生物识别技术。凭借高识别率、短耗时等优势,被广泛地运用在智能门锁、智能手机、智能家居等设备上。 我们推荐的品牌早已在2015年进入指纹识别应用领域ÿ…...
2024/5/5 9:24:11 - Vue ts 如何给 props 中的变量指定特定类型,比如 Interface 类的
Vue ts 如何给 props 中的变量指定特定类型,比如 Interface 类的 我有一个这样的变量值类型 一、在没用 ts 之前的 props 类型指定方式 我们都知道之前在没用 ts 之前的 props 变量值类型指定方式: 如下图,billFood 定义方式是这样的&…...
2024/5/6 20:21:12 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/7 5:50:09 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/7 9:45:25 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到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/7 11:36:39 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和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/7 9:26:26 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
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