云计算必学的存储管理(下部分)

一、存储管理Ⅱ

逻辑卷LVM

(Logical Volume Manager(逻辑卷管理)的简写)

LVM管理
lvm概念:LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上、文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性。

lvm的特点

#传统分区的缺点:
传统的文件系统是基于分区的,一个文件系统对应一个分区。这种方式比较直观,但不易改变。当一个分区空间已满时,无法对其扩充,只能采用重新分区/建立文件系统,非常麻烦;或把分区中的数据移到另一个更大的分区中。

#当采用LVM时:
1.将硬盘的多个分区由LVM统一为卷组管理,可以方便的加入或移走分区以扩大或减小卷组的可用容量,充分利用硬盘空间;
2.当磁盘空间不足而加入新的硬盘时,不必将数据从原硬盘迁移到新硬盘,而只须把新的分区加入卷组并扩充逻辑卷即可。
3.文件系统建立在LVM上,可以跨分区,方便使用;

#使用LVM主要是方便管理、增加了系统的扩展性。可以跨分区,多个硬盘组合。
1.lvm的制作
2.lvm的使用
3.lvm扩容-------在线扩容。可以在有数据的情况下去扩容。
基本分区(MBR|GPT) ----> Filesystem(制作文件系统类型) ----> mount(挂载)
逻辑卷LVM ----> Filesystem(制作文件系统类型) ----> mount(挂载)
lvm的制作
第一步:拥有基本分区
第二步:做成物理卷:  pv ------- sdb1、sdb2 打pv的标记。
第三步:加入卷组:   vg-------- 卷组里面包含:sdb1  sdb2,建立在PV之上。
第四步:逻辑卷   lv  -------  逻辑卷是从卷组里面拿空间出来做成的逻辑卷,在起个名,建立在VG之上
第五步:制作文件系统------mkfs.xfs    lvm路径
第六步:挂载 ------mount   使用lvm
#制作lvm的时候可以是一整块硬盘也可以是硬盘分好的区并且是还没有用的。必须是没有做文件系统的
实战
创建LVM

首先准备添加3块磁盘:可以是/dev/sdb这种没有分区的也可以是/dev/sdb1这种已经分区了的

注意:如果没有pv命令安装 #yum install -y lvm2
[root@linux-server ~]# ll /dev/sd*
brw-rw----. 1 root disk 8,  0 Nov  9 12:59 /dev/sda
brw-rw----. 1 root disk 8,  1 Nov  9 12:59 /dev/sda1
brw-rw----. 1 root disk 8,  2 Nov  9 12:59 /dev/sda2
brw-rw----. 1 root disk 8, 16 Nov  9 12:59 /dev/sdb
brw-rw----. 1 root disk 8, 32 Nov  9 12:59 /dev/sdc
brw-rw----. 1 root disk 8, 48 Nov  9 14:04 /dev/sdd
创建pv
[root@linux-server ~]# pvcreate /dev/sdb #创建pv
  Physical volume "/dev/sdb" successfully created.
[root@linux-server ~]# pvs  #查看pv
  PV         VG     Fmt  Attr PSize   PFree 
  /dev/sdb          lvm2 ---   10.00g 10.00g
[root@linux-server ~]# pvscan  #查看pv
  PV /dev/sda2   VG centos          lvm2 [<19.00 GiB / 0    free]
  PV /dev/sdb                       lvm2 [10.00 GiB]
  Total: 2 [<29.00 GiB] / in use: 1 [<19.00 GiB] / in no VG: 1 [10.00 GiB]
创建vg
[root@linux-server ~]# vgcreate vg1 /dev/sdb   #创建vg
  Volume group "vg1" successfully created
参数解释:
-s 16M 指的是在分区的时候指定vg的大小。
[root@linux-server ~]# vgs    #查看vg
  VG     #PV #LV #SN Attr   VSize   VFree  
  centos   1   2   0 wz--n- <19.00g      0 
  vg1      1   0   0 wz--n- <10.00g <10.00g
[root@linux-server ~]# vgscan
  Reading volume groups from cache.
  Found volume group "centos" using metadata type lvm2
  Found volume group "vg1" using metadata type lvm2
[root@linux-server ~]# vgdisplay #查看vg
--- Volume group ---
  VG Name               vg1
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <10.00 GiB
  PE Size               4.00 MiB
  Total PE              2559
  Alloc PE / Size       0 / 0 MiB
  Free  PE / Size       2559 / <10.00 GiB
  VG UUID               bVvQxe-4M2A-mMuk-b3gJ-4Maj-0xDy-5QZDOp
创建lv
[root@linux-server ~]# lvcreate -L 150M -n lv1 vg1  #创建lv
  Rounding up size to full physical extent 152.00 MiB
  Logical volume "lv1" created.
[root@linux-server ~]# lvcreate -l 20 -n lv2 vg1  #采用PE方式在创建一个lv
  Logical volume "lv2" created.
参数解释:
-L 指定lv的大小
-n 给创建的lv起一个名字
-l 20 指定PE 
[root@linux-server ~]# lvs   #查看lv
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos -wi-ao---- <17.00g                                                    
  swap centos -wi-ao----   2.00g                                                    
  lv1  vg1    -wi-a----- 152.00m                                                    
  lv2  vg1    -wi-a-----  80.00m
制作文件系统并挂载
[root@linux-server ~]# mkfs.xfs /dev/vg1/lv1
[root@linux-server ~]# mkfs.ext4 /dev/vg1/lv2
[root@linux-server ~]# mkdir /mnt/lv{1..2}
[root@linux-server ~]# mount /dev/vg1/lv1 /mnt/lv1
[root@linux-server ~]# mount /dev/vg1/lv2 /mnt/lv2
[root@linux-server ~]# df -Th
Filesystem              Type      Size  Used Avail Use% Mounted on
/dev/mapper/vg1-lv1     xfs       149M  7.8M  141M   6% /mnt/lv1
/dev/mapper/vg1-lv2     ext4       74M  1.6M   67M   3% /mnt/lv2

LVM逻辑卷扩容

VG管理
#注意:如果lv所在的vg有空间直接扩容就ok了!
扩大VG vgextend
1.创建pv
[root@linux-server ~]# pvcreate /dev/sdc 
  Physical volume "/dev/sdc" successfully created.
2.直接vgextend扩容
[root@linux-server ~]# vgextend vg1 /dev/sdc       #vg1卷组名字,将/dev/sdc扩展到vg1中
  Volume group "vg1" successfully extended
[root@linux-server ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree 
  centos   1   2   0 wz--n- <19.00g     0 
  vg1      2   2   0 wz--n-  19.99g 18.23g
实战lv扩容
[root@linux-server ~]# vgs  #查看vg
  VG     #PV #LV #SN Attr   VSize   VFree 
  centos   1   2   0 wz--n- <19.00g     0 
  vg1      1   2   0 wz--n- <19.99g <9.77g
[root@linux-server ~]# lvextend -L 850M /dev/vg1/lv1  #扩展到850M
[root@linux-server ~]# lvextend -L +850M /dev/vg1/lv1 #在原有基础上加850M
[root@linux-server ~]# lvs
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos -wi-ao---- <17.00g                                                    
  swap centos -wi-ao----   2.00g                                                    
  lv1  vg1    -wi-ao----   1.66g                                                    
  lv2  vg1    -wi-ao----  80.00m 
[root@linux-server ~]# lvextend -l +15 /dev/vg1/lv1 #在原有基础上加15个PE
[root@linux-server ~]# lvs
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos -wi-ao---- <17.00g                                                    
  swap centos -wi-ao----   2.00g                                                    
  lv1  vg1    -wi-ao----  <1.68g                                                    
  lv2  vg1    -wi-ao----  80.00m
FS(file system)文件系统扩容
[root@linux-server ~]# df -Th
Filesystem              Type      Size  Used Avail Use% Mounted on
/dev/mapper/vg1-lv1     xfs       149M  7.8M  141M   6% /mnt/lv1
/dev/mapper/vg1-lv2     ext4       74M  1.6M   67M   3% /mnt/lv2
[root@linux-server ~]# xfs_growfs /dev/vg1/lv1  #xfs扩容
[root@linux-server ~]# resize2fs /dev/vg1/lv2   #ext4扩容
[root@linux-server ~]# df -Th
Filesystem              Type      Size  Used Avail Use% Mounted on
/dev/mapper/vg1-lv1     xfs       1.7G  9.1M  1.7G   1% /mnt/lv1
/dev/mapper/vg1-lv2     ext4       74M  1.6M   67M   3% /mnt/lv2

lv移除

[root@localhost ~]# lvremove /dev/vg2/lv2

Do you really want to remove active logical volume vg2/lv2? [y/n]: y

  Logical volume "lv2" successfully removed
  
  #先移除lv

[root@localhost ~]# vgremove /dev/vg2

  Volume group "vg2" successfully removed
  
  #再移除vg

[root@localhost ~]# pvremove /dev/sdc

  Labels on physical volume "/dev/sdc" successfully wiped.

  #移除pv

如何查看 物理卷、卷组、逻辑卷的详细信息

pv、vg、lv
s scan display

pvs 、pvscan、pvdisplay

vgs、vgscan、vgdisplay

lvs、lvscan、lvdisplay

lv 缩容

1. 备份数据

在进行任何磁盘操作之前,确保你有所有重要数据的备份。这是因为缩减逻辑卷涉及到文件系统和分区大小的调整,如果操作不当,可能会导致数据丢失。

2. 检查并卸载逻辑卷

在你可以缩小一个逻辑卷之前,你需要确保该逻辑卷没有被挂载。你可以使用umount命令来卸载它。如果逻辑卷正在使用中,是不能被卸载的。

umount /dev/vgname/lvname

3. 检查文件系统

在缩减逻辑卷之前,需要先检查文件系统是否有错误。这通常涉及到运行e2fsck命令。对于ext4文件系统,命令如下:

e2fsck -f /dev/vgname/lvname

4. 缩小文件系统

在缩小逻辑卷之前,你首先需要缩小文件系统。对于ext4文件系统,你可以使用resize2fs命令。假设你想将逻辑卷缩小到20GB,命令如下:

resize2fs /dev/vgname/lvname 20G

确保缩小到的大小不小于实际使用的空间。

5. 缩小逻辑卷

一旦文件系统被成功缩小,你就可以缩小逻辑卷本身了。使用lvreduce命令来执行这个操作。同样地,如果你想将逻辑卷缩小到20GB,命令如下:

lvreduce -L 20G /dev/vgname/lvname

6. 重新挂载逻辑卷

最后,你可以重新挂载逻辑卷到它之前挂载的目录。

mount /dev/vgname/lvname /mountpoint

在执行上述操作时,非常重要的一点是确保在缩小文件系统和逻辑卷时指定的大小是一致的,以避免数据损坏。

二、交换分区

交换分区管理 Swap—也叫虚拟内存

作用: ‘提升‘ 内存的容量,防止OOM(Out Of Memory)

现象是当内存不够的时候内核会随机杀死进程,它认为占用内存多的进程。(内核会先删除占用内存多的进程).

如何制作交换分区?
#我们可以将硬盘空间拿来当作内存来用
什么时候用到交换分区?
#当物理内存不够用的时候使用swap分区,防止物理内存耗尽

扩展知识

swap分区大小设置规则
在Linux系统,我们可以参照Redhat公司为RHEL5、RHEL6推荐的SWAP空间的大小划分原则,在你没有其他特别需求时,可以作为很好的参考依据。
内存小于4GB时,推荐不少于2GB的swap空间;
内存4GB~16GB,推荐不少于4GB的swap空间;
内存16GB~64GB,推荐不少于8GB的swap空间;
内存64GB~256GB,推荐不少于16GB的swap空间。

一、查看当前的交换分区

[root@linux-server ~]# free -m 
              total        used        free      shared  buff/cache   available
Mem:           1984         155        1679           8         149        1656
Swap:          2047           0        2047
[root@linux-server ~]# swapon -s  #查看交换分区信息

二、增加交换分区 可以是基本分区,LVM,File

[root@linux-server ~]# fdisk /dev/sdd  #分一个主分区出来
[root@linux-server ~]# partprobe /dev/sdd #刷新分区表
[root@linux-server ~]# ll /dev/sdd*
brw-rw----. 1 root disk 8, 16 Nov  9 14:11 /dev/sdd
brw-rw----. 1 root disk 8, 17 Nov  9 14:11 /dev/sdd1

初始化

[root@linux-server ~]# mkswap /dev/sdd1  #初始化
Setting up swapspace version 1, size = 5242876 KiB
no label, UUID=d2fd3bc0-10c0-4aeb-98ea-6b640d29b783

挂载

[root@linux-server ~]# blkid /dev/sdd1  #查看UUID
/dev/sdd1: UUID="d2fd3bc0-10c0-4aeb-98ea-6b640d29b783" TYPE="swap" 
[root@linux-server ~]# vim /etc/fstab  #制作开机挂载
/dev/sdd1       swap    swap    defaults        0 0
[root@linux-server ~]# swapon -a #激活swap分区(读取/etc/fstab)
[root@linux-server ~]# swapon -s
Filename                                Type            Size    Used    Priority
/dev/dm-1                               partition       2097148 0       -1
/dev/sdd1                               partition       5242876 0       -2

#swapoff /dev/sdd1  #关闭swap分区

file制作

[root@linux-server ~]# dd if=/dev/zero of=/swap2.img bs=1M count=512
解释:dd 读入  从空设备里面拿空块 到交换分区                块多大  一共多少兆
[root@linux-server ~]# mkswap /swap2.img  #初始化
[root@linux-server ~]# vim /etc/fstab
/swap2.img      swap    swap    defaults        0 0
[root@linux-server ~]# chmod 600 /swap2.img #交换分区权限需要设置为600,默认644权限不安全。
[root@linux-server ~]# swapon -a
[root@linux-server ~]# swapon -s
Filename                                Type            Size    Used    Priority
/dev/dm-1                               partition       2097148 0       -1
/dev/sdd1                               partition       5242876 0       -2
/swap2.img                              file    524284  0       -3

三、mount详解

**常用挂载选项详解 **

挂载设备文件名、UUID

常见的挂载选项

-o         指定文件系统属性
rw	       读写 
ro	       只读 
noexec	   不允许执行二进制文件
exec	   允许执行二进制文件 
auto	   mount -a 开机自动挂载 
remount	   在线重新挂载
[root@linux-server ~]# mount  #查看已经挂载上的系统的属性

案例1:exec/noexec

[root@linux-server ~]# mount /dev/vg1/lv1 /mnt/lv1/		#挂载默认是有执行权限的
[root@linux-server ~]# mount -o noexec /dev/vg1/lv2 /mnt/lv2  #不允许执行二进制文件
[root@linux-server ~]# cat /mnt/lv1/hello.sh
#!/bin/bash
echo "hello"

[root@linux-server ~]# cat /mnt/lv2/hello2.sh
#!/bin/bash
echo "hello"
[root@linux-server ~]# chmod +x /mnt/lv1/hello.sh 
[root@linux-server ~]# chmod +x /mnt/lv2/hello2.sh
[root@linux-server ~]# /mnt/lv1/hello.sh
hello
[root@linux-server ~]# /mnt/lv2/hello2.sh
-bash: /mnt/lv2/hello2.sh: Permission denied

取消挂载

[root@linux-server ~]# df -Th
Filesystem              Type      Size  Used Avail Use% Mounted on
/dev/mapper/vg1-lv1     xfs       1.7G   34M  1.7G   2% /mnt/lv1
/dev/mapper/vg1-lv2     ext4       74M  1.6M   67M   3% /mnt/lv2
[root@linux-server ~]# umount /mnt/lv2/

四、raid–磁盘阵列

RAID介绍

RAID ( Redundant Array of Independent Disks )即独立磁盘冗余阵列,通常简称为磁盘阵列。简单地说, RAID 是由多个独立的高性能磁盘驱动器组成的磁盘子系统,从而提供比单个磁盘更高的存储性能和数据冗余的技术。

#注意
所有服务器在安装操作系统之前必须先做raid【常识】

最常见的raid级别:0、1、5、6、10:是 1和0 的组合

raid0 ---数据条带卷
最少需要两块磁盘,分别往每一块磁盘上写一部分数据
优点:
1.读写速度快, 
2.磁盘利用率:100%
缺点:不提供数据冗余,无数据检验,不能保证数据的正确性,存在单点故障。

应用场景:
1)对数据完整性要求不高的场景,如:日志存储,个人娱乐
2)要求读写效率高,安全性能要求不高,如图像工作站 
============================================================================
raid1 又叫镜像raid,通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据。
一般需要两块磁盘,每块磁盘上都会存储一份完整数据。其数据安全性就会较高,但是磁盘空间利用率是比较低的。

优点:提供数据冗余,数据双倍存储安全性高支持容错。读速度快
缺点:写速度慢,无数据校验。磁盘利用率不高
磁盘利用率:50%

应用场景:
存放重要数据,如数据存储领域
===========================================================
raid5:RAID5应该是目前最常见的 RAID 等级,它的校验数据分布在阵列中的所有磁盘上。RAID5的磁盘上同时存储数据和校验数据。当一个数据盘损坏时,系统可以根据其他数据块和对应的校验数据来重建损坏的数据。 

raid5最少需要3块磁盘。
优点:
1.可以找回丢失的数据---数据可以通过校验计算得出,
2.冗余磁盘-->(需要4快磁盘将其中一块做热备)当某一块磁盘坏掉后,冗余磁盘会自动替换上去
3.有校验机制
4.读写速度高
5.磁盘利用率高
缺点:
1.磁盘越多安全性能越差

#定义:
RAID 5是RAID 0和RAID 1的折中方案。RAID 5具有和RAID0相近似的数据读取速度,只是多了一个校验信息。RAID5的磁盘空间利用率要比RAID 1高,存储成本相对较低,是目前运用较多的一种解决方案。


应用场景:安全性高,如金融、数据库、存储等。
==================================================
raid6:RAID6 等级是在 RAID5 的基础上为了进一步增强数据保护而设计的一种 RAID 方式。
RAID6引入双重校验的概念,最少需要四块磁盘,它可以保护阵列中同时出现两个磁盘失效时,阵列仍能够继续工作,不会发生数据丢失。
优点:
1.容错:允许两块磁盘同时坏掉。读写快。
2.良好的随机读性能
3.有校验机制

缺点:
1.写入速度差
2.成本高

应用场景:对数据安全级别要求比较高的企业
===============================================
RAID10:先做镜像再作条带--也叫混合raid
优点:
1.较高的IO性能
2.有数据冗余
3.无单点故障
4.安全性能高
缺点:成本稍高
应用场景:
特别适用于既有大量数据需要存取,同时又对数据安全性要求严格的领域,如银行、金融、商业超市、仓储库房、各种档案管理等。
=======================================================

作用

为什么要做raid? #为了保证数据完整性,防止数据丢失
购买磁盘后需要操作
# 1.有磁盘,2.制作raids5,3.开始分区,4.刷新分区表,5,制作文件系统,6.挂载。
  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于云计算的单片机原理及应用课程设计 将云计算技术融入到教学中,是新时代下对教学的一种革新。将单片机原理及应用课 程的教学与云计算相结合,阐述了基于百会在线办公平台下单片机原理及应用课程的设 计。 标签:云计算;单片机;课程设计 1云计算 "云计算"的概念,是由Google的CEO艾里克·施密特在2006年的讲座上第一次提出并使 用的。云计算就是,把目前为止由个人计算机或公司服务器上所进行的信息处理,通过 因特网使其运行在外部巨大服务器上的方法。也就是说,信息的处理在互联网上,即在 "云"中实现,其真正的涵义便是"云(=因特网)+计算(=信息的计算处理)"。 2云计算辅助教学与单片机教学 随着云计算的快速发展,人们的生活和工作水平不断的提高。2009年云计算被应用到 了教育界,带来了教育领域的一次革新。云计算在教育领域的应用被称为"云计算辅助教 学(CCAI)",它是指使用者利用云计算所提供的云服务来完成信息共享,实现教育资源 的最大化利用以及减少教育方面的设施投资。高校是培养人才的地方,利用云计算的优 势,探索高校如何与云计算相结合,进行教学方面的革新是当前教育界面临的一大挑战 。单片机原理及应用是一门专业课,具有技术应用与直接面向就业的特点,掌握好单片 机知识与技能后,将为日后工作打下坚实的基础。如何将云计算应用到单片机教学中, 探索云计算所带来的教学革新,是单片机教学工作者急需探讨的一个问题。 单片机以其完善的功能、低廉的价格,被广泛应用在工业控制、仪器仪表、通信、机 电一体化、家用电器等领域。单片机技术已成为从事自动化、通信、机电一体化等工作 的人员必备的技术。目前,已经有很多高校开展了单片机精品课程的研究,形成了一套 完整的单片机理论教学体系。高校之间相互分享教学资源就可以减少教学资源以及硬件 设施的重复建设与投资。随着云计算技术的不断发展与普及,将各种教学资源迁移到"云 "中,就可以很好的实现高校间各种教学资源的共享,建成一个基于云计算的单片机教学 平台。在单片机原理及应用课程教学中,运用百会套件建立教与学的平台,将单片机教 学与云计算相结合。 3单片机原理及应用教学设计 单片机原理及应用这门课程理论性和实践性都较强,包含了一些抽象的理论概念。这 门课程不像C语言程序设计,只要知道程序怎么编写就可以了,也不像模拟电子技术,只 要知道硬件电路设计便可,它是理论和实践的结合体。 3.1理论教学 理论知识涉及到专业内容,往往枯燥乏味,很难引起学生的学习兴趣,没有了学习兴 趣,学生就会产生抵触心理。所以,选用合适的教学方法就相当重要。教学方法有很多 种,案例教学就是其中的一种。运用案例教学,可以把抽象的理论知识和案例相结合, 能起到将抽象问题具体化的作用。在单片机教学中选用案例教学,就能让学生对教学内 容有直观的印象,有利于提高学生的学习积极性。 利用百会维基呈现教学内容、教学活动、展示作品等。教学内容中采用案例的方式将 教学内容展示给学生,比如电子钟、城市道口交通灯控制系统、防盗报警器等日常生活 中很常见的例子,让学生知道单片机的学习和日常生活息息相关,将原本抽象的理论与 实际例子相结合,从而引起学生的学习积极性。利用了云计算技术,学生随时随地可以 利用上网设备,比如电脑、手机或IPAD等来查看教学内容、教学活动以及相关的作品。 打破了传统的将教学资源拷贝到电脑上的麻烦,而且现在学生基本上都人手一个手机, 手机小巧随身携带方便,方便随时查看相关信息。 利用百会文档免费在线建立、撰写、存储和分享文档。通过百会文档,学生便可以共 享演示文稿、电子表格和文档等资源,还可以上传图片和文件等资源,利用这个功能, 可以实现网上完成作业。打破了传统的手写作业的模式,在相应的上网设备中,通过浏 览器打开百会网的百会文档,编写好作业,然后进行提交。教师接收作业并批改,可以 及时将作业批改结果反馈给学生。利用云技术,还可以对考试方式进行革新。利用百会 文档提供的文档权限管理功能,完成网上答题并提交,最终教师进行批改。不但提高了 教学效率,还可以减少教育方面的相关投资。 百会聊聊可以实现师生间的及时交流互动。学生在学习单片机课程过程中遇到问题可 以随时提问,教师或者其他学生都可以解答,及时解决学习过程中的疑问。百会论坛也 可以实现师生间的交流互动。学生或教师将有用的一些信息或资料发布在论坛上,大家 可以交流讨论,不但有利于学习还能增长课外知识。 3.2实验教学 实验是对所学理论知识的应用,是单片机课程中不可缺少的一个部分。单片机原理及 应用是软件和硬件相结合的一门课程,软件部分要求学生掌握单片机相关理论以及编写 程序的能力,硬件部分要求学生会动手设计硬件电路。我校电子专业在课程安排上先学 习微机接口技术,然后再学单片机原理及应用,所以选用汇编

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值