【存储系统】0. 序
学习资料:大话存储 存储系统底层架构原理极限剖析 终极版 张冬编著——清华大学出版社 2015.01
文章目录
- 0.1 序
- 0.1.1 信息存储技术溯源
- 0.1.2 数字化信息推动存储技术发展
- 0.1.3 数字存储技术
- 0.2 存储系统介绍
- 0.2.1 信息
- 0.2.2 数据
- 0.2.3 数据存储
- 0.2.4 用计算机来处理、保存信息
- 0.3 IO
- 0.3.1 三种总线
- 0.3.2 网络三元素模型
- 0.3.3 计算机网络系统
- 连
- 多层PCB
- 北桥
- 南桥
- PCI总线
- 找
- 发
0.1 序
书中内容涉及:
-
计算机IO基本概念
-
硬盘物理结构、盘片数据结构和工作原理;
-
七种常见的RAID原理详析以及性能细节对比,
-
虚拟磁盘、卷和文件系统原理
-
磁盘阵列系统
-
OSI模型
-
FC模型
-
众多磁盘阵列架构
同时也涉及很多新兴技术:
- 机械硬盘
- SSD
- FC/SAS协议
- HBA卡
- 存储控制器
- Thin Provision自动精简配置
- 数据容灾
- 应用容灾
- 业务容灾
- 性能优化
- 存储系统IO路径
- 云计算与云存储
0.1.1 信息存储技术溯源
信息存储是信息跨越时间的传递,也是人类传承知识的主要手段。在信息存储技术上,人类有超过万年的发明创造史。早期就地取材,人类利用石刻、泥板、竹简和羊皮等来记录信息,后来发明了纸张和活字印刷来保存和传播信息,近代发明了照相、录音和录像技术来存储信息。利用这些发明和创造,人类留下了极为丰富的文字、绘画、图像、语音和视频信息。正是这些信息.记录了人类创造的知识体系,使我们能够传承文明,并在此基础上创造新的文明。
-
竹简,纸张
-
选数管:1946年开发,电子存储装置,一种由直观存储转向机器存储的产物,256-4096bit
-
穿孔卡:用于输入数据和程序
-
穿孔纸带:用于输入和输出数据,一行代表一个字符
-
磁带:1951年作为数据存储设备使用,20世纪70年代后期到80年代,出现小型盒式磁带,长度为90分钟的磁带每一面可以记录大约660KB的数据
-
磁鼓存储器:1932年,通常作为内存,大约10KB
-
硬盘:1956年
-
软盘:IBM在1971年引入,目前已被淘汰
-
光盘:1987年,目前已经出现了CD-ROM、DVD、D9、D18、蓝光技术
-
Flash芯片和卡式存储:固态硅芯片,专用数字电路芯片,通用CPU芯片,RAM芯片,Flash芯片(永久存储数据的芯片)
-
磁盘阵列:硬盘容量爆炸引发
-
大型网络化磁盘阵列
0.1.2 数字化信息推动存储技术发展
从计算机的发明为开端,人类的信息技术进入了一个以 数字化 为特征的历史性新阶段。各种形式的信息被转换成数字后,以容易的方式进行处理、传输和存储,然后再转换为各种形式的信息被人们所利用。各种信息被大规模数字化,使得数字化的信息呈爆炸性增长。特别是互联网的普及,大大加快了信息的流通过程,使得数字化信息加速产生。Jim Gary:人类每18个月新增的数据量,将是历史上所有数据量之和。由此可见,对信息存储的需求将是无止境的,信息存储技术在这种需求驱动下得到了空前的发展
0.1.3 数字存储技术
为了保存数字化的信息,当代的科学家和工程师在最近的几十年中发明了磁存储、光存储半导体存储等多种存储技术,其中大容量的硬盘在海量信息存储中扮演了主要的角色。硬盘的密度在短短几十年中增长了一百万倍以上。
由硬盘作为基本单元,通过各种总线、网络将硬盘连接成不同层次和不同规模的存储系统,就构成了我们目前的 网络存储系统。
- 由硬盘组加上几余纠错技术构成磁盘阵列,再由磁盘阵列通过局部高速网络连接形成存储区域网;
- 通过包含硬盘的大规模集群和文件系统形成的海量存储系统成为大型网站和数据中心新的存储架构。
人们发明了各种技术来提高存储系统的容量、性能、效率、可用性、安全性和可管理性
- 存储虚拟化、归档存储、集群存储、云存储、绿色存储等新名词不断涌现,SSD固态存储、重复数据删除、连续数据保护、数据备份与容灾、数据生命周期管理等新技术层出不穷,令人应接不暇
0.2 存储系统介绍
随着人类相互之间交流的愿望越来越迫切,逐渐形成了通用的象形文字。有了文字之后,人们对每个文字加上了声音的表达,就形成了语言,也就是将一种形式的信息,转换成另一种形式的信息。人们用文字作为交流工具,将自己大脑产生的信息,通过这种方式传递给其他人。人类将大脑中的数据,变成语言编码然后通过声带的振动,通过空气这个大广播网,传递给网内的每个人。后来,人们将信息保存在介质上,如纸张、书本(活字印刷术)、激光打印机、纸带、软盘、硬盘、光盘
0.2.1 信息
信息:理解为对大脑的一种刺激形式
物质或者非物质,最后都是通过信息来表现。世界在生物眼中就是信息,世界通过信息来反映
任何物质都可以被表现为一种信息,只要信息存在,世界就存在,即世界可被认知
- 眼睛所能感知的只是光线,光触发了视网膜细胞,产生了一系列生化反应,经过蛋白质相互作用,神经网络传导,直至大脑中枢,产生一系列脉冲,一系列逻辑,就是信息
0.2.2 数据
将信息保存下来,所需要的是描述信息的信息,这些信息就是数据
- 数据包含了信息,读入数据,就是读入了信息,产生另一种信息。数据可以保存在某一种物质上,这种物质信息对计算机的刺激就产生了具体信息,而这些信息进而对人脑产生刺激,就产生人类可感知的信息
整个世界,就是信息之间的相互作用,信息影响信息
0.2.3 数据存储
早期的计算机,存储系统是没有磁盘的,只有纸带。纸带上时一些按一定规则排列的小孔,当这些小孔被银针穿过之后,银针便会接触到纸带下放置的水银槽,从而导通计算机上的电路,进行电路逻辑运算
磁存储技术被发明出来后,首先出现的是软盘,其速度很慢,程序存储在磁盘后,计算机启动,CPU按照ROM中的指令一条一条执行,先是检查硬件。检查完毕之后,ROM中最后一条指令就是让CPU跳转到磁盘的0磁道来执行存储在磁盘中的程序。这些初始化程序直接以二进制的形式存储在磁盘上,载入执行之后,就启动了程序内核。每个程序都必须独立完成在该计算机上运行的所有代码
在磁盘技术上发明出来的是文件系统,目的是为了方便应用程序管理磁盘上的数据产生。实际上是操作系统的代码模块,
- 这段代码本身也是信息,也要存储在磁盘上。而且文件系统的代码也需要读取一些信息,才能完成功能
- 文件系统的元数据:用于描述文件系统结构的数据,这些元数据以文件的形式放在磁盘上
0.2.4 用计算机来处理、保存信息
人脑可以存储各种信息,而计算机也能利用外部介质来存放数据,计算机本质上是人脑的一个外部信息的存储和处理的工具
计算机存储领域的一些虚拟化产品,本身就模拟了二级智能功能,可以连接任何不同型号品牌的存储设备,从这些设备上提取信息然后传输给主机
计算机存储领域研究的就是 怎么样为计算机又快又高效地提供数据以便辅助其运算
-
高速:将多块磁盘做成RAID(Redundant Array of Independent Disks)系统,将每个独立的磁盘组成阵列,联合存储数据,加快存储速度
-
容量:传统的将硬盘放到计算机主机箱内的做法已经不能满足现代应用程序对存储容量的需求,就催生了网络存储技术
将存储系统扩展到网络上,使存储设备成为了网络上的一个结点,以供其他结点访问。计算机可以通过网络来存取网络设备上的数据,他关注的是如何在网络上向其他结点提供数据流服务。进而产生了相关联的技术:IT系统容灾技术等
0.3 IO
IO就是IN和OUT建成。CPU需要从内存中提取数据来运算,运算完毕后再放回内存,或者直接将电信号发向一些针脚以操作外部设备
- 对于CPU来说,从内存提取数据,叫做IN;运算完后将数据直接发送给某些针脚或放回内存,叫做OUT
- 对于磁盘来说,IN指数据写入磁盘的过程,OUT是指数据从磁盘读出来的过程
数据在每个部件不断进行IO过程,传递给CPU由其运算处理,再经过IO过程,最终到达输出设备
0.3.1 三种总线
当代计算机中,IO通过共享 数据总线 的方式来实现。
总线是一条或多条物理上的导线,每个部件连接到这些导线上,导线上的电位每个时刻都相等,这样总线上的所有部件都会收到相同的信号
半双工工作模式 :同一时刻只能有一个部件在接收或者发送
仲裁总线 或 中断总线 上给出的信号来判断某个时刻总线由哪个部件来使用
- CPU运行操作系统内核的设备管理程序,产生控制信号
0.3.2 网络三元素模型
网络:将所有要通信的节点 连 起来,然后 找 到目标,找到后就 发 送数据
-
连
将网络上各部件连接起来,可以通过HUB总线,以太网,电话交换,无线,直连,中转等。每个网络点到其他网络点总有通路
-
找:编址+映射
通过命名建立区分机制。任何节点,不管所在的环境使用什么命名方式,到了网络层,都需要使用IP地址根据TCP/IP协议,实现节点与节点无障碍的通信
-
发
传输层需要保证发送数据。
0.3.3 计算机网络系统
连
CPU和内存时一个冲突域,IO总线是一个冲突域,桥接芯片将这两个冲突域桥接起来
多层PCB
主板上每个部件都是通过总线连接起来的,总线的条数与位宽相关(CPU按其内部寄存器到运算单元之间的总线数目来确定位数)。
- 部件交换数据的 数据总线
- 确认通信时目标设备的 地址总线
- 互相传递控制信号的 控制总线
- 中断与仲裁用的 仲裁总线
导线之间很密集,在高频振荡时会产生很大干扰,所以人们将这些导线印刷到不同电路板上,然后再将这些电路板压合起来,形成一块板——多层印刷电路
每块板上的导线数量降低,板与板之间的信号屏蔽性更好
北桥
CPU和内存速度很快,他们之间单独用一条总线连接.这个总线和慢速IO之间通过一个桥接芯片连接——主板上的 北桥芯片
- 北桥芯片连接了CPU、内存和IO总线
CPU和北桥之间的连线叫 系统总线(前端总线)
- 总线频率相当于CPU向外部存取数据时的数据传输速率,CPU自身频率表则表示CPU运算时电路的频率
南桥
由于北桥速度太快,IO总线速度相对于北桥很慢,所以北桥和IO总线之间往往要增加一个网桥,叫 南桥
- 在南桥上,集成了众多外设的控制器,如磁盘控制器,USB
PCI总线
PCI总线:目前计算机与服务器所普遍使用的一种南桥与外设连接的总线技术
用于传递外设的数据信号,可以终结在一个插槽,用于将PCI接口的板卡插入PCI总线,也可以直接与外设连接(一般用于集成在主板上的设备)
PCI总线的地址总线和数据总线是分时复用的
- 节省接插件的管脚数
- 便于实现突发数据传输
数据传输
数据传输时,一个PCI设备作为发起者(主控,Initiator,Master),另一个PCI设备作为目标(从设备,Target,Slave)。总线上所有时序的产生与都由Master发起
由于是总线式,所以同一时刻只能有一对设备完成数据传输,需要 总裁机构 决定总线使用优先级
- 当PCI总线进行操作时,Master先置
REQ#
信号,用来请求总线使用权,当得到仲裁器的许可(GNT#
信号),会将FRAME#
信号(传输开始或结束信号)置低,并在地址总线(分时复用数据总线)上放置Slave地址,同时C/BE#
(命令信号)放置命令信号,说明接下来的传输类型 - 所有PCI总线上的设备都需要对此地址译码,被选中的设备要置
DEVSEL#
(被选中信号)以声明自己被选中。当IRDY#
(Master可以发送信号)和TRDY#
(Slave可以发送信号)都置低时,可以传输数据。 - 当Master数据传输结束前,将
FRAME#
置高位表明只剩最后一组数据要传输,并在传送数据后放开IRDT#
以释放总线控制权
PCI总线的中断共享
PCI总线可以实现中断共享,即不同设备使用同一中断而不发生冲突
- 对外之可见PCI上有中断请求
硬件上,采用电平触发:中断系统一端接高电阻,在要产生中断的板卡上用三极管的集电集将信号拉低。不管有几块板产生中断,中断信号都是低电平;当所有办卡上的中断都得到处理后,中断信号才恢复高电平
软件上,采用中断链方式:系统启动时,扫描所有板卡,若板卡 A 使用了中断7,则将中断7的内存区指向板卡 A 的中断服务程序入口 ISR_A
,若还有板卡B也使用了中断7,则将 ISR_B
头插入中断7链表。当中断发生时,系统跳转到中断7对应的内存,轮询中断7的中断链,直至找到板卡相应的中断服务程序
找
主机总线中的设备地址映射。每个IO设备启动时,都要向内存中映射一个或多个地址,地址8bit,称为IO端口。
被北桥芯片重定向到总线上世实际的设备上
发
-
CPU将IO地址放到系统总线上,北桥收到后,会等待CPU发送第一条针对这个外设的指令,CPU会发送三条指令:
- 第一条:指令包含了表示当前指令是读还是写的位,以及其他选项(操作完成是否需要中断通知CPU处理,是否启用磁盘缓存等)
- 第二条:指明应该读取的硬盘逻辑块号(LBA)
- 第三条:给出读取出来的内容应该存放到内存中哪个地址
这3条指令被北桥依次发送到IO总线上的磁盘控制器执行
-
磁盘控制器接收到第一条指令,知道是读/写指令,且知道一些相应的操作选项
等待下一条指令,即逻辑块号
接收到逻辑块号后,会进行映射,一个逻辑块会对应多个扇区。定位完成后,等盘体转到扇区后,控制器会驱动磁头寻道,磁头开始读取数据
在读取数据的同时,会接收到第三条指令,数据读出后,可以直接通过DMA技术(磁盘控制器可以直接对内存寻址并执行写操作,不需要CPU参与)
数据存入内存后,CPU就从内存中取数据,进行其他运算
CPU实际是对南桥上集成(或通过PCI接入IO总线)的控制器发出对磁盘的指令,控制器再将这些指令翻译成内部指令执行操作。CPU只需要知道待操作设备的设备号、逻辑地址与对逻辑地址的操作,这些信息都由磁盘控制器驱动程序产生
相关文章:
![](https://img-blog.csdnimg.cn/b93a6fc148104c049f6ae4f72bdc94f1.png)
【存储系统】0. 序
学习资料:大话存储 存储系统底层架构原理极限剖析 终极版 张冬编著——清华大学出版社 2015.01 文章目录 0.1 序0.1.1 信息存储技术溯源0.1.2 数字化信息推动存储技术发展0.1.3 数字存储技术 0.2 存储系统介绍0.2.1 信息0.2.2 数据0.2.3 数据存储0.2.4 用计算机来处…...
逐字稿 | 2 MoCo 论文逐段精读【论文精读】
bryanyzhu的个人空间-bryanyzhu个人主页-哔哩哔哩视频 评价 今天我们一起来读一下 MOCO 这篇论文。 MOCO 是 CVPR 2020 的最佳论文提名,算是视觉领域里使用对比学习的一个里程碑式的工作。而对比学习作为从 19 年开始一直到现在视觉领域乃至整个机器学习领域里最炙…...
![](https://img-blog.csdnimg.cn/d0ddb2f6a5ea4b078a6f4b55a47f9ee8.jpeg#pic_center)
【数据结构】排序算法的稳定性分析
💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …...
![](https://img-blog.csdnimg.cn/img_convert/a7db822547ede3a17e970c4f8ce5d113.png)
Redis AOF持久化和ReWrite
前言 Redis 的 RDB 持久化机制简单直接,把某一时刻的所有键值对以二进制的方式写入到磁盘,特点是恢复速度快,尤其适合数据备份、主从复制场景。但如果你的目的是要保证数据可靠性,RDB 就不太适合了,因为 RDB 持久化不…...
Flink学习之旅:(一)Flink部署安装
1.本地搭建 1.1.下载Flink 进入Flink官网,点击Downloads 往下滑动就可以看到 Flink 的所有版本了,看自己需要什么版本点击下载即可。 1.2.上传解压 上传至服务器,进行解压 tar -zxvf flink-1.17.1-bin-scala_2.12.tgz -C ../module/ 1.3.启…...
![](https://img-blog.csdnimg.cn/64a6eba854514ec7a51fc9a107517990.png)
Go语言入门心法(六): HTTP面向客户端|服务端编程
Go语言入门心法(一): 基础语法 Go语言入门心法(二): 结构体 Go语言入门心法(三): 接口 Go语言入门心法(四): 异常体系 Go语言入门心法(五): 函数 一:go语言面向web编程认知 Go语言的最大优势在于并发与性能,其性能可以媲美C和C,并发在网络编程中更是至关重要 使用http发送请…...
![](https://www.ngui.cc/images/no-images.jpg)
为什么非const静态成员变量一定要在类外定义
当我们如下声明了一个类: class A{public:static int sti_data;// 这个语句在c11前不能通过编译,在c11的新标准下,已经能够在声明一个普通变量是就对其进行初始化。int a 10;static const int b 1;//...其他member };// 在类外…...
![](https://img-blog.csdnimg.cn/4b0b9d6eeae0451db0cafb9f19431781.jpeg#pic_center)
千兆光模块和万兆光模块的区别?
在网络通信领域,千兆光模块和万兆光模块是最为常见且广泛应用的两种光模块。不同之处在于传输速率、封装、传输距离、功耗、发射光功率、接收光功率和应用场景等。 千兆光模块的传输速率为1 Gbps,万兆光模块的传输速率为10 Gbps,这意味着万…...
![](https://img-blog.csdnimg.cn/69f7bdcc50e144c5b2de44bcdafa5a59.png)
中断:Zynq Uart中断的流程和例程~UG585的CH.19
Zynq里的uart UART 控制器是全双工异步接收器和发送器,支持多种可编程波特率和 I/O 信号格式。该控制器可以适应自动奇偶校验生成和多主机检测模式。 UART 操作由配置和模式寄存器控制。使用状态、中断状态和调制解调器状态寄存器读取 FIFO、调制解调器信号…...
![](https://img-blog.csdnimg.cn/img_convert/77892acd78f3371931b5792de074c43d.png)
计算机补码能够减法转加法的原因
...
![](https://img-blog.csdnimg.cn/871e315a9419406f9023c25b58f7c0be.jpeg)
软件工程与计算总结(十九)软件测试
目录 编辑 一.引言 1.验证与确认 2.目标 3.测试用例 4.桩与驱动 5.缺陷、错误与失败 二.测试层次 1.测试层次的划分 2.单元测试 3.集成测试 4.系统测试 三.测试技术 1.测试用例的选择 2.随机测试 3.基于规格的技术(黑盒测试) 4.基于代…...
![](https://www.ngui.cc/images/no-images.jpg)
Tomcat设置IP黑名单和白名单server.xml
方式一: -- 只允许192.168.1.2和192.168.2.3 <Context path"" docBase"xxxAdmin" debug"0" reloadable"true" ><Valve className"org.apache.catalina.valves.RemoteAddrValve" allow"192.168.1.…...
![](https://img-blog.csdnimg.cn/756999b5c39f46e3a6f96bc5f3c35731.png)
【AI视野·今日NLP 自然语言处理论文速览 第五十五期】Mon, 16 Oct 2023
AI视野今日CS.NLP 自然语言处理论文速览 Mon, 16 Oct 2023 Totally 53 papers 👉上期速览✈更多精彩请移步主页 Daily Computation and Language Papers PromptRE: Weakly-Supervised Document-Level Relation Extraction via Prompting-Based Data Programming Au…...
![](https://www.ngui.cc/images/no-images.jpg)
k8s crd设置额外header
可以通过设置crd.spec.additionalPrinterColumns来实现: apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata:name: crontabs.stable.example.com spec:group: stable.example.comscope: Namespacednames:plural: crontabssingular: cr…...
![](https://img-blog.csdnimg.cn/img_convert/653d38d098f09e1605517cbf2cc6669c.png)
电容笔好还是触屏笔好?便宜又好用的电容笔推荐
目前有哪些电容笔值得买?相比于之前的电容笔,现在的电容笔增加了很多新的特性功能,例如防误触、避免手指不小心触碰屏幕造成书写错误、笔画粗细可以自由调整等。苹果最初的Pencil现在售价一直高居不下。所以,如果你没有过多的预算…...
![](https://www.ngui.cc/images/no-images.jpg)
列表作为条件查询的参数
<if test"secucodeList ! null and secucodeList.size() > 0">...
![](https://img-blog.csdnimg.cn/752ddcf98b2041aeb906cd57e173fbdd.png)
elementui中el-select和el-tree实现下拉树形多选功能
实现效果如下: 代码如下: html中 <el-col :lg"12"><el-form-item label"可用单位" prop"useOrgListTemp"><div class"departAll"><el-selectref"selectTree"v-model"valu…...
![](https://www.ngui.cc/images/no-images.jpg)
手机怎么监控电脑?
随着企业对电脑监控需求的增加,越来越多的管理者意识到使用电脑监控电脑的不便性,一旦外出就无法实时查看监控。其实可以用手机实现监控电脑的需求,只需在被监控端安装电脑监控软件后,将电脑设备和员工信息进行绑定,使…...
![](https://www.ngui.cc/images/no-images.jpg)
职场题:有一件特别紧急的事,群众要办理,且联系不上领导,你怎么办?(2)
接1所写 如果无法联系上领导且有一项特别紧急的事情需要办理,以下是进一步的建议: 11. 尝试其他沟通渠道:除了直接联系领导外,尝试通过其他沟通渠道与领导取得联系。这可能包括电子邮件、即时通讯工具或其他内部通信平台。确保详…...
![](https://img-blog.csdnimg.cn/4387d36885bd4d9ab400cdc7c57a3fa3.png)
《深入理解java虚拟机 第三版》学习笔记一
第 2 章 Java 内存区域与内存溢出异常 2.2 运行时数据区域 Java 虚拟机在执行 Java 程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而一直存在,有些…...
![](https://www.ngui.cc/images/no-images.jpg)
webGL编程指南 第三章 旋转三角形
我会持续更新关于wegl的编程指南中的代码。 当前的代码不会使用书中的缩写,每一步都是会展开写。希望能给后来学习的一些帮助 git代码地址 接着 上一节 接着做平移的转化。本案例是三角形的旋转 <!DOCTYPE html> <html lang"en"><head…...
![](https://img-blog.csdnimg.cn/f700fc5df3194ae6ab936eb79f27a2a0.jpeg#pic_center)
网络安全是什么?一文认识网络安全
一、网络安全 1.概念 网络安全从其本质上讲就是网络上的信息安全,指网络系统的硬件、软件及数据受到保护。不遭受破坏、更改、泄露,系统可靠正常地运行,网络服务不中断。 (1)基本特征 网络安全根据其本质的界定&#…...
![](https://www.ngui.cc/images/no-images.jpg)
LeetCode 2897. 对数组执行操作使平方和最大【贪心,位运算,哈希表】2301
本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...
![](https://img-blog.csdnimg.cn/d38c04d7127a4339b41d93b4af1dcbf9.png)
linux加密安全和时间同步
sudo实现授权 添加 vim /etc/sudoers luo ALL(root) /usr/bin/mount /deb/cdrom /mnt/ test ALL(root:ALL) ALL 在所有主机上 提权为root用户, 可以执行所有命令 户"test"被授权以"root"用户身份在任意主机上执行任意命令 切换luo用户使用 su…...
![](https://www.ngui.cc/images/no-images.jpg)
在Go中处理异常
引言 程序遇到的错误大致分为两类:程序员预料到的错误和程序员没有预料到的错误。我们在前两篇关于[错误处理]的文章中介绍的error接口主要处理我们在编写Go程序时预期的错误。error接口甚至允许我们承认函数调用发生错误的罕见可能性,因此我们可以在这些情况下进行…...
![](https://www.ngui.cc/images/no-images.jpg)
rust 全局变量
文章目录 编译期初始化静态常量静态变量原子类型 运行期初始化lazy_staticBox::leak从函数中返回全局变量 标准库中的 OnceCell 编译期初始化 静态常量 const MAX_ID: usize usize::MAX / 2; fn main() {println!("用户ID允许的最大值是{}",MAX_ID); }关键字是co…...
![](https://www.ngui.cc/images/no-images.jpg)
使用Python的qrcode库生成二维码
使用Python的qrcode库生成二维码 此二维码直接跳转对应的网址。 1、首先安装qrcode包 pip install qrcode2、运行代码 import qrcode# 需要跳转的URL url "https://blog.csdn.net/weixin_45092662?typeblog" img qrcode.make(url) img.save("qrcode.png&…...
![](https://img-blog.csdnimg.cn/7a30da27666445a297b1729d89bfb860.png)
MSQL系列(四) Mysql实战-索引分析Explain命令详解
Mysql实战-索引分析Explain命令详解 前面我们讲解了索引的存储结构,我们知道了BTree的索引结构,也了解了索引最左侧匹配原则,到底最左侧匹配原则在我们的项目中有什么用?或者说有什么影响?今天我们来实战操作一下&…...
![](https://img-blog.csdnimg.cn/801228fc7ad148759d8468fd6bb518f8.png)
FPGA软件【紫光】
软件:编程软件。 注册账号需要用到企业邮箱 可以使用【企业微信】的邮箱 注册需要2~3天,会收到激活邮件 授权: 找到笔记本网卡的MAC, 软件授权选择ADS 提交申请后,需要2~3天等待邮件通知。 使用授权: 文…...
![](https://img-blog.csdnimg.cn/img_convert/e196753ce2e36a2f9ec83c64f7f468c3.png)
饲料化肥经营商城小程序的作用是什么
我国农牧业规模非常高,各种农作物和养殖物种类多,市场呈现大好趋势,随着近些年科学生产养殖逐渐深入到底层,专业的肥料及饲料是不少从业者需要的,无论城市还是农村都有不少经销店。 但在实际经营中,经营商…...
![](/images/no-images.jpg)
网站维护的要求/新冠疫情最新情况
单项选择题 1、网络保险能解除传统保险中客户与保险机构的时间、空间制约主要体现的方式是( ) (2 分) A.一个网址 B.一对多 C.一对一 D.一个服务器 2、P2P网络借贷是( &a…...
![](/images/no-images.jpg)
网站关键词的确定/制作网站的软件
今天发现,之前写到mysql中的推送日志,有两个问题:1) 由于日志是添加式的不是覆盖式的,一天执行多次,就有多条记录,我只想要最后一次的记录即可,用这个语句从库里检索:SE…...
![](/images/no-images.jpg)
网站建设互联/搜狗排名优化工具
1. 判断某元素的在其父元素 的位置 $(this).index(); 的内容 $(this).html(); $(this).attr("data-toggle"); 获取属性值 css修改 $("p").css("background-color","yellow"); css整体修改 $(this).addClass("active").…...
![](https://img-blog.csdnimg.cn/20200720215340809.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2E4MTI0MTc1MzA=,size_16,color_FFFFFF,t_70)
网络公司 营销型网站/专注网络营销推广公司
海思[Hi3531]GPIO应用程序和寄存器操作//主要就是这个函数啦 HI_S32 SetReg(HI_U32 u32Addr, HI_U32 u32Value) {HI_U32 *pu32Addr NULL;HI_U32 u32MapLen sizeof(u32Value);pu32Addr (HI_U32 *)HI_MPI_SYS_Mmap(u32Addr, u32MapLen);//存储映射接口if(NULL pu32Addr){retu…...
有哪些可以接单做任务的网站/深圳网站提升排名
前言 有的时候,配置信息是我们无法在开发过程中就能确定的。比如,给客户开发的项目,客户需要根据自身的情况自定义配置,如数据库配置,加密密钥配置等等。这时候,就需要把配置文件放在外面,让用户…...
![](/images/no-images.jpg)
餐饮网站建设方案/广州网站优化外包
下面给出一个QTP操作xml文件函数的一个范例: Dimfilepath,xmlDoc,myErr,strXML,rootNode filepath"c:\12.xml"SetxmlDocCreateObject("Microsoft.XMLDOM")创建一个xml对象xmlDoc.asyncFalsexmlDoc.load filepath加载xml文件IfxmlDoc.parseError…...