当前位置: 首页 > news >正文

系统及其存储相关

1.区分系统(软件)和固件

1.1概念辨别

  1. 系统(软件software):
    • 角色: 系统是计算机中的核心软件,提供基本的管理、控制和资源分配功能。它通常包括操作系统,负责管理硬件资源、提供用户界面(命令行界面或者图形化界面),以及执行基本的系统任务。
    • 关系: 应用程序和插件通常依赖于操作系统,因为它们需要操作系统提供的服务、资源管理和用户界面。
  2. 固件(Firmware):
    • 角色: 固件是嵌入在硬件设备中的软件,用于控制设备的基本功能。它通常存储在设备的非易失性存储器中,如芯片上的闪存。固件可以不依赖操作系统而工作。
    • 关系: 固件通常独立于操作系统,但某些设备可能在引导过程中依赖于固件。固件可以包含引导加载程序、嵌入式系统的驱动程序和控制代码等。
    • 路由器固件其实是包含了固件和嵌入式操作系统的集合。
  3. 插件(Plugin):
    • 角色: 插件是一种可插拔的软件组件,设计用于增强主要软件应用程序的功能。它们可以在运行时动态加载和卸载。
    • 关系: 插件依赖于主程序的框架和接口,可以是系统级的也可以是应用级的。插件通过主程序提供的接口与用户和系统进行交互。
  4. 应用(Application):
    • 角色: 应用是独立运行的软件程序,为用户提供特定的功能或服务。它们建立在操作系统之上,利用操作系统的服务和资源来完成任务。
    • 关系: 应用程序依赖于操作系统提供的运行环境,但通常是独立于其他应用程序的。
  5. 系统,应用,驱动,脚本等都是软件,系统软件可以为应用软件提供工作环境,比如微软系统为qq提供用户操作界面等,而插件是依赖在系统软件之上工作的。应用软件虽然是独立工作的不依赖系统,但是与硬件沟通还是需要操作系统才能完成,操作系统软件的作用就是沟通硬件和应用软件,并为软件提供用户界面,应用软件可以与硬件直接沟通(固件),但是缺乏有效管理和资源分配,不受控制,稳定性就弱了。
    1. 系统软件:
      • 是一类管理计算机硬件和提供基本服务的软件。
      • 包括操作系统、引导加载程序、设备驱动程序等。
      • 主要任务是协调和管理计算机的各种资源,提供运行环境,为应用程序提供服务。
      • 提供用户管理界面,允许用户与计算机进行交互,配置系统设置,启动应用程序等。
    2. 应用软件:
      • 是为执行特定任务或提供特定服务而设计的软件。
      • 包括各种应用程序,如文字处理软件、图形设计软件、游戏、浏览器等。
      • 依赖于操作系统提供的服务和资源,通过这些服务与硬件交互。
      • 提供具体的功能和体验,使用户能够完成特定的工作或娱乐活动。

1.2操作系统分类

  1. 个人计算机操作系统(Personal Computer Operating System):一种单用户多任务的操作系统。
    特点: 计算机在某一时间内为单个用户服务采用图形界面人机交互的工作方式,界面友好;使用方便,用户无需具备专门知识,也能熟练地操作系统。
  2. 嵌入式操作系统(Embedded Operating System):运行在嵌入式芯片的环境中,对整个芯片以及它所操作、控制的各种部件装置等资源进行统一协调、调度、指挥和控制的系统软件。
    嵌入式操作系统:具有
    高可靠性、实时性、占有资源少、智能化能源管理、易于连接、低成本
    等特点。嵌入式操作系统是嵌入式系统(Embeded System)的控制中心,而嵌入式系统则是嵌入式操作系统、相应设备环境与应用环境的结合,是一个很宽的概念。
  3. 服务器操作系统一般指的是安装在大型计算机上的操作系统,比如Web服务器、应用服务器和数据库服务器等,是企业IT系统的基础架构平台,
  4. 分布式操作系统将大量的计算机通过网络连接起来,可以获取极高的运算能力及广泛的数据共享。这样一种系统称之为分布式系统。为分布式系统配置的操作系统称之为分布式操作系统。

2系统启动中的引导

2.1BIOS和BOOT

BIOS(基本输入/输出系统)和 boot(引导)是计算机启动过程中两个关键的组成部分,它们共同协作以确保计算机能够成功启动并加载操作系统。以下是它们之间的关系:

  1. BIOS(基本输入/输出系统):

    • 作用: BIOS 是计算机启动过程中的第一个阶段。它负责执行系统的自检(POST,Power-On Self-Test)并提供一组基本的硬件初始化和服务,以便让计算机能够进行基本的输入和输出操作。(检测处理器,内存,适配器,鼠标键盘,存储设备,时钟,总线控制,外设等)
    • 存储位置: BIOS通常存储在计算机主板上的一块芯片中,通常是闪存(Flash)或只读存储器(ROM)。
    • BIOS本身就是一个固件(为硬件服务的专用软件)。
    • BIOS设置: 计算机的BIOS中通常有一个设置,指定引导设备的顺序。这个设置被称为“引导顺序”或“启动顺序”(提供磁盘,网络,U盘等)。用户可以在BIOS设置中配置这个顺序,决定计算机将首先尝试从哪个设备引导。
    • UEFI设置(Unified Extensible Firmware Interface): 在使用UEFI(统一扩展固件接口)的计算机中,引导顺序的配置通常在UEFI设置中完成。UEFI是一种更现代的固件替代品,取代了传统的BIOS。
  2. Boot(引导):

    • 作用: 引导阶段是计算机启动的第二个关键阶段。在BIOS自检完成后,计算机需要加载操作系统。这是引导加载程序(Boot Loader)的工作。引导加载程序是一个小型的程序,其任务是从存储介质(通常是硬盘或固态硬盘)中加载操作系统的内核到计算机的内存中
    • 存储位置: 引导加载程序通常存储在启动分区的引导扇区(通常是硬盘的第一个扇区)上。
  3. 关系:

    • BIOS启动过程: 计算机启动时,BIOS首先执行,进行自检和硬件初始化。接着,BIOS查找引导设备(通常是硬盘)上的引导扇区,并将控制权传递给该扇区的引导加载程序。
    • 引导加载程序: 引导加载程序接管控制权,负责加载操作系统的内核到内存中,并开始执行操作系统的初始化过程。
  4. U-Boot(Universal Bootloader):是一个开源的引导加载程序,用于嵌入式系统的引导。它是一个通用的引导加载程序,可以在各种嵌入式平台上使用。U-Boot 提供了许多功能,包括引导操作系统、加载内核映像、进行设备初始化等。U-Boot 提供了命令行界面,允许用户通过串口或网络进行交互。在 U-Boot 中,你可以执行一系列的命令,包括刷写固件、更新引导配置等,为了方便路由器的uboot提供了web界面,通过难过web界面刷固件。

    • 引导过程: U-Boot 通常被用于引导嵌入式系统。在启动过程中,U-Boot 会初始化硬件,加载引导加载程序和内核,然后将控制权转交给操作系统。

    • 命令行界面: U-Boot 提供了一个命令行界面,通过该界面,用户可以手动执行各种命令,如加载和启动内核、设置环境变量、烧写固件等。

    • 支持的架构: U-Boot 支持多种处理器架构,包括 ARM、MIPS、PowerPC、x86 等。

    • 配置文件: 为了适应不同的硬件和需求,U-Boot 使用一个配置文件,允许用户根据其特定的硬件配置进行自定义。

    • 开发和维护: U-Boot 是一个开源项目,具有活跃的社区支持。它经常用于嵌入式 Linux 系统中,特别是在嵌入式设备和嵌入式开发板上。

  5. **总结:**个人操作系统的bios是由主板决定,集成了boot,(有统一规定,所以可以装成不同的系统)直接进行设置就可以直接引导进入系统,而路由器的硬件不同的厂商硬件不同,自定义bios和boot(两个是分开的),导致自身的boot兼容性差,因此需要刷入uboot来支持openwrt。

    1. 个人计算机操作系统是通用的,系统就是一个软件称作系统软件,如果需要支持特殊的硬件就通过驱动进行支持。这个系统软件可以和其他应用软件分别单独工作,系统软件可以为应用软件提供用户界面。
    2. 嵌入式操作系统的核心是为了管理固件(为特殊硬件提供的配套软件支持),系统的核心是通过web界面管理固件,而openwrt是基于Linux的系统来支持管理固件,还可以支持各种个样的插件(插件运行在操作系统上),提供丰富的服务。嵌入式操作系统的重点是固件,因为固件才是调动硬件的关键。
    3. 固件和驱动程序有相似之处,但是在本质上还是有一些区别的。首先,固件是固化到 ROM 或者闪存等非易失性存储器中,并且不容易被修改或替换。而驱动程序通常存在于磁盘或其他可写的存储介质中,并且可以随时更新。其次,固件是为特定的硬件环境而设计的,因此它更加紧凑、高效,更易于与硬件相结合。而驱动程序则更加通用一些,它可以被多个不同的操作系统共享,并且可以从各种不同的源获取。(简单理解:为特殊硬件提供支持的软件固化在rom中叫固件,放在操作系统上叫驱动)

2.2软路由和应路由的关系

  1. 软路由:
    • 固件: 在软路由中,通常使用嵌入式操作系统,例如基于 Linux 的路由发行版(如OpenWrt)。固件在这里是嵌入在操作系统中的,而不同的软件包和配置选项可以通过操作系统的机制进行安装和定制。
    • 工作方式: 软路由需要完整的操作系统来运行,而路由功能是通过运行在这个操作系统上的路由软件实现的。这使得软路由非常灵活,可以通过添加软件包来增加新的功能。
  2. 硬路由:
    • 固件: 在硬路由中,通常存在一个轻量级的嵌入式操作系统,也称为固件。这个固件通常是预先安装在设备上的,用于提供基本的路由功能。
    • 工作方式: 硬路由通常不需要完整的通用操作系统,因为它们的设计目标是专注于提供基本的路由服务。这些设备可以直接通过预装的固件进行工作,而无需运行类似通用操作系统的完整软件堆栈。
  3. 总结
    1. 应路由是把系统(系统就是软件)嵌入到固件中,存储在固定的rom上,操作系统的作用就是管理固件,设置配置参数(系统成为嵌入式操作系统),而软路由是把固件安装在操作系统上(此时的固件其实就是驱动程序),在系统中能够安装各种插件实现不同功能(严格上讲这不是嵌入式操作系统,而就是一个通用的系统)。只不过习惯把这两种方式都叫嵌入式操作系统而已。
    2. 硬路由是不经过操作系统控制的,固件可以直接和操作系统系统沟通,因此叫嵌入式系统,软路由则是驱动程序(固件)是需要通过操作系统和硬件进行沟通的。

3.开机的过程

  1. BIOS/UEFI阶段:
    • 自检(POST): 电脑通电后,主板上的基本输入/输出系统(BIOS)或统一可扩展固件接口(UEFI)会进行自检(Power-On Self-Test,POST)。这一阶段检查计算机硬件的状态,包括处理器、内存、显卡、硬盘等。
    • 启动加载: BIOS/UEFI会根据预设的启动顺序(通常是从硬盘、光盘、USB等)加载引导程序。
  2. 引导加载程序阶段:
    • 引导记录加载: 引导加载程序(如GRUB或Windows Boot Manager)被加载到内存中(因此c盘删除的话,不重启是不出问题,但是重启的话就出问题,)。这个加载程序负责引导操作系统的启动。(但是删根的话会导致系统访问磁盘文件无法进行,就会直接出问题)
    • 操作系统加载: 引导加载程序读取操作系统的引导文件(比如Windows的ntldr或Linux的vmlinuz)。
  3. 操作系统加载阶段(核心):
    • 内核加载: 操作系统的引导文件加载操作系统内核到内存中。
    • 初始化: 操作系统内核开始初始化系统的各个部分,建立基本的系统环境。
  4. 用户登录阶段:
    • 用户登录: 操作系统启动后,通常会显示登录界面。用户输入用户名和密码进行登录。
    • 用户环境初始化: 操作系统根据用户的配置初始化用户的桌面环境和其他设置。
  5. 用户桌面加载阶段:
    • 图形界面加载(可选): 如果是图形用户界面(GUI),则加载桌面环境和相关服务。如果是文本界面,则直接显示命令行。
  6. 用户应用启动阶段:
    • 启动应用程序: 用户可以开始启动和使用各种应用程序。

启动过程中的引导加载程序(Bootloader)的主要责任是加载操作系统内核到内存中,并将控制权转交给内核,这个过程确实是启动过程的核心部分。

一旦操作系统内核加载到内存中并开始运行,引导加载程序的使命基本上就完成了。然后,内核负责启动和初始化系统的各种组件、服务以及用户空间程序。

启动过程并不仅限于加载内核。内核启动后,它会进一步执行系统初始化、设备初始化、加载系统服务(如网络服务、文件系统服务等)以及用户级应用程序。这些后续的步骤和服务启动的管理,通常由操作系统的各种管理器、初始化脚本或服务管理工具来完成。

所以,启动过程只是启动了内核,而后续的服务加载和应用程序启动确实是由系统内核及相关的管理模块或配置执行的,与引导加载程序(Bootloader)的职责并不直接相关。

4.存储数据相关

4.1.数据文件存储方式

  1. 数据文件都是通过二进制的方式存储在磁盘中的,1kbyte【百特】=1000Kb=8000bit
  2. ascii码通过一字节也就是8bit(连续8个二进制)表示一个符号,用0-127表示常见的换行,回车,英文字符大小写,数字等。通过对字符进行编号,就能通过二进制表示任何数字。
  3. unicode对ascii码进行升级,可以表示已知的任何一个字符,对与任何一个字符都使用32bit(四个字节)进行表示,因此就浪费资源。
  4. UTF-8字符集合采用可变字节表示字符(1-4字节),兼容前边的编号设置,对于编号只需要1字节的就通过一字节表示,多字节就多字节表示,弥补了unicode的不足。
  5. 在计算机图形学中,常用的颜色编码方式是RGB(红绿蓝)颜色模型。每种颜色都由三个分量组成,分别表示红色、绿色和蓝色的强度。每个分量通常用8位无符号整数来表示,范围为0到255。
  6. 颜色需要3个字节(即24位)来存储。这被称为24位真彩色或Truecolor。在这种编码方式下,可以表示16,777,216种不同的颜色。红色可以被编码为(255, 0, 0),绿色可以被编码为(0, 255, 0),蓝色可以被编码为(0, 0, 255)。白色可以被编码为(255, 255, 255),黑色可以被编码为(0, 0, 0)。
  7. 声音也是通过采样,扫描编码,表示声音的音色响度频率,从而存储在磁盘中

4.2磁盘

磁盘是一种存储设备,它可以永久地保存数据,即使在电源关闭后也能保持数据不丢失。磁盘的开头位置通常用于存放引导记录(Boot Record)、分区表(Partition Table)以及文件系统的元数据,比如超级块、文件系统结构等。具体内容包括:

  1. 引导记录(Boot Record):位于磁盘的最开始位置,包含引导加载程序,这是启动计算机时系统加载的第一段代码。它指示计算机在哪里找到操作系统,并启动该操作系统的加载过程。

    • 作用:引导记录位于磁盘的最开始位置,包含了启动计算机所需的引导加载程(Bootloader)。这个引导加载程序指示计算机在哪里找到操作系统,并启动加载操作系统内核到内存的过程**(核心)**。
    • 内容:引导记录一般包括引导加载程序的代码和指令,该程序负责加载操作系统的内核文件,使计算机能够启动。
  2. 分区表(Partition Table):紧随引导记录之后的内容,它记录了磁盘上分区的信息,指示每个分区的起始位置、大小和类型。分区表告诉操作系统如何识别和访问磁盘上的不同分区。

    • 作用:分区表位于引导记录之后,记录了磁盘的分区信息,指导操作系统识别和访问磁盘上的不同分区。(引导记录中的引导加载程序确实记录了操作系统内核在磁盘中的位置,类似于文件系统中inode表的作用)
    • 内容:分区表包含了磁盘分区的条目,每个条目描述了一个分区的起始位置、大小和类型等信息。常见的分区表格式包括传统的MBR(主引导记录)和新的GPT(GUID 分区表)。
  3. 超级块(Superblock):对于文件系统而言,紧随分区表之后的是超级块。超级块包含文件系统的元数据,例如文件系统的类型、大小、空闲块数量、inode表的位置等重要信息。

    • 文件系统类型:指示文件系统的类型(如EXT4)。

    • 文件系统大小:指示整个文件系统的总大小。

    • 空闲块和空闲inode数量:表示文件系统中可用的空间数量。

    • 块大小:确定文件系统中块的大小(通常以字节为单位)。

    • inode数量和inode表位置:指示文件系统中的inode总数(小文件占用过多的inode号,则会导致磁盘空间足够,但是不能存储数据的情况),以及inode表的磁盘存放位置。

    • 挂载信息:记录文件系统的挂载次数、上次挂载时间等信息,用于维护文件系统的一致性。

    • 文件系统的布局和结构信息:包括数据块的分布方式、索引结构等。

      元数据是指描述文件系统中文件和目录的数据,包括文件的属性、权限、位置等信息。常见的元数据包括:
      Inode(索引节点):
      每个文件或目录在文件系统中都有一个对应的inode。Inode中存储了文件或目录的元数据,如文件类型、权限、所有者、大小、时间戳以及数据块的位置等信息。文件名:
      文件系统中的目录项包含文件名和对应的inode号码,它们一起构成了文件的关联。文件名作为用户识别文件的标识符。权限和属性:
      包括文件或目录的读取、写入和执行权限,以及所有者、所属组、大小、创建时间、修改时间和访问时间等属性。时间戳:
      包括文件的创建时间(ctime)、修改时间(mtime)和访问时间(atime),这些时间戳记录了文件的不同操作和状态变化时间。数据块指针: 
      对于较小的文件,inode直接存储文件数据的指针;对于大文件,inode会存储指向数据块的指针,这些数据块实际上存储着文件的内容。链接计数:
      记录了指向该inode的硬链接数量。当链接计数归零时,系统才会释放该inode所占用的存储空间。扩展属性:
      一些文件系统支持额外的元数据,如扩展文件属性(Extended Attributes)或访问控制列表(Access Control Lists),用于存储更多的文件信息或设置更复杂的权限控制。
      
  4. Inode表:在文件系统中,inode表紧随超级块,存储了所有文件和目录的元数据。每个文件或目录都有对应的inode条目,包含了文件的权限、所有者、大小和数据块的位置等信息。

    • Inode(索引节点):每个文件或目录在文件系统中都有一个对应的inode。Inode存储了文件或目录的元数据,如权限、所有者、大小、时间戳以及数据块的位置等信息。例如,文件的名称并不直接存储在inode中,而是存储在目录项中,指向对应的inode。
    • 目录项:目录是一种特殊的文件,其中的条目将文件名映射到对应的inode。目录项包含了文件名和对应的inode号码。
    • 权限和属性:文件或目录的权限和属性,例如所有者、读写执行权限等。
    • 时间戳:记录文件或目录的创建时间、修改时间和访问时间。
    • 数据块指针:对于较小的文件,inode直接存储文件数据的指针。对于大文件,inode会存储指向数据块的指针,这些数据块实际上存储着文件的内容。
超级块包含了整个文件系统的信息,其中包括了inode表的位置和inode的大小等重要信息。
Inode表是由超级块描述的一部分,它存储了文件和目录的元数据,比如文件的权限、所有者、大小和数据块的位置等信息。
超级块提供了对inode表的定位和描述,而inode表则提供了每个文件或目录的详细元数据信息。
虽然两者都是元数据,但超级块更多地关注整个文件系统的全局信息,而inode表则关注于单个文件或目录的详细信息。

4.3文件系统

文件系统是操作系统的一部分,用来管理和组织计算机存储设备上文件和数据的方法。它定义了文件和目录的组织方式、访问权限、存储结构以及如何存储和检索数据的规则。文件系统提供了创建、删除、移动、重命名文件和目录的功能,以及分配存储空间和跟踪磁盘使用情况的能力。

文件系统执行以下功能:

  1. 文件管理:文件系统负责管理文件和目录的创建、删除、复制、移动以及对其进行访问和修改的操作。
  2. 存储管理:文件系统管理物理存储设备,将文件组织成逻辑上的数据单元,负责数据的存储、读取和写入。
  3. 命名和定位:文件系统提供了命名机制,使用户能够通过文件名来标识和访问文件。它还负责将文件名映射到文件的物理存储位置。
  4. 权限和保护:文件系统管理文件和目录的访问权限,控制哪些用户或进程有权对文件进行读取、写入和执行操作,并保护文件不受未经授权的访问或损坏。
  5. 元数据管理:文件系统维护文件和目录的元数据,包括文件的属性、权限、时间戳以及文件在存储设备上的物理位置等信息。
  6. 错误恢复和一致性:文件系统需要处理和恢复因存储设备故障或意外断电等原因造成的数据损坏或丢失,并确保文件系统的一致性和稳定性。

常见的文件系统包括NTFS(Windows系统的文件系统)、FAT32、EXT4(Linux系统的文件系统)、HFS+(苹果系统的文件系统)等,它们各自有不同的特点、优势和适用场景。不同文件系统的选择取决于所需的功能、性能、兼容性以及特定操作系统的支持。

4.4磁盘和文件系统的关系

磁盘是物理存储设备,而文件系统则是操作系统对磁盘上的数据进行管理和操作的一种逻辑结构,通过难过文件系统能够实现管理磁盘,储存数据。

  1. 访问文件的过程:

    • inode表通过一个唯一的编号(即inode号)来标识文件,并将元数据存储在该inode中。
    • 当访问文件时,操作系统首先会根据文件名找到对应的inode号,然后读取该inode中的元数据信息,如文件大小、权限等。此外,inode还包含了指向文件数据块的指针,操作系统可以通过这些指针找到文件数据的实际存储位置。
    • 因此,当我们访问一个文件时,实际上是在访问该文件的inode和相关的数据块。这也是为什么Linux系统中经常会出现“磁盘空间没占满,但inode占满了”的情况,因为大量的小文件会导致inode数量不足,而无法创建更多的文件。
  2. 硬链接和软连接:

    1. 硬链接(Hard Link)
      • 硬链接是文件系统中的一个文件和另一个文件(可以是文件或目录)之间的直接连接,它们共享同一个inode和存储块。对于用户来说,硬链接就像是同一个文件的多个拷贝(对个硬链接指向同一份inode)。
      • 执行删除的本质是删除硬链接,如果有多个硬链接是不会删除inode表的,只有删除最后一个硬链接的时候才会删除inode表,从而链接不上磁盘,这部分磁盘会被标记为可以覆写。
      • 硬链接不能跨越文件系统,即只能在同一个文件系统中创建硬链接。
    2. 软链接(Symbolic Link 或 Soft Link)
      • 软链接是一个指向另一个文件或目录的特殊类型文件,类似于快捷方式。它实际上是一个指向目标文件的路径的指针。
      • 删除原始文件并不会影响软链接的有效性,但如果目标文件被删除,软链接则会失效。
      • 软链接可以跨越文件系统,允许在不同文件系统间创建链接。
    3. 主要区别:硬链接是直接连接到inode,而软链接是一个指向文件路径的符号链接。硬链接在文件系统中具有更强的连接,因为它们共享相同的inode和数据块,而软链接则是一个独立的文件,存储着指向目标文件的路径。(硬链接是指向inode的指针,而软连接是指向硬链接的指针)

    需要注意的是,硬链接不能用于目录,因为硬链接会造成循环引用。软链接则可以指向文件或目录。

相关文章:

系统及其存储相关

1.区分系统(软件)和固件 1.1概念辨别 系统(软件software): 角色: 系统是计算机中的核心软件,提供基本的管理、控制和资源分配功能。它通常包括操作系统,负责管理硬件资源、提供用户…...

鸿蒙原生应用开发-折叠屏、平板设备服务卡片适配

一、多设备卡片适配原则 为不同尺寸的卡片提供不同的功能 在卡片开发过程中请考虑适配不同尺寸的设备,特别是在折叠屏和平板设备上,设备屏幕尺寸的变化直接影响了卡片内容的展示。请发挥想象力设计具有自适应能力的卡片,避免在卡片内容不做…...

android查漏补缺(8)Android广播不同种类介绍

按照是否有序分类 1,普通广播(无序广播) 广播按照逻辑上同一时刻(实际可能被CPU按照抢占式任务无序发给注册模块)发送给注册模块 #发送方法: Context.sendBroadcast() 2,有序广播 广播按照…...

什么是美颜SDK?直播美颜SDK技术深度剖析

在实现实时美颜的过程中,美颜SDK扮演着关键的角色,它为开发者提供了一套强大的工具,使得实时美颜效果能够轻松应用于直播平台。 一、美颜SDK的基本概念 美颜SDK是一种软件工具包,通过集成了丰富的图像处理算法和实时计算技术&a…...

红海营销时代,内容占位的出海品牌更有机会营销占位

#01 品牌出海:内容占位就是品牌营销占位 红海营销时代,内容信息充斥着用户周边。无论线上还是线下,生活工作、休闲娱乐等不同场景内,广告信息均无孔不入。对于用户来说,能记住的品牌或者商品往往寥寥无几。 占位营销…...

解决龙芯loongarch64服务器编译安装Python后yum命令无法使用的问题“no module named ‘dnf‘”

引言 在使用Linux系统时,我们经常会使用yum来管理软件包。然而,有时候我们可能会遇到yum不可用的情况,其中一个原因就是Python的问题。本文将介绍Python对yum可用性的影响,并提供解决方案。 问题引发 正常情况下,安装linux系统后,yum命令是可用状态,升级Python版本后,…...

Leetcode2937. 使三个字符串相等

Every day a Leetcode 题目来源:2937. 使三个字符串相等 解法1:枚举 设 len1、len2、len3 分别为字符串 s1、s2、s3 的长度。 min_len 是 3 个字符串长度的最小值。 枚举 len min_len 到 len 1,设 t1、t2、t3 分别是字符串 s1、s2、s…...

<MySQL> 如何合理的设计数据库中的表?数据表设计的三种关系

目录 一、表的设计 二、一对一关系 三、一对多关系 四、多对多关系 一、表的设计 数据库设计就是根据需要创建出符合需求的表。 首先根据需求找到体系中的关键实体对象,通常每个实体对象都会有一个表,表中包含了这个实体的相关属性。 再理清楚实体对…...

基于操作系统讨论Java线程与进程、浅谈Go的线程与管程

文章目录 操作系统中的进程进程概念进程的状态 Java中的进程Java进程的概念Java进程的特性Java进程的状态Java进程与操作系统进程的通信 操作系统的进程和Java进程的区别联系操作系统进程Java 进程区别和联系 操作系统中的线程动机优点多核编程 Java中的线程定义:特…...

CICD 持续集成与持续交付——jenkins

部署 软件下载:https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/ [rootcicd2 ~]# rpm -ivh jdk-11.0.15_linux-x64_bin.rpm[rootcicd2 ~]# yum install -y fontconfig[rootcicd2 ~]# rpm -ivh jenkins-2.432-1.1.noarch.rpm启动服务 [rootcicd2 ~]# systemctl…...

【Zabbix】Zabbix Agent 2在Ubuntu/Debian系统上的安装

一、Zabbix Agent 2介绍 Zabbix Agent 2是一款监控软件,由Zabbix SIA开发。Zabbix Agent 2可以提供系统、服务、应用程序和网络设备的监控及性能指标数据收集。它是通过在被监视的主机上运行来获取数据。Zabbix Agent 2可以在Linux、Unix、Windows和MAC平台上运行&…...

浅谈无线测温产品在菲律宾某工厂配电项目的应用

摘要:配电系统是由多种配电设备和配电设施所组成的变换电压和直接向终端用户分配电能的一个电力网络系统。由于配电系统作为电力系统的一个环节直接面向终端用户,它的完善与否直接关系着广大用户的用电可靠性和用电质量,因而在电力系统中具有…...

软件工程第十一周

面向对象 面向对象编程(Object-Oriented Programming, OOP)不仅仅是一种程序设计方法,它更是一种深刻的软件工程开发思想。这种思想的核心在于通过抽象和封装来模拟现实世界中的对象和概念,以便更好地管理和解决复杂的软件工程问…...

【从入门到起飞】JavaSE—带你了解Map,HashMap,TreeMap的使用方法

🎊专栏【Java基础】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【The truth that you leave】 🥰欢迎并且感谢大家指出我的问题 文章目录 🌺双列集合的特点🎄Map🍔Ma…...

[Docker]六.Docker自动部署nodejs以及golang项目

一.自动部署nodejs 1.创建node项目相关文件 app.js代码如下: var express require(express);var appexpress();app.get(/,function(req,res){res.send(首页update); }) app.get(/news,function(req,res){res.send(首页); })//docker做端口映射的时候不要指定ip app.listen(30…...

FPC焊点剥离失效分析

一、案例背景 FPC在后续组装过程中,连接器发生脱落。在对同批次的样品进行推力测试后,发现连接器推力有偏小的现象。据此进行失效分析,明确FPC连接器脱落原因。 #1、#2样品连接器脱落连接器脱落;#3样品连接器未脱落;…...

Java爬虫框架下代理使用中的TCP连接池问题及解决方案

引言 当使用Java爬虫框架进行代理爬取时,可能会遇到TCP连接池问题,导致"java.net.BindException: Cannot assign requested address"等错误。本文将介绍如何以爬取小红书为案例,解决Java爬虫框架中代理使用中的TCP连接池问题&…...

PostgreSQL 数据定义语言 DDL

文章目录 表创建主键约束非空唯一约束检查约束外键约束默认值约束 触发器表空间构建表空间 视图索引索引的基本概念索引的分类创建索引 物化视图 表创建 PostgreSQL表的构建语句与所有数据库都一样,结构如下,其核心在于构建表时,要指定上一些…...

设计模式-行为型模式-策略模式

一、什么是策略模式 策略模式是一种行为设计模式,它允许在运行时选择算法或行为,并将其封装成独立的对象,使得这些算法或行为可以相互替换,而不影响使用它们的客户端。(ChatGPT生成) 主要组成部分&#xff…...

ResizeObserver观察元素宽度的变化

ResizeObserver观察元素宽度的变化 ResizeObserver观察元素宽度的变化 ResizeObserver观察元素宽度的变化 ResizeObserver 构造函数创建一个新的 ResizeObserver 对象,它可以用于监听 Element 内容盒或边框盒或者 SVGElement 边界尺寸的大小。查看详细说明 案例 &l…...

【软件工具】批量OCR指定区域图片自动识别内容重命名软件使用教程及注意事项

批量OCR指定区域图片自动识别内容重命名软件使用教程及注意事项 1、操作步骤1-5: 安装与启动:安装成功后,在桌面或开始菜单找到软件图标,双击启动。 导入图片:进入软件主界面,点击 “导入图片” 按钮&a…...

C# 快速检测 PDF 是否加密,并验证正确密码

引言:为什么需要检测PDF加密状态? 在批量文档处理系统(如 OCR 文字识别、内容提取、格式转换)中,加密 PDF 无法直接操作。检测加密状态可提前筛选文件,避免流程因密码验证失败而中断。 本文使用 Free Spire…...

OD 算法题 B卷【猴子吃桃】

文章目录 猴子吃桃 猴子吃桃 猴子喜欢吃桃,桃园有N棵桃树,第i棵桃树上有Ni个桃,看守将在H(>N)小时后回来;猴子可以决定吃桃的速度K(个/小时),每个小时他会选择一棵桃树,从中吃掉K个桃,如果这…...

飞牛使用Docker部署Tailscale 内网穿透教程

之前发过使用docker部署Tailscale的教程,不过是一年前的事情了,今天再重新发表一遍,这次使用compose部署更加方便,教程也会更加详细一点,希望对有需要的朋友有所帮助! 对于大部分用户来说,白嫖 …...

【数据分析】基于adonis2与pairwise.adonis2的群组差异分析教程

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载导入数据数据预处理adonis分析pairwise.adonis2分析总结系统信息介绍 本教程主要用于执行和分析基于距离矩阵的多样性和群落结构分析,特别是通过adonis2和pairwi…...

SpringBoot整合RocketMQ与客户端注意事项

SpringBoot整合RocketMQ 引入依赖&#xff08;5.3.0比较稳定&#xff09; <dependencies><dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.3.1</version&…...

使用xdocreport导出word

之前java总用freemaker进行导出&#xff0c;但是改xml实在是太繁琐了&#xff0c;这次找了另一个工具进行体验. 一、简单导出 pom引入 <dependency><groupId>fr.opensagres.xdocreport</groupId><artifactId>fr.opensagres.xdocreport.core</arti…...

robot_lab——rsl_rl的train.py整体逻辑

文章目录 Go2机器人训练流程详细分析概述1. 训练启动流程1.1 命令行参数解析RSL-RL相关参数组Isaac Sim应用启动参数组 1.2 RL配置1.3 Isaac Sim启动 2. 环境配置加载2.1 Hydra配置系统 3. 环境创建与初始化3.1 Gym环境创建3.2 Manager系统初始化3.2.1 ObservationManager3.2.2…...

【Spark征服之路-2.3-Spark运行架构】

运行架构 Spark 框架的核心是一个计算引擎&#xff0c;整体来说&#xff0c;它采用了标准 master-slave 的结构。 如下图所示&#xff0c;它展示了一个 Spark 执行时的基本结构。图形中的 Driver 表示 master&#xff0c;负责管理整个集群中的作业任务调度。图形中的 Executor …...

如何创造出一种不同于程序语言的人与机器自然交互语言?

人机交互自然语言通过模拟人类日常交流方式&#xff0c;使机器能够理解并响应人类的自然表达&#xff0c;从而打破编程语言的复杂性壁垒&#xff0c;极大地提升人机协同的效率和自然性&#xff0c;让机器更好地融入人类的工作与生活场景。创造一种通用的人与机器自然交互语言是…...