Linux基础-磁盘管理

news2024/11/23 9:02:32

基于Ubuntu 20.04环境测试验证。

一、磁盘空间查看

1.1 磁盘分区管理 - fdisk

fdisk通常被用来查看系统磁盘的分区信息,同时fdisk也支持对磁盘空间进行分区(下一章节介绍)。

命令参数:

Usage:
 fdisk [options] <disk>      change partition table
 fdisk [options] -l [<disk>] list partition table(s)

Display or manipulate a disk partition table.

Options:
 -b, --sector-size <size>      physical and logical sector size
 -B, --protect-boot            don't erase bootbits when creating a new label
 -c, --compatibility[=<mode>]  mode is 'dos' or 'nondos' (default)
 -L, --color[=<when>]          colorize output (auto, always or never)
                                 colors are enabled by default
 -l, --list                    display partitions and exit
 -o, --output <list>           output columns
 -t, --type <type>             recognize specified partition table type only
 -u, --units[=<unit>]          display units: 'cylinders' or 'sectors' (default)
 -s, --getsz                   display device size in 512-byte sectors [DEPRECATED]
     --bytes                   print SIZE in bytes rather than in human readable format
 -w, --wipe <mode>             wipe signatures (auto, always or never)
 -W, --wipe-partitions <mode>  wipe signatures from new partitions (auto, always or never)

 -C, --cylinders <number>      specify the number of cylinders
 -H, --heads <number>          specify the number of heads
 -S, --sectors <number>        specify the number of sectors per track

 -h, --help                    display this help
 -V, --version                 display version

Available output columns:
 gpt: Device Start End Sectors Size Type Type-UUID Attrs Name UUID
 dos: Device Start End Sectors Cylinders Size Type Id Attrs Boot End-C/H/S Start-C/H/S
 bsd: Slice Start End Sectors Cylinders Size Type Bsize Cpg Fsize
 sgi: Device Start End Sectors Cylinders Size Type Id Attrs
 sun: Device Start End Sectors Cylinders Size Type Id Flags

For more details see fdisk(8).

命令示例:

# 查看所有磁盘分区信息
fdisk -l

# 查看指定磁盘分区信息
fdisk -l /dev/sda

输出示例:

root@ubuntu:~$ fdisk -l /dev/sda
Disk /dev/sda: 238.49 GiB, 256060514304 bytes, 500118192 sectors
Disk model: YRUIS SSDSCE880/
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: 3F6BASDF-336F-48DF-B248-A6SD9EEE4F98

Device       Start       End   Sectors  Size Type
/dev/sda1     2048   1050623   1048576  512M EFI System
/dev/sda2  1050624 500117503 499066880  238G Linux filesystem

1.2 文件系统磁盘占用 - df

df命令可以被用来显示linux系统上的文件系统的磁盘使用情况。

命令参数:

Usage: df [OPTION]... [FILE]...
Show information about the file system on which each FILE resides,
or all file systems by default.

Mandatory arguments to long options are mandatory for short options too.
  -a, --all             include pseudo, duplicate, inaccessible file systems
  -B, --block-size=SIZE  scale sizes by SIZE before printing them; e.g.,
                           '-BM' prints sizes in units of 1,048,576 bytes;
                           see SIZE format below
  -h, --human-readable  print sizes in powers of 1024 (e.g., 1023M)
  -H, --si              print sizes in powers of 1000 (e.g., 1.1G)
  -i, --inodes          list inode information instead of block usage
  -k                    like --block-size=1K
  -l, --local           limit listing to local file systems
      --no-sync         do not invoke sync before getting usage info (default)
      --output[=FIELD_LIST]  use the output format defined by FIELD_LIST,
                               or print all fields if FIELD_LIST is omitted.
  -P, --portability     use the POSIX output format
      --sync            invoke sync before getting usage info
      --total           elide all entries insignificant to available space,
                          and produce a grand total
  -t, --type=TYPE       limit listing to file systems of type TYPE
  -T, --print-type      print file system type
  -x, --exclude-type=TYPE   limit listing to file systems not of type TYPE
  -v                    (ignored)
      --help     display this help and exit
      --version  output version information and exit

Display values are in units of the first available SIZE from --block-size,
and the DF_BLOCK_SIZE, BLOCK_SIZE and BLOCKSIZE environment variables.
Otherwise, units default to 1024 bytes (or 512 if POSIXLY_CORRECT is set).

The SIZE argument is an integer and optional unit (example: 10K is 10*1024).
Units are K,M,G,T,P,E,Z,Y (powers of 1024) or KB,MB,... (powers of 1000).

FIELD_LIST is a comma-separated list of columns to be included.  Valid
field names are: 'source', 'fstype', 'itotal', 'iused', 'iavail', 'ipcent',
'size', 'used', 'avail', 'pcent', 'file' and 'target' (see info page).

GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
Full documentation at: <https://www.gnu.org/software/coreutils/df>
or available locally via: info '(coreutils) df invocation'

命令示例:

# 以人性化方式显示各文件系统容量
df -h

输出示例:

root@ubuntu:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            3.8G     0  3.8G   0% /dev
tmpfs           774M  3.6M  770M   1% /run
/dev/sda2       234G   73G  150G  33% /
tmpfs           3.8G     0  3.8G   0% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           3.8G     0  3.8G   0% /sys/fs/cgroup
/dev/loop0      128K  128K     0 100% /snap/bare/5
/dev/loop1       64M   64M     0 100% /snap/core20/2264
/dev/loop3       75M   75M     0 100% /snap/core22/1380
/dev/loop6      506M  506M     0 100% /snap/gnome-42-2204/176
/dev/loop7      347M  347M     0 100% /snap/gnome-3-38-2004/115
/dev/loop5       64M   64M     0 100% /snap/core20/2318
/dev/loop4      350M  350M     0 100% /snap/gnome-3-38-2004/143
/dev/loop8       92M   92M     0 100% /snap/gtk-common-themes/1535
/dev/loop12      13M   13M     0 100% /snap/snap-store/1113
/dev/loop13      39M   39M     0 100% /snap/snapd/21759
/dev/loop11      13M   13M     0 100% /snap/snap-store/959
/dev/loop9      497M  497M     0 100% /snap/gnome-42-2204/141
/dev/loop10      39M   39M     0 100% /snap/snapd/21465
/dev/sda1       511M  6.1M  505M   2% /boot/efi
tmpfs           774M   16K  774M   1% /run/user/125
tmpfs           774M   44K  774M   1% /run/user/1000
/dev/loop14      75M   75M     0 100% /snap/core22/1439

1.3 文件/目录空间使用 - du

命令参数:

Usage: du [OPTION]... [FILE]...
  or:  du [OPTION]... --files0-from=F
Summarize disk usage of the set of FILEs, recursively for directories.

Mandatory arguments to long options are mandatory for short options too.
  -0, --null            end each output line with NUL, not newline
  -a, --all             write counts for all files, not just directories
      --apparent-size   print apparent sizes, rather than disk usage; although
                          the apparent size is usually smaller, it may be
                          larger due to holes in ('sparse') files, internal
                          fragmentation, indirect blocks, and the like
  -B, --block-size=SIZE  scale sizes by SIZE before printing them; e.g.,
                           '-BM' prints sizes in units of 1,048,576 bytes;
                           see SIZE format below
  -b, --bytes           equivalent to '--apparent-size --block-size=1'
  -c, --total           produce a grand total
  -D, --dereference-args  dereference only symlinks that are listed on the
                          command line
  -d, --max-depth=N     print the total for a directory (or file, with --all)
                          only if it is N or fewer levels below the command
                          line argument;  --max-depth=0 is the same as
                          --summarize
      --files0-from=F   summarize disk usage of the
                          NUL-terminated file names specified in file F;
                          if F is -, then read names from standard input
  -H                    equivalent to --dereference-args (-D)
  -h, --human-readable  print sizes in human readable format (e.g., 1K 234M 2G)
      --inodes          list inode usage information instead of block usage
  -k                    like --block-size=1K
  -L, --dereference     dereference all symbolic links
  -l, --count-links     count sizes many times if hard linked
  -m                    like --block-size=1M
  -P, --no-dereference  don't follow any symbolic links (this is the default)
  -S, --separate-dirs   for directories do not include size of subdirectories
      --si              like -h, but use powers of 1000 not 1024
  -s, --summarize       display only a total for each argument
  -t, --threshold=SIZE  exclude entries smaller than SIZE if positive,
                          or entries greater than SIZE if negative
      --time            show time of the last modification of any file in the
                          directory, or any of its subdirectories
      --time=WORD       show time as WORD instead of modification time:
                          atime, access, use, ctime or status
      --time-style=STYLE  show times using STYLE, which can be:
                            full-iso, long-iso, iso, or +FORMAT;
                            FORMAT is interpreted like in 'date'
  -X, --exclude-from=FILE  exclude files that match any pattern in FILE
      --exclude=PATTERN    exclude files that match PATTERN
  -x, --one-file-system    skip directories on different file systems
      --help     display this help and exit
      --version  output version information and exit

Display values are in units of the first available SIZE from --block-size,
and the DU_BLOCK_SIZE, BLOCK_SIZE and BLOCKSIZE environment variables.
Otherwise, units default to 1024 bytes (or 512 if POSIXLY_CORRECT is set).

The SIZE argument is an integer and optional unit (example: 10K is 10*1024).
Units are K,M,G,T,P,E,Z,Y (powers of 1024) or KB,MB,... (powers of 1000).

GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
Full documentation at: <https://www.gnu.org/software/coreutils/du>
or available locally via: info '(coreutils) du invocation'

命令示例:

# 以人性化方式显示当前目录所有文件/目录空间占用
df -h

# 以人性化方式显示特定目录所有文件/目录空间占用
df -h <path>

# 指定目录深度显示所有文件/目录空间占用
df -h -d <n> <path>

输出示例:

root@ubuntu:~$ du -h -d 1 /usr
54M     /usr/sbin
17M     /usr/lib32
4.0K    /usr/libx32
28M     /usr/local
4.0K    /usr/games
2.3G    /usr/share
13M     /usr/libexec
235M    /usr/include
4.0K    /usr/lib64
725M    /usr/bin
50M     /usr/arm-linux-gnueabihf
12K     /usr/arm-linux-gnueabi
428M    /usr/src
5.4G    /usr/lib
9.2G    /usr

二、Linux磁盘管理

2.1 fdisk

前文提到fdisk可以查看磁盘的分区信息,但fdisk更强大的功能在于支持磁盘分区。
执行“fdisk [options] <disk>”后,会弹出shell命令行交付界面:

root@ubuntu:~$ fdisk /dev/sdb

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


Command (m for help):

输入m回车,可以查看命令参数:

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

分区示例:将一个磁盘划分为256M的FAT32格式的boot分区和ext4格式的根目录

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

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

# 查看当前磁盘分区信息
Command (m for help): p

Disk /dev/sdb: 7.22 GiB, 7746879488 bytes, 15130624 sectors
Disk model: Storage Device
Geometry: 239 heads, 62 sectors/track, 1021 cylinders
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: 0xb5805fa2

# 创建一个新的分区表
Command (m for help): o
Created a new DOS disklabel with disk identifier 0x5973a5ec.

# 创建一个新分区
Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
# 分区类型为primary
Select (default p): p
# 接回车,number使用默认值
Partition number (1-4, default 1):
# 直接回车,使用默认扇区位置
First sector (62-15130623, default 62):
# +256M,分配256M空间给第一个分区
Last sector, +/-sectors or +/-size{K,M,G,T,P} (62-15130623, default 15130623): +256M
# 创建完成
Created a new partition 1 of type 'Linux' and of size 256 MiB.

# 创建另一个分区
Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
# 分区类型为primary
Select (default p): p
# 直接回车,number使用默认值
Partition number (2-4, default 2):
# 直接回车,使用默认扇区位置
First sector (524351-15130623, default 524351):
# 直接回车,使用默认值,分配全部空间
Last sector, +/-sectors or +/-size{K,M,G,T,P} (524351-15130623, default 15130623):
# 创建完成
Created a new partition 2 of type 'Linux' and of size 7 GiB.

# 查看新的磁盘分区信息
Command (m for help): p

Disk /dev/sdb: 7.22 GiB, 7746879488 bytes, 15130624 sectors
Disk model: Storage Device
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: 0xc0ccc46e

Device     Boot  Start      End  Sectors  Size Id Type
/dev/sdb1         2048   526335   524288  256M 83 Linux
/dev/sdb2       526336 15130623 14604288    7G 83 Linux

Filesystem/RAID signature on partition 1 will be wiped.

# 保存table并退出
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

注:尝试对磁盘进行分区前建议储备些文件系统基础知识,避免损坏盘区丢失数据。

2.2 gparted

命令安装:

sudo apt install gparted

软件启动:

gparted

在这里插入图片描述
这是一个带UI的工具,使用方法可以自行摸索或参考其他网络资料,很容易上手。

三、制作image文件

嵌入式linux开发中,软件组件分为boot、kernel、rootfs三部分,当我们部署到目标板时需要把这三个组件分别放置到存储器内相应位置。为了方便使用,通常我们会将这三个组件打包为image(系统镜像),在硬件生产时只需要把image烧录在目标板的EMMC或SD卡,就可以完成系统软件的部署。

3.1 创建空白image文件

dd:用指定大小的块拷贝一个文件,并在拷贝的同时支持进行指定的转换
sync:将内存中的数据同步至硬盘

sudo dd if=/dev/zero of="demo.img" bs=1M count=4096
sync

3.2 image文件分区

这里我们使用fdisk命令对demo.img进行分区,便于脚本化执行我们使用"(echo <command>)"代替fdisk的命令行shell交互。

(
echo o
echo n
echo p
echo 1
echo
echo +256M
echo n
echo p
echo
echo
echo
echo t
echo 1
echo c
echo a
echo 1
echo w
) | sudo fdisk demo.img
sync

执行成功后:

root@ubuntu:~$ fdisk -l demo.img
Disk demo.img: 4 GiB, 4294967296 bytes, 8388608 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
Disklabel type: dos
Disk identifier: 0xc1af88bb

Device     Boot  Start     End Sectors  Size Id Type
demo.img1  *      2048  526335  524288  256M  c W95 FAT32 (LBA)
demo.img2       526336 8388607 7862272  3.8G 83 Linux

3.3 挂载为loop设备

kpartx: 用来挂载带有分区表的映像文件,挂载为loop设备
awk: 文本分析工具,配合正则表达式用来获取loop设备的编号

LOOP_NUM=$(sudo kpartx -av demo.img | awk 'NR==1{ sub(/p[0-9]$/, "", $3); print $3 }')
# 使用shell脚本执行该命令时,建议sleep一段时间后再对/dev/loop设备进行操作
sleep 1

3.4 向分区中写入数据

分区创建好了,下面就可以向分区中分别写入数据了:使用dd复制二进制文件;mount&cp复制rootfs。

# 复制boot image
sudo dd if=${OUTDIR}/boot.img of=/dev/mapper/${LOOP_NUM}p1 bs=1M
# 格式化分区
(echo y) | sudo mkfs -t ext4 -I 512 -L rootfs /dev/mapper/${LOOP_NUM}p2
# 挂载到文件系统
mkdir ~/${LOOP_NUM}p2 && sudo mount /dev/mapper/${LOOP_NUM}p2 ~/${LOOP_NUM}p2
# 从文件系统卸载
sudo umount ~/${LOOP_NUM}p2
# 其他数据操作
# ...
sync

3.5 完成,卸载设备

sudo kpartx -d "/dev/${LOOP_NUM}"

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

科普----Linux的前世今生

提到电脑的操作系统 相信大多数人会脱口而出&#xff1a;Windows&#xff01;MacOS&#xff01; 没错&#xff0c;这确实是目前市场上主流的两款操作系统。 但对于从事IT相关工作的人们来说&#xff0c;还有一种系统也必须拥有姓名 那就是Linux 看到这个词&#xff0c;大家…

unity游戏开发003:深入理解Unity中的坐标系

Unity游戏开发 “好读书&#xff0c;不求甚解&#xff1b;每有会意&#xff0c;便欣然忘食。” 本文目录&#xff1a; Unity游戏开发 Unity游戏开发深入理解Unity中的坐标系前言1. 坐标轴2. 左手坐标系3. 世界坐标系 vs. 局部坐标系4. 坐标变换5. 注意事项 总结 深入理解Unity中…

虚幻5|简单装备武器

一&#xff0c;首先我们要创建一个actor蓝图类 打开组件添加一个静态网格体&#xff0c;点击该组件&#xff0c;右侧细节找到网格体资产&#xff0c;选择需要的武器 三&#xff0c;打开角色的骨骼网格体&#xff0c;添加武器插槽 这个有些动作包里的骨骼网格体是加了骨骼&…

10 - Linux系统安全及应用

目录 一、账号安全控制 1.系统账号清理 2.密码安全控制 3.命令历史限制 4.终端自动注销 二、用户切换和用户提权 1. su 命令 - 切换用户 1.1 su 命令的用途及用法 1.2 限制使用su 命令的用户 1.3 查看su操作记录 2. sudo 命令 - 用户提权 2.1 sudo 命令的用途及用法…

Unity转Unreal5从入门到精通之如何实现一个简单的AI寻路

前言 我们今天使用最基础的引擎知识&#xff0c;来给大家创建一个简单的AI&#xff0c;可以追踪目标&#xff0c;攻击目标。 使用Unity类比的话&#xff0c;就是一个怪物预制体&#xff0c;放到了寻路上&#xff0c;当他视野看到目标后&#xff0c;就一直追踪目标&#xff0c;…

转账记录是怎样使用ZK实现证明的

目录 转账记录是怎样使用ZK实现证明的 1. 准备阶段 2. 生成证明 3. 转账记录的验证过程 4. 隐私保护 5. 应用场景 结论 转账记录是怎样使用ZK实现证明的 转账记录使用ZK(零知识证明)实现证明的过程,主要依赖于零知识证明技术中的协议,如ZK-SNARKs(Zero-Knowledge S…

72、docker资源管理

一、docker数据卷 容器和宿主机之间数据共享-----------挂载卷------------容器内的目录和宿主机的目录进行挂载。实现数据文件共享。 容器的生命周期是有限的&#xff0c;一旦重启所有对容器内部文件数据的修改以及保存的数据会被初始化&#xff0c;所以为了防止数据丢失&am…

Java语言程序设计基础篇_编程练习题16.22(播放、循环播放和停止播放一个音频剪辑)

题目&#xff1a;16.22&#xff08;播放、循环播放和停止播放一个音频剪辑&#xff09; 编写一个满足下面要求的程序&#xff1a; 使用AudioClip获取一个音频文件&#xff0c;该文件存放在类目录下。放置三个标记为Play、Loop和Stop的按钮&#xff0c;如图16-46a所示。单击Pla…

什么是调度中心控制台,它在现代运营管理中扮演什么角色?

在现代复杂多变的运营环境中&#xff0c;调度中心控制台作为企业内部信息管理的核心枢纽&#xff0c;扮演着至关重要的角色。它不仅是一个技术平台&#xff0c;更是企业高效运营和智能决策的重要支撑。接下来就给大家科普一下关于调度中心控制台知识点&#xff0c;及在现代运营…

HarmonyOS笔记4:从云数据库获取数据

移动应用获取数据的方式主要有&#xff1a; 1.从网络中获取数据接口API。 2.从华为云数据库获取云数据库的资源。 3.从移动终端直接获取本地的数据 在HarmonyOS笔记3中已经完成了方式一从网络中获取数据接口API的方式。在本篇笔记中&#xff0c;将讨论从云数据库中获取数据。 因…

极狐GitLab CI/CD 如何构建镜像并推送到 azure 镜像仓库?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门面向中国程序员和企业提供企业级一体化 DevOps 平台&#xff0c;用来帮助用户实现需求管理、源代码托管、CI/CD、安全合规&#xff0c;而且所有的操作都是在一个平台上进行&#xff0c;省事省心省钱。可以一键安装极狐GitL…

远程访问安全:rsync、ProFTPD、OpenSSH和VNC漏洞分析

文章目录 rsync未授权访问概念复现个别工具检测批量工具检测 proftpd远程命令介绍CVE-2015-3306复现 openssh信息泄露介绍复现 libssh身份绕过介绍条件危害复现 向日葵远程RCE介绍条件靶场&#xff1a; VNC配置不当介绍复现 在当今高度互联的数字时代&#xff0c;远程访问工具已…

[Qt][Qt 事件][上]详细讲解

目录 1.事件介绍2.事件的处理3.鼠标事件4.按键事件5.moveEvent6.resizeEvent 1.事件介绍 事件是应⽤程序内部或者外部产⽣的事情或者动作的统称 在Qt中使⽤⼀个对象来表⽰⼀个事件&#xff0c;所有的Qt事件均继承于抽象类QEvent 事件是由系统或者Qt平台本⾝在不同的时刻发出的…

深入理解C#中的yield关键字:提升迭代性能与效率

文章目录 前言一、yield return二、yield break总结 前言 在C#中&#xff0c;yield 关键字是特别用于迭代器块和方法中的&#xff0c;它允许你逐个返回序列中的元素&#xff0c;而不是一次性返回整个集合。使用 yield 可以显著提高处理大数据集或进行复杂迭代时的性能和内存效率…

【数据结构初阶】队列经典习题两道

hello&#xff01; 我是云边有个稻草人 目录 一、用队列实现栈 二、用栈实现队列 Relaxing Time &#xff01; 正文开始—— 一、用队列实现栈 225. 用队列实现栈 - 力扣&#xff08;LeetCode&#xff09; 根据题目要求&#xff0c;我们要用两个队列来实现栈的相关功能&…

虚拟机上使用Ubuntu1804上编译qt5.12.9部署到jetson nano上

开发qt界面&#xff0c;基于Qt5.12.9&#xff0c;开发环境使用虚拟机加载Ubuntu1804&#xff0c;开发完成后的qt程序最后部署到jetson nano上&#xff0c;使用的通用编译器是gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu 安装编译器 本文中直接将gcc-linaro-7.5.0-2019.…

汇昌联信做拼多多店铺如何运营?

汇昌联信如何在拼多多上运营店铺&#xff0c;是许多电商新手和希望扩展市场的商家所关注的问题。在这个快速发展的电商平台上&#xff0c;掌握正确的运营策略&#xff0c;对于提升店铺销量、增强品牌影响力至关重要。接下来&#xff0c;我们将详细探讨如何有效运营拼多多店铺。…

Angular由一个bug说起之九:AWS S3 文件下载问题

引言 在现代 Web 开发中&#xff0c;我们经常需要处理来自全球不同地区的数据&#xff0c;这包括文件名中可能包含的非拉丁文字符。最近&#xff0c;在一个项目中&#xff0c;我们遇到了一个与 Amazon S3 服务相关的挑战&#xff0c;涉及到文件名编码的处理。当从 S3 下载文件…

Redis分布式部署方式-主从复制

分布式部署Redis方式 分布式系统&#xff0c;涉及到一个非常关键的问题&#xff1a;单点问题 单点问题&#xff1a;如果某个服务器&#xff0c;只有一个节点&#xff08;只搞一个物理服务器&#xff0c;来部署这个服务器程序&#xff09;&#xff0c;会遇到一些困难&#xff…

多线程学习之ThreadLocal详细笔记

ThreadLocal详细笔记 一、ThreadLocal的基本概念二、ThreadLocal的独特性2.1 数据访问方式2.2 线程安全实现2.3 适用场景 三、ThreadLocal 的简单使用四、ThreadLocal 的工作原理五、ThreadLocal和内存泄漏的关系5.1 ThreadLocalMap的Entry的Key设计成弱引用5.2 弱引用会导致内…