640.gif?wxfrom=5&wx_lazy=1

本文来自作者 刘盼 在 GitChat 上分享,阅读原文」查看交流实录

文末高能

编辑 | 奕迅

架构的演变历史

我们首先介绍 ARM Ltd,这里先说的是公司而不是架构。ARM 的发展历史非常久远,超乎许多人的想象。

首先,我们提供一些背景信息,ARM 成立于20世纪90年代末,从另一家位于剑桥的公司分拆而来,那家公司叫做 Acorn Computers,曾经是英国教育市场的著名个人台式计算机供应商,现已不复存在。

80年代中期时,Acorn 一个小团队接受了一个挑战,为他们的下一代计算机挑选合适的处理器,他们起草了一个技术需求说明书,经过相当长的摸索后得出一个结论:无法找到与之相符的产品,于是 Acorn 决定自己设计处理器,一个小团队只用了18个月就完成了设计并实现了这款处理器。

1985年4月26日,第一台原型机在 Acorn 的剑桥办公室中开始运行代码,那时它被称为”Acorn RISC Machine”,随着 Acorn 公司转向衰落,处理器设计部门被分了出来,组成了一家新公司,最初叫做 Advanced RSIC Machines Ltd。现在公司和处理器都简称为ARM。

ARM 以其各种 RISC 处理器内核而著称,但也出品大量的支持技术满足芯片设计师和软件开发者的需要,这包括物理IP,软件模型和开发工具,图形处理器,以及外围设备,注意,但是 ARM 并不生产芯片,ARM是半导体知识产权业务中的开拓先锋,目前市面上大量 ARM 设备都是由ARM分布于世界各地的授权商制造的。

下面说下 ARM 产品在哪些领域通过通用数字产品发挥用武之地,ARM 提供:在系统芯片(SoC)上的系统级IP,以及物理IP,确保其可制造性开发工具,帮助设计和制造系统架构和软件,当然生产出成品还需要许多其他投入,如工业设计,封装,环境调查,操作系统,外围IP等,这些都不是 ARM 的产品,但 ARM 有很多合作伙伴,制造出了成千上万的设备,从下图中你会发现许许多多部署了基于 ARM 解决方案的应用。

0?wx_fmt=png

从硬盘驱动器到打印机,从游戏设备到智能量表,从洗衣机到电视机,可谓包罗万象,即便如此,还没有终点,时刻都在增长,到目前为止,以ARM架构的芯片出货量总共达到500亿片,每年还以大约80亿的数字在增长,到2020年,总量有望达到1000亿。

ARM 内核现在广受欢迎的一个原因是支持一系列的性能和功能点。我相信许多人听说 ARM 是从 ARM7TDMI 处理器内核的成功开始的,从上世纪90年代起这一内核在手机行业得到了广泛采用,也是ARM早期成功的奠基石。

虽然现在依然受到广泛使用,也可以购买到包含这一内核的大量部件,但不再提供 ARM7TDMI 的授权许可,现在已经从这一内核发展出以实时嵌入式空间为目标的整个产品路线图,现在有两大产品系列,Cortex-M系列主要用于注重成本节约的微控制器;

Cortex-R系列,提供非常高的性能和吞吐量,同时保持精准的时序属性和可预测的中断延时,通常用于时序关键的应用中,如引擎管理系统和硬盘驱动器控制器。

后来发展了整个系列的应用处理器,从产品线最初的ARM926EJ-S开始,发展到了 ARM11MP,现在包含了 Cortex-A 系列,这些处理器设计为可在要求 linux 等平台操作系统的应用中提供可缩放的高性能。

它们融合了精密的内存管理功能,以及多媒体处理扩展指令集,从 ARM11MP 开始加入了针对多核系统的支持,Cortex-A 系列的最新核心现在以多核配置提供,这使得它们能够真正涵盖广阔的功率和性能点范围。

我们现在已经对公司渊源和架构有了些了解,现在让我们进入 ARM 芯片的内部吧。

内核的工作原理

0?wx_fmt=png

经典的ARM系统级芯片或所谓的SocC包含许多组件,其中只有一些直接源自ARM。首先,核心本身通常深度嵌入在设备内部,在设备范畴内通常不直接可见,而调试端口通常是唯一和核心本身相连的外露部分,有一些粘合逻辑,如时钟和复位集成电路。

由于 ARM 核心只有两个中断输入,最常见的外设就是某种中断控制器,在外设内部,各组件通过芯片上互联总线架构相互连接,对于极大多数基于ARM的设备而言,这就是标准的 AMBA 互联。

AMBA 指定了两个总线,称为AXI的高性能系统总线,和称为APB的低功耗外设总线,APB通常用于连接所有外设,AXI则用于存储器和其他发高速设备,大多数设备都有一定数量的芯片上存储以及连接外设存储器设备的接口,但是注意,与设备的外部连接并不是AMBA总线,这仅在设备内部使用,并不外露。

下面看看这个Soc的工作原理——编程器模型(programmer’s model)。谨记,A系列和R系列配置在编程器模型上非常相似,但M系列配置在许多非常重要的方面都有很大不同,这在接下来的讲解中会指出这些差别。

从根本上说,ARM是RISC架构,你可能会否认现在的ARM内核其实不属于RISC平台,但它们与RISC有很大的渊源,也保留了传统上与RISC架构相关的许多特性,例如大多数指令在一个周期内执行,寄存器集基本上是正交的,而且指令集实施加载存储式架构,也就意味着能够直接处理内存中内容的指令只有加载和存储指令,如果需要对内存中的值执行任何处理,程序必须将这些值加载到寄存器中,执行所需的处理,然后将结果存回到内存中,其他常见架构则能够直接操控或修改内存中的内容。

所有的内部寄存器除了一些受到NEON架构的矢量处理功能支持外都是32位宽的,它们的内部由32位ALU处理,内存则通常在32位元中予以处理,这就是ARM的字长。

谈到指令集时,你会发现 ARM 核心不只有一个指令集,所有 ARMv7-A 和 ARMv7-R 核心都支持32位原生 ARM 指令集和 Thumb 指令集,后者中的指令可以是32位或者16位的。

ARM 指令集释放了内核的完整性能潜力,而Thumb指令集则提供了更出色的代码密度,我们把ARM和Thumb指令间切换这一过程称为“交互工作”,不要担心,编译器和链接器会处理它们。一些较旧的内核支持Thumb指令集的早期版本,其中所有的指令都是16位指令,比如 ARMv7-M 内核仅就支持Thumb指令集。

如果你之前接触过处理器架构,相信你会熟悉运行模式的概念以及特权的概念。许多架构通常支持两种模式,分别为“Supervisor”和“User”,其中一个模式拥有特权,另一个则没有。

在无特权模式下代码可能无法直接执行某些特定的操作,比如,禁用中断,重新配置内存保护,或访问特定的内存区域,这是大多数操作系统的基本要求,允许系统从用户任务中保护自己。ARM内核通常支持七种基本运行模式,每种模式有权访问自己的堆栈空间,以及一组不同的寄存器子集,除一个外其余都是由特权的模式,如下:

0?wx_fmt=png

其中6种是特权模式,User 模式是没有特权的模式,作为唯一的无特权模式,User 模式供操作系统用于用户任务和处理器。

此外,有5种模式称为“异常模式”,每一种都与处理特定种类的异常或中断相关,例如,当内核开始处理外部中断时会自动进入 IRQ 模式,而 Supervisor 模式则用于处理 SVC 指令和硬件复位,这些模式分别拥有专属的堆栈空间,以及一小组专用寄存器,我们把这一功能叫做寄存器编组,只是这些异常属于不同的类型。

注意,上图仅适用于 Cortex-A 和 Cortex-R 处理器,Cortex-M 微控制器的模式结构则全然不同。ARMv7-M 架构配置仅定义了两种模式,如下图,分别是 Thread 模式和 Handler 模式,Thread 模式没有特权,用于应用程序代码, Handler 模式有特权,用于异常处理程序,当系统复位时在 Thread 模式中开始执行,遇到异常时自动变为 Handler 模式,处理程序完成后再回到Thread 模式。

0?wx_fmt=png

下面我们重点讲下这些模式是如何与寄存器组交互工作的:

0?wx_fmt=png

比如我们来看看核心切换到IRQ模式以处理外部异常时会发生什么,从图中你可以看到User模式的r13和r14切换为IRQ模式中与它们对应的寄存器,由于r13用作堆栈指针,所以这表示IRQ中断在独立的堆栈中进行处理。

此外也可以看到另一个寄存器也加入到集合中来,它是 Saved Program Status Register 即 SPSR,用于保留模式更改发生时处理器状态的快照,才能使得在处理中断事件后返回到 User 模式并恢复程序变得非常容易,当中断处理结束后,就回到User模式,重新获取原先的寄存器。

在以上描述的寄存器集合和组织适用于 Cotex-M 之外的所有ARM内核,Cotex-M 内核具有不同的寄存器集合和组织,见下图。

之前一直强调Cotex-M寄存器是不同的,差别就在这里,只有18个寄存器没有我们在其他内核上看到的编组方案。

首先,有13个通用寄存器,其中r0到r7是低位寄存器,r8 到 r12 是高位寄存器,还有3个特殊寄存器:Stack Pointer,Link Register 和 Program Counter,最后一个寄存器是程序状态寄存器 xPSR。

注意,Contex-M 内核有两种处理器模式:Thread 模式和 Handler 模式,只有一个寄存器在这两种模式之间编组,它就是 Stack Pointer。

0?wx_fmt=png

这里扩展下状态寄存器 Program status register:

0?wx_fmt=png

左边28到31位是ALU条件代码,由数据处理指令进行可选设置,并由条件指令进行测试,还有4个额外的状态位GE位,用于记录来自SIMD指令的多个结果。只有这些ALU状态位可以在处于User模式时进行修改。

最右边的5位显示当前的处理器模式,它们在响应异常中出现模式更改时自动设置,也可以手动修改以便在程序控制下更改模式。

J和T这两个位记录处理器的当前状态,告诉内核当前正在执行哪一行指令集,可能是ARM状态,即正在执行ARM指令;Thumb状态,即正在执行Thumb指令;或者Jazelle状态,即正在执行Java字节代码。

I位和F位可启用或禁用IRQ和FIQ中断。A位允许禁用或暂时停用异步数据中止。E位允许在程序控制下动态更改数据接口的字节序(Little或Big字节序),简化了混合字节序数据的处理。剩余的位被“保留”或者用于和特定指令的内部系统状态,不可由程序修改。

下面来讲一下 Cortex-M 内核中可用的状态寄存器:

0?wx_fmt=png

你会发现它比前面讲的状态寄存器简单的多,这也说明了Cortex-M内核的简洁性。有一个T位,因为 Cortex-M 内核仅支持 Thumb 指令集,所以此位始终是1。最后又一个字段,它在核心执行异常处理程序时包含当前活动的异常编号。

初学者可能会问异常时会发生什么,在ARM架构中,异常是某种类型的事件,导致任何内容正常的程序流中出现中断,异常可以是内部的,如内存转译错误;也可以是外部的,如来自外设的中断;也可以是同步的,如SVC指令;或者是异步的,如计时器中断。无论原因如何,核心对所有异常的处理方式基本上相同。

当一个应用程序在逐一执行各个指令时,异常来时内核要做的第一件事就是确保它能够在异常之后回到这一点上,为此我们必须对当前状态抓取一个快照,所以内核复制 CPSR 并保存在 SPSR 中,再复制PC并保存在LR中,然后内核切换到相应的异常模式禁用进一步的中断,确保它处于正确的状态,接着使用矢量表确定可以找到异常处理程序的位置,每一个异常类型分别有一个条目,每一条目是一个指令,分出相关的处理程序代码,所以核心就是从正确的矢量表条目加载Program Counter 执行异常处理程序。

当处理程序完成时,要返回到中断的程序就简单了,只要从SPSR中保留的副本还原CPSR,再从链接寄存器还原 Program Counter。当然Cortex-M在处理异常时完全是另一回事,这里就不详讲了。

现在相信你已经了解了寄存器,模式和状态的所有信息,现在我们来谈谈ARM内核提供的指令集。目前市场上的大多数ARM内核至少支持两种指令集:原生的32位 ARM 指令集,以及混合了16位和32位的Thumb指令集,我们先看看ARM指令集。

虽然这次chat不是ARM汇编语言的课程,但也能让你有足够的了解。ARM指令集中的所有指令都是32位长,乍一看ARM指令的语法似乎非常复杂,不过一旦你了解运算符和可能的运算对象的基本结构,其实还是非常简单的,毕竟它是RISC架构。下面举例说明,第一个真的很简单:

  1. SUB r0, r1, #5
    它显然是个减法指令,有3个参数。第一个参数是寄存器,指定减法结果的目的地;另外两个参数指定输入参数,可以理解为从左到右为”r0 = r1 - 5”。

  2. ADD r2, r3, r3, LSL #2
    这是一个加法指令,提供一个作为第二输入运算对象的寄存器,再指定内联移动或循环运算应用到运算对象上,作为指令的一部分,这个指令可以理解为”r2等于r3加上r3向左移动两个位置”。

  3. ANDS r4, r4, #0x20
    这是一个逻辑AND指令,注意这个AND有个后缀’S’,这指定将CPSR中的ALU条件代码设为反映该结果,ARM数据处理运算默认情况下不影响条件代码,所以使用这个’S’后缀来指定需要这么做的运算。

  4. ADDEQ r5, r5, r6
    这又是一个ADD,它是有条件指令,该助记符带有“EQ”后缀,表明只有在达到EQ条件为真时才会执行这一指令,如果该条件不为真,指令将表现为NOP。

  5. LDR r0, [r1]
    这是一个加载指令,将r1中指定地址的值加载到r0中。在指定内存访问指令的地址时,我们使用方括号来表达。

  6. STRNEB r2, [r3, r4]
    这是存储指令,只有在NE条件有效时才会执行操作,其次它是一个字节层面的存储,它将r2中最不重要的字节存储到r3加r4得到的内存位置上。

目前为止,我们只是谈了 ARM 指令集,众所周知所有 ARM 指令都是32位的,为了提供更好的代码密度,ARM在很久之前推出了第二指令编码,叫做 Thumb, Thumb 所有指令都是16位的。

Thumb 代码通常在代码密度上可以改善大约35%,大多数C和C++代码都针对具备 Thumb 功能的核心上的 Thumb 进行编译。

既然 Thumb 这么好,我们为何要把真么多精力放在ARM指令集上呢?这是因为 Thumb 是编译代码的最佳目标,如果你直接在汇编程序中编写代码,ARM相对是更好的选择。下面让我们进一步地剖析ARM的实现原理。

ARM 的技术实现

要想深入理解ARM的实现原理是个很大的学习工程,这里一样希望读者读后能对ARM起到一个总体的认识,后续可以进一步的深入学习。我们先以 ARM 汇编基础来展开这一章的 chat。

汇编语言是机器代码上的一个薄的语法层,它由以二进制编码的指令组成,这是我们的计算机所理解。那么为什么我们不写代码呢?可想而知以二进制来进行 coding 的话是多么的痛苦,因此我们将编写ARM程序集。

但是计算机本身只识别机器码是不能运行汇编代码的,这就需要将汇编代码装到机器代码中的工具 GNU Binutils 项目中的 GNU Assembler。一旦用扩展名*.s编写程序就需要把它与其进行组合并与ld链接起来:

$ as program.s -o program.o $ ld program.o -o program

0?wx_fmt=gif

我们从最底层来看下,在最底层,电路上有电信号,信号是将电压切换为两个电平来形成的,例如0伏(关)或5伏(开)。

因为只是我们不能轻易的告诉电路电压,只能选择使用1/0来写入开/关的模式,然后我们对0和1的顺序进行分组,以形成机器码指令,该指令是计算机处理器的最小工作单元,以下是机器语言的示例:

   1110 0001 1010 0000 0010 0000 0000 0001

我们知道ARM处理器只能对寄存器执行数据处理,所以与存储器的交互有两种:从存储器加载到寄存器,并将值从寄存器存储到存储器,即ARM使用加载/存储(LDR和STR)模型进行内存访问。

通常 LDR 用于将内存中的内容加载到寄存器中,STR用于存储寄存器中的内容到存储器地址。我们来举一个基本例子:

0?wx_fmt=png

第一看的小伙伴或许会一头雾水,下面以一张动态图来解释下 ARM 是如何和存储器交互的:

0?wx_fmt=gif

参考

正如刚开始所说的,本次 chat 不是所有 ARM 架构和技术的详尽概览,而是通向 ARM 世界的一扇大门,ARM 网站上有丰富的文档等你去查阅,探索。

比如(http://infocenter.arm.com)可以找到架构参考手册,知识库文章,常见问题解答,处理器文档,以及开发者指南等。

ARM 还有一个不断壮大的全球大学计划,为你提供大量的教学和培训资源,软件工具,以及硬件开发板。

近期热文

想入行AI,别让那些技术培训坑了你...

《低学历又如何?这样的程序员照样可以逆袭》

像这样构建前端架构,除了React 没有其他可说了

一次由点餐引发的Vue2.0 实战

《连公式都没看懂?!学渣谨碰这个「神经网络」》

《当我说要做大数据工程师时他们都笑我,直到三个月后……》

640?wx_fmt=png

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

相关文章

  1. bigemap大地图下载器软件对比

    BIGEMAP功能对比分析图| | | | | |【地图服务行业专家】BIGEMAP是全行业公认的【优秀知名软件】、高新技术企业、国内最早从事GIS领域研发的公司,为全国各行业提供GIS领域的软件…...

    2024/4/24 23:43:29
  2. shell极简教程

    一,shell题记不懂shell的程序员不是好程序员,学习shell是为了自动化,使用自动化可以非常有效的提高工作效率。没有一个大公司不要求linux的基本技能的,只是不同岗位要求掌握的程度不同。二,shell简介Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户…...

    2024/5/8 1:59:35
  3. 【Linux】Linux JSON 格式化输出

    1、使用jq命令$ echo {"uid":100120,"token":"1fa9fb8004b04f66b7da57393641eddc"} | jq . 2、使用python -mjson.tool $ echo {"msg": "ok", "data": {"list": [{"website": "letv&quo…...

    2024/5/8 2:49:32
  4. 【Dockerfile使用案例】CMD和ENTRYPOINT指令使用案例

    CMD/ENTRYPOINT都是指定一个容器启动时要运行的命令。 CMD 功能:Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换。 示例(以tomcat为例): tomcat的Dockerfile的最后一行是: CMD ["catalina.sh", "run"]运行命令…...

    2024/4/24 23:43:26
  5. 031_《Delphi程序设计教程与实训》

    《Delphi程序设计教程与实训》 Delphi 教程 系列书籍 (031) 《Delphi程序设计教程与实训》 网友(邦)整理 EMail: shuaihj@163.com 下载地址: Pdf作 者:黄晓敏 出 版 社:北京大学出版社 译者: 出版:2006-01-01 版次:第1版 印次: 自编码:519799 ISBN:9787301101678 开…...

    2024/5/7 19:07:49
  6. 系统类图

    情景:病人来医院看病住院时,必须要先到柜台去做一个登记.住出院业务应该会有一个重要的事件:住院,这是所有业务的一个起始点。病情信息时每次病人住院的明细信息。 参加的医务人员有医生、护士,还有柜台人员。医生分主治大夫跟住院医生,这两个角色的人对于住院事件的处置…...

    2024/4/14 21:01:48
  7. ARM9硬件接口学习专题

    http://blog.chinaunix.net/space.php?uid=20643761&do=blog&id=1594808ARM9硬件接口学习专题 (2008-01-26 02:14) 分类: Hardware Related前言: 学习嵌入式,ARM接口知识还是很重要的。学好接口可以明白底层硬件是如何工作的以及程序员如何控制这些硬件工作。如果…...

    2024/5/7 19:21:13
  8. echarts全省map地图数据

    echarts全省map地图数据 现在新的版本echarts的地图数据部分不精准已经被和谐掉,开发时不得不依赖第三方的地图开发(如推荐的百度),这里是全省的数据备份,可提供大家导入开发,觉得可以的点个start github地址...

    2024/5/8 0:23:18
  9. Linux中怎样格式化硬盘

    mkfs -t 文件系统类型 /dev/设备名mount -t ext3 /dev/sda /tmp/mnt...

    2024/4/14 21:01:45
  10. Dockerfile 中 CMD(COMMAND)与ENTRYPOINT区别

    目录CMDENTRYPOINT总结CMD指令和ENTRYPOINT指令的作用都是为镜像指定容器启动后的命令。每个容器都会有一个 pid 为 1 的进程,如果COMMAND 为 /bin/bash, 说明这个容器的初始进程就是 bash 进程。当开发人员执行docker exec -it xxxx /bin/bash 能进入容器打命令,其实就是通…...

    2024/4/14 21:01:44
  11. ARM处理器总结

    ARM处理器总结(一) ARM处理器简介 ARM处理器是一个32位元精简指令集(RISC)处理器架构,其广泛地使用在许多嵌入式系统设计。 ARM处理器状态 ARM处理器有两种工作状态:ARM状态,执行32位字对齐的ARM指令;Thumb状态,执行16位半字对齐的Thumb指令。在程序执行过程中两种状态…...

    2024/4/14 21:01:43
  12. springboot搭建个人博客(前后端分离,附源码)

    springboot实现搭建个人博客(前后端分离,附源码) 博客网站地址:www.lqnb.xyz博客版本 springboot2.1.17+mybatis-plus,此版本GitHub地址:https://github.com/memo012/ac-blog springboot1.5.17+mybatis,此版本GitHub地址:https://github.com/memo012/people-blog前言 正如…...

    2024/5/8 0:56:57
  13. Vim 简易教程 (1)

    我很早以前就在用 vim,不过水平很菜,就会最基本的操作。而且经常犹豫是不是要投奔Emacs阵营呢,毕竟在传说中,Emacs强大无比,可以秒杀一切。但是Emacs似乎学起来难度更大,最后还是决定投身vim吧。 一次无意中找到了Steve Oualline 写的 VI iMproved 一书,看过之后我才真的…...

    2024/5/7 22:28:03
  14. 利用 Serverless,实现 COS & CDN Combo Handler

    背景 小 S 维护的一个前端系统,单个页面中有数个没有依赖关系的 js, css 需要加载,此时浏览器会分别去请求对应的文件。此时小 S 收到 Leader 给的一个任务:优化前端的静态资源请求,尽量做合并。什么是 Combo Handler?相信很多前端同学并不陌生。2008 年 7 月 YUI Team 宣…...

    2024/5/7 15:06:48
  15. Python爬取谷歌地图切片、天地图切片

    使用python下载地图切片非常方便,只需要知道切片的url规则,就可以将所有地图切片爬取下来。本文使用的python版本为3.6.谷歌地图卫星影像切片url如下:http://www.google.cn/maps/vt?lyrs=s@815&gl=cn&x=107&y=49&z=7我们只需要根据经纬度计算出行列号,带入…...

    2024/5/7 23:31:28
  16. Dockerfile中ENTRYPOINT 和 CMD的区别

    在Docker的系统学习教程中我们了解到使用Dockerfile构建Docker镜像为一个规范的方式,根据Dockerfile可以了解镜像中安装的组件的详细内容。Dockerfile一般由四部分组成:第一,构建的基础镜像;第二,镜像构建者的信息;第三,构建镜像过程中镜像层添加指令;第四,由该镜像启动…...

    2024/5/7 21:51:33
  17. 【补充】ARM MMU页表框架

    学习于此先上一张arm mmu的页表结构的通用框图(以下的论述都由该图来逐渐展开):以上是arm的页表框图的典型结构:即是二级页表结构:其中第一级页表(L1)是由虚拟地址的高12bit(bits[31:20])组成,所以第一级页表有4096个item,每个item占4个字节,所以一级页表的大小为1…...

    2024/4/24 23:43:21
  18. Ubuntu_Ubuntu硬盘格式化

    分完区还不算完事,格式化后才能正常使用,这里介绍下Linux格式化命令:代码:sudo mkfs -t 文件系统 存储设备格式化就是这么简单,或者也可一这样输入命令:代码: 1. sudo mkfs.ext4 /dev/sdb1 把该设备格式化成ext4文件系统。 2. sudo mke2fs -j /dev/sda6 把该设备格式化成e…...

    2024/4/24 23:43:21
  19. 利用Django实现一个博客(附全部源码)

    不论什么语言,学Web开发必做的项目——个人博客。本次项目基于Python的知名Web框架Django,从数据库到视图逻辑、再到模板语法,完整的走了一遍MTV开发流程。markdown非常适合写博客、新闻类文章,也快成为了开发者写开发文档的标配了。所以本博客项目的文档内容,数据库存储的…...

    2024/4/24 23:43:19
  20. Linux虚拟机安装及常用命令

    文章目录一、Linux的安装1、vm的安装2、在vm上安装linux操作系统2、镜像下载地址3、创建虚拟机4、设置虚拟机名称、以及存放路径5、选择镜像路径、设置网络连接模式6、开启虚拟机,进入安装linux7、Lnux基本设置8、安装完成进入命令行。二、Linux常用命令1、目录操作2、文件处理…...

    2024/4/24 23:43:19

最新文章

  1. Ubuntu安装Syzkaller——相关报错

    目录 一:网络 二:安装go编译器 141 objtool: Dont fail on missing symbol table...

    2024/5/8 10:49:41
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/5/7 10:36:02
  3. Django实现的登录注册功能

    1 前言 在Web开发中,用户登录和注册是最基本且必不可少的功能。Django,作为一个高级的Python Web框架,为我们提供了强大的工具和库来快速实现这些功能。下面,我将详细介绍如何使用Django来实现用户登录和注册功能。 2 功能介绍 …...

    2024/5/5 8:36:26
  4. Android Framework学习笔记(2)----系统启动

    Android系统的启动流程 启动过程中,用户可控部分是framework的init流程。init是系统中的第一个进程,其它进程都是它的子进程。 启动逻辑源码参照:system/core/init/main.cpp 关键调用顺序:main->FirstStageMain->SetupSel…...

    2024/5/4 10:39:30
  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/4 23:55:06
  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. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下: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