Linux磁盘及读写数据原理/Raid技术/硬软raid及企业案例/磁盘分区环境搭建/格式化磁盘系列-12213字

高薪思维:
怎么才能一直去坚持下去?
1.做这件事情的好处,对自己一直去放大。
2.不做的坏处,并放大
3.学习痛苦?还是去上班(餐饮、外卖痛苦?)
用比学习更痛苦的事情,去对抗学习
不但要学会,要做的最好(思维转换)
当你遇到困难,难以坚持的时候,此时也是其他人很难坚持的时候,撑住你会超越他,8小时内工作最多只能让你不落后,8小时外的努力才可能让你超越他人
我们要能够讲清楚,表达清楚,你认为你懂了和达到面试官要求差太多了,懂对于我们学习远远不够,一定要给别人能够讲清楚,表达清楚,这样才是对一个知识学会的标准!!
态度大于能力:
1.有能力,能找到工作,没有态度做不长久
2.有态度,领导给机会,给你进步时间,可以获得(能力+原本)的态度,领导更会给你机会,超越有能力的人

磁盘内部核心知识及读写数据原理

磁盘及盘品结构:
盘面是有编号的,和磁头编号是一样的

磁头是做径向运动(朝着半径方向运动,直线)
在这里插入图片描述
盘片固定在一个旋转轴上,这个轴即为盘片主轴,所有盘片是平行的,每一个盘片上存储面上有一个磁头,磁头被控制在磁头控制器上,所有磁头都是重叠的(目前有独立的技术),磁头可以沿着半径方向做斜切运动。
由于硬盘是高精密设备,硬盘必须为完全密封状态!
磁头靠近主轴解除表面,它不存放任何数据(启停区)离主轴最远的的地方是0磁道,也是硬盘数据开始的地方。磁头如何找到0磁道位置(0磁道检测器件)
硬盘的读写与扇区,扇面,柱面相关联(这里小编不再写了,属于Linux了解知识即可)

Raid技术

1.什么是Raid?

中文全称:廉价冗余磁盘阵列
英文全称:REdudant Array of INexpensive Disk
简称raid

raid是一种把一块或多块物理磁盘按照不同的技术方式组合起来形成一个磁盘组,在逻辑上看起来就是一块大的磁盘,可以提供比单个物理磁盘更大的存储容量或更高的存储性能,同时又提供不同级别的数据冗余备份的一种技术

2.为什么服务器需要Raid?

服务器运行痛点:
1.单块盘容量不够大
2.磁盘损坏数据丢失
3.磁盘速度不够快

用raid最直接的好处:
1.提升数据安全性
2.提升数据读写的性能
3.提供更大的单一逻辑磁盘数据容量存储

什么是raid级别?

把多个物理磁盘通过(不同的技术方式)组成的磁盘阵列,这个不同的技术方式就被称为raid级别

Raid级别:
raid 0 ,1,2,3,4,5,6,7,8,9,0+1(称为raid10),53等

生产环境常用raid级别:0,1,5,10(核心面试点)

在这里插入图片描述

raid实现方式?

RAID的实现方式:
1.独立扩展卡
速度快,支持read级别更多0,1,5,10

2.内置主板集成RAID控制器
速度还可以,缺点支持0,1

3.通过os系统软件实现

在这里插入图片描述

软raid(了解)

更加灵活,兼容性强但软件实现性能差,操作系统损坏数据容易丢失。

Windows、MacOS操作系统下新建的RAID阵列都是软RAID。RAID依赖于CPU和系统资源,其性能可能受到限制,尤其是在高负载和I/O密集型任务下。虽然软raid可以提高写的性能但是,实现性能特别差,一旦操作系统损坏,将会带来大灾难!

硬软raid区别(了解)

实现方式:软RAID(软件),硬RAID(硬件)实现。

成本:软RAID(较低),硬RAID成本(较高)。

性能:硬RAID性能通常优于软RAID,特别是在高负载和I/O密集型任务下。

灵活性:软RAID具有较高的灵活性和兼容性,而硬RAID可能受限于特定的硬件设备和平台。

可靠性:硬RAID通常提供更高的可靠性和稳定性,因为它卸载了RAID功能的处理负担。

硬raid图片
在这里插入图片描述

raid0

在这里插入图片描述
特点:
1.读写性能提高3倍
2.容量是单盘的3倍,没有损失
3.没有冗余
4.web服务,应用服务(集群)
维护稍微麻烦

raid5

在这里插入图片描述
特点:
1.RAID 5 具有和RAID 0 相近的数据读取速度,只是多了奇偶校验信息,写入数据速度比单个磁盘写入操作稍慢。
2.损失一块盘的数据容量
3.可损失一块盘,RAID数据安全保障程度比RAID 1 低而磁盘空间利用率要比raid 1 高

raid10,配数据库服务器主库用raid10,从库raid5
在这里插入图片描述
1.极高的读写效率和较高的数据保护、恢复能力

2.RAID10提供100%的数据冗余

3.RAID 10适用于数据库存储服务器等需要高性能、高容错但对容量要求不大的场合

4.RAID 1和RAID 0标准结合的产物

11.Raid和Lvm区别?
1)什么是LVM(逻辑卷管理)
动态扩容的工具。
1)分区动态扩容(1.事先规划好。2.尽量少分区)。
2)性能差(10%)。
应用场景:测试服务器

企业案例:

背景:公司内部最近要上新的ERP系统,公司内部旧的服务器已经无法满足需求。公司新上马的ERP系统,因为要满足各个分公司,各办事处,销售人员和后勤人员,服务人员甚至客户的协同的大量的24小时不间断的远程高负荷的数据操作,在数据储存方面需要采用更高级别的RAID磁盘阵列容错系统。
服务器R730 DELL型号已经确认,但是在raid存储方面还没定夺。你给领导RAID方案。

Raid选择raid10,磁盘选择:企业级的SSD
配置8块企业的ssd硬盘,每块容量最低为1t,容量为8tb;将这八块硬盘分为4组,每组为2块硬盘;每组内进行raid1镜像,实现数据冗余备份和高可靠性;将这四组镜像数据进行raid0条带化进行提高读写能力;系统将这四组raid 1+0结果整合到一个raid10的存储阵列

磁盘分区知识

磁盘为什么要分区?

磁盘是分成不同的空间,干不同的事情,所以需要分区。
磁盘也可以不分区。
MBR:每一块硬盘上存放磁盘引导程序,引导程序在磁盘开头部分,用于引导系统启动,我们一般不用太关注(安装的时候自动进行安装)

位置磁盘分区表磁盘开始部分:0磁头,0磁道,1扇区(512字节)

512字节:
引导程序446字节(MBR)
磁盘分区表(64字节)4个分区表
结束标记(55AA)
在这里插入图片描述
在这里插入图片描述

  • 分区表64字节,每一个分区进行占用16个字节,最多为4个分区:
  • 这四个分区叫做主分区,如果只划分了1分区使用所有的空间,将无法继划分空间
  • 如果划分了四个分区,但是磁盘空间还有剩余,剩余的空间无法继续使用
  • 扩展分区是用于解决主分区的4个问题,扩展分区无法直接使用,需要在扩展分区下面创建逻辑分区,存放数据

磁盘设备及分区命名知识

在这里插入图片描述
磁盘文件或分区文件放在/dev下面

硬盘命名:

sda
vda
磁盘接口:
sas/sata/scsi接口,硬盘名字以sd开头
虚拟机(kvm)公有云: 硬盘名字以vd开头

第几块磁盘:通过字母a开始类推在这里插入图片描述
第一块磁盘sas接口
/dev/sda

分区命名

分区命名根据分区类型进行命名
如果是主分区或扩展分区分区号是从1-4范围
如果是逻辑分区,逻辑分区的分区号是从5开始

磁盘知识体系比喻说明

第一步 磁盘 房子
第二步 raid技术 多套房子打通
第三步 分区技术(越少越好,互联网公司大并发需求,降低其性能) 打隔断,几居室/卧室/卫生间/厨房
第四步 文件系统 装修风格
第五步 格式化过程 装修过程
第六步 挂载 开门开窗住人使用
第七步 磁盘日常管理 生活中收拾屋子,打扫卫生

58同城二线互联网服务器配置(Raid配置)
I/O型(DB)
cpu :8Corex2 Mem:128G Disks:SAS 600Gx2 RAID1 + intel s3700 800Gx6 RAID5
(sas做系统盘+Intel raid5做数据盘)

环境搭建

添加磁盘
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注意:last扇区这里不能按回车,否则从前面其实扇区到现在最后扇区全部分配成一个

如果最后没有写入w
在这里插入图片描述
在这里插入图片描述
Command (m for help): p

Device Boot Start End Blocks Id System
/dev/sdb1 2048 43007 20480 83 Linux

**未来这种创建企业中用的不多,用到基本是在开始装系统的时候进行用到
**

fdisk操作的时候,删除键会发现午饭删除现象,使用ctrl+u或ctrl+删除键

多次进行创建
Command (m for help): n
Partition type:p   primary (2 primary, 0 extended, 2 free)e   extended
Select (default p): e
Partition number (3,4, default 3): 
First sector (452608-2097151, default 452608): 
Using default value 452608
Last sector, +sectors or +size{K,M,G} (452608-2097151, default 2097151): 
Using default value 2097151
Partition 3 of type Extended and of size 803 MiB is setCommand (m for help): pDisk /dev/sdb: 1073 MB, 1073741824 bytes, 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x8cfb5223Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048       43007       20480   83  Linux
/dev/sdb2           43008      452607      204800   83  Linux
/dev/sdb3          452608     2097151      822272    5  ExtendedCommand (m for help): n
Partition type:p   primary (2 primary, 1 extended, 1 free)l   logical (numbered from 5)
Select (default p): e
Invalid partition type `e'Command (m for help): n
Partition type:p   primary (2 primary, 1 extended, 1 free)l   logical (numbered from 5)
Select (default p): l
Adding logical partition 5
First sector (454656-2097151, default 454656): 
Using default value 454656
Last sector, +sectors or +size{K,M,G} (454656-2097151, default 2097151): +200M
Partition 5 of type Linux and of size 200 MiB is setCommand (m for help): pDisk /dev/sdb: 1073 MB, 1073741824 bytes, 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x8cfb5223Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048       43007       20480   83  Linux
/dev/sdb2           43008      452607      204800   83  Linux
/dev/sdb3          452608     2097151      822272    5  Extended
/dev/sdb5          454656      864255      204800   83  LinuxCommand (m for help): w
The partition table has been altered!Calling ioctl() to re-read partition table.
Syncing disks.

[root@calms ~]# fdisk -l |grep ‘/dev/sd’
Disk /dev/sdc: 1073 MB, 1073741824 bytes, 2097152 sectors
Disk /dev/sda: 26.8 GB, 26843545600 bytes, 52428800 sectors
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 4196351 1048576 82 Linux swap / Solaris
/dev/sda3 4196352 52428799 24116224 83 Linux
Disk /dev/sdb: 1073 MB, 1073741824 bytes, 2097152 sectors

案例 sdb硬盘创建20mb的分区

在这里插入图片描述

p输出磁盘分区信息
n创建分区
d删除分区
w 保存并退出
q 退出不保存
在这里插入图片描述

[root@wulin ~]# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2
在这里插入图片描述

查看UUID
[root@calms ~]# blkid
/dev/sr0: UUID=“2020-11-04-11-36-43-00” LABEL=“CentOS 7 x86_64” TYPE=“iso9660” PTTYPE=“dos”
/dev/sda1: UUID=“8e261f31-203b-47e1-a6d2-444c71c4a1d7” TYPE=“xfs”
/dev/sda2: UUID=“6862d0c8-722f-4780-97c8-757e43459f0b” TYPE=“swap”
/dev/sda3: UUID=“9e46ffd2-c46d-4691-aa7f-e7f349d1c8f4” TYPE=“xfs”

可以使用UUID代表/dev/sda1这样的分区
[root@calms ~]# egrep -v “^ #|^$” /etc/fstab # /etc/fstab
Accessible filesystems, by reference, are maintained under ‘/dev/disk’
See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

UUID=9e46ffd2-c46d-4691-aa7f-e7f349d1c8f4 / xfs defaults 0 0
UUID=8e261f31-203b-47e1-a6d2-444c71c4a1d7 /boot xfs defaults 0 0
UUID=6862d0c8-722f-4780-97c8-757e43459f0b swap swap defaults 0 0

磁盘分区类型和各自特点

DOS分区表:只能用于小于2T的硬盘(常用)。 GPT分区表:万能分区表(小于2T,大于2T都可以)。

DOS分区表分区类型:
1)主分区(Primary)

  1. 必须存在的分区。
  2. 装系统(第一个主分区)
  3. 主分区数量不能超过4个
  4. 分区编号,只能是1-4

想分超过4个分区,怎么办?

还需要扩展分区和逻辑分区

2)扩展分区(Extend)
a.独立小磁盘,有独立分区表,不能直接放数据。
b.占用主分区分区编号(2-4)。
c.最多只能有1个。
d.必须在其下划分逻辑分区。
e.主分区+扩展分区最多4个。
3)逻辑分区(logical)
a.不能独立存在,必须在扩展分区之上。
b.编号最小是5,及以上。
c.存放数据。

磁盘分区要点总结

一块磁盘的分区方式只能为如下组合之一:
(1)任意多个主分区,但要求1≤主分区数量≤4。
(2)扩展分区可以和主分区组合,但要求2≤(主分区+扩展分区)数量≤4)。
(3)如果要分成四个磁盘分区的话,那么最多就是可以:
P + P + P + P或P + P + P + E,其中的 P为Primary,E为Extend。
(5)扩展分区不是一个真正的可用分区,建立完扩展分区后,还需要在扩展分区上面建立逻辑分区才可以使用。
(6)对于主分区和逻辑分区在一般的数据存储使用上是没有区别的(对于大多数的数据存储),在安装操作系统时第一个分区要选主分区。
(7)分区数字编号1~4留给主分区或扩展分区使用,逻辑分区编号只能从5开始,即使1-4分区号即使有剩余,也不会分配给逻辑分区。
(8)对磁盘分区,实际上就是在修改磁盘的分区表 ( Partition table ),并没有涉及磁盘数据。

如果要将一块大磁盘暂时分成四个分区,同时还希望有其它的空间可以让未来需要的时候再进行分区,那么该如何分区?

3P+1E(1L)
1P+1E(3L)
2P+1E(2L)

假如有一块SAS磁盘,想要把磁盘分成6个可以使用的磁盘分区,有几种方式,每个磁盘分区在Linux系统下的数字编号分别是多少?

3P+1E(3L):
sda1,sda2,sda3,sda5,sda6,sda7
P+1E(5L):
sda1,sda5,sda6,sda7,sda8,sda9
2P+1E(4L):
sda1,sda2,sda5,sda6,sda7,sda8
(实践)

磁盘分区原理

a.修改的就是分区表,没有动磁盘数据。
b.分区表的位置,0磁道0柱面1扇区的512字节的前446字节接下的64字节。
c.fdisk分区本质就是修改这64字节分区表。

1)给磁盘分区的实质就是针对上述0磁头0磁道1扇区的前446字节后面接下来的64bytes的分区表进行设置,
即主要是划分起始以及结束磁头号、扇区号及柱面号。
2)给磁盘分区的工具有fdisk(适合给小于2T的磁盘分区,适合mbr分区表、DOS分区表),
3)gpt格式分区表分区,有parted,gdisk。
大于2Tparted,gdisk来分区。

7)磁盘存储逻辑结构原理图解
0)0磁道1扇区讲解
(前446字节 是引导程序所在地,称为MBR)
接下来的64字节是分区表
最后2个字节是分区结束标志
可以用dd命令或者相关工具获得上述1扇区内容:
dd if=/dev/sda of=mbr.bin bs=512 count=1 #<==读取0磁头0磁道1扇区内容。
od -xa mbr.bin #<==以16进制解析1扇区内容。
od - dump files in octal and other formats

fdisk分区命令精讲与实践

1)准备环境添加一块盘,并重启(早期kudzu不重启)
Disk /dev/sdb: 1073 MB, 1073741824 bytes, 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

fdisk –1|grep sdb
echo “- - -”> /sys/class/scsi_host/host
echo “- - -”> /sys/class/scsi_host/host1/scan
fdisk –1|grep sdb
echo “- - -”> /sys/class/scsi_host/host2/scan
fdisk –1|grep sdb
磁盘 /dev/sdb:1073 MB,1073741824字节,2097152个扇区

2)
fdisk 分区命令
-l 查看分区信息
在这里插入图片描述

[root@wulin ~]# fdisk /dev/sda #开始分区

Command action
d delete a partition #删除分区
m print this menu #打印帮助
n add a new partition #添加新分区
p print the partition table #打印分区表
q quit without saving changes #退出不保存
w write table to disk and exit #保存并退出
在这里插入图片描述

假如有一块SAS磁盘,想要把磁盘分成6个可以使用的磁盘分区,
有几种方式,每个磁盘分区在Linux系统下的数字编号分别是多少?
1P+1E(5L):
sda1,sda5,sda6,sda7,sda8,sda9
3P+1E(3L):
sda1,sda2,sda3,sda5,sda6,sda7
2P+1E(4L):
sda1,sda2,sda5,sda6,sda7,sda8
还没保存:查不到磁盘上对应的分区:

[root@calms ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 25G 0 disk
|-sda1 8:1 0 1G 0 part /boot
|-sda2 8:2 0 1G 0 part [SWAP]
`-sda3 8:3 0 23G 0 part /
sr0 11:0 1 4.4G 0 rom

[root@calms ~]# ls /dev/sd*
dev/sda /dev/sda1 /dev/sda2 /dev/sdb
保存以后:
[root@calms ~]# ls /dev/sd*
/dev/sda /dev/sda2 /dev/sdb1 /dev/sdb5 /dev/sdb7 /dev/sdb9

[root@calms ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
|-sda1 8:1 0 1G 0 part /boot
`-sda2 8:2 0 19G 0 part
|-centos-root 253:0 0 17G 0 lvm /
`-centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 1G 0 disk
|-sdb1 8:17 0 100M 0 part
|-sdb2 8:18 0 1K 0 part
|-sdb5 8:21 0 100M 0 part
|-sdb6 8:22 0 100M 0 part
|-sdb7 8:23 0 100M 0 part
|-sdb8 8:24 0 100M 0 part
`-sdb9 8:25 0 100M 0 part
sr0 11:0 1 1024M 0 rom

通知内核分区表已经修改。
[root@calms ~]# partprobe /dev/sdb

添加一块小于2tb的磁盘分区,步骤:

1.给虚拟机添加一块新的硬盘
2.使用fdisk进行分区
fdisk /dev/sdb
partprobe /dev/sdb
3.使用mkfs 进行格式化
mkfs.xfs /dev/
4.使用mount进行挂载
mount /dev/sdb1 /mnt

格式化磁盘(给磁盘分区进行装修,给磁盘分区创建规则,一定量的inode、block)

*mkfs格式化磁盘的实质:
1.创建文件系统(centos7是xfs,centos6是ext4)
2.文件系统类似于将房子进行装修风格。组织文件目录的方式

#mkfs选项
(从来不用)
-b 设定数据区块(block),占用空间大小,目前支持1024,2048,4096bytes每个块,默认4k

–t 用来指定什么类型的文件系统,可以是ext4,xfs –i 设定iNode的大小,默认256字节 –N
设定iNode数量,防止iNode数量不够导致磁盘不足
在这里插入图片描述
重复格式化错误提示:(磁盘分区已经格式化)
mkfs.xfs: /dev/sdb1 appears to contain an existing filesystem (xfs).
mkfs.xfs: Use the -f option to force overwrite.(强制使用mkfs.xxxx -f)

格式化整个磁盘
mkfs.ext4 /dev/sdb

格式化磁盘分区
mkfs.xfs /dev/sda1

fdisk –l
blkid
ls /dev/sd*
格式化mkfs xfs /dev/sdb1或mkfs –t xfs /dev/sdb1
格式化之后,使用不了,需要进行挂载
格式化后相当于一个房子,没有门,我们不能进行使用,这个时候需要开一个门方便使用(挂载/mount)
mount /dev/sda1 /mnt
cd /mnt
touch wulin.txt
ls

大于2t磁盘分区工具 gdisk(类似于fdisk) parted

cd mnt
which gdisk
在这里插入图片描述

yum provides gdisk(查看这个命令属于那个包)
在这里插入图片描述

安装yum install gdisk –y(#安装gdisk工具)

VMware添加一块磁盘/dev/sdc(不重启生效)
fdisk –1|grep sdb
echo “- - -”> /sys/class/scsi_host/host2/scanfdisk –1|grep sdb磁盘 /dev/sdb:1073 MB,1073741824字节,2097152个扇区
开始分区:
gdisk /dev/sda
在这里插入图片描述

ls /dev/sd*查看是否生效
在第二个窗口输入y

会第一个窗口查看是否生效
显示已经生效

格式化第一个
mkfs –t ext4 /dev/sdc1
mkdir /data
mount /dev/sdc1 /data(临时挂载成功)
查看:cat /proc/mounts
grep sd /proc/mounts

也可以用df –h查看
df –h|grep sd

这篇小编先写到这里了,更多内容请关注专栏!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/640418.html

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

相关文章

西瓜书学习——第一、二章笔记

文章目录 什么是机器学习?假设空间和版本空间基本术语机器学习任务分类 归纳偏好数据决定模型的上限&#xff0c;而算法则是让模型无限逼近上限评估方法留出法交叉验证法自助法调参与最终模型验证集和测试集的区别 性能度量均方误差错误率与精度查准率、查全率与F1ROC与AUC代价…

Python 实现 Mock 数据功能(模拟真实对象的行为)

当你需要在 Python 中测试某些代码时&#xff0c;有时你希望模拟&#xff08;或者说替换&#xff09;某些部分&#xff0c;以便更好地控制测试环境。这就是 Mock 功能的用武之地。Mock 对象可以模拟真实对象的行为&#xff0c;使你能够在测试中对其进行配置&#xff0c;以便更容…

函数模版实例化

目录 一、前言 二、 什么是C模板 &#x1f4a6;泛型编程的思想 &#x1f4a6;C模板的分类 三、函数模板 &#x1f4a6;函数模板概念 &#x1f4a6;函数模板格式 &#x1f4a6;函数模板的原理 &#x1f4a6;函数模板的实例化 &#x1f34e;隐式实例化 &#x1f349;显式实例化 …

揭秘链动3+1商业模式:打造未来商业新风潮

大家好&#xff0c;我是微三云周丽&#xff0c;今天给大家分析当下市场比较火爆的商业模式&#xff01; 小编今天跟大伙们分享什么是链动31模式&#xff1f; 在当今商业世界中&#xff0c;随着科技的飞速发展和消费者需求的不断升级&#xff0c;新的商业模式不断涌现。其中&a…

如何搭建一个vue2组件库(king-ui-pro)

文章引用图片无法查看&#xff0c;直接查看原文 感兴趣的可以关注或订阅下这个系列&#xff0c;后续会陆续将相关的组件与公共方法进行分享 目前已经完成了的组件有 多行省略pro版&#xff0c;不是简单的多行省略效果 公共方法&#xff1a; 1、图片预览&#xff0c;知乎的图…

leetcode(hot100)——贪心算法

55. 跳跃游戏 本题不用纠结于可以跳几步&#xff0c;可以聚焦于覆盖范围&#xff0c;即 当前位置当前跳数 能够覆盖的范围&#xff0c;若这个范围足以到达最后一个位置&#xff0c;则返回true&#xff1b;若for循环结束&#xff0c;则还没返回true&#xff0c;则返回false。 下…

苹果手机远程打卡教程

关于苹果手机远程打卡教程之——有电脑零成本版 &#x1f4ce;个人主页&#xff1a;我的主页 &#x1f4ce;小白一枚&#xff0c;欢迎指教&#x1f44f; 嗨嗨嗨&#xff0c;今天来出一期iPhone实现远程打卡的教程&#xff0c;让我们可以随时随地的打卡wherever&#xff5e; 准…

A4云打印仅需5分/页?云打印多少钱?云打印怎么收费?

随着互联网技术的发展&#xff0c;越来越多的同学在打印资料的时候都开始转向线上&#xff0c;转向云打印服务了。云打印服务不仅可以给我们节省很多时间&#xff0c;价格方面较打印店也更有优势。那么云打印多少钱&#xff1f;云打印怎么收费&#xff1f;今天小易就带大家来了…

了解IPS和IDS:这5个差异将改变你的安全观念!

IPS 代表 入侵防御系统&#xff08;Intrusion Prevention System&#xff09;&#xff0c;它是 IDS 的进一步发展&#xff0c;不仅具备检测攻击的能力&#xff0c;还能在检测到攻击后主动采取措施阻止攻击。IPS 通常部署在防火墙和网络设备之间&#xff0c;能够深度感知并检测流…

《自动机理论、语言和计算导论》阅读笔记:p225-p260

《自动机理论、语言和计算导论》学习第 9 天&#xff0c;p225-p260总结&#xff0c;总计 26 页。 一、技术总结 1.pushdown automation(PDA&#xff0c;下推自动机) 2.DPDA Deterministic PDA(确定性下推自动机)。 二、英语总结 1.instantaneous (1)instant: adj. happi…

基于python实现web漏洞挖掘技术的研究(django)

基于python实现web漏洞挖掘技术的研究(django) 开发语言:Python 数据库&#xff1a;MySQL所用到的知识&#xff1a;网络爬虫&#xff0c;SQL注入&#xff0c;XSS漏洞工具&#xff1a;pycharm、Navicat、Maven 系统的实现与漏洞挖掘 系统的首页面 此次的系统首页面是登录的页…

2024年内外贸一体化融合发展(长沙)交易会

2024年内外贸一体化融合发展&#xff08;长沙&#xff09;交易会 一、总体思路 充分发挥湖南作为全国内外贸一体化试点地区作用&#xff0c;坚持“政府主导、市场驱动、企业为主”的原则&#xff0c;以“助力双循环&#xff0c;拓展新市场&#xff0c;促进新消费”为主题&…