OpenStack-Glance组件

Glance

    • Glance使用
      • 磁盘格式和容器格式
      • 基础配置
      • 镜像转换

Glance 是 OpenStack 的镜像服务,负责存储、发现和管理虚拟机镜像。它允许用户创建和共享镜像,用于启动虚拟机实例。

Glance 的主要功能
(1)虚拟机镜像的管理
支持镜像的上传、下载、删除和更新。
用户可以通过命令行、API 或 OpenStack Dashboard 管理镜像。
(2)多种镜像格式支持
Glance 支持常见的虚拟机镜像格式,包括:

  • RAW:原始磁盘镜像,无压缩。
  • QCOW2:QEMU/KVM 的可扩展镜像格式,支持快照和压缩。
  • VMDK:VMware 的镜像格式。
  • VHD 和 VHDX:Hyper-V 的镜像格式。
  • ISO:光盘镜像,常用于安装系统。

(3)多种存储后端支持
Glance 支持多种存储后端,用于存储镜像数据:
本地文件系统。
分布式存储系统(如 Ceph、Swift)。
对象存储服务(如 Amazon S3)。
数据库存储。
(4)镜像共享和访问控制
私有镜像:仅限拥有者使用。
公共镜像:所有租户都可以使用。
共享镜像:拥有者可以指定其他租户访问。
(5)镜像的元数据管理
每个镜像都可以包含元数据(metadata),如操作系统类型、版本、创建时间等。
用户和管理员可以自定义元数据,用于描述镜像特性。

Glance 的架构
(1)核心组件
Glance 包括以下核心组件:

  • Glance API:
    提供 RESTful API 接口,供用户和服务调用。
    支持镜像的上传、下载、查询和删除等操作。

  • Glance Registry(已弃用):
    旧版本用于存储镜像的元数据和注册信息,现在的元数据通常直接存储在数据库中。

  • 数据库:
    存储镜像的元数据(如镜像的名称、大小、状态、创建时间等)。
    存储后端:

存放镜像文件的实际数据。可以是本地文件系统、对象存储(如 Swift)或块存储(如 Ceph,Cinder等)

工作流程

  • 镜像上传:
    用户通过 CLI 或 API 调用 Glance,将镜像文件上传到 Glance。
    Glance API 接收镜像数据,并存储在指定的存储后端,同时在数据库中记录元数据。
  • 镜像查询:
    用户通过 Glance 查询可用的镜像列表。
    Glance 从数据库中检索镜像元数据,并返回给用户。
  • 镜像下载:
    当 Nova 启动实例时,会从 Glance 下载指定镜像到计算节点。
    Glance API 从存储后端检索镜像文件,并提供给 Nova。

Glance使用

Ubuntu2404server环境,Glance版本4.4.0

glance服务

systemctl status glance-api

日志路径

tail -f /var/log/glance/glance-api.log

glance默认的镜像存储位置为本地,在配置文件glance-api.conf中进行指定

[glance_store]
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/
[image_format]
disk_formats = ami,ari,aki,vhd,vhdx,vmdk,raw,qcow2,vdi,iso,ploop.root-tar

上传cirros测试镜像,web界面也可以上传镜像,但是如果镜像很大则可能失败,这时用命令行界面上传可以成功

Glance的其他命令可参考博文,这里不多概述了

root@controller:~# openstack image create --disk-format qcow2 --container-format bare --file cirros-0.3.4-x86_64-disk.img --progress cirros
[=============================>] 100%
+------------------+-----------------------------------------------------------------------------------------------------------+
| Field            | Value                                                                                                     |
+------------------+-----------------------------------------------------------------------------------------------------------+
| container_format | bare                                                                                                      |
| created_at       | 2024-12-03T08:39:25Z                                                                                      |
| disk_format      | qcow2                                                                                                     |
| file             | /v2/images/500df5b1-45e7-4cf0-acfe-621b2c61ae5b/file                                                      |
| id               | 500df5b1-45e7-4cf0-acfe-621b2c61ae5b                                                                      |
| min_disk         | 0                                                                                                         |
| min_ram          | 0                                                                                                         |
| name             | cirros                                                                                                    |
| owner            | e85a7093d85344378bb1b016fc6a1b1b                                                                          |
| properties       | os_hidden='False', owner_specified.openstack.md5='', owner_specified.openstack.object='images/cirros',    |
|                  | owner_specified.openstack.sha256=''                                                                       |
| protected        | False                                                                                                     |
| schema           | /v2/schemas/image                                                                                         |
| status           | queued                                                                                                    |
| tags             |                                                                                                           |
| updated_at       | 2024-12-03T08:39:25Z                                                                                      |
| visibility       | shared                                                                                                    |
+------------------+-----------------------------------------------------------------------------------------------------------+
root@controller:~# ls /var/lib/glance/images
500df5b1-45e7-4cf0-acfe-621b2c61ae5b

上传的镜像除了存储在本地外,还可以配置cinder,swift,ceph等作为后端存储

  • 镜像状态
    • Glance 中的图像可以处于以下状态之一:
      queued
      图像标识符已为 Glance 注册表中的图像保留。没有图像数据上传到 Glance,并且图像大小在创建时未明确设置为零。
      saving
      表示当前正在将图片的原始数据上传到 Glance。当使用POST /images调用注册图片并且存在x-image-meta-location标头时,该图片永远不会处于保存状态(因为图片数据已在其他位置可用)。
      uploading
      表示已进行导入数据放入调用。在此状态下,不允许调用PUT /file 。(请注意,对排队图像调用PUT /file会使图像进入保存状态。当图像处于保存状态时,不允许调用PUT /stage。因此,无法在同一图像上使用两种上传方法。)
      importing
      表示已进行导入调用但图像尚未准备好使用。
      active
      表示在 Glance 中完全可用的镜像。当上传镜像数据或创建时明确将镜像大小设置为零时,就会发生这种情况。
      deactivated
      表示不允许任何非管理员用户访问图像数据。禁止下载图像还会禁止可能需要图像数据的图像导出和图像克隆等操作。
      killed
      表示上传图像数据时发生错误,图像无法读取。
      deleted
      Glance 保留了有关该镜像的信息,但已不再可用。处于此状态的镜像将在稍后自动删除。
      pending_delete
      这与已删除类似,但是 Glance 尚未删除映像数据。处于此状态的映像不可恢复。

在这里插入图片描述
任务状态

  • Glance 中的任务可以处于以下状态之一:
    pending
    任务标识符已为 Glance 中的任务保留。尚未开始对其进行处理。
    processing
    该任务已被底层执行器接收,并正在使用该任务类型的后端 Glance 执行逻辑运行。
    success
    表示该任务已在 Glance 中成功运行。result 任务字段显示有关结果的更多详细信息。
    failure
    表示在执行任务期间发生错误,无法继续处理。message任务的字段显示错误是什么。

磁盘格式和容器格式

在 OpenStack 的 Glance 服务中,镜像文件需要指定磁盘格式和容器格式。这两个属性决定了镜像文件的组织方式,以及它如何被用作虚拟机实例的磁盘。

  • 磁盘格式(Disk Format)
    磁盘格式描述镜像文件中虚拟磁盘的存储方式。它决定了镜像如何被解码和加载到虚拟机中, 决定了镜像的存储结构,影响性能、存储占用和功能支持。
格式名称描述使用场景
RAW原始磁盘镜像文件,未压缩,未封装。直接复制磁盘的字节内容,效率高但占用空间较大。
QCOW2QEMU/KVM 的磁盘格式,支持动态分配和快照。文件占用空间小,支持压缩。 常用格式,适合 KVM/QEMU。
VMDKVMware 的磁盘格式,兼容 VMware 产品。使用 VMware 虚拟化平台时。
VHDMicrosoft Hyper-V 的磁盘格式,支持动态和固定大小。在 Hyper-V 环境中使用。
ISO光盘镜像格式,通常用于操作系统的安装盘(例如 Ubuntu、CentOS 的安装 ISO)。系统安装或启动时加载 ISO 文件。
AMIAmazon Machine Image,Amazon EC2 使用的镜像格式。使用 Amazon EC2 云的迁移场景。
VDIVirtualBox 的磁盘格式。VirtualBox 用户使用。
PLAIN非特定格式的数据块镜像,类似于 RAW 格式。特殊场景的自定义存储。
  • 容器格式(Container Format)
    容器格式定义了磁盘镜像的封装方式,以及它是否包含额外的元数据(如启动引导信息、分区表等)。决定了镜像的封装方式,影响其在虚拟化平台上的适用性。
格式名称描述使用场景
bare无容器封装的纯磁盘镜像,直接使用磁盘格式(如 RAW、QCOW2)。最常见的容器格式,直接加载磁盘镜像。
ovfOpen Virtualization Format,包含虚拟机描述文件和磁盘镜像。跨虚拟化平台迁移或分发镜像。
ovaOVF 的封装形式,通常打包为单个文件(包含 OVF 描述和磁盘镜像)。分发虚拟机模板。
akiAmazon Kernel Image,封装用于引导的内核镜像。使用 Amazon 相关服务时。
ariAmazon Ramdisk Image,封装用于引导的 ramdisk 镜像。使用 Amazon 相关服务时。
amiAmazon Machine Image,与磁盘格式 AMI 搭配使用,通常是 Amazon 的完整镜像。使用 Amazon 相关服务时。
dockerDocker 容器格式,用于分发和运行容器化应用。容器化场景。
  • 磁盘格式和容器格式的关系
    磁盘格式 和 容器格式 是独立的,但需要配合使用。

例如:
一个 RAW 磁盘镜像通常使用 bare 容器格式,因为它没有额外的封装。
一个 OVF 容器格式的镜像可能使用 QCOW2 或 VMDK 磁盘格式。

如何选择格式

需求磁盘格式容器格式
高性能,简单直接RAWbare
节省存储空间,支持快照QCOW2bare
VMware 平台迁移或集成VMDKovf
Hyper-V 平台VHD/VHDXbare
创建系统安装盘(如 ISO 文件)ISObare

基础配置

官网示例配置文件
官网参数说明

  • glance-api.conf可以在文件中的 部分下放置以下选项[DEFAULT]。它们分别启用 API 服务器的启动和绑定行为。
[DEFAULT]
bind_host=ADDRESS
#绑定到的主机的地址。
#可选。默认值:0.0.0.0
bind_port=PORT
#服务器应绑定到的端口。
#可选。默认值:9292用于 API 服务器
backlog=REQUESTS
#配置套接字的积压请求数。
#可选。默认值:4096
tcp_keepidle=SECONDS
#为每个服务器套接字设置 TCP_KEEPIDLE 的值(以秒为单位)。不支持 OS X。
#可选。默认值:600
client_socket_timeout=SECONDS
#客户端连接套接字操作的超时时间。如果传入连接在此期间处于空闲状态,则它将被关闭。值为0 表示永远等待。
#可选。默认值:900
workers=PROCESSES
#要启动的 Glance API 工作进程数。每个工作进程将侦听同一端口。增加此值可能会提高性能(尤其是在使用启用了压缩的 SSL 时)。通常建议
#每个 CPU 有一个工作进程。值0将阻止创建任何新的工作进程。当data_api设置为 时 glance.db.simple.api,workers必须设置为0或1。
#可选。默认值:默认使用可用的 CPU 数量。
max_request_id_length=LENGTH
#限制记录的 x-openstack-request-id 标头的最大大小。仅当在管道中配置了上下文中间件时才有效。
#可选。默认值:(64受 max_header_line 默认值限制:16384)image_size_cap=SIZE
#配置 Glance 镜像大小限制
#可通过 Glance API 服务器上传的最大图像大小(以字节为单位)。
#重要提示:只有经过仔细考虑后才能增加此值,并且必须将其设置为低于 8 EB (9223372036854775808) 的值。
#可选。默认值:1099511627776(1 TB)user_storage_quota=100G
#可选。默认值:0(无限制)。
#配置 Glance 用户存储配额
#此值指定每个用户可以在所有存储系统上使用的最大存储量。可以选择为该值指定单位。值可以以 B、KB、MB、GB 或 TB 为单位,分别表示字节、千字节、兆字节、千兆字节和太字节。默认单位为字节。
  • 配置 Glance 存储后端

使用多个存储配置文件系统存储后端

[glance_store]
stores = file,http
default_store = file
filesystem_store_datadirs = /var/glance/store
filesystem_store_datadirs = /var/glance/store1:100
filesystem_store_datadirs = /var/glance/store2:200

此选项只能在配置文件中指定,并且仅适用于文件系统存储后端。

filesystem_store_datadirs 选项允许管理员配置多个存储目录,以在文件系统存储后端保存 Glance 映像。每个目录都可以与其优先级结合使用。

  • 可以多次指定此选项以指定多个商店。
    必须在 gaze-api.conf 中指定 filesystem_store_datadir 或 filesystem_store_datadirs 选项
    优先级为 200 的商店优先于优先级为 100 的商店。
    如果没有指定优先级,则默认优先级为“0”。
    如果两个文件系统存储具有相同的优先级,则会选择具有最大可用空间的存储来存储图像。
    如果多次指定同一个商店,则会引发 BadStoreConfiguration 异常。

配置cinder为后端存储

[root@controller ~]# vi /etc/glance/glance-api.conf
#show_multiple_locations = false
改为
show_multiple_locations = True修改
[glance_store]
stores = cinder
default_store=cinder[root@controller ~]# systemctl restart openstack-glance-*
[root@controller ~]# vi /etc/cinder/cinder.conf
#allowed_direct_url_schemes =
改为
allowed_direct_url_schemes =cinder#image_upload_use_internal_tenant = false
改为
image_upload_use_internal_tenant = True
#最后重启cinder
[root@controller ~]# systemctl restart *cinder*

swift作为后端存储

[root@controller ~]# vi /etc/glance/glance-api.conf
[glance_store]
stores=glance.store.filesystem.Store,glance.store.swift.Store,glance.store.http.Store
default_store=swift
swift_store_region=RegionOne
swift_store_endpoint_type=internalURL
swift_store_container=chinaskill_glance
swift_store_large_object_size=5120
swift_store_large_object_chunk_size=200
swift_store_create_container_on_put=True
swift_store_multi_tenant=True
swift_store_admin_tenants=service
swift_store_auth_address=http://controller:5000/v3
swift_store_user=glance
swift_store_key=000000[root@controller ~]# systemctl restart openstack-glance-*

配置 VMware 存储后端

  • vmware_server_host=ADDRESS
    使用 VMware 存储后端时必需。
    只能在配置文件中指定。
    设置 ESX/ESXi 或 vCenter Server 目标系统的地址。该地址可以包含 IP ( 127.0.0.1)、IP 和端口 ( 127.0.0.1:443)、DNS 名称 ( www.my-domain.com) 或 DNS 和端口。
    此选项特定于 VMware 存储后端。
  • vmware_server_username=USERNAME
    使用 VMware 存储后端时必需。
    只能在配置文件中指定。
    用于通过 VMware ESX/ESXi 或 vCenter Server 进行身份验证的用户名。
  • vmware_server_password=PASSWORD
    使用 VMware 存储后端时必需。
    只能在配置文件中指定。
    用于对 VMware ESX/ESXi 或 vCenter Server 进行身份验证的密码。
  • vmware_datastores
    使用 VMware 存储后端时必需。
    此选项只能在配置文件中指定,并且特定于 VMware 存储后端。
  • vmware_datastores 允许管理员配置多个数据存储,以将 Glance 映像保存在 VMware 存储后端。该选项所需的格式为:<datacenter_path>:<datastore_name>:<optional_weight>。
    其中 datacenter_path 是数据存储所在数据中心的清单路径。可以给出可选权重来指定优先级。
  • vmware_api_retry_count=TIMES
    可选。默认值:10
    只能在配置文件中指定。
    出现连接相关问题时必须重试 VMware ESX/VC 服务器 API 的次数。
  • vmware_task_poll_interval=SECONDS
    可选。默认值:5
    只能在配置文件中指定。
    用于轮询在 VMware ESX/VC 服务器上调用的远程任务的间隔。
  • vmware_store_image_dir
    可选。默认值:/openstack_glance
    只能在配置文件中指定。
    访问数据存储中存储图像的文件夹的路径。
  • vmware_api_insecure=ON_OFF
    可选。默认值:False
    只能在配置文件中指定。
    允许对 ESX/VC 服务器执行不安全的 SSL 请求。
    例子:
[glance_store]
vmware_datastores = datacenter1:datastore1
vmware_datastores = dc_folder/datacenter2:datastore2:100
vmware_datastores = datacenter1:datastore3:200

可以多次指定此选项以指定多个数据存储。
必须在 gaze-api.conf 中指定 vmware_datastore_name 或 vmware_datastores 选项
权重为 200 的数据存储优先于权重为 100 的数据存储。
如果没有指定权重,则默认权重为“0”。
如果两个数据存储具有相同的权重,则将选择具有最大可用空间的数据存储来存储图像。
如果数据中心路径或数据存储名称包含冒号 :符号,则必须使用反斜杠进行转义。

配置S3存储后端

  • s3_store_host
    只能在配置文件中指定。
    S3 服务器正在监听的主机。此选项可以包含 DNS 名称(例如 s3.amazonaws.com、my-object-storage.com)或 IP 地址(127.0.0.1)。
  • s3_store_access_key
    只能在配置文件中指定。
    用于与 Amazon S3 或 S3 兼容存储服务器进行身份验证的访问密钥。
  • s3_store_secret_key
    只能在配置文件中指定。
    用于与 Amazon S3 或 S3 兼容存储服务器进行身份验证的密钥。
  • s3_store_bucket
    只能在配置文件中指定。
    在 S3 中存储 Glance 图像的存储桶名称。如果s3_store_create_bucket_on_put设置为 true,即使存储桶不存在也会自动创建。
  • s3_store_create_bucket_on_put
    可选。默认值:False
    只能在配置文件中指定。
    确定 S3 是否应创建新的 bucket。此选项采用布尔值来指示如果 bucket 不存在,Glance 是否应在 S3 中创建新的 bucket。
  • s3_store_bucket_url_format
    可选。默认值:auto
    只能在配置文件中指定。
    此选项采用用于指定 S3 存储桶中对象地址的访问模型。您可以将值设置为auto、virtual或 path。
  • s3_store_large_object_size
    可选。默认值:100
    只能在配置文件中指定。
    S3 应以什么大小(以 MB 为单位)开始对图像文件进行分块并在 S3 中执行分段上传。
  • s3_store_large_object_chunk_size
    可选。默认值:10
    只能在配置文件中指定。
    S3 在上传部分时应使用多部分上传部分的大小(以 MB 为单位)。
  • s3_store_thread_pools
    可选。默认值:10
    只能在配置文件中指定。
    在 S3 中执行分段上传的线程池数量。

示例:

[glance_store]
s3_store_host = http://s3-ap-northeast-1.amazonaws.com
s3_store_host = https://s3-ap-northeast-1.amazonaws.com
s3_store_host = http://my-object-storage.com
s3_store_host = https://my-object-storage.com:9000

在path风格中,对象的端点看起来像https://s3.amazonaws.com/bucket/example.img。
在virtual风格中,对象的端点看起来像https://bucket.s3.amazonaws.com/example.img。
如果您在存储桶名称中不遵循 DNS 命名约定,则可以获取路径样式的对象,但不能获取虚拟样式的对象。

配置镜像策略的yaml文件:官网

  • 配置格式如下
    该配置文件通过role:admin形式指定配置权限
root@controller:~# cat /etc/glance/policy.yaml
{"context_is_admin":  "role:admin","default": "role:admin","add_image": "role:admin","delete_image": "","get_image": "","get_images": "","modify_image": "","publicize_image": "role:admin","communitize_image": "","copy_from": "","download_image": "","upload_image": "","delete_image_location": "","get_image_location": "","set_image_location": "","add_member": "","delete_member": "","get_member": "","get_members": "","modify_member": "","manage_image_cache": "role:admin","get_task": "","get_tasks": "","add_task": "","modify_task": "","tasks_api_access": "role:admin","deactivate": "","reactivate": "","get_metadef_namespace": "","get_metadef_namespaces":"","modify_metadef_namespace":"","add_metadef_namespace":"","get_metadef_object":"","get_metadef_objects":"","modify_metadef_object":"","add_metadef_object":"","list_metadef_resource_types":"","get_metadef_resource_type":"","add_metadef_resource_type_association":"","get_metadef_property":"","get_metadef_properties":"","modify_metadef_property":"","add_metadef_property":"","get_metadef_tag":"","get_metadef_tags":"","modify_metadef_tag":"","add_metadef_tag":"","add_metadef_tags":""
}

镜像转换

qemu-img 是 QEMU 提供的一个用于创建、转换和操作虚拟机磁盘镜像的命令行工具。它支持多种磁盘镜像格式,如 QCOW2、RAW、VMDK 等,是管理虚拟磁盘镜像的核心工具之一

  • 查看镜像信息
    输出镜像的大小、格式、实际占用空间等信息
root@controller:~# qemu-img info cirros-0.3.4-x86_64-disk.img
image: cirros-0.3.4-x86_64-disk.img
file format: qcow2
virtual size: 39.2 MiB (41126400 bytes)
disk size: 12.7 MiB
cluster_size: 65536
Format specific information:compat: 0.10compression type: zlibrefcount bits: 16
Child node '/file':filename: cirros-0.3.4-x86_64-disk.imgprotocol type: filefile length: 12.7 MiB (13287936 bytes)disk size: 12.7 MiB
  • 转换磁盘格式
    将磁盘镜像从一种格式转换为另一种格式
    qemu-img convert -f <源格式> -O <目标格式> <源镜像文件> <目标镜像文件>
root@controller:~# qemu-img convert -f qcow2 -O raw cirros-0.3.4-x86_64-disk.img cirros-raw.img
root@controller:~# qemu-img info cirros-raw.img
image: cirros-raw.img
file format: raw
virtual size: 39.2 MiB (41126400 bytes)
disk size: 17.8 MiB
Child node '/file':filename: cirros-raw.imgprotocol type: filefile length: 39.2 MiB (41126400 bytes)disk size: 17.8 MiB
  • 扩展磁盘大小
    调整磁盘镜像的大小(只能扩展)需要在操作系统中调整分区才能实际使用扩展空间。
root@controller:~# qemu-img resize cirros-0.3.4-x86_64-disk.img +10M
Image resized.
root@controller:~# qemu-img info cirros-0.3.4-x86_64-disk.img
image: cirros-0.3.4-x86_64-disk.img
file format: qcow2
virtual size: 49.2 MiB (51612160 bytes)
disk size: 12.7 MiB
cluster_size: 65536
Format specific information:compat: 0.10compression type: zlibrefcount bits: 16
Child node '/file':filename: cirros-0.3.4-x86_64-disk.imgprotocol type: filefile length: 12.7 MiB (13287936 bytes)disk size: 12.7 MiB
root@controller:~#
  • 压缩磁盘镜像
    将磁盘镜像压缩以节省存储空间(适用于 QCOW2)
    qemu-img convert -O qcow2 -c <源镜像文件> <目标镜像文件>
root@controller:~# qemu-img convert -O qcow2 -c cirros-0.3.4-x86_64-disk.img cirros-qcow2.img

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

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

相关文章

求助——AssertionError: Attribute pipeline is missing from configuration.json.

我在本地运行Sunsimiao大模型的时候遇到了“AssertionError: Attribute pipeline is missing from configuration.json.”的问题。在网上找了很多问题都没有解决&#xff0c;求助一下广大网友。有什么好的解决方法吗&#xff1f; 本地环境如上所示&#xff0c;不知是哪里出…

2024年顶级小型语言模型前15名

本文&#xff0c;我们将深入了解2024年备受瞩目的十五款小型语言模型&#xff08;SLMs&#xff09;&#xff0c;它们分别是Llama 3.1 8B、Gemma2、Qwen 2、Mistral Nemo、Phi-3.5等。这些SLMs以其精巧的体积和高效率著称&#xff0c;它们不需要依赖庞大的服务器资源&#xff0c…

P3916 图的遍历(Tarjan缩点和反向建边)

P3916 图的遍历 - 洛谷 | 计算机科学教育新生态 写法一&#xff1a;Tarjan 思路&#xff1a;先运用Tarjan算法得到每个连通块中最大的编号&#xff0c;然后对每个连通块进行缩点重新建图&#xff0c;进行dfs&#xff0c;得到缩点后的连通块能够达到的最大编号。 Code: conste…

Android ConstraintLayout 约束布局的使用手册

目录 前言 一、ConstraintLayout基本介绍 二、ConstraintLayout使用步骤 1、引入库 2、基本使用&#xff0c;实现按钮居中。相对于父布局的约束。 3、A Button 居中展示&#xff0c;B Button展示在A Button正下方&#xff08;距离A 46dp&#xff09;。相对于兄弟控件的约束…

三步入门Log4J 的使用

本篇基于Maven 的Project项目&#xff0c; 快速演示Log4j 的导入和演示。 第一步&#xff1a; 导入Log4j依赖 <dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId><version>2.24.2</version&…

【强化学习入门笔记】1.5 贝尔曼最优公式

本系列为学习赵世钰老师的《强化学习的数学原理》所作的学习笔记. 课程视频网址&#xff1a;https://space.bilibili.com/2044042934 1.5.1 定义 1.5.1.1 Contraction mapping theorem (收缩映射定理) fixed point(不动点) 如果 x ∗ x^* x∗满足下式, x ∗ x^* x∗称之为…

Nmap脚本使用

Nmap是主机扫描工具&#xff0c;他的图形化界面是Zenmap&#xff0c;分布式框架为Dnamp。 Nmap可以完成以下任务&#xff1a; 主机探测端口扫描版本检测系统检测支持探测脚本的编写 Nmap在实际中应用场合如下&#xff1a;通过对设备或者防火墙的探测来审计它的安全性探测目标主…

python源码实例游戏开发小程序办公自动化网络爬虫项目开发源码(250+个项目、26.6GB)

文章目录 源代码下载地址项目介绍预览 项目备注源代码下载地址 源代码下载地址 点击这里下载源码 项目介绍 python源码实例游戏开发小程序办公自动化网络爬虫项目开发源码(250个项目、26.6GB) 预览 项目备注 1、该资源内项目代码都经过测试运行成功&#xff0c;功能ok的情…

MySql:理解数据库

目录 一、什么是数据库 第一层理解 第二层理解 第三层理解 二、Linux下的数据库 三、基本认识 登录数据库时&#xff0c; mysql -u root -h 127.0.0.1 -P 3306 -p -h指定MySql服务器所在主机&#xff0c;若在本地则为回环地址。-P表示目标主机上MySql服务端口号 一般简单…

BERT模型的输出格式探究以及提取出BERT 模型的CLS表示,last_hidden_state[:, 0, :]用于提取每个句子的CLS向量表示

说在前面 最近使用自己的数据集对bert-base-uncased进行了二次预训练&#xff0c;只使用了MLM任务&#xff0c;发现在加载训练好的模型进行输出CLS表示用于下游任务时&#xff0c;同一个句子的输出CLS表示都不一样&#xff0c;并且控制台输出以下警告信息。说是没有这些权重。…

Vue框架开发一个简单的购物车(Vue.js)

让我们利用所学知识来开发一个简单的购物车 &#xff08;记得暴露属性和方法&#xff01;&#xff01;&#xff01;&#xff09; 首先来看一下最基本的一个html框架 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"&…

系统加固-Linux不允许用户使用密码登录,只能使用密钥登录

一、密码登录的安全隐患 传统的密码登录方式&#xff0c;尽管简单直接&#xff0c;却存在诸多安全隐患。首先&#xff0c;密码本身容易被猜测或通过暴力破解手段获得。特别是当用户设置了过于简单或常见的密码时&#xff0c;系统面临的安全风险将显著增加。其次&#xff0c;密…

大数据实验E5HBase:安装配置,shell 命令和Java API使用

实验目的 熟悉HBase操作常用的shell 命令和Java API使用&#xff1b; 实验要求 掌握HBase的基本操作命令和函数接口的使用&#xff1b; 实验平台 操作系统&#xff1a;Linux&#xff08;建议Ubuntu16.04或者CentOS 7 以上&#xff09;&#xff1b;Hadoop版本&#xff1a;3…

【Vivado】xdc约束文件编写

随手记录一下项目中学到的约束文件编写技巧。 时序约束 创建生成时钟 参考链接&#xff1a; Vivado Design Suite Tcl Command Reference Guide (UG835) Vivado Design Suite User Guide: Using Constraints (UG903) 通过Clocking Wizard IP创建的时钟&#xff08;MMCM或…

Electron + Vue 简单实现窗口程序(Windows)从零到一

前言 想做一个桌面应用程序&#xff0c;一直没有找到简单快速可上手的框架。刚好有点前端的底子&#xff0c;就发现了Electron。关于Electron的介绍&#xff0c;请移步 https://www.electronjs.org/ 查阅。 简单来说&#xff0c;引用官网的话&#xff0c;Electron是一个使用 …

健康养生生活

在快节奏的现代生活中&#xff0c;健康养生愈发成为人们关注的焦点。它不仅是一种生活方式&#xff0c;更是对生命质量的珍视与呵护。 健康养生&#xff0c;饮食为先。合理的膳食结构是维持身体健康的基石。我们应确保每餐营养均衡&#xff0c;增加蔬菜、水果、全谷物以及优质蛋…

如何避免数据丢失:服务器恢复与预防策略

在当今数字时代&#xff0c;数据对于个人和企业来说都至关重要。数据丢失可能会导致严重的财务损失、业务中断甚至法律责任。因此&#xff0c;采取措施防止数据丢失至关重要。本文将讨论服务器数据丢失的常见原因以及如何防止数据丢失的有效策略。 服务器数据丢失的常见原因 服…

网站访问统计A/B测试与数据分析

在网站运营中&#xff0c;访问统计和数据分析是优化用户体验和提高转化率的关键工具。A/B测试作为一种数据驱动的方法&#xff0c;能够帮助网站运营者验证设计和内容的有效性。A/B测试的基本原理是同时展示两个不同的版本&#xff08;A和B&#xff09;&#xff0c;通过比较它们…

芯驰X9SP与汽车麦克风-打造无缝驾驶体验

当今汽车技术的进步不仅提升了驾驶体验&#xff0c;还改变了我们与车辆互动的方式。汽车麦克风作为车内语音控制系统的重要组成部分&#xff0c;正逐渐成为现代汽车的标配。 技术原理 汽车麦克风主要依赖于声音传感技术&#xff0c;通常包括电容式麦克风和动圈式麦克风。这些…

界面控件Syncfusion Essential Studio®现在已完全支持 .NET 9

Syncfusion Essential Studio现在完全支持 .NET 9&#xff0c;可最新版本2024 Volume 3 版本中使用&#xff01;通过此更新&#xff0c;Blazor、.NET MAUI、WPF、WinForms、WinUI和ASP.NET Core 平台中的 Syncfusion 组件以及文档处理库已准备好让您利用 .NET 9 中的最新功能。…