linux挂载新硬盘

linux挂载新硬盘

前言

最近一些功能需要一些虚拟机,考虑到创建虚拟机和配置一些常用软件比较麻烦,故打算先创建一个资源最小化的虚拟机,然后配置一些常用软件,以后需要可以直接复制后就能使用。

虽然虚拟机大部分资源都可以动态修改,但是硬盘空间并不是那么容易改。初始化硬盘设置过大了,不好回收,设置小了又不够用。针对这个问题,我打算用挂载新硬盘的形式来解决,在linux中一切皆文件,添加一块新的硬盘相当于多挂载几个目录而已。

由于很久没有使用挂载硬盘进行操作了,一些关键命令的参数都忘记了?,今天实操一下记录下来,免得以后又满世界找资料。

一、硬盘分区、格式化、挂载分区的关系

从上图可以看出它们之间的关系:

  • 分了方便管理,硬盘需要分区,可以分多个,也可以把整个硬盘弄成一个分区。
  • 分区需要使用文件系统来格式后才能使用
  • 格式化后的分区就可以被挂载到系统中某个目录下

二、查找新硬盘

首先我们需要找到硬盘在哪,linux中设备都挂载到/dev目录下,名称由系统自动生成。但是这个名称也不是乱随机生成的,硬盘接口的类型,把IDE的命名位hd[a-z],把SCSI等的命名位sd[a-z],如果有多个类型相同的硬盘,会在后面加个数字,例如第二块SCSI硬盘的命名为sdb2。

可以用fdisk查看分区,fdisk所在的目录在/usr/sbin在某些发行版是没有配置到PATH上,如果要直接使用需要手动把/usr/sbin目录配置到PATH,或者使用绝对路径/usr/sbin/fdisk使用。使用fdisk -l列出设备信息,以下是我的虚拟机的输出。

debian@debian:~$ sudo fdisk -l

Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x606baa63

Disk /dev/sda: 30 GiB, 32212254720 bytes, 62914560 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x953d4c78

Device     Boot    Start      End  Sectors  Size Id Type
/dev/sda1  *        2048 60913663 60911616   29G 83 Linux
/dev/sda2       60915710 62912511  1996802  975M  5 Extended
/dev/sda5       60915712 62912511  1996800  975M 82 Linux swap / Solaris

这里可以看到设备/dev/sdb是我挂载的一块新硬盘,大小是20G,分区表格式是dos(MBR)。

三、挂载新硬盘实操

挂载一个新的硬盘,需要先对硬盘进行分区,然后对分区进行格式化,最后挂载即可。但是手动挂载每次重启后都需要重新手动挂载,所以需要一个配置让系统每次开机自动对分区进行挂载,这里修改的配置是fstab。

1、硬盘分区

使用fdisk /dev/sdb进入交互式命令,可以输入m显示帮助信息

debian@debian:~$ sudo fdisk /dev/sdb

Welcome to fdisk (util-linux 2.36.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): m

Help:

  DOS (MBR)
   a   toggle a bootable flag
   b   edit nested BSD disklabel
   c   toggle the dos compatibility flag

  Generic
   d   delete a partition
   F   list free unpartitioned space
   l   list known partition types
   n   add a new partition
   p   print the partition table
   t   change a partition type
   v   verify the partition table
   i   print information about a partition

  Misc
   m   print this menu
   u   change display/entry units
   x   extra functionality (experts only)

  Script
   I   load disk layout from sfdisk script file
   O   dump disk layout to sfdisk script file

  Save & Exit
   w   write table to disk and exit
   q   quit without saving changes

  Create a new label
   g   create a new empty GPT partition table
   G   create a new empty SGI (IRIX) partition table
   o   create a new empty DOS partition table
   s   create a new empty Sun partition table

Command (m for help): 

fdisk的每个修改都是在内存中的,并没有真正写入硬盘,需要输入w指令才会被写入。

MBR格式下主分区只能有4个,我不是很喜欢,所以我先把分区表改为GPT。输入g,然后输入w保存修改

Command (m for help): g
Created a new GPT disklabel (GUID: 2B2D211A-2B85-9049-8AD7-BAA27DDCD243).
The device contains 'dos' signature and it will be removed by a write command. See fdisk(8) man page and --wipe option for more details.

Command (m for help): w

The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

然后再次输入fdisk /dev/sdb,这次按n添加一个新的分区,命令会询问一些分区参数,含义如下:

Partition number:分区号,选个喜欢的数字就行

First sector:起始扇区,直接回车用默认的

Last sector:结束扇区,这个参数决定了这个分区的容量,直接回车用默认的参数就是用整个硬盘的容量。分区的容量等于(结束扇区 - 起始扇区)* 扇区容量,扇区容量在之前的fdisk中的Sector size (logical/physical)可以查询到。fdisk也支持直接输入容量自动帮我们算出扇区数。这里我们输入+10g,相当于创建了一个10g的分区。

debian@debian:~$ sudo fdisk /dev/sdb 
Welcome to fdisk (util-linux 2.36.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): n
Partition number (1-128, default 1): 1
First sector (2048-41943006, default 2048): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-41943006, default 41943006): +10g

按p打印当前分区设置,这里我分了两个区,所以打印了两个分区。

Command (m for help): p
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 2B2D211A-2B85-9049-8AD7-BAA27DDCD243

Device        Start      End  Sectors Size Type
/dev/sdb1      2048 20973567 20971520  10G Linux filesystem
/dev/sdb2  20973568 41943006 20969439  10G Linux filesystem

Filesystem/RAID signature on partition 1 will be wiped.
Filesystem/RAID signature on partition 2 will be wiped.

最后输入w保存分区设置

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

2、格式化

现在/dev目录下班会有两个disk设备,分别是sdb1和sdb2。但是这个分区不能直接被挂载,要先格式化。

这里我选择格式化类型是ext4,输入mkfs.ext4 /dev/sdb1格式化分区

debian@debian:~$ sudo mkfs.ext4 /dev/sdb1 
mke2fs 1.46.2 (28-Feb-2021)
Creating filesystem with 2621440 4k blocks and 655360 inodes
Filesystem UUID: 2adfc50c-bf82-4be4-bbeb-46c7f7e1d149
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done 

3、挂载分区

格式化后的分区就可以挂载了,使用mount挂载。首先要创建一个空的目录,这里我在根目录创建了/data1目录

然后输入命令mount /dev/sdb1 /data1挂载分区sdb1到目录/data,最后输入df -h /data1可以看到挂载于容量信息

debian@debian:~$ df -h /data1
文件系统        容量  已用  可用 已用% 挂载点
/dev/sdb1       9.8G   24K  9.3G    1% /data1

4、fstab

使用mount手动挂载的分区在重启后需要重新挂载,可以通过修改/etc/fstab文件使操作系统开机后自动挂载分区。

fstab文件内容如下,可以看到它的内容格式为:

debian@debian:~$ cat /etc/fstab 
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# systemd generates mount units based on this file, see systemd.mount(5).
# Please run 'systemctl daemon-reload' after making changes here.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda1 during installation
UUID=8536b2a1-854c-40bb-870f-0d9b251f4d3f /               ext4    errors=remount-ro 0
  • file system
    可以直接输入设备路径,也可以输入设备的UUID,建议用UUID。因为设备的UUID是不会变的,但是/dev的挂载名称会变,UUID可以通过blkid命令查看

  • mount point
    挂载路径,就是需要把刚才的设备路径挂载到哪个目录

  • type

    分区格式,分区格式有很多种,比如nfts、ext3、ext4等。我的分区是ext4,所以就输入ext4

  • options

    选项,我不是很理解这个参数,大概是用来设置挂载参数的,但是有一个常用的值是defaults

  • dump
    用于备份文件系统时使用,设置成0表示不备份

  • pass
    这个参数用来决定在启动时需要被fsck扫描的文件系统的顺序,根文件系统"/"对应该字段的值应该为1,其他的应该逐渐递增,如果设置为0则表示不扫描

首先使用blkid命令查看分区的文件系统和uuid,blkid命令和fdisk命令一样都在/usr/sbin目录下。命令示例输出如下:

debian@debian:~$ blkid /dev/sdb1
/dev/sdb1: UUID="4d395554-ad3c-4b83-b4bb-a65853e3da71" BLOCK_SIZE="4096" TYPE="ext4" 

所以我们需要加上一行新的内容,重启可以看到/sdb1被自动挂载到/data1上了;

UUID=4d395554-ad3c-4b83-b4bb-a65853e3da71   /data1       ext4    defaults         0       0

四、总结

  1. 使用fdisk分区
  2. 使用mkfs.ext4格式化分区
  3. 使用mount挂载分区
  4. 如果需要自动挂载,修改/etc/fstab文件实现自动挂载

至此,本文结束。

本文转载于网络 如有侵权请联系删除

相关文章

  • 实战 | 微信小程序初体验

    1背景微信小程序刚出来的时候就想玩玩了,个人开发者开放了,终于可以玩玩了~2账号相关注册账号跟着文档来就好了,文档请看这里。https://mp.weixin.qq.com/debug/wxadoc/introduction/index.html微信的文档还是很不错的,值得学习。3通过文档整体理解我把微信小程序当做一个框架来探索,因为它的基本语法还是前端,因此对我(前端)来说,并不是一门新的语言。因此,我认为把它作为一个框架更加合适。以下是我在通读微信小程序的官方文档之后的一些理解。3.1完整&独立的开发体验虽然我把它当做一个框架来体验,但是对于微信小程序本来说,它还是一个新语言:它只是用了前端语法,但是它同时又不是完全的前端语法:比如wxml是使用自己的标签组件比如它的wxss只是css的子集比如它的js没有window对象等等因此,作为一门新语言,它该有的东西实际上都有了,比如:文档编辑器调试器编译器基础库实际上,开发者不需要有任何的基础,就可以上手开发微信小程序,当然,如果有前端开发经验的话,上手就会更快3.2完整的框架注意,我说的是框架,并不是组件库,一个微信小程序包含

  • 核主成分分析

    importnumpyasnp importmatplotlib.pyplotasplt fromsklearn.decompositionimportPCA,KernelPCA fromsklearn.datasetsimportmake_circles np.random.seed(0) X,y=make_circles(n_samples=100,factor=.3,noise=.03) kpca=KernelPCA(kernel="rbf",fit_inverse_transform=True,gamma=10) X_kpca=kpca.fit_transform(X) X_back=kpca.inverse_transform(X_kpca) pca=PCA() X_pca=pca.fit_transform(X) #绘制结果 plt.figure() plt.subplot(2,2,1,aspect='equal') plt.title("Originalspace") reds=y==0 blues=y==1 p

  • AI Studio基本操作(一) Notebook篇

    https://aistudio.baidu.com/aistudio/learnmap复制我第一次用这个飞桨的网页环境,虽然Jupyter也是天天用,但是线上环境还是有很多的不同~https://aistudio.baidu.com/aistudio/certification?_origin=learnmap复制以及可以考试来证明你的能力学生就是这个了,不知道含金量怎么样https://aistudio.baidu.com/aistudio/projectdetail/325575复制这个项目我个人认为要是想入门的话,一定要试试https://aistudio.baidu.com/aistudio/newbie复制如果初次注册的话,我推荐你把这个东西也过一遍https://aistudio.baidu.com/aistudio/projectdetail/1482286复制Notebook的使用才是我们这次使用的重点,让我们试一次首先点进入会打开一个这样的页面打开自带的终端,看看ifconfig,就是网卡然后再看看python的一些版本这个是在线环境的按钮这个是传统环境的按钮排布h

  • 深入机器学习系列之Word2Vec

    ★前言★word2vec的核心是神经网络的方法,采用CBOW(ContinuousBag-Of-Words,即连续的词袋模型)和Skip-Gram两种模型,通过训练,可以把对文本内容的处理简化为K维向量空间中的向量运算,而向量空间上的相似度可以用来表示文本语义上的相似度。举个例子,第21届世界杯落幕,法国队取胜。假设反过来想,给你一个法国队的关键词,你会联想到哪些词呢?一般而言,应该是世界杯、冠军、姆巴佩、德尚、克罗地亚等等;这也就涉及相似词语、相关词语的选取了,这类算法非常多。也有许多人用了很简单的办法就能求得两样东西的相似性,比如购物车里物品的相似度,最简单的办法就是看看同时买了这样东西的用户还同时买了什么,用简单的数据结构就很容易实现这样的一个算法,但也会忽略一些问题。归结到数学问题上,最经常用的是把每个词都归结到一个坐标系下,再用距离公式(如:皮尔逊公式)可方便的求出各个词语之间的相似度。这就是word2vec的方法,word2vec通过训练,可以把对文本内容的处理简化为K维向量空间中的向量运算,而向量空间上的相似度可以用来表示文本语义上的相似度。算法的关键步骤就是如何求出词语

  • 深度学习论文分类整理

    1深度学习历史和基础1.0书籍█[0] Bengio,Yoshua,IanJ.Goodfellow,andAaronCourville."Deeplearning."AnMITPressbook.(2015). [pdf] (IanGoodfellow等大牛所著的教科书,乃深度学习圣经。你可以同时研习这本书以及以下论文) ★★★★★地址:https://github.com/HFTrader/DeepLearningBook/raw/master/DeepLearningBook.pdf1.1调查█[1] LeCun,Yann,YoshuaBengio,andGeoffreyHinton."Deeplearning."Nature521.7553(2015):436-444. [pdf] (三巨头做的调查)  ★★★★★地址:http://www.cs.toronto.edu/~hinton/absps/NatureDeepReview.pdf1.2深度置信网络(DBN,深度学习前夜的里程碑)█[2] Hinton,GeoffreyE.,Simo

  • 深入理解JVM(五)——HotSpot垃圾收集器详解

    HotSpot虚拟机提供了多种垃圾收集器,每种收集器都有各自的特点,没有最好的垃圾收集器,只有最适合的垃圾收集器。我们可以根据自己实际的应用需求选择最适合的垃圾收集器。根据新生代和老年代各自的特点,我们应该分别为它们选择不同的收集器,以提升垃圾回收效率。 新生代垃圾收集器1.Serial垃圾收集器单线程 只开启一条GC线程进行垃圾回收,并且在垃圾回收过程中停止一切用户线程,从而用户的请求或图形化界面会出现卡顿。适合客户端应用 一般客户端应用所需内存较小,不会创建太多的对象,而且堆内存不大,因此垃圾回收时间比较短,即使在这段时间停止一切用户线程,用户也不会感受到明显的停顿,因此本垃圾收集器适合客户端应用。简单高效 由于Serial收集器只有一条GC线程,因此避免了线程切换的开销,从而简单高效。采用“复制”算法 2.ParNew垃圾收集器ParNew是Serial的多线程版本。 1.多线程并行执行 ParNew由多条GC线程并行地进行垃圾清理。但清理过程仍然需要停止一切用户线程。但由于有多条GC线程同时清理,清理速度比Serial有一定的提升。适合多CPU的服务器环境 由于使用了多线程

  • 2016微信数据报告发布

    今天,微信团队在2017微信公开课PRO版上发布了《2016微信数据报告》。这一年,你的微信生活是什么样的?先看看这几张图:最后,我们来看下老年人对微信生活的心声。

  • Python入门教程之安装MyEclipse插件和安装Python环境

    PyPythonforWindows安装文件安装好所需要的文件。即可在MyEclipse里面开始Python最简单的测试了。首先选择Python的编译器 在MyEclipseWindows-preferences     New 输入名称选择编译器 选择所有的确认OK 等待一下安装 完毕之后就可以开始创建Python工程测试了选择project选择PydevProject下一步 选择个语法版本2.5 对工程src-NEW-PyDevModule 新建的后缀名为 .py 自动会切换到PyDevperspective这个视图下可以更好的编辑。helloworld 代码就一行 比java的少了很多。 简单的安装和Python代码运行测试就是这样。很简单。都不需要duangduangduang的。简单的基础运用代码  可以自己试试一下哦。    2015-03-03Python基础知识''' @author: 小帅丶 @todo: Python安装使用第一步 Created on 2015-03-03 ''' #coding=utf

  • 浅谈PHP开发与Java开发的优劣势,还不知道学习方向的可以来看看

    在这个编程语言“百家争鸣”的时代。究竟哪门语言更有前景?哪门语言更适合你?本文从JAVA和PHP开发语言的特性、学习难度、就业方向、薪资待遇、发展前景等方面进行对比分析。Java和php的优劣势及前景分析相同之处JAVA和PHP都是高级编程语言,都有10年以上的历史,同时位列10大最受欢迎的编程语言。在国内,Java、C、.net和php应该是最受欢迎的4种编程语言了。Java应用范围和php有重合,便是在web方向,就是做网站,php本身就是专为做网站服务,java在网站方面支持性也非常好。曾经asp、php、jsp是三大建站技术体系。JAVA的优劣势及前景JAVA可以说是最热门的的编程语言,对于很多高级语言来说,JAVA都是基础;另外一个,JAVA是跨平台的,有多个方面的应用,如Android、Swing、J2EE、J2ME等。就业面比较广,市场用人需求也大。java多开发大型系统,所以大型企业往往需要很多Java人才,这是其优势。不过,JAVA学习门槛比php高,需要学习的内容也多,掌握java技术,真正可能需要4个月以上。待遇相对来说比php也高些,据统计,JAVA程序员初入行

  • 腾讯云云数据库MySQL修改实例参数api接口

    1.接口描述接口请求域名:cdb.tencentcloudapi.com。 本接口(ModifyInstanceParam)用于修改云数据库实例的参数。 默认接口请求频率限制:20次/秒。 APIExplorer提供了在线调用、签名验证、SDK代码生成和快速检索接口等能力。您可查看每次调用的请求内容和返回结果以及自动生成SDK调用示例。 2.输入参数以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见公共请求参数。 参数名称 必选 类型 描述 Action 是 String 公共参数,本接口取值:ModifyInstanceParam。 Version 是 String 公共参数,本接口取值:2017-03-20。 Region 是 String 公共参数,详见产品支持的地域列表。 InstanceIds.N 是 ArrayofString 实例短ID列表。 ParamList.N 否 ArrayofParameter 要修改的参数列表。每一个元素是Name和CurrentValue的组合。Name是参数名,Curren

  • Django的简单使用

    Django基础简介 基础简介 1.软件框架 一个公司是由公司中的各部部门来组成的,每一个部门拥有特定的职能,部门与部门之间通过相互的配合来完成让公司运转起来。 一个软件框架是由其中各个软件模块组成的,每一个模块都有特定的功能,模块与模块之间通过相互配合来完成软件的开发。 软件框架是针对某一类软件设计问题而产生的。 2.MVC框架 2.1MVC简介 MVC最初是由施乐公司旗下的帕罗奥多研究中心中的一位研究人员给smalltalk语言发明的一中软件设计模式。 MVC的产生理念:分工。让专门的人去做专门的事。 MVC的核心思想:解耦。 MVC的思想被应用在的web开发的方面,产生了webMVC框架。 2.2WebMVC框架模块功能 通过浏览器注册用户信息。 M:Model,模型,和数据库进行交互。 V:View,视图,产生html页面。 C:Controller,控制器,接收请求,进行处理,与M和V进行交互,返回应答。 3.Django框架 3.1简介 Django是劳伦斯出版集团的开发人员为开发新闻内容网站而设计出来的一个软件,它遵循MVC思想,但是有自己的一个名词,叫做MVT。 Dj

  • haodoop数据压缩

    压缩概述 压缩技术能够有效减少底层存储系统(HDFS)读写字节数。压缩提高了网络宽带和磁盘空间的效率。在运行MR程序时,I/O操作,网络数据传输,Shuffle和Merge要花大量的时间,尤其是数据规模很大和工作负载密集的情况下,因此,使用数据压缩显得非常重要。 鉴于磁盘I/O和网络宽带是Hadoop的宝贵资源,数据压缩对于节省资源,最小化磁盘I/O和网络传输非常有帮助。可以在任意MapReduce阶段启用压缩。不过,尽管压缩与解压操作的CPU开销不高,其性能的提升和资源的节省并非没有代价。 压缩策略和原则 压缩是提高Hadoop运行效率的一种优化策略 通过对Mapper,Reducer运行过程的数据进行压缩,以减少磁盘IO,提高MR程序运行速度 注意:采用压缩技术减少了磁盘IO,但同时增加了CPU运算负担。所以,压缩特性运用得当能提高性能,但运用不当也可能降低性能 压缩基本准则: 运算密集型的job,少用压缩 IO密集型的job,多用压缩 MR支持的压缩编码 压缩格式 hadoop自带? 算法 文件扩展名 是否可切分 换成压缩格式后,原来的程序是否需要修改 DEF

  • c++ 左值和右值

    C++进阶--理解左值和右值 /* *理解左值和右值 * * *为什么要关心这个? *1.有助于理解C++结构,搞明白编译器的错误和警告 *2.C++11中引入了右值引用,理解左值右值是前提 * */ /* *简单的定义: * *左值-在内存中具有可标识位置的对象 *右值-任何不是左值的对象 */ //左值的例子: inti;//i是左值 int*p=&i;//i的地址是可标识的 i=2;//内存的内容改变 classdog; dogd1;//用户定义类型的左值 //C++代码中大多数变量是左值 //右值的例子: intx=2;//2是右值 intx=i+2;//(i+2)是右值 int*p=&(i+2);//Error,地址不可标识 i+2=4;//Error地址不可标识 2=i;//Error dogd1; d1=dog();//dog()是用户定义类型的右值 intsum(intx,inty){returnx+y;} inti=sum(3,4);//sum(3,4)是右值 //右值:2,i+2,dog(),sum(3,4),x+y //左值:

  • CF1610H Squid Game

    题面传送门 首先定\(1\)为根节点,然后我们发现,如果全部的限制都是弯的,也就是\(x_i\)与\(y_i\)均不是两个点的LCA,则直接选择一个根节点就可以解决。 然后如果全部限制都是直的,仿照NOI2020D1T2考虑一个dp,设\(f_{i,j}\)为处理了\(i\)子树内的节点,且当前往上最深的链为\(j\)的答案。容易用线段树优化到\(O(n\logn)\)转移。 但是真的需要吗? 我们发现这个东西每次只会加一,也就是说\(j\)最浅一定最优。然后状态就少了一维。 同时我们发现,\(j\)最浅的时候刚好对所有弯的限制贡献最大,也就是说两个贪心被统一了。 所以最后只要跑出方案数以后看看是不是能把全部弯的覆盖即可。 时间复杂度\(O(n+q)\) code: #include<bits/stdc++.h> #defineGc()getchar() #defineMe(x,y)memset(x,y,sizeof(x)) #defineMc(x,y)memcpy(x,y,sizeof(x)) #defined(x,y)((m)*(x-1)+(y)) #defineR(n

  • 5.21 - 一入Python深似海,从此节操是路人

    5.21,Python第二节,伊始,我感觉我来到了蜀道的山脚下,抬头仰望,尽是巍峨,心底又不要脸的有一点儿小期待[*脸红*] 这节课,我回忆起来都是些零零碎碎,讲了字符串、列表、字典、切片、文件等等等等等等等等等等等等等等等等,等到了地老天荒,俯瞰不消化的大肚皮,依稀泛起一股有容乃大的苍凉。。 不过我觉得每节的作业都是精华,解题的过程就像探险一样有趣,嘻嘻嘻,所以我想分享出来,留待以后忘光的时候还有地方可以重温下当年的辉煌: 1、写一个可以添加商品、查询商品的程序:   #1、首先需要登录,登录的用户名和密码是存在一个文件里面的,格式是niuhanyang,123456   #账号密码是输入正确就登录,   #登录之后,提示有3个选择,1、添加商品2、查询商品3、退出程序,exit()   #添加商品,需要输入、商品名称、商品id、商品价格,都不能为空,价格和id只能是数字,商品名称不能重复   #添加商品成功后,要把商品写入到produ

  • 数据交换格式

    概念 数据交换格式,就是服务器端与客户端之间数据传输的格式。 两种数据交换格式: XML(很少用) JSON(主流) JSON JSON(全称:JavaScriptObjectNotation)是一种数据交换格式,它本质上是用字符串的方式来表示对象或数组类型的数据。 JSON数据 用字符串的方式来表示的对象或数组类型的数据,叫做JSON数据。 JSON数据的格式有两种: 对象格式 对象格式的JSON数据,最外层使用{}进行包裹,内部的数据为key:value的键值对结构。 key必须使用英文的双引号进行包裹 value的值只能是字符串、数字、布尔值、null、数组、对象类型(可选类型只有这6种) 数组格式 数组格式的JSON数据,最外层使用[]进行包裹,内部的每一项数据之间使用英文的,分隔 案例-封装自己的Ajax函数 //调用函数 myrequest({ method:'get', url:'http://www.liulongbin.top:3006/api/get', params:{ name:'小明', age:18, }, success:fun

  • 关于最少VC号数目的猜想

    [事先说明,实际的虚拟电路的实际物理链路可能同时具有多个VC号,但每段逻辑链路仅有一个VC号,一条完整虚拟路径由多个段组成]问题描述:在一个虚拟电路交换网络中,每个路由器的直连链路都有一个独一无二的VC号,即连接在同一个路由器上的链路VC号不会冲突。现已知整个网络中一个路由器最多有M条直连链路,但具体有多少台路由器未知,那么在考虑一切可能情形的前提下,最少要使用多少种VC号?(可以知道,需要求的是所有可能的组网情况下最少VC号数目的上界)先给出个简略的答案(猜) 2M-1以及对于全链接下的情况如下:当前仍未有明确结论,但是注意到染色的均匀程度对使用的颜色数目有重要影响,对于N个节点组成的全链接网络,一共有N(N-1)/2条边需要染色,以六个节点为例,一共15条边,由于一条边链接两个节点,则一种颜色最多染3条边(一条边链接两个点,同种颜色的边链接的点不可重复),至少需要5种颜色,也确实最少只用5种颜色不过,在尝试过程中,发现在二维平面上同一种颜色画的线条的分布样式(共5种样式)的使用频度,对于结果同样有重要影响(实际上染色问题不应该存在所谓样式问题,因为染色是无视维度的,而且各

  • linux学习笔记

    基础命令 网络相关的基础命令 ifconfig//查看ip地址 ipaddr//如何不支持,那个可以使用 vi/etc/sysconfig/network-scripts/ifcfg-xx//比如loeth0什么的,把ONBOOT=no改成yes就开始网卡 yuminstallnet-tools//安装就可以用ipconfig了 复制 替换默认yum源地址 http://mirrors.163.com/.help/centos.html教程 第一步首:先备份/etc/yum.repos.d/CentOS-Base.repo mv/etc/yum.repos.d/CentOS-Base.repo/etc/yum.repos.d/CentOS-Base.repo.backup 复制 第二步:下载对应版本repo文件,放入/etc/yum.repos.d/ cd/etc/yum.repos.d/ ls wgethttp://mirrors.163.com/.help/CentOS7-Base-163.repo 复制 第三步:运行以下命令生成缓存 yumcleanall yummakecac

  • 括号配对问题

    Description   大家都知道算术表达式中,括号必须配对,现在任意给出一个算术表达式,判断其括号是否配对。如果配对,输出“Yes”,否则输出“No”。   Input   含多组测试数据,输入首先是一个整数T表示测试数据组数(0<T<=300)。随后有T行测试数据,长度不超过1000个字符,字符串间不含空格。   Output   对应每组测试数据,输出一行结果。   SampleInput   232*(78-23)+7832*78)-(23+78)   SampleOutput   YesNo   我的解答: 1#include<stdio.h> 2#include<string.h> 3intt,flag[1001],dead[1001],i,j; 4charc,str[1001][1001]; 5intmain() 6{ 7scanf("%d",&t); 8for(i=0;i<t;i++) 9{ 10scanf("%s"

  • react native android 踩的坑

    1.按照官网进行相关的配置 https://reactnative.cn/docs/environment-setup 2.注意点 目前所需要的环境是node>12npm>5 java>8   我的环境是 3.按照androidstudio 4.配置中踩的坑 4.1其中按照官网提供的配置SDK出现各种下载很慢的问题 尝试多种代理和镜像。无法正常获取到相应的数据,如果你是2020.3.1的版本,建议直接是不采取任何代理。        4.2无法下载addons Connectionrefused:connect IOExpectionhttps://dl.google.com/android/repository/addons_list-3.xml IOExpectionhttps://dl.google.com/android/repository/addons_list-2.xml 几乎翻遍了所有的博客,FQ也没有成功。这个原因是因为gradle、SDK等版本的不匹配的问题。 解决方案:手工调整gr

  • Charles实战之Charles抓取https请求

    说明:用charles抓取https请求,会出现SSLProxyingdisabledinProxySettings这样的提示,如下图。要通过charles抓取数据,还需要进行一些简单的设置。具体:1.安装charlesca证书1.1选择help|InstallCharlesCASSLCertificate     1.2然后会弹出证书信息,选择安装证书,下一步,将证书存储改为:受信任的根证书颁发机构,下一步,完成         2.修改charles的proxysettings2.1选择Proxy|ProxySettings,弹出proxy设置选项卡,勾选EnablingtransparentHTTPproxying     2.2选择ssl,勾选EnableSSLProxying,在Location部份选择add,按如下图添加,抓取任意站点、443端口的数据     重启charles结果:这时候再去抓取https://coolnull.com就显示200,正确了!  

相关推荐

推荐阅读