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 中的图像可以处于以下状态之一:
任务状态
- Glance 中的任务可以处于以下状态之一:
pending
任务标识符已为 Glance 中的任务保留。尚未开始对其进行处理。
processing
该任务已被底层执行器接收,并正在使用该任务类型的后端 Glance 执行逻辑运行。
success
表示该任务已在 Glance 中成功运行。result 任务字段显示有关结果的更多详细信息。
failure
表示在执行任务期间发生错误,无法继续处理。message任务的字段显示错误是什么。
磁盘格式和容器格式
在 OpenStack 的 Glance 服务中,镜像文件需要指定磁盘格式和容器格式。这两个属性决定了镜像文件的组织方式,以及它如何被用作虚拟机实例的磁盘。
- 磁盘格式(Disk Format)
磁盘格式描述镜像文件中虚拟磁盘的存储方式。它决定了镜像如何被解码和加载到虚拟机中, 决定了镜像的存储结构,影响性能、存储占用和功能支持。
格式名称 | 描述 | 使用场景 |
---|---|---|
RAW | 原始磁盘镜像文件,未压缩,未封装。 | 直接复制磁盘的字节内容,效率高但占用空间较大。 |
QCOW2 | QEMU/KVM 的磁盘格式,支持动态分配和快照。 | 文件占用空间小,支持压缩。 常用格式,适合 KVM/QEMU。 |
VMDK | VMware 的磁盘格式,兼容 VMware 产品。 | 使用 VMware 虚拟化平台时。 |
VHD | Microsoft Hyper-V 的磁盘格式,支持动态和固定大小。 | 在 Hyper-V 环境中使用。 |
ISO | 光盘镜像格式,通常用于操作系统的安装盘(例如 Ubuntu、CentOS 的安装 ISO)。 | 系统安装或启动时加载 ISO 文件。 |
AMI | Amazon Machine Image,Amazon EC2 使用的镜像格式。 | 使用 Amazon EC2 云的迁移场景。 |
VDI | VirtualBox 的磁盘格式。 | VirtualBox 用户使用。 |
PLAIN | 非特定格式的数据块镜像,类似于 RAW 格式。 | 特殊场景的自定义存储。 |
- 容器格式(Container Format)
容器格式定义了磁盘镜像的封装方式,以及它是否包含额外的元数据(如启动引导信息、分区表等)。决定了镜像的封装方式,影响其在虚拟化平台上的适用性。
格式名称 | 描述 | 使用场景 |
---|---|---|
bare | 无容器封装的纯磁盘镜像,直接使用磁盘格式(如 RAW、QCOW2)。 | 最常见的容器格式,直接加载磁盘镜像。 |
ovf | Open Virtualization Format,包含虚拟机描述文件和磁盘镜像。 | 跨虚拟化平台迁移或分发镜像。 |
ova | OVF 的封装形式,通常打包为单个文件(包含 OVF 描述和磁盘镜像)。 | 分发虚拟机模板。 |
aki | Amazon Kernel Image,封装用于引导的内核镜像。 | 使用 Amazon 相关服务时。 |
ari | Amazon Ramdisk Image,封装用于引导的 ramdisk 镜像。 | 使用 Amazon 相关服务时。 |
ami | Amazon Machine Image,与磁盘格式 AMI 搭配使用,通常是 Amazon 的完整镜像。 | 使用 Amazon 相关服务时。 |
docker | Docker 容器格式,用于分发和运行容器化应用。 | 容器化场景。 |
- 磁盘格式和容器格式的关系
磁盘格式 和 容器格式 是独立的,但需要配合使用。
例如:
一个 RAW 磁盘镜像通常使用 bare 容器格式,因为它没有额外的封装。
一个 OVF 容器格式的镜像可能使用 QCOW2 或 VMDK 磁盘格式。
如何选择格式
需求 | 磁盘格式 | 容器格式 |
---|---|---|
高性能,简单直接 | RAW | bare |
节省存储空间,支持快照 | QCOW2 | bare |
VMware 平台迁移或集成 | VMDK | ovf |
Hyper-V 平台 | VHD/VHDX | bare |
创建系统安装盘(如 ISO 文件) | ISO | bare |
基础配置
官网示例配置文件
官网参数说明
- 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
相关文章:

OpenStack-Glance组件
Glance Glance使用磁盘格式和容器格式基础配置镜像转换 Glance 是 OpenStack 的镜像服务,负责存储、发现和管理虚拟机镜像。它允许用户创建和共享镜像,用于启动虚拟机实例。 Glance 的主要功能 (1)虚拟机镜像的管理 支持镜像的上…...

SPC三种判定准则的算法
1.连续6个点递增或递减 //传入数据列表 //返回连续X个及以上递增或递减的数组下标int n = array.Length; int X = X_in; List<int> regions_start = new List<int>(); List<int> regions_end = new List<int>();if(Open){for (int i = 0; i < n - (…...

20241129解决在Ubuntu20.04下编译中科创达的CM6125的Android10出现找不到库文件libncurses.so.5的问题
20241129解决在Ubuntu20.04下编译中科创达的CM6125的Android10出现找不到库文件libncurses.so.5的问题 2024/11/29 21:11 缘起:中科创达的高通CM6125开发板的Android10的编译环境需要。 vendor/qcom/proprietary/commonsys/securemsm/seccamera/service/jni/jni_if.…...
Mybatis @MapKey注解实现List转Map
文章目录 MapKey介绍MapKey示例- 传统的写法- MapKey的写法 MapKey介绍 在MyBatis中,MapKey 主要用于在映射查询结果到一个Map。 当你执行一个查询并期望返回一个Map时,你可以使用MapKey来进行结果集的映射。而Mybatis内部会将查询到的结果映射为一个k…...

vue中使用socket.io统计在线用户
目录 一、引入相关模块 二、store/modules 中封装socketio 三、后端代码(nodejs) 一、引入相关模块 main.js 中参考以下代码 ,另外socketio的使用在查阅其它相关文章时有出入,还是尽量以官方文档为准 import VueSocketIO from vue-socket.io import SocketIO from socket.io-…...

zotero中pdf-translate插件和其他插件的安装
1.工具–》插件 2.找插件 3.点击之后看到一堆插件 4.找到需要的,例如pdf-translate 5.点击进入,需要看一下md文档了解下,其实最重要的就是找到特有的(.xpi file) 6.点击刚刚的蓝色链接 7.下载并保存xpi文件 8.回到zotero,安装并使…...

【Linux操作系统】多线程控制(创建,等待,终止、分离)
目录 一、线程与轻量级进程的关系二、进程创建1.线程创建线程创建函数(pthread)查看和理解线程id主线程与其他线程之间的关系 三、线程等待(回收)四、线程退出线程退出情况线程退出方法 五、线程分离线程的优点线程的缺点 一、线程…...

二百七十八、ClickHouse——将本月第一天所在的那一周视为第一周,无论它是从周几开始的,查询某个日期是本月第几周
一、目的 ClickHouse指标表中有个字段week_of_month,含义是这条数据属于本月第几周。 而且将本月第一天所在的那一周视为第一周,无论它是从周几开始的。比如2024-12-01是周日,即12月第一周。而2024-12-02是周一,即12月第二周 二…...
JVM八股文精简
目录 简述JVM类加载过程简述JVM中的类加载器简述双亲委派机制双亲委派机制的优点简述JVM内存模型简述程序计数器简述虚拟机栈简述本地方法栈简述JVM中的堆简述方法区简述运行时常量池简述Java创建对象的过程简述JVM给对象分配内存的策略Java对象内存分配是如何保证线程安全的如…...
深入解析CMake中的find_package()命令:工作原理及实际应用示例
深入解析CMake中的find_package()命令:工作原理及实际应用示例 在CMake中,find_package() 是一个复杂而强大的命令,用于在构建系统中定位外部依赖(通常是库),并配置必要的编译和链接设置。这个命令允许开发…...

使用数据层进行数据生命周期管理
作者:来自 Elastic Stef Nestor Elasticsearch 7.10 使配置数据生命周期变得不再那么复杂。在这篇博文中,我将介绍一些变化、如何使用它们以及一些最佳实践。 数据生命周期可以包含很多阶段,因此我们将涉及: 将集群划分为层&…...

Kubernetes架构原则和对象设计
云原生学习路线导航页(持续更新中) 快捷链接 Kubernetes常见问题解答 本文从 Google Borg系统的架构设计开始,深入讲解Kubernetes架构及组件的基本原理 1.什么是云计算 1.1.传统行业应用 假设有10台服务器,两个应用。小规模管…...

响应式编程一、Reactor核心
目录 一、前置知识1、Lambda表达式2、函数式接口 Function3、StreamAPI4、Reactive-Stream1)几个实际的问题2)Reactive-Stream是什么?3)核心接口4)处理器 Processor5)总结 二、Reactor核心1、Reactor1&…...
uniapp+vue3+ts请求接口封装
1.安装luch-request yarn add luch-requestnpm install luch-request2.新建文件src/utils/request.ts 需要自己修改config.baseURL和token(获取存储的token) // import HttpRequest from luch-request; import type { HttpRequestConfig, HttpRespons…...

【计算机网络】实验4:生成树协议STP的功能以及虚拟局域网VLAN
实验 4:生成树协议STP的功能以及虚拟局域网VLAN 一、 实验目的 加深对生成树协议STP的功能的理解。 了解虚拟局域网VLAN。 二、 实验环境 • Cisco Packet Tracer 模拟器 三、 实验内容 1、验证交换机生成树协议STP的功能 (1) 第一步:构建网络拓…...

基于Matlab BP神经网络的电力负荷预测模型研究与实现
随着电力系统的复杂性和规模的不断增长,准确的电力负荷预测对于电网的稳定性和运行效率至关重要。传统的负荷预测方法依赖于历史数据和简单的统计模型,但这些方法在处理非线性和动态变化的负荷数据时,表现出较大的局限性。近年来,…...

java 21 多线程
1.相关概念 进程: 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存空间。当我们使用迅雷,又启动了一个进程,操作系统将为迅雷配新的内存空间。 进程是程序的一次执行过程&#…...
Rust学习笔记_07——枚举和范围
Rust学习笔记_04——引用 Rust学习笔记_05——控制流(1) Rust学习笔记_06——控制流(2) 文章目录 1. 枚举1.1基础1.2 给枚举变体起个“别名”1.3 枚举与匹配(match) 2. 范围2.1 介绍2.2 半开区间范围2.3 包含范围的语法糖2.4 步长范围(Range …...

40分钟学 Go 语言高并发:服务性能调优实战
服务性能调优实战 一、性能优化实战概述 优化阶段主要内容关键指标重要程度瓶颈定位收集性能指标,确定瓶颈位置CPU、内存、延迟、吞吐量⭐⭐⭐⭐⭐代码优化优化算法、并发、内存使用代码执行时间、内存分配⭐⭐⭐⭐⭐系统调优调整系统参数、资源配置系统资源利用率…...
Windows通过指令查看已安装的驱动
Windows通过指令查看已安装的驱动 在 Windows 操作系统中,有几种命令可以用来查看已安装的驱动程序。以下是常见的几种方法: 1. 使用 pnputil 查看已安装驱动程序 pnputil 是一个 Windows 内置工具,可以列出所有已安装的驱动程序包。 命令…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...

select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障
关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...