本文转自一位大佬的博客,原文地址

首先我们可以带着疑问来理解binder机制,也就是binder机制在Android中有哪些地方运用了?
看你是否能回答如下问题
1.为什么activity之间传递对象需要序列化?
2.activity的启动流程是什么样?
3.四大组件底层通信机制是什么样的?
4.aidl内部实现原理是什么?
5.插件化编程技术应该如何学起等等
上边的问题背后都跟Binder有很大的关系,如果真的想理解上边的问题,那么一定先要理解Binder机制。

我们知道android应用程序中是由activity,service,broadcastReceiver和contentProvider四大组件中的一个或多个组成。由时这些组件运行在同一个进程中,有时运行在不同的进程中。而这些组件间的通信就需要依赖Binder机制,不仅如此,android应用层对系统提供的各种服务如:activityManagerService,PackageManagerService等都是基于Binder机制来实现的,Binder机制在android中的位置非常重要,毫不夸张的说理解Binder机制是迈向高级android开发工程师的第一步。

二.为什么是Binder?
android系统是基于Linux内核的,Linux已经提供了管道,消息队列,共享内存和Socket等IPC机制,那为什么android还要一枝独秀的提供Binder来实现进程间通信呢?主要是因为从性能,稳定性和安全性这几个方面的原因。
性能
首先说说性能方面的优势,Socket作为一款通用接口,其传输效率低,开销大,主要用在跨网络的进程间通信和本机上进程间的低速通信,消息队列和管道采用存储-转发方式,即数据先从发送方缓存区拷贝到内核开辟的缓存区,然后再从内核缓存区拷贝到接收方缓存区,至少有两次拷贝过程。共享内存虽然无需拷贝,但控制复杂,难以使用。Binder只需要拷贝数据一次,性能上仅次于共享内存。
IPC方式 数据拷贝次数
共享内存 0
binder 1
Socket/管道/消息队列 2

稳定性
再说说稳定性,binder基于c/s机构,客户端有什么需求就丢给服务端去完成,架构清晰,职责明确又相互独立,自然稳定性更好。共享内存虽然无需拷贝,但是控制困难,难以使用。从稳定性的角度来讲,Binder机制是优于共享内存的。
安全性
另外一个方面就是安全性,android作为一个开放性平台,市场上有海量的应用供用户安装,因为安全性对android来说至关重要,作为用户当然不希望我们下载的app偷偷的读取我的通信录,上传我的隐私数据,后台偷跑流量,消耗手机电量。传统的ipc没有任何的安全措施,完全依赖于上层协议来确保,首先传统的ipc接收方无法获得对方可靠的进程用户id/进程id,从而无法前别用户身份。android为每个安装好的app分配了自己的uid,故而进程的uid是鉴别身份的重要标志,传统的ipc只能由用户在数据包中填入了uid/pid,但这样不可靠,容易被恶意程序利用。可靠的身份标志应该只能由ipc机制内核中添加。其次传统的ipc访问接入点是开放的,只要知道这些接入点的程序都可以和对端建立链接,不管怎样都无法阻止恶意程序通过猜测接收方地址获得连接,同时binder既机制实名binder,又支持匿名binder,安全性高。
所以用一张表格来总结,如下
优势 描述
性能 只需要一次数据拷贝
稳定性 基于c/s架构,职责明确,架构清晰,因此稳定性好
安全性 为每个app分配uid,进程的uid是鉴别进程身份的重要标志

三.Linux下传统的进程间通信原理
了解linux ipc相关的概念和原理有助于我们理解binder通信原理,因此,在介绍binder跨进程通信原理之前,我们先聊聊Linux系统下传统的进程间通信是如何实现的。
3.1 基本概念介绍
这里我们先从Linux中进程间通信涉及的一些基本概念开始介绍,然后慢慢展开,向大家说明传统的进程间通信的原理。

在这里插入图片描述

上图展示了跨进程通信涉及到的一些概念
1.进程隔离
2.进程空间划分:用户空间和内核空间
3.系统调用:用户态/内核态
进程隔离
简单的说就是操作系统中,进程和进程内存是不共享的。两个进程就是两个平行的世界,A进程没法直接访问B进程,这就是进程隔离的通俗解释。A进程和B进程要通信就得使用特殊的通信机制:跨进程通信。
进程空间划分:用户空间和内核空间
现在操作系统都是采用虚拟存储器,对于32位系统而言,它的寻址空间就是2的32次方,也就是4GB。操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也可以访问底层硬件设备的权限。为了保护用户进程不能直接操作内核,保证内核的安全,操作系统从逻辑上将虚拟空间划分为用户空间和内核空间。针对Linux而言,将最高的1GB供内核使用,成为内核空间,较低的3GB字节供各进程使用,称为用户空间。
简单来说:内核空间是系统内核运行的空间,用户空间是用户程序运行的空间,为了保证安全性,它们之间是隔离的。

在这里插入图片描述

系统调用:用户态和内核态
虽然从逻辑上进行了用户空间和内核空间的划分,但不可避免用户空间需要访问内核资源,比如文件操作,访问网址等。为了突破隔离限制,就需要借助系统调用来实现。系统调用是用户空间访问内核空间的唯一方式,保证了所有的资源访问都是在内核的控制下进行的,避免了用户程序对系统资源的越权访问,提升了系统安全性和稳定性。
Linux使用两级保护机制:0级供系统内核使用,3级供用户程序使用
当一个任务执行系统调用而进入内核代码中执行时,称进程处于内核运行态,此时处理器处于特权级最高的内核(0级)代码执行。当进程处于内核态时,执行的内核代码会使用当前进程的内核栈。每个进程都有自己的内核栈。
当进程在执行自己的代码时,我们称为用户运行态,此时处理器在特权级最低的(3级)用户代码运行。
系统调用主要通过如下两个函数来实现:
copy_from_user() // 将数据从用户空间拷贝到内核空间
copy_to_user() // 将数据从内核空间拷贝到用户空间

3.2 Linux下传统的ipc通信原理
理解了上边的几个概念,我们再来看下传统的ipc方式中,进程间通信是如何实现的?
通常的做法是消息发送方将要发送的数据缓存到内存缓存中,通过系统调用进入内核态。然后内核程序在内核空间分配内存,开辟一块内核缓存区,调用copy_from_user()函数将数据从用户空间的内存缓存区拷贝到内核空间的内核缓存区。同样的,接收方在接受数据的时候在自己的用户空间开辟一块内存缓存区,然后内核程序调用copy_to_user()函数将数据从内核缓存区拷贝到接收方的内存缓存区。这样数据发送方进程和数据接收方进程完成了一次数据传输,我们称完成了一次进程间通信。如下图:

在这里插入图片描述

这样传统的ipc通信机制有两个问题:
1.性能低下,一次数据传递需要经历:内存缓存区--------内核缓存区--------内存缓存区,需要两次数据拷贝
2.接受数据的缓存区由接受数据进程提供,但是接收进程并不知道需要开辟多大的空间来存放将要传递过来的数据,因此只能开辟尽可能大的内存空间或者先调用api接收消息头来获取消息体的大小,这两种做法不是浪费空间就是浪费时间。

四.Binder跨进程通信原理
理解了Linux ipc的相关概念和通信原理,接下来我们正式介绍下Binder ipc的原理
4.1 动态内核可加载模块 && 内存映射
正如前面说的,跨进程通信需要内核空间做支持的。传统的ipc机制如管道,socket都是内核的一部分,因此通过内核支持来实现跨进程通信自然是没问题。但是Binder并不是linux系统内核的一部分,那怎么办呢?这就得益于linux的动态内核可加载模块的机制,模块是具有独立功能的程序,它可以被单独编译,但是不可独立运行。它在运行时被链接到内核作为内核的一部分运行。这样,android系统就可以通过动态添加一个内核模块运行在内核空间,用户进程之间通过这个内核模块作为桥梁来进行通信。
在android系统中,这个运行在内核空间,负责各个用户进程通过binder实现通信的内核模块就叫做 binder驱动。
那么在android系统中用户进程之间是如何通过动态内核可加载模块(binder驱动)来实现通信的呢?难道和前边说的传统的ipc机制一样?先将数据从发送方拷贝到内核缓存区,然后再将数据从内核缓存区拷贝到接收方内存缓存区,通过两次数据拷贝来实现吗?显然不是的,否则也不会有开篇说的性能上边的优化。
这就不得不知道linux的另外一个概念:内存映射。
binder ipc机制涉及到的内存映射是通过mmap()函数来实现的,mmap()是操作系统中内存映射的一种方法。内存映射简单的来讲就是将用户空间的一块内存区域映射到内核空间。映射建立后,用户对这块内存空间的修改直接反应到内核空间上,反之内核空间对这块区域的修改也会直接反应到用户空间。

内存映射能减少数据拷贝次数,实现用户空间和内核空间的有效互动。两个空间各自的修改能直接反应在映射区域,从而被对方空间及时感知。也正因为如此,内存映射能提供进程间通信的支持。

4.2 Binder IPC实现原理
Binder IPC正是基于内存映射来实现,但是mmap()通常是用在有物理介质的文件系统上。
比如进程的用户区域是不能直接跟物理设备打交道的,如果想把磁盘上的数据读取到进程的用户区域,需要两次拷贝(磁盘---->内核空间---->用户空间),通常在这种场景下mmap()函数就发生作用了,通过在物理介质和用户空间之间建立映射,减少数据拷贝次数,通过内存读写来取代IO读写,从而提高文件的读写效率。
而Binder并不存在物理介质,因此binder驱动使用并不是为了在物理介质和用户空间之间建立映射,而是用来在内核空间创建数据的缓存空间。

一次完整的Binder IPC通信过程通常是这样的:
1.首先Binder驱动在内核空间创建一个数据接收缓存区。
2.接着在内核空间创建一个内核缓存区,建立内核缓存区和内核数据接收缓存区建立映射关系,以及建立内核数据接收缓存区和接收进程用户空间地址的映射关系。
3.发送方进程通过系统调用copy_from_user()将数据复制到内核缓存区,由于内核缓存区跟内核数据接收缓存区以及接收方用户空间存在映射关系,因此也就相当于把数据发送给了接收方用户空间,这样便完成了一次进程间通信。如下图

在这里插入图片描述

五 Binder通信模型
介绍完binder ipc的通信原理,接下来我们看看实现层面是如何设计的。
一次完整的进程间通信必然至少包含两个进程,通常我们称通信的双方为客户端进程和服务端进程,由于进程隔离的存在,双方通信必然要借助binder来实现

5.1 Client/Server/ServiceManager/Binder驱动
前面我们介绍过Binder是基于c/s架构的。由一系列的组件组成,包括client,server,serviceManager,binder驱动。其中client,server,serviceManager是运行在用户空间,而binder驱动运行在内核空间。其中serverManager和binder驱动都是由系统提供,而client,server是由应用程序来实现。client,Service和ServiceManager都是通过系统调用open,mmap和ioctl来访问设备文件/dev/binder,从而实现与binder驱动的交互来间接的实现跨进程通信。

在这里插入图片描述

Client,Server,ServerManager,Binder驱动这几个组件在通信过程中扮演的角色就如同互联网中服务器(Server),客户端(Client),DNS域名服务器(ServiceManager)以及路由器(Binder驱动)之间的关系。
通常我们访问一个网页的步骤是这样的:首先在浏览器输入一个地址,如www.google.com然后按下回车键。但是并没有办法通过域名地址直接找到我们要访问的服务器,因此首先要通过CNS域名服务器,域名服务器中保存了www.google.com对应的ip地址10.249.23.13,然后通过这个ip地址才能找到www.google.com对应的服务器。

在这里插入图片描述

Android Binder设计与实现(https://blog.csdn.net/universus/article/details/6211589)一文中对Client,Server,Servicemanager,Binder驱动有很多详细的描述,以下是部分摘录:

5.2 Binder通信过程
至此,我们大致能总结出Binder通信过程:
1.首先,一个进程使用BINDER_SET_CONTEXT_MGR命令通过Binder驱动将自己注册成为ServiceManager。
2.Server通过驱动向ServiceManager中注册Binder(Server中的Binder实体),表明可以对外提供服务。驱动为这个Binder创建位于内核中的实体节点以及ServiceManager对实体的引用,将名字以及新建的引用打包传给ServiceManager,ServiceManager将其填入查找表。
3.Client通过名字,在Binder驱动的帮助下从ServiceManager中获取到Binder实体的引用,通过这个引用就可以实现和Server进程的通信。

在这里插入图片描述

5.3 Binder通信中的代理模式
我们已经解释清楚Client,Server借助Binder驱动完成跨进程通信的实现机制了,但是还有个问题会放我们困惑。A进程想要B进程中某个对象(Object)是如何实现的?毕竟它们分属不同的进程,A进程没法直接使用B进程中的object。

前面我们介绍过跨进程通信的过程都有Binder驱动的参与,因此在数据流经过Binder驱动的时候驱动会对数据做一层转换。当A进程想要获取B进程的object对象时,驱动并不会真的把object对象返回给A,而是返回一个跟object对象一模一样的代理对象objectproxy,这个objectproxy具有和object一模一样的方法,但是这些方法并没有B进程中object对象哪些方法的能力,这些方法只需要将请求参数交给驱动即可。对于A进程来说和直接调用object中的方法是一样的。

当Binder驱动接收到A进程的消息后,发现这是个objectproxy就去查询自己维护的表单,一查发现这是B进程object的代理对象。于是就去通知B进程调用object的方法,并要求B进程把请求结果发给自己。当驱动拿到B进程的返回结果后就会转发给A进程,一次通信就完成了。

在这里插入图片描述

六.手动编码实现跨进程调用
通常我们在做开发时,实现进程间通信用的最多的就是AIDL。当我们定义好AIDL文件,在编译时编译期会自动帮生成代码实现IPC通信。借助AIDL编译以后的代码能帮助我们进一步理解Binder IPC的通信原理。
但是无论是从可读性还是可理解性上来看,编译期生成的代码并不友好。比如BookManager.aidl文件对应会生成一个BookManager.java文件,这个java文件包含了一个BookManager接口,一个Stub静态的抽象类和一个Proxy静态类。proxy是stub的静态内部类,stub是bookmanager的静态内部类,这就造成了可读性和理解性的问题。
那么android为何要这么设计呢?这是因为当有多个aidl文件的时候把bookManager,stub,proxy放在同一个文件里能有效的避免stub和proxy重名的问题。
因此便于理解,我们手动编写代码来实现跨进程通信。

6.1 各java类职责描述
在正式编码实现跨进程调用之前,先介绍下实现过程中用到的一些类。了解这些类的职责,有助于我们更好的理解和实现扩进程通信。
IBinder:IBinder是一个接口,代表一种跨进程通信的能力。只要实现了这个接口,这个对象就能跨进程传输。
IInterface:代表的就是Server进程对象具备什么样的能力(能提供哪些方法,其实对应的就是aidl文件中定义的接口)
Binder:java层的binder类,代表的其实就是Binder本地对象。BinderProxy类是Binder类的一个内部类,它代表远程进程的Binder对象的本地代理,这两个类都继承自IBinder,因而都具有跨进程传输的能力。

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

相关文章

  1. 关于网络爬虫的一些基础知识

    什么是网络爬虫,百度百科是这么定义的网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。以下简称爬虫爬虫作为…...

    2024/4/28 7:19:37
  2. matlab中求均值的mean()函数的使用

    http://hi.baidu.com/megachan/blog/item/61e1bb6cb7ab2de64316941b.html函数功能 求数组的平均数或者均值 使用方法 M = mean(A) 返回沿数组中不同维的元素的平均值。 如果A是一个向量,mean(A)返回A中元素的平均值。 如果A是一个矩阵,mean(A)将其中的各列视为向量,把矩阵中…...

    2024/4/28 20:40:36
  3. 从java到C解析Binder机制

    从java到C解析Binder机制Binder机制是一种C/S结构,主要包括三部分,分别为Client、Server、ServiceManager。ServiceManager是谷歌设计的,它是一段简洁的C代码(位置在native/cmds/servicemanager/service_manager.c),主要是方便集中管理系统中的各种服务,也方便Client和S…...

    2024/4/28 9:07:26
  4. 7个习惯 让你成为高效能人士

    自成书以来,在美国畅销书排行榜盘踞达七年之久,全球70个国家以28种语言发行超过一亿册,作者柯维博士也被《时代》杂志誉为人类潜能的导师,并被选入全美25位最有影响力的人士。《高效能人士的七个习惯》究竟写了些什么,受到如此众多读者的青睐?  25年来,我在商…...

    2024/4/27 23:38:55
  5. 微信公众号推送模板消息,推送个人消息,给指定的人发送模板消息

    公众号推送个人消息开发公众号时,需要写推送消息,从网上找了一大堆,都不是很全,,通过这次把代码全都总结起来,方便他人寻找问题的时候,不会跟作者一样,找各种文档,耽误工作时间。最主要的就是微信公众号的推送模板消息的设置,在后头进行把需要的模板推送给关注的微信…...

    2024/4/28 6:31:03
  6. 一文带你了解爬虫(转)

    原文:https://www.cnblogs.com/pig66/p/11080757.html 六月分享主题:爬虫HTTP详解网页结构简介 前段时间我妈突然问我:儿子,爬虫是什么?我当时既惊讶又尴尬,惊讶的是为什么我妈会对爬虫好奇?尴尬的是我该怎么给她解释呢? 一、爬虫介绍 1.爬虫是什么 网络爬虫(web crawl…...

    2024/4/28 5:47:24
  7. matlab使用笔记(一)——matlab语言中if、for语句与C语言中的差别

    好久没用matlab编写程序,上周在亲导师面前,愣生生是2小时没编出一选择函数的程序。羞愧至极,愤而写之。主要内容是matlab语言中与c语言中if、for语句的差别。突然插一下!!!end、end、end。Matlab中循环、判断语句都用end结束,不是用{}。1、if用法(matlab中使用的是else…...

    2024/4/27 21:58:17
  8. @1-1什么是爬虫?

    什么是爬虫? Python爬虫(入门+进阶) DC学院 本节课程的内容是介绍什么是爬虫?爬虫有什么用?以及爬虫是如何实现的?从这三点来全面剖析爬虫这一工具。 爬虫的定义: 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一…...

    2024/4/28 15:14:08
  9. 读书笔记——高效能人士的七个习惯2(四类优先级)

    别让琐务牵着鼻子走 使用下面这张图可以详细阐释第四代管理方法的重点。 从本质上看,我们对时间的使用方式不外乎以下四种。(见表5-1) 表5-1 时间管理矩阵紧迫不紧迫 重要ⅠⅡ危机预防性措施迫切问题建立关系在限定时间内必须完成的任务明确新的发展机会制定计划和休闲不重…...

    2024/4/28 10:12:45
  10. VS Code配置Matlab环境

    VSCode这么赞的轻量级多平台IDE,怎么夸它都不为过,而且很有活力,笔者使用了才半年,但半年时间内,更新速度快,且每次更新都让人觉得“值”,而不是随随便便更新。 废话还是少说,本文介绍如何在VSCode下配置Matlab编写环境,适合VS Code小白用户。正文环境说明: VS Code…...

    2024/4/28 14:55:56
  11. Google:就算Linux自带多进程通信,我也要采用Binder机制!

    点击上方的终端研发部,右上角选择“设为星标”每日早9点半,技术文章准时送上公众号后台回复“学习”,获取作者独家秘制精品资料往期文章一波Flutter酷炫特效来袭今日头条屏幕适配方案落地研究记五月的一个Android面试经2018面试题之Bind机制完全总结混合开发框架的对比,Flu…...

    2024/4/28 9:23:58
  12. 微信公众号开发测试部署步骤

    一、申请微信公众账号测试号:因本地开发自己公众号无法认证,所以在本地开发时需要用微信公众账号测试号申请系统;申请步骤如下:登录注册自己的微信公众平台,选择左侧菜单栏中开发-开发者工具,出现的页面点击开发者文档-进入后点击开始开发-选择接口测试号申请-点击进入微…...

    2024/4/28 7:41:38
  13. Matlab的护眼模式设置

    https://github.com/scheckley/matlab-monokai参考的这个方法将以下内容添加到matlab的matlab.prf文件中,文件路径为在matlab中运行prefdir的结果,直接添加这些内容保存就好。 还有一个问题,就是可能会找不带.prf文件,只要现在command窗口中输入prefdir这行,直接会显示具体…...

    2024/4/28 13:28:40
  14. 零基础学Python爬虫

    随着大数据时代的来临,网络爬虫在互联网中的地位显得越来越重要。互联网的数据是海量的,如果从中快速高效提取海量的,我们想要的数据,这个时候就需要用到我们所说的爬虫了。在本场 Chat 中,会讲到如下内容: 1. 什么是爬虫?爬虫的原理和概述 2. Python…...

    2024/4/28 16:16:34
  15. 焦点在子Activity的listView时ActivityGroup无法响应Menu键的问题

    键盘事件只会发送到当前获得焦点的View,这个KeyEvent只能被最上层获得焦点窗口的activity和view得到。一般来说这些事件会从上倒下去寻找合适的接受组件,ViewGroup的一个childView的onKeyDown()方法return true,那么表示该方法消费了此次事件,此时不会再传递到ViewGroup的on…...

    2024/4/28 8:39:07
  16. android之Binder机制解析

    说到Binder我们就不得不说android的服务,android之所以引入Binder就是为了实现代码的远程调用(一个进程调用另一个进程中的代码) 而服务(service)大多都是通过binder机制来实现和客户端的通信的。 要弄懂Binder机制,你只需要懂以下四点就OK了: ============================…...

    2024/4/28 1:41:27
  17. 微信公众号开发-消息的接收与回复(文本)

    微信公众号开发-消息的接收与回复(文本) 这一期我们主要讲一下,服务号的文本消息接收与被动回复。 首先我们看一下微信给出的api官方文档给出的api中有那么几个重要信息,第一个微信是将手机发送给微信服务号的消息,以Xml 的形式又以Post 的请求方式下发给我的自己填写的UR…...

    2024/4/28 19:11:57
  18. 七个习惯 让你成为高效能人士

    自成书以来,在美国畅销书排行榜盘踞达七年之久,全球70个国家以28种语言发行超过一亿册,作者柯维博士也被《时代》杂志誉为人类潜能的导师,并被选入全美25位最有影响力的人士。《高效能人士的七个习惯》究竟写了些什么,受到如此众多读者的青睐?  25年来,我在商…...

    2024/4/28 4:04:07
  19. Android手机上使用MATLAB

    MATLAB推出了手机平台应用。 有两种模式,一种是手机与装有MATLAB的电脑连接,通过电脑上的MATLAB进行运算;第二种模式是使用MathWorks公司的云计算平台进行计算;个人感觉第一种模式的意义不大。如果去跟电脑连接才能使用,那还要先打开电脑,再使用手机计算。。。。何必呢?…...

    2024/4/28 12:22:03
  20. Android之通过Binder机制实现IPC和linux的传统IPC的对比分析

    一、 Android的Binder机制实现IPC这里bind机制实现实现IPC模型这里不具体分析,简单理解就是clint-server模型涉及到4个模块client、server、serverManager、bind底层驱动。serverManager的作用是将字符形式的Binder(Server创建了Binder实体)名字转化成Client中对该Binder的引…...

    2024/4/27 23:28:13

最新文章

  1. qt中的取整函数

    在Qt中,有以下几种常用的取整函数,用于处理浮点数的取整操作: 1. **qCeil()** - 向上取整: 该函数返回大于或等于给定浮点数的最小整数。如果输入值是正数,它会将小数部分去掉并增加到下一个整数;如果是…...

    2024/4/29 2:27:20
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/3/20 10:50:27
  3. Nginx配置文件修改结合内网穿透实现公网访问多个本地web站点

    文章目录 1. 下载windows版Nginx2. 配置Nginx3. 测试局域网访问4. cpolar内网穿透5. 测试公网访问6. 配置固定二级子域名7. 测试访问公网固定二级子域名 1. 下载windows版Nginx 进入官方网站(http://nginx.org/en/download.html)下载windows版的nginx 下载好后解压进入nginx目…...

    2024/4/22 22:16:59
  4. Go build 交叉编译-实现多平台兼容

    【前言】 本章主要讲的是go程序如何兼容各种架构系统以及架构之间的区别 直接上干货,直接执行下面的指令,将GOOS(平台)和GOARCH(架构)就可以解决大部分架构兼容问题 GOOSlinux GOARCHamd64 go build test.g…...

    2024/4/22 7:45:34
  5. 【外汇早评】美通胀数据走低,美元调整

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

    2024/4/28 13:52:11
  6. 【原油贵金属周评】原油多头拥挤,价格调整

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

    2024/4/28 3:28:32
  7. 【外汇周评】靓丽非农不及疲软通胀影响

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

    2024/4/26 23:05:52
  8. 【原油贵金属早评】库存继续增加,油价收跌

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

    2024/4/28 13:51:37
  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/28 15:57:13
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

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

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

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

    2024/4/25 18:39:16
  15. 【外汇早评】美伊僵持,风险情绪继续升温

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

    2024/4/28 1:34:08
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

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

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

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

    2024/4/28 1:22:35
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

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

    2024/4/25 18:39:14
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

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

    2024/4/26 23:04:58
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

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

    2024/4/27 23:24:42
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

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

    2024/4/28 5:48:52
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

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

    2024/4/26 19:46:12
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

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

    2024/4/27 11:43:08
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

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

    2024/4/27 8:32:30
  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