Linux---系统的初步学习【 项目三 磁盘管理与文件系统】

news2024/11/24 20:57:30

项目三 磁盘管理与文件系统

3.1 项目知识准备

3.1.1 硬盘

​ 如果从存储数据的介质上来区分,硬盘可分为机械硬盘(Hard Disk Dirve,HHD)和固态硬盘(Solid State Disk,SSD),机械硬盘采用磁性碟片来存储数据,而固态硬盘通过闪存颗粒来存储数据。

1 机械硬盘

机械硬盘(HDD,Hard Disk Drive)是一种数据存储设备,它使用旋转的磁盘(通常为金属盘片)和移动的读写头来存储和检索数据。机械硬盘是计算机中常见的存储设备之一,具有容量大、成本相对较低的特点。不过,与固态硬盘(SSD)相比,机械硬盘的读写速度较慢,且由于其机械部件的存在,对震动和冲击更为敏感,耐用性可能略低。

机械硬盘的主要组成部分包括:

  • 磁盘:硬盘中的数据存储介质,通常由多个旋转的磁盘组成。
  • 读写头:用于读取或写入数据的设备,它悬浮在磁盘表面,不接触磁盘。
  • 主轴:支撑磁盘旋转的轴。
  • 控制器:管理数据的读写过程,与计算机系统通信。

机械硬盘的容量通常从几百GB到数TB不等,适用于需要大量存储空间的应用场景,如视频编辑、大型数据库存储等。随着技术的发展,机械硬盘也在不断改进,例如通过增加磁盘数量、提高磁盘转速(如7200RPM)来提升性能。然而,固态硬盘因其更快的读写速度和更好的耐用性,正在逐渐取代机械硬盘在许多应用领域的地位。

2 固态硬盘

固态硬盘(SSD,Solid State Drive)是一种使用闪存芯片作为存储介质的数据存储设备。与传统的机械硬盘(HDD)相比,固态硬盘具有许多显著的优点:

  1. 速度:SSD的读写速度远远超过HDD,这使得计算机启动更快,程序加载和运行更加迅速。

  2. 耐用性:由于SSD没有移动部件,它们对震动和冲击更加抵抗,因此更耐用,适合在移动设备中使用。

  3. 能耗:SSD的能耗通常低于HDD,这有助于延长笔记本电脑和其他便携设备的电池寿命。

  4. 噪音:由于SSD没有机械部件,它们在运行时几乎没有噪音。

  5. 热量:SSD产生的热量比HDD少,有助于保持系统的冷却。

  6. 尺寸和重量:SSD通常比HDD更轻巧,有助于制造更薄更轻的设备。

然而,固态硬盘也有一些局限性:

  • 成本:尽管价格在逐渐下降,但相同容量的SSD通常比HDD更昂贵。
  • 写入次数限制:SSD的闪存单元有一定的写入次数限制,尽管对于大多数用户来说,这并不是一个实际问题。
  • 容量:SSD的容量通常小于HDD,尤其是在高端市场。

固态硬盘的类型包括:

  • SATA SSD:使用SATA接口,与许多现有的计算机系统兼容。
  • NVMe SSD:使用更快的NVMe协议,通常通过M.2或U.2接口连接,提供更高的性能。
  • PCIe SSD:通过PCIe接口直接连接到主板,提供极高的数据传输速度。

固态硬盘适用于需要快速读写性能的应用,如游戏、视频编辑、专业图形设计和企业级应用。随着技术的进步和成本的降低,SSD正变得越来越普及。

3.1.2 Linux的文件系统

Linux文件系统详细介绍

​ Linux文件系统是一个树状结构,以根目录 / 开始,所有文件和目录都位于根目录下。它遵循文件系统层次标准(Filesystem Hierarchy Standard, FHS),这个标准定义了文件和目录的组织方式。

主要特点:
  1. 层次结构:所有文件和目录都按照一定的层次结构组织。
  2. 权限管理:每个文件和目录都有相应的权限设置,包括读(r)、写(w)、执行(x)。
  3. 文件类型:支持多种文件类型,包括普通文件、目录、符号链接、设备文件、管道、套接字等。
  4. 挂载点:可以挂载不同的存储设备或远程文件系统到特定的目录。
  5. 文件系统类型:支持多种文件系统类型,每种类型都有其特定的特性和用途。
常用目录:
  • /bin:存放基本的二进制执行文件。
  • /etc:系统配置文件。
  • /home:用户的个人目录。
  • /var:存放变量数据,如日志文件。
  • /tmp:存放临时文件。
  • /usr:用户应用程序。
  • /proc:虚拟文件系统,提供系统和进程信息。
文件系统管理工具:
  • ls:列出目录内容。
  • cd:改变当前目录。
  • cp:复制文件或目录。
  • mv:移动或重命名文件或目录。
  • rm:删除文件或目录。
  • df:报告文件系统的磁盘空间使用情况。
  • du:估计文件或目录的磁盘使用量。
6个常用的Linux文件系统类型
文件系统类型特点常用场景
ext4扩展文件系统第四版,高可靠性,支持大文件和大量子目录。通用场景,大多数Linux发行版默认文件系统。
XFS高性能文件系统,适合大数据量和高并发操作。数据库、高性能计算、大数据应用。
Btrfs支持快照、校验和、压缩等高级功能,适合高级存储需求。数据备份、虚拟化环境、需要数据完整性的场景。
NTFS微软Windows的文件系统,Linux可通过特定驱动程序访问。需要与Windows系统进行文件共享的跨平台应用。
FAT32兼容性好,广泛用于U盘、SD卡等便携式存储设备。跨操作系统的文件交换。
ZFS高级文件系统,支持数据完整性、压缩、去重等,依赖特定硬件。数据中心、存储池、高级存储解决方案。
tmpfs基于内存的文件系统,用于存放临时数据,读写速度快。临时数据存储,提高性能的场景。

​ 在选择文件系统类型时,需要考虑性能、可靠性、兼容性以及特定应用的需求。例如,对于需要高性能和大数据处理的应用,可能会选择XFS或ZFS;而对于需要与Windows系统共享数据的场景,则可能会选择NTFS或FAT32。

3.1.3 物理设备的命名规则

​ Linux系统中的物理设备命名规则有助于快速识别和访问设备。以下是一些主要的设备类型及其命名规则的描述:

硬盘驱动器
  • IDE硬盘:以hd开头,后跟一个字母(如hdahdb)。
  • SATA硬盘:以sd开头,后跟一个或两个字母(如sdasdbsdc1),其中第二个字母表示分区。
网络接口卡
  • 以太网:以eth开头,后跟数字(如eth0eth1)。
  • 无线网络:可能以wlanwlp开头,后跟数字。
声卡
  • 通常以sound开头,后跟数字(如sound0sound1)。
打印机
  • lp开头,后跟数字(如lp0lp1)。
调制解调器
  • tty开头,后跟一个斜杠和数字(如ttyS0ttyS1)。
字符设备和串行端口
  • 串行端口通常以tty开头,后跟一个大写字母和数字的组合(如ttyS0ttyUSB0)。
图形显示设备
  • fb开头,后跟数字(如fb0表示帧缓冲设备)。
随机数生成器
  • random开头,后跟数字(如random0)。
基于UUID的命名
  • /dev/disk/by-uuid/目录下,设备可以通过其UUID进行识别,提供更稳定的命名方式。

表格:Linux物理设备命名示例

设备类型命名规则示例描述
硬盘/dev/sda第一个SATA硬盘
分区/dev/sda1/dev/sda的第一个分区
网络接口/dev/eth0第一个以太网接口
无线网络/dev/wlp3s0无线网络接口,可能以wlp开头
声卡/dev/snd/card0声卡设备,可能包含snd和数字
打印机/dev/lp0第一个打印机设备
调制解调器/dev/ttyS0第一个串行端口调制解调器
串行端口/dev/ttyUSB0USB到串行端口适配器
显示设备/dev/fb0帧缓冲设备
随机数生成/dev/random随机数生成设备
UUID命名/dev/disk/by-uuid/基于UUID的设备命名,如/dev/disk/by-uuid/123e4567-e89b-12d3-a456-426655440000

​ 请注意,上述表格中的命名规则示例仅供参考,实际的设备名称可能因系统配置和内核版本而异。例如,声卡的设备文件可能因使用的声卡驱动不同而有所变化。此外,随着技术的发展,新的设备和命名规则可能会被引入。

3.2项目实施

3.2.1 任务一: 添加及配置硬盘

在CentOS 8中添加及配置硬盘的步骤通常包括以下几个阶段:物理安装硬盘、分区、格式化、挂载以及更新/etc/fstab文件以实现自动挂载。以下是详细的步骤:

步骤1:物理安装硬盘
  • 关闭系统电源。(VM中保持Linux系统关机)
  • 安装新的硬盘到服务器或计算机的硬盘槽中。

这一步在VM中的体现如下:

找到CentOS 8 >>> 点击编辑虚拟机设置

在这里插入图片描述

弹出虚拟机设置框>>>选择硬盘>>>添加;

在这里插入图片描述

弹出添加硬件向导>>>选择添加硬盘,下一步>>>选择SCSI的虚拟磁盘类型,下一步>>>默认创建新虚拟磁盘,下一步>>>指定虚拟磁盘的大小,默认将虚拟磁盘拆分成多个文件,下一步>>>默认,点击完成。

在这里插入图片描述

  • 重新启动系统。
步骤2:检测新硬盘
  1. 打开终端。

  2. 使用lsblkfdisk -l命令来查看当前系统中的硬盘列表,确认新硬盘已经被系统识别。

    lsblk
    # 或者
    sudo fdisk -l
    

在这里插入图片描述

步骤3:分区
  1. 使用fdiskparted命令来创建新的分区。这里以fdisk为例:

    sudo fdisk /dev/sdX
    

    其中/dev/sdX是新硬盘的设备名(例如/dev/sdb)。

  2. fdisk提示符下,按m查看帮助,然后按n创建新分区。

  3. 选择分区类型(例如p为主分区,e为扩展分区)。

  4. 设置分区大小。

  5. 输入w保存更改并退出fdisk

在这里插入图片描述

步骤4:格式化分区
  1. 使用mkfs命令为新分区创建文件系统。例如,创建ext4文件系统:

    #可以使用命令sudo fdisk -l 查看并确认,再进行格式化分区
    sudo mkfs.ext4 /dev/sdXN
    

    其中/dev/sdXN是新分区的设备名(例如/dev/sdb1)。

    在这里插入图片描述

步骤5:挂载分区
  1. 创建一个挂载点目录:

    #newdisk可以和分区同名
    sudo mkdir /mnt/newdisk
    
  2. 挂载分区到新目录:

    sudo mount /dev/sdXN /mnt/newdisk
    

在这里插入图片描述

步骤6:更新/etc/fstab文件

作用是确保在系统启动时,特定的分区或存储设备能够自动挂载到预期的目录(挂载点)。{一般这一步初学者也可以不做}

  1. 找到或创建一个UUID。使用blkid命令获取分区的UUID:

    sudo blkid
    

    在这里插入图片描述

  2. 打开/etc/fstab文件进行编辑:

    #当然,如果后面遇到需要永久挂载的项目时,方法一样
    sudo nano /etc/fstab
    
  3. 在文件末尾添加一行,指定UUID、挂载点、文件系统类型以及挂载选项:

    UUID=你的分区UUID /mnt/newdisk ext4 defaults 0 2
    

    在这里插入图片描述

  4. 保存并关闭编辑器。(按照系统操作提示)

步骤7:测试挂载
  1. 使用mount -a命令测试挂载配置:

    sudo mount -a
    

    如果没有错误消息,说明配置正确。

步骤8:重新挂载(如果需要)
  1. 如果需要重新挂载分区到不同的目录,先卸载当前挂载点:

    sudo umount /mnt/newdisk
    
  2. 创建新的挂载点并重新挂载:

    sudo mkdir /mnt/newmountpoint
    sudo mount /dev/sdXN /mnt/newmountpoint
    
  3. 更新/etc/fstab文件中的挂载点路径。

步骤9:重启系统
  1. 重启系统以确保分区在启动时自动挂载:

    sudo reboot
    

请注意,上述步骤中的设备名(如/dev/sdX/dev/sdXN)需要根据你的实际情况替换为正确的设备和分区名。此外,操作过程中需要具有root权限或使用sudo来执行需要特权的命令。在编辑/etc/fstab文件时要特别小心,因为错误的配置可能会导致系统无法启动。

3.2.2 任务二 在Linux中配置RAID

​ CentOS 8提供了对RAID技术的支持,可以使用软RAID方法创建,使用 mdsdm lh立和管理B提)设备。

在Linux中配置RAID的步骤:
  1. 准备磁盘分区

    • 确保至少有四个磁盘分区,例如/dev/sdb1/dev/sdc1/dev/sdd1/dev/sde1,它们的大小相同,例如都是2GB。
  2. 设置分区类型

    • 使用fdisk命令将这些分区的文件系统类型设置为“Linux raid autodetect”。具体操作如下:

      [root@localhost~]# fdisk /dev/sdb
      命令(输入m获取帮助):t
      分区号(1,2,默认2):1
      Hex代码(输入L列出所有代码):fd
      
    • 重复上述步骤为其他分区设置类型。

  3. 检查mdadm工具是否安装

    • 使用rpm -q mdadm命令检查mdadm是否已安装。如果未安装,使用以下命令安装:

      [root@localhost~]# yum install mdadm
      
  4. 检查磁盘是否已配置RAID

    • 使用mdadm -E /dev/sd[b-e]1命令检查磁盘是否已经配置过RAID。如果显示“No md superblock detected”,说明磁盘尚未配置RAID。
  5. 创建RAID

    • 使用mdadm命令创建RAID5,包括一个备用硬盘分区。命令如下:

      [root@localhost~]# mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sd[b-d]1 -spare-devices=1 /dev/sde1
      

      参数说明:

      • --create:创建RAID。
      • --level=5:指定使用RAID5级别。
      • --raid-devices=3:指定3个硬盘分区作为数据存储。
      • --spare-devices=1:指定1个硬盘分区作为备用。
  6. 格式化RAID设备

    • 使用mkfs.xfs命令将新创建的RAID设备格式化为xfs文件系统:

      [root@localhost~]# mkfs.xfs /dev/md0
      
  7. 查看RAID的详细信息

    • 使用mdadm --detail /dev/md0命令查看RAID的详细信息,包括活动设备数、工作设备数、失败设备数和备用设备数。
  8. 创建挂载点并挂载RAID设备

    • 创建一个目录作为挂载点,然后将RAID设备挂载到该目录:

      [root@localhost~]# mkdir /mnt/md0
      [root@localhost~]# mount /dev/md0 /mnt/md0
      
  9. 模拟硬盘损坏

    • 这一步是可选的,用于测试RAID的容错能力。首先,将一个硬盘分区标记为失效:

      [root@localhost~]# mdadm /dev/md0 -f /dev/sdc1
      
    • 然后,使用mdadm --detail /dev/md0查看当前的RAID状态,确认硬盘分区已标记为失效。

  10. 修复RAID

    • 如果硬盘分区修复或更换,可以将其重新添加到RAID中:

      [root@localhost~]# mdadm /dev/md0 -a /dev/sdc1
      
  11. 取消挂载和停止RAID

    • 在完成测试或不再需要RAID时,可以取消挂载RAID设备并停止RAID:

      [root@localhost~]# umount /mnt/md0
      [root@localhost~]# mdadm --stop /dev/md0
      
  12. 删除磁盘分区的RAID信息

    • 如果需要彻底删除RAID配置,可以使用以下命令:

      [root@localhost~]# mdadm --zero-superblock /dev/sd[b-d]1
      

请注意,这些步骤提供了一个基本的RAID配置指南,具体操作可能需要根据你的系统环境和需求进行调整。

3.2.3 扩展任务 :配置逻辑卷管理(LVM)

​ 逻辑卷管理(LVM)是一种强大的磁盘管理工具,特别适合需要灵活(动态磁盘管理技术)管理和扩展存储空间的场景。它通过提供灵活的存储管理方式,解决了传统分区管理的诸多问题,提高了存储效率和系统性能,增强了数据的安全性和可靠性。对于系统管理员来说,LVM是一个不可或缺的工具,能够帮助他们更有效地利用磁盘资源,满足日益增长的存储需求。以下是LVM的介绍:

关键概念:
  1. 物理卷(PV, Physical Volume):这是LVM中最基本的单元,是实际的磁盘或磁盘分区的一部分。物理卷包含元数据,用于LVM管理。

  2. 卷组(VG, Volume Group):由一个或多个物理卷组成的集合,相当于一个存储池。卷组中的所有空间可以被用来创建逻辑卷。

  3. 逻辑卷(LV, Logical Volume):从卷组中分配出来的空间,可以动态调整大小。逻辑卷可以被格式化为不同的文件系统,并挂载到系统中使用。

  4. 物理区域(PE, Physical Extent):LVM中用于分配空间的基本单位。每个物理卷、卷组和逻辑卷都是由一系列的物理区域组成的。

  5. 逻辑区域(LE, Logical Extent):逻辑卷中的分配单位,逻辑卷由一系列的逻辑区域组成。

作用:
  1. 灵活性:LVM允许用户在不重新分区的情况下,动态调整逻辑卷的大小,这为存储管理提供了极大的灵活性。

  2. 空间管理:LVM可以将多个物理硬盘组合成一个大的卷组,统一管理这些硬盘上的空间,使得空间分配更加高效。

  3. 性能提升:通过将数据分布在多个物理硬盘上,LVM可以提高数据访问的速度,尤其是在进行大量读写操作时。

  4. 容错能力:LVM支持镜像和条带化,可以提高数据的安全性和可靠性。

  5. 简化备份和恢复:LVM提供了快照功能,可以快速创建逻辑卷的副本,便于备份和恢复数据。

  6. 跨多个磁盘扩展文件系统:用户可以创建跨越多个物理硬盘的逻辑卷,从而扩展单一文件系统的大小。

  7. 易于维护:LVM的配置和维护相对简单,用户可以通过命令行工具轻松管理磁盘空间。

为什么会有这种技术?

LVM技术的出现是为了解决传统磁盘分区管理方式的一些限制和问题:

  1. 固定大小的分区:传统分区一旦创建,其大小固定,难以调整,这在资源分配上不够灵活。
  2. 空间利用率低:不同分区可能会有剩余空间,但这些空间不能被其他分区使用,导致空间浪费。
  3. 性能瓶颈:单一硬盘的性能可能成为系统瓶颈,限制了整体性能的提升。
  4. 数据安全问题:单一硬盘的故障可能导致数据丢失,需要更高级的数据保护机制。
  5. 维护困难:随着系统的发展,磁盘管理变得越来越复杂,需要一种更高效的管理方式。
用来解决什么问题?

LVM用来解决以下问题:

  1. 存储空间的动态分配:解决固定分区大小带来的限制,允许根据需求动态调整存储空间。
  2. 提高存储空间利用率:通过卷组管理,充分利用所有硬盘空间,避免浪费。
  3. 提升系统性能:通过跨硬盘的数据分布,提高数据访问速度,解决性能瓶颈问题。
  4. 增强数据安全性:通过镜像和条带化技术,提高数据的容错能力和安全性。
  5. 简化数据备份和恢复:快照功能简化了数据备份和恢复过程,提高了效率。
  6. 简化系统维护:统一的存储管理简化了系统维护工作,降低了管理复杂性。

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

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

相关文章

用户需求分析揭秘:最佳实践与策略

大多数产品团队都有自己处理客户需求的一套流程。但是那些潜在的客户和他们的需求呢?如果在产品管理上已经有一定的资历,很可能对此见惯不怪了。 通常,这些需求是销售人员跑来告诉你的,大概就是说:“超棒的潜在客户一…

Datakit管理openGauss6.0集群,监控运维超方便

作者:IT邦德 中国DBA联盟(ACDU)成员,10余年DBA工作经验, Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主,全网粉丝10万 擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复, 安装迁移,性能优化、故障…

手写精简版TinyHttpd项目(一)

前言: 我们在之前的TinyHttpd的精读(可以在首页去查看)中已经是基本的了解了显示一个网页的基本过程,那么我们学习后可以通过手写一个精简版的进行巩固下。 0.新工程的建立 我们也可以顺带复习下如何通过cmake在ubuntu下新建一个工程(记得提前下载cmake…

安装,管理程序

文章目录 Linuxd应用程序基础应用程序与系统命令的关系 典型应用程序目录常见的软件包装类型 rpm软件包管理工具RPM软件包rpm命令格式查询rpm软件包信息查询已安装的查询未安装的 安装或升级rpm软件卸载指定rpm软件辅助选项 维护RPM数据库解决软件包依赖关系方法 源代码编译安装…

C#观察者模式应用

目录 一、什么是观察者模式 二、C#中观察者模式的实现 三、两种实现的用法 1、事件与委托 2、IObserver和IObservable 四、参考文献 一、什么是观察者模式 观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当…

嵌入式中间件_3.嵌入式中间件的一般架构

根据嵌入式中间件的不同类型和其应用对象的不同,其架构也有所不同,通常嵌入式中间件没有统一的架构,这里仅仅列举两种中间件架构。 1.消息中间件 1.1消息中间件原理架构 消息中间件是消息传输过程中保存消息的一种容器。它将消息从它的源中…

Swift开发——索引器扩展

扩展用于向已存在的类型(例如,类、结构体、枚举和协议等)中添加新的功能,扩展甚至可以向系统类型(包括无法查阅代码的类型)中添加新的功能,但是扩展不能覆盖原类型中已有的方法,扩展也不能向类中添加新的存储属性。 01、索引器扩展 扩展可为类、结构体等类型添加索引器。程序段…

【热门开源项目推荐】满足不同程序员的需求与关注点

目录 前言一、热门开源项目介绍二、使用开源热门项目的优势(一)经济方面(二)技术方面(三)社区支持及协作方面 三、程序员选择项目模型建议(一)关键步骤(二)示…

技术点梳理0618

ann建库,分布式建库,性能优化,precision recall参数优化 hnsw,图索引 1. build a)确定层:类似跳表思路建立多层,对每一个插入的节点,random层号l,从图的起始点search_…

【CVPR2021】LoFTR:基于Transformers的无探测器的局部特征匹配方法

LoFTR:基于Transformers的局部检测器 0. 摘要 我们提出了一种新的局部图像特征匹配方法。我们建议先在粗略级别建立像素级密集匹配,然后再在精细级别细化良好匹配,而不是按顺序进行图像特征检测、描述和匹配。与使用成本体积搜索对应关系的密…

vcruntime140_1.dll文件【安装包】【压缩包】【文件】【下载】

安装程序时有时候出现 类似无法启动程序,缺少vcruntime140_1.dll的提示,我们找到该文件并放到对应目录就可以;获取方法有很多,下面介绍两种:(方法二更简便,不过建议两种方法都试试) …

Java开发的构建神器:Maven以及如何安装部署Maven

目录 一、Maven引言1.1 Maven的核心概念✍. POM (Project Object Model)✌. 依赖管理✍. 生命周期与构建阶段✌. 插件系统 1.2 Maven的工作流程✍. 读取POM文件:✌. 依赖解析:✍. 构建生命周期:✌. 插件执行:✍. 构建输出&#xf…

shell编程中的运算符的讲解

在Linux操作系统中也可以使用expr来进行一些数值的运算,expr接受表达式作为参数,并打印计算结果。 对于某些复杂的表达式或早期不支持内嵌算术表达式的Shell环境,expr 仍然是一个可行的选择。 如上图所示,是使用变量sum来承接加和…

基于minhook的Windows HOOK

MinHook是一个基于微软Detours技术的可移植Hook库,它允许开发者在运行时更改函数定义,而无需修改原始函数代码。以下是关于MinHook的详细介绍: 基本概念 定义:MinHook使用内存污染和跳转技术来实现Hook,使得开发者能…

【windows|002】WEB服务和域名介绍

🍁博主简介: 🏅云计算领域优质创作者 🏅2022年CSDN新星计划python赛道第一名 🏅2022年CSDN原力计划优质作者 🏅阿里云ACE认证高级工程师 🏅阿里云开发者社区专…

【记录46】【案例】echarts 柱状图

echarts环境4.1.0 <template><div id"threefour"></div> </template> <script> import * as echarts from "echarts" export default {name:"",components:{},data(){return {}},methods:{getdata(){var myChart…

【Java】解决Java报错:SocketTimeoutException during Network Communication

文章目录 引言一、SocketTimeoutException的定义与概述1. 什么是SocketTimeoutException&#xff1f;2. SocketTimeoutException的常见触发场景3. 示例代码 二、解决方案1. 合理设置超时时间2. 使用重试机制3. 使用NIO和异步通信4. 使用高层次的网络通信库 三、最佳实践1. 合理…

使用vscode插件du-i18n处理前端项目国际化翻译多语言

前段时间我写了一篇关于项目国际化使用I18n组件的文章&#xff0c;Vue3 TS 使用国际化组件I18n&#xff0c;那个时候还没真正在项目中使用&#xff0c;需求排期还没有定&#xff0c;相当于是预研。 当时就看了一下大概怎么用&#xff0c;改了一个简单的页面&#xff0c;最近需…

Matplotlib(小案例)

1、3D表面形状的绘制 from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt import numpy as np import matplotlib as mplfigplt.figure() axfig.add_subplot(111,projection3d)unp.linspace(0,2*np.pi,100) vnp.linspace(0,np.pi,100) x10*np.outer(n…

python+unity手势控制地球大小

效果图如下 具体操作如下 1 在unity窗口添加一个球体 2 给球体添加材质,材质图片使用地球图片 地球图片如下 unity材质设置截图如下 3 编写地球控制脚本 using System.Collections; using System.Collections.Generic; using UnityEngine;public class test : MonoBehavio…