Binder机制分析(1)——Binder结构简介
本文是对《Android技术内幕-系统卷》第三章的摘抄和整理。
一。Binder 介绍
Binder机制实际上就是一个类似于C/S的构架:客户端进程要想与服务端进程通信就必须在客户端建立一个服务端进程代理对象,然后将请求发送到代理对象上;代理对象通过Binder驱动将请求转发给服务端进程处理;当处理完成之后,再次通过Binder驱动传回给代理对象,客户端从代理对象获取响应信息。
client和service之间通过binder通信,但是两者都不会直接与Binder driver打交道,而是交给Binder Adapter来做。
Binder Adapter由ProcessState和IPCThreadState组成。
其中ProcessState类中包含了通信细节,利用open_binder打开Linux设备dev\binder。
每个进程只有一个ProcessState对象,ProcessState是一个singleton类型,其作用是维护当前进程中的所有Service代理。一个客户端进程可能需要多个Service的服务,这样可能会创建多个Service代理,客户端进程中的ProcessState对象就负责维护这些Service代理。
每一个线程中都会有一个IPCThreadState对象,它主要负责Binder数据读取、写入和请求处理框架。
1. ProcessState分析
1.1 ProcessState::self()的实现
sp<ProcessState> ProcessState::self()
{
if (gProcess != NULL) return gProcess;
AutoMutex _l(gProcessMutex);
if (gProcess == NULL) gProcess = new ProcessState;
return gProcess;
}
ProcessState放置在全局变量gProcess中,如果gProcess为NULL,则新建一个ProcessStat
1.2 ProcessState::ProcessState()的实现
ProcessState::ProcessState()
: mDriverFD(open_driver())//打开Binder设备驱动
, mVMStart(MAP_FAILED)//映射内存的起始地址
, mManagesContexts(false)
, mBinderContextCheckFunc(NULL)
, mBinderContextUserData(NULL)
, mThreadPoolStarted(false)
, mThreadPoolSeq(1)
{
if (mDriverFD >= 0) {
#if !defined(HAVE_WIN32_IPC)
//将fd映射为内存
mVMStart = mmap(0, BINDER_VM_SIZE, PROT_READ, MAP_PRIVATE | MAP_NORESERVE,
mDriverFD, 0);
if (mVMStart == MAP_FAILED) {
close(mDriverFD);
mDriverFD = -1;
}
#else
mDriverFD = -1;
#endif
}
if (mDriverFD < 0) {
}
}
该构造函数首先通过open_driver()打开Binder设备驱动(/dev/binder),然后通过ioctrl建立基本的通信框架。
1.3 getStrongProxyForHandle的实现
sp<IBinder> ProcessState::getStrongProxyForHandle(int32_t handle)
{
sp<IBinder> result;
AutoMutex _l(mLock);
handle_entry* e = lookupHandleLocked(handle);
if (e != NULL) {
// We need to create a new BpBinder if there isn't currently one, OR we
// are unable to acquire a weak reference on this current one. See comment
// in getWeakProxyForHandle() for more info about this.
IBinder* b = e->binder;
if (b == NULL || !e->refs->attemptIncWeak(this)) {
b = new BpBinder(handle);
e->binder = b;
if (b) e->refs = b->getWeakRefs();
result = b;
} else {
// This little bit of nastyness is to allow us to add a primary
// reference to the remote proxy when this team doesn't have one
// but another team is sending the handle to us.
result.force_set(b);
e->refs->decWeak(this);
}
}
return result;
}
当需要创建一个服务端代理对象时,就会调用getStrongProxyForHandle来实现
该函数首先调用lookupHandleLocked函数,查询当前进程维护的Service代理对象的列表,查看要创建的Service代理对象是否已经在当前进程中创建。如果已经创建过了,则直接返回其引用就可以了;否则,将会在Service代理对象的列表中增加相应的位置,保存将要创建的代理对象。这里大家已经看到的所谓的服务端代理对象,其实就是BpBinder对象。
2. IPCThreadState分析
2.1 在构造ProcessSate的时候,使用open_binder打开/driver/binder,并将句柄记录在mDriverFD中。但是在ProcessState中并不使用这个句柄,真正使用这个Binder设备句柄的是IPCThreadState,所有关于Binder的操作都放置在IPCThreadState中,以下是3个重要的函数。
talkWithDriver() 读取/写入
executeCommand(...) 请求处理
joinThreadPool() 循环结构
2.2 talkWithDriver分析
status_t IPCThreadState::talkWithDriver(bool doReceive)
{
//省略部分代码
#if defined(HAVE_Android_OS)
if (ioctl(mProcess->mDriverFD, BINDER_WRITE_READ, &bwr) >= 0)
err = NO_ERROR;
else
err = -errno;
#else
//省略部分代码
return err;
}
talkWithDriver负责读取和写入,实际上就是通过ioctl对ProcessState打开的句柄进行读写,用户可以不直接通过ioctl来操作Binder设备,通过IPCThreadState对象来代理即可。
二。Service Manager分析
1. Android启动时就会自动运行的一个核心进程。init.rc中的servicemanager片段:
service servicemanager /system/bin/servicemanager
user system
critical
onrestart restart zygote
onrestart restart media
2. Service Manager的main函数。
int main(int argc, char **argv)
{
struct binder_state *bs;
void *svcmgr = BINDER_SERVICE_MANAGER;
bs = binder_open(128*1024);
if (binder_become_context_manager(bs)) {
LOGE("cannot become context manager (%s)\n", strerror(errno));
return -1;
}
svcmgr_handle = svcmgr;
binder_loop(bs, svcmgr_handler);
return 0;
}
该函数首先调用binder_open打开Binder设备(/dev/binder),其次,它调用了binder_become_ context_manager函数,将自己设置为Service Manager。因为Service Manager本身就是一个服务,只是它比较特殊,会管理其他所有的服务,也正是binder_become_context_manager函数将其变为服务管理器的。
3. binder_become_context_manager的实现
int binder_become_context_manager(struct binder_state *bs)
{
return ioctl(bs->fd, BINDER_SET_CONTEXT_MGR, 0);
}
4. svcmgr_handler的实现
在main函数最后调用binder_loop进入循环状态,并设置一个回调函数,等待用户的请求。
int svcmgr_handler(struct binder_state *bs,
struct binder_txn *txn,
struct binder_io *msg,
struct binder_io *reply)
{
//省略部分代码
switch(txn->code) {
//获取服务和查询服务
case SVC_MGR_GET_SERVICE:
case SVC_MGR_CHECK_SERVICE:
s = bio_get_string16(msg, &len);
ptr = do_find_service(bs, s, len);
if (!ptr)
break;
bio_put_ref(reply, ptr);
return 0;
//添加服务
case SVC_MGR_ADD_SERVICE:
s = bio_get_string16(msg, &len);
ptr = bio_get_ref(msg);
if (do_add_service(bs, s, len, ptr, txn->sender_euid))
return -1;
break;
case SVC_MGR_LIST_SERVICES: {
//省略部分
}
default:
LOGE("unknown code %d\n", txn->code);
return -1;
}
bio_put_uint32(reply, 0);
return 0;
}
5. do_add_service的实现
当有新的服务需要添加或者客户端要获得某个已经添加的服务时都会触发该回调函数,添加函数(SVC_MGR_ADD_SERVICE)操作则会调用do_add_service来完成。
int do_add_service(struct binder_state *bs, uint16_t *s, unsigned len,
void *ptr, unsigned uid)
{
struct svcinfo *si;
if (!ptr || (len == 0) || (len > 127))
return -1;
if (!svc_can_register(uid, s)) {
return -1;
}
si = find_svc(s, len);
if (si) {
//省略部分代码
si->ptrptr = ptr;
} else {
si = malloc(sizeof(*si) + (len + 1)
sizeof(uint16_t));
//省略部分代码
si->next = svclist;
svclist = si;
}
binder_acquire(bs, ptr);
binder_link_to_death(bs, ptr, &si->death);
return 0;
}
添加过程为:首先,检查是否有权限注册Service;然后,检查是否已经注册过Service,注册过的Service将不能再次注册;接下来构造一个svcinfo对象,并将其加入到一个全局链表(svclist)中;最后,通知Binder设备有一个Service注册进来了。添加Binder设备之后会为每一个服务都维护一个句柄,当查询和获得某个服务时就会使用这个句柄。当然,Service Manager的句柄在调用了binder_become_context_manager之后就变为0了,作为服务管理器。当客户端需要获得一个服务时,就会触发SVC_MGR_GET_SERVICE命令,再调用do_find_service来查询指定的服务,查找过程就是在服务列表中查找即可,找到之后写入reply中返回给客户端。
二。Binder的机制
1. IBinder
Android对Binder机制进行了抽象,定义了IBinder接口,该接口是对跨进程对象的抽象,在C/C++和Java层都有定义。IBinder定义了一套使用Binder机制来实现客户程序与服务器的通信协议。
一个普通对象只能在当前进程中被访问,如果希望它能被其他进程访问,就必须实现IBinder接口。IBinder接口可以指向本地对象,也可以指向远程对象,关键就在于IBinder接口中的transact函数。如果IBinder指向的是一个服务端代理,那么transact只是负责把请求发送给服务器;如果IBinder指向的是一个服务端,那么transact只负责提供服务即可。因此,不管是服务端还是服务端代理对象,都必须实现该接口,这样才能进行Binder通信。
2. 服务端代理对象BpBinder
BpBinder是服务端代理对象,即远程对象在当前进程的代理。实际上,它也是Binder通信存在于客户端的进程,它实现了IBinder接口,它的transact函数的实现:
status_t BpBinder::transact(uint32_t code, const Parcel& data, Parcel reply, uint32_t flags)
{
// Once a binder has died, it will never come back to life.
if (mAlive) {
status_t status = IPCThreadState::self()->transact(
mHandle, code, data, reply, flags);
if (status == DEAD_OBJECT) mAlive = 0;
return status;
}
return DEAD_OBJECT;
}
它实际上只是简单地调用了IPCThreadState::self()的transact函数,将请求通过内核模块发送给了服务端,服务端处理完请求之后,沿原路返回结果给调用者。注意transact方法是同步方法,将会挂起客户进程的当前线程,直到Service把请求处理完成并返回结果。
3. 服务端BBinder
服务端同样需要实现IBinder接口,这里我们以Android默认的服务端实现类(BBinder)为例进行介绍,其中transact的实现:
status_t BBinder::transact(uint32_t code, const Parcel& data, Parcel reply, uint32_t flags)
{
data.setDataPosition(0);
status_t err = NO_ERROR;
switch (code) {
case PING_TRANSACTION:
reply->writeInt32(pingBinder());
break;
default:
err = onTransact(code, data, reply, flags);
break;
}
if (reply != NULL) {
reply->setDataPosition(0);
}
return err;
}
其中,PING_TRANSACTION请求用来检查对象是否还存在,这里简单地把 pingBinder的返回值返回给调用者,其他的请求交给onTransact处理。onTransact是Bbinder中声明的一个protected类型的虚函数,这个要求它的子类去实现,在下一节分析Binder的具体实现时会详细介绍。
转自:http://blog.csdn.net/ljsbuct/article/details/7106718
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 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/4/17 4:04:49 - 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 - ActivityGroup 使用
ActivityGroup简介 1.ActivityGroup的核心就是继承了该类,能够通过getLocalActivityManager()得到一个LocalActivityManager 如,LocalActivityManager am= getLocalActivityManager(); 2.然后通过LocalActivityManager通过startActivity(String id, Intent intent),可以与指定…...
2024/4/17 4:05:55 - 《高效能人士的七个习惯》读书总结
“没有正确的生活,就没有真正卓越的人生.” 由内而外全面造就自己。品德成功论提醒人们,高效能的生活是有基本原则的,只有当人们学会并遵循这些原则,把它们融入到自己的品德中去,才能享受真正的成功与恒久的幸福。由内而外的意思是从自身做起,甚至更彻底一些,从自己的内…...
2024/4/4 22:22:14 - matlab中的 peaks 函数的含义
matlab 中的 peaks 函数是一个典型的多元函数。它本质上是一个二元高斯分布的概率密度函数,函数表达式为: \begin{equation}f(x,y)=3(1-x)^{2}e^{-x^2-(y+1)^2}-10(\frac{1}{5}x-x^3-y^5)e^{-x^2-y^2}-\frac{1}{3}e^{-(x+1)^2-y^2}\end{equation} 在 matlab 命令行窗口直接输…...
2024/4/19 12:21:33 - 微信公众号开发(总结)
这一周给大家完整的分享了关于微信公众号开发之自动回复电影的功能实现,这可以说是一个项目了,一个简单的项目,一个用你学到的编程技术所实现的项目,我相信非常多的人刚开始学习编程,都不知道具体它可以怎么样用到我们现实生活中来,因为我也曾有这样的迷惑,我希望这次和…...
2024/4/17 4:04:13 - 如何向父母解释什么是爬虫?
作者 | 猪哥责编 | 胡巍巍本文经授权转载自 裸睡的猪(ID:IT--Pig)前段时间我妈突然问我:儿子,爬虫是什么?我当时既惊讶又尴尬,惊讶的是为什么我妈会对爬虫好奇?尴尬的是我该怎么给她解释呢?爬虫介绍1.爬虫是什么网络爬虫(web crawler 简称爬虫)就是按照一定规则从互联网…...
2024/5/2 16:17:47 - 开始努力学习Android的binder机制
研究LBE安全卫士的实现,了解了hook进程,hook函数的过程和实现,但想要做出LBE安全卫士的功能,还需要对Android的Binder机制有一个深入的理解。 找到了很多讲Binder的文章,对照源代码来看,却发现难以静下心来认真深入的去探究。 从理解Binder机制的皮毛,到深刻领会Binder具…...
2024/3/31 21:14:51 - activitygroup activity 启动时白屏、黑屏
解决默认情况下 activity,activitygroup 启动的时候屏幕会有短暂的白屏或黑屏,绘制界面有点延迟,这段时间中你看到的就是白屏或黑屏 解决方法:在 Activity theme 设置style1:<style name="ActivityGroupTheme" parent="android:Theme.Light.NoTitleBar&…...
2024/4/18 9:18:40 - Python 微信公众号开发
大三上的时候,对微信公众号开发浅尝辄止的玩了一下,感觉还是挺有意思的。http://blog.csdn.net/marksinoberg/article/details/54235271 后来服务器到期了,也就搁置了。由于发布web程序,使用PHP很顺手,就使用了PHP作为开发语言。但是其实微信公众号的开发和语言关联并不大…...
2024/4/17 4:05:01 - Matlab R2017b 绘制散点图
看论文时,我们经常看到的散点图,既表达了数据的走势,也显示出了具体的数据点,是一种很好的数据处理方法。有的论文散点图奇丑无比,没有看下去的欲望;有的论文散点图画的简单大方,一看就是行家呀。Matab 用plot可以画图,但是想自己DIY设置散点图的参数,使用Matlab R201…...
2024/5/2 21:49:06 - 高效能人士的七个习惯——习惯一积极主动
习惯一:积极主动人性的本质是主动而非主动的,人类不尽能针对特定环境选择回应方式,更能主动创造有利的环境。采取主动不等于单打王伟、惹是生非活滋事挑衅,而是要让人们认识到自己有责任创造条件。 这些零星的评语不一定代表真正的你,预期说是影像,不如说是投影,放映的是…...
2024/4/17 4:06:13 - 写给Android开发者的Binder源码分析
Binder是一个很大的话题,里面涉及到java、c/c++、linux等知识,并且核心是位于native层的c/c++编写的代码,想要弄清楚整个Binder机制的来龙去脉不看native层的代码是不可能的。而对于一个看不懂c/c++的Android开发者而言,要理清Binder的机制更是难上加难。幸好网上关于Binde…...
2024/4/17 4:05:43 - 微信公众号开发工具汇总
0、微信公众平台技术文档这货实际上是必需品,没了它,您还真是寸步难行。官方文档包含了一个产品最直接也最全面的说明,在微信公众平台技术文档中,详细说明了微信公众号开发的概念与流程,以及各个接口的调用方法。开发中遇到的大部分问题都可以在这里找到答案。值得称赞的是…...
2024/5/2 20:39:48 - android ActivityGroup
ActivityGroup对子Activity的管理 ActivityGroup是个用来承载多个Activity的容器,自身也是继承Activity,主要用于切换Activity(Layout),类似新浪微博软件切换界面。 public class MainActivityGroup extends ActivityGroup { protected void onCreate(Bundle savedInstanceS…...
2024/4/17 4:05:37
最新文章
- ANSYS许可分析方法
在工程设计与仿真领域,ANSYS软件凭借其强大的功能和卓越的性能,已成为了行业内的领导者。然而,随着业务的不断拓展和软件版本的升级,如何有效地分析和利用ANSYS许可证,确保仿真工作的顺利进行,已成为企业关…...
2024/5/6 19:48:41 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/5/6 9:38:23 - AI小程序的创业方向:深度思考与逻辑引领
随着人工智能技术的快速发展,AI小程序逐渐成为创业的新热点。在这个充满机遇与挑战的时代,我们有必要深入探讨AI小程序的创业方向,以把握未来的发展趋势。 一、目标市场定位 首先,我们要明确目标市场。针对不同的用户需求&#x…...
2024/5/5 8:51:37 - 蓝桥杯 - 受伤的皇后
解题思路: 递归 回溯(n皇后问题的变种) 在 N 皇后问题的解决方案中,我们是从棋盘的顶部向底部逐行放置皇后的,这意味着在任何给定时间,所有未来的行(即当前行之下的所有行)都还没…...
2024/5/4 9:55:11 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/4 23:54:56 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布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/4 23:55:01 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含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